PIVX Core  5.6.99
P2P Digital Currency
guiutil.h
Go to the documentation of this file.
1 // Copyright (c) 2011-2013 The Bitcoin developers
2 // Copyright (c) 2017-2021 The PIVX Core developers
3 // Distributed under the MIT/X11 software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 #ifndef PIVX_QT_GUIUTIL_H
7 #define PIVX_QT_GUIUTIL_H
8 
9 #include "amount.h"
10 #include "askpassphrasedialog.h"
11 #include "fs.h"
12 
13 #include <QEvent>
14 #include <QHeaderView>
15 #include <QMessageBox>
16 #include <QObject>
17 #include <QProgressBar>
18 #include <QString>
19 #include <QTableView>
20 #include <QTableWidget>
21 
22 
23 class QValidatedLineEdit;
24 class SendCoinsRecipient;
25 
26 QT_BEGIN_NAMESPACE
27 class QAbstractItemView;
28 class QDateTime;
29 class QFont;
30 class QLineEdit;
31 class QUrl;
32 class QWidget;
33 QT_END_NAMESPACE
34 
35 /*
36  * General GUI exception
37  */
38 class GUIException : public std::exception
39 {
40 public:
41  std::string message;
42  explicit GUIException(const std::string &message) : message(message) {}
43 };
44 
47 namespace GUIUtil
48 {
49 // Create human-readable string from date
50 QString dateTimeStr(const QDateTime& datetime);
51 QString dateTimeStrWithSeconds(const QDateTime& date);
52 QString dateTimeStr(qint64 nTime);
53 
54 // Render PIVX addresses in monospace font
55 QFont bitcoinAddressFont();
56 
57 // Parse string into a CAmount value.
58 // Return 0 if the value is invalid
59 CAmount parseValue(const QString& amount, int displayUnit = 0);
60 
61 // Format an amount
62 QString formatBalance(CAmount amount, int nDisplayUnit = 0, bool isZpiv = false);
63 QString formatBalanceWithoutHtml(CAmount amount, int nDisplayUnit = 0, bool isZpiv = false);
64 
65 
66 // Set up widgets for address and amounts
67 void setupAddressWidget(QValidatedLineEdit* widget, QWidget* parent);
68 void setupAmountWidget(QLineEdit* widget, QWidget* parent);
69 
70 // Update the cursor of the widget after a text change
71 void updateWidgetTextAndCursorPosition(QLineEdit* widget, const QString& str);
72 
73 // Parse "pivx:" URI into recipient object, return true on successful parsing
74 bool parseBitcoinURI(const QUrl& uri, SendCoinsRecipient* out);
75 bool parseBitcoinURI(QString uri, SendCoinsRecipient* out);
76 QString formatBitcoinURI(const SendCoinsRecipient& info);
77 
78 // Returns true if given address+amount meets "dust" definition
79 bool isDust(const QString& address, const CAmount& amount);
80 
81 // HTML escaping for rich text controls
82 QString HtmlEscape(const QString& str, bool fMultiLine = false);
83 QString HtmlEscape(const std::string& str, bool fMultiLine = false);
84 
91 void copyEntryData(QAbstractItemView* view, int column, int role = Qt::EditRole);
92 
99 QVariant getEntryData(QAbstractItemView *view, int column, int role);
100 
101 void setClipboard(const QString& str);
102 
113 QString getSaveFileName(QWidget* parent, const QString& caption, const QString& dir, const QString& filter, QString* selectedSuffixOut);
114 
124 QString getOpenFileName(QWidget* parent, const QString& caption, const QString& dir, const QString& filter, QString* selectedSuffixOut);
125 
131 Qt::ConnectionType blockingGUIThreadConnection();
132 
133 // Activate, show and raise the widget
134 void bringToFront(QWidget* w);
135 
136 // Determine whether a widget is hidden behind other windows
137 bool isObscured(QWidget* w);
138 
139 // Open debug.log
140 bool openDebugLogfile();
141 
142 // Open pivx.conf
143 bool openConfigfile();
144 
145 // Open masternode.conf
146 bool openMNConfigfile();
147 
148 // Browse backup folder
149 bool showBackups();
150 
155 class ToolTipToRichTextFilter : public QObject
156 {
157  Q_OBJECT
158 
159 public:
160  explicit ToolTipToRichTextFilter(int size_threshold, QObject* parent = 0);
161 
162 protected:
163  bool eventFilter(QObject* obj, QEvent* evt);
164 
165 private:
167 };
168 
170 bool SetStartOnSystemStartup(bool fAutoStart);
171 
173 void saveWindowGeometry(const QString& strSetting, QWidget* parent);
175 void restoreWindowGeometry(const QString& strSetting, const QSize& defaultSizeIn, QWidget* parent);
176 
178 QString loadStyleSheet();
179 
181 bool isExternal(QString theme);
182 
183 /* Convert QString to OS specific boost path through UTF-8 */
184 fs::path qstringToBoostPath(const QString& path);
185 
186 /* Convert OS specific boost path to QString through UTF-8 */
187 QString boostPathToQString(const fs::path& path);
188 
189 /* Convert seconds into a QString with days, hours, mins, secs */
190 QString formatDurationStr(int secs);
191 
192 /* Format CNodeStats.nServices bitmask into a user-readable string */
193 QString formatServicesStr(quint64 mask);
194 
195 /* Format a CNodeCombinedStats.dPingTime into a user-readable string or display N/A, if 0*/
196 QString formatPingTime(double dPingTime);
197 
198 /* Format a CNodeCombinedStats.nTimeOffset into a user-readable string. */
199 QString formatTimeOffset(int64_t nTimeOffset);
200 
201 typedef QProgressBar ProgressBar;
202 
213 template <typename SeparatorType>
214 QStringList SplitSkipEmptyParts(const QString& string, const SeparatorType& separator)
215 {
216 #if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
217  return string.split(separator, Qt::SkipEmptyParts);
218 #else
219  return string.split(separator, QString::SkipEmptyParts);
220 #endif
221 }
222 
223 } // namespace GUIUtil
224 
225 #endif // PIVX_QT_GUIUTIL_H
int64_t CAmount
Amount in PIV (Can be negative)
Definition: amount.h:13
GUIException(const std::string &message)
Definition: guiutil.h:42
std::string message
Definition: guiutil.h:41
Qt event filter that intercepts ToolTipChange events, and replaces the tooltip with a rich text repre...
Definition: guiutil.h:156
bool eventFilter(QObject *obj, QEvent *evt)
Definition: guiutil.cpp:438
ToolTipToRichTextFilter(int size_threshold, QObject *parent=0)
Definition: guiutil.cpp:433
Line edit that can be marked as "invalid" to show input validation feedback.
Utility functions used by the PIVX Qt UI.
Definition: guiutil.cpp:68
bool openDebugLogfile()
Definition: guiutil.cpp:413
fs::path qstringToBoostPath(const QString &path)
Definition: guiutil.cpp:676
bool isObscured(QWidget *w)
Definition: guiutil.cpp:374
QString formatBalanceWithoutHtml(CAmount amount, int nDisplayUnit, bool isZpiv)
Definition: guiutil.cpp:124
void setupAmountWidget(QLineEdit *widget, QWidget *parent)
Definition: guiutil.cpp:141
Qt::ConnectionType blockingGUIThreadConnection()
Get connection type to call object slot in GUI thread with invokeMethod.
Definition: guiutil.cpp:358
void updateWidgetTextAndCursorPosition(QLineEdit *widget, const QString &str)
Definition: guiutil.cpp:148
QString HtmlEscape(const QString &str, bool fMultiLine)
Definition: guiutil.cpp:251
bool isExternal(QString theme)
Check whether a theme is not built-in.
Definition: guiutil.cpp:630
QString loadStyleSheet()
Load global CSS theme.
Definition: guiutil.cpp:639
CAmount parseValue(const QString &amount, int displayUnit)
Returns 0 if the value is invalid.
Definition: guiutil.cpp:112
bool showBackups()
Definition: guiutil.cpp:428
QString formatPingTime(double dPingTime)
Definition: guiutil.cpp:734
bool openConfigfile()
Definition: guiutil.cpp:418
void saveWindowGeometry(const QString &strSetting, QWidget *parent)
Save window size and position.
Definition: guiutil.cpp:606
bool openMNConfigfile()
Definition: guiutil.cpp:423
QString dateTimeStrWithSeconds(const QDateTime &date)
Definition: guiutil.cpp:74
QString getOpenFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedSuffixOut)
Get open filename, convenience wrapper for QFileDialog::getOpenFileName.
Definition: guiutil.cpp:331
QFont bitcoinAddressFont()
Definition: guiutil.cpp:84
QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedSuffixOut)
Get save filename, mimics QFileDialog::getSaveFileName, except that it appends a default suffix when ...
Definition: guiutil.cpp:291
QString boostPathToQString(const fs::path &path)
Definition: guiutil.cpp:681
bool SetStartOnSystemStartup(bool fAutoStart)
Definition: guiutil.cpp:602
void bringToFront(QWidget *w)
Definition: guiutil.cpp:379
void restoreWindowGeometry(const QString &strSetting, const QSize &defaultSize, QWidget *parent)
Restore window size and position.
Definition: guiutil.cpp:613
QProgressBar ProgressBar
Definition: guiutil.h:201
QString dateTimeStr(const QDateTime &date)
Definition: guiutil.cpp:69
QString formatDurationStr(int secs)
Definition: guiutil.cpp:686
QVariant getEntryData(QAbstractItemView *view, int column, int role)
Return a field of the currently selected entry as a QString.
Definition: guiutil.cpp:278
QString formatBitcoinURI(const SendCoinsRecipient &info)
Definition: guiutil.cpp:218
QString formatTimeOffset(int64_t nTimeOffset)
Definition: guiutil.cpp:739
QString formatServicesStr(quint64 mask)
Definition: guiutil.cpp:706
QString formatBalance(CAmount amount, int nDisplayUnit, bool isZpiv)
Definition: guiutil.cpp:119
bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out)
Definition: guiutil.cpp:156
bool GetStartOnSystemStartup()
Definition: guiutil.cpp:598
QStringList SplitSkipEmptyParts(const QString &string, const SeparatorType &separator)
Splits the string into substrings wherever separator occurs, and returns the list of those strings.
Definition: guiutil.h:214
void copyEntryData(QAbstractItemView *view, int column, int role)
Copy a field of the currently selected entry of a view to the clipboard.
Definition: guiutil.cpp:266
void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent)
Definition: guiutil.cpp:129
void setClipboard(const QString &str)
Definition: guiutil.cpp:670
bool isDust(const QString &address, const CAmount &amount)
Definition: guiutil.cpp:243