BSHA3  0.17.99
P2P Blockchain, based on Bitcoin
guiutil.h
Go to the documentation of this file.
1 // Copyright (c) 2011-2018 The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #ifndef BITCOIN_QT_GUIUTIL_H
6 #define BITCOIN_QT_GUIUTIL_H
7 
8 #include <amount.h>
9 #include <fs.h>
10 
11 #include <QEvent>
12 #include <QHeaderView>
13 #include <QItemDelegate>
14 #include <QMessageBox>
15 #include <QObject>
16 #include <QProgressBar>
17 #include <QString>
18 #include <QTableView>
19 #include <QLabel>
20 
21 class QValidatedLineEdit;
22 class SendCoinsRecipient;
23 
24 namespace interfaces
25 {
26  class Node;
27 }
28 
29 QT_BEGIN_NAMESPACE
30 class QAbstractItemView;
31 class QDateTime;
32 class QFont;
33 class QLineEdit;
34 class QUrl;
35 class QWidget;
36 QT_END_NAMESPACE
37 
40 namespace GUIUtil
41 {
42  // Create human-readable string from date
43  QString dateTimeStr(const QDateTime &datetime);
44  QString dateTimeStr(qint64 nTime);
45 
46  // Return a monospace font
47  QFont fixedPitchFont();
48 
49  // Set up widget for address
50  void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent);
51 
52  // Parse "bitcoin:" URI into recipient object, return true on successful parsing
53  bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out);
54  bool parseBitcoinURI(QString uri, SendCoinsRecipient *out);
55  QString formatBitcoinURI(const SendCoinsRecipient &info);
56 
57  // Returns true if given address+amount meets "dust" definition
58  bool isDust(interfaces::Node& node, const QString& address, const CAmount& amount);
59 
60  // HTML escaping for rich text controls
61  QString HtmlEscape(const QString& str, bool fMultiLine=false);
62  QString HtmlEscape(const std::string& str, bool fMultiLine=false);
63 
70  void copyEntryData(QAbstractItemView *view, int column, int role=Qt::EditRole);
71 
77  QList<QModelIndex> getEntryData(QAbstractItemView *view, int column);
78 
79  void setClipboard(const QString& str);
80 
91  QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir,
92  const QString &filter,
93  QString *selectedSuffixOut);
94 
104  QString getOpenFileName(QWidget *parent, const QString &caption, const QString &dir,
105  const QString &filter,
106  QString *selectedSuffixOut);
107 
113  Qt::ConnectionType blockingGUIThreadConnection();
114 
115  // Determine whether a widget is hidden behind other windows
116  bool isObscured(QWidget *w);
117 
118  // Open debug.log
119  void openDebugLogfile();
120 
121  // Open the config file
122  bool openBitcoinConf();
123 
128  class ToolTipToRichTextFilter : public QObject
129  {
130  Q_OBJECT
131 
132  public:
133  explicit ToolTipToRichTextFilter(int size_threshold, QObject *parent = 0);
134 
135  protected:
136  bool eventFilter(QObject *obj, QEvent *evt);
137 
138  private:
140  };
141 
152  class TableViewLastColumnResizingFixer: public QObject
153  {
154  Q_OBJECT
155 
156  public:
157  TableViewLastColumnResizingFixer(QTableView* table, int lastColMinimumWidth, int allColsMinimumWidth, QObject *parent);
158  void stretchColumnWidth(int column);
159 
160  private:
161  QTableView* tableView;
167 
169  int getAvailableWidthForColumn(int column);
170  int getColumnsWidth();
173  void setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode);
174  void resizeColumn(int nColumnIndex, int width);
175 
176  private Q_SLOTS:
177  void on_sectionResized(int logicalIndex, int oldSize, int newSize);
178  void on_geometriesChanged();
179  };
180 
182  bool SetStartOnSystemStartup(bool fAutoStart);
183 
184  /* Convert QString to OS specific boost path through UTF-8 */
185  fs::path qstringToBoostPath(const QString &path);
186 
187  /* Convert OS specific boost path to QString through UTF-8 */
188  QString boostPathToQString(const fs::path &path);
189 
190  /* Convert seconds into a QString with days, hours, mins, secs */
191  QString formatDurationStr(int secs);
192 
193  /* Format CNodeStats.nServices bitmask into a user-readable string */
194  QString formatServicesStr(quint64 mask);
195 
196  /* Format a CNodeCombinedStats.dPingTime into a user-readable string or display N/A, if 0*/
197  QString formatPingTime(double dPingTime);
198 
199  /* Format a CNodeCombinedStats.nTimeOffset into a user-readable string. */
200  QString formatTimeOffset(int64_t nTimeOffset);
201 
202  QString formatNiceTimeOffset(qint64 secs);
203 
204  QString formatBytes(uint64_t bytes);
205 
206  qreal calculateIdealFontSize(int width, const QString& text, QFont font, qreal minPointSize = 4, qreal startPointSize = 14);
207 
208  class ClickableLabel : public QLabel
209  {
210  Q_OBJECT
211 
212  Q_SIGNALS:
216  void clicked(const QPoint& point);
217  protected:
218  void mouseReleaseEvent(QMouseEvent *event);
219  };
220 
221  class ClickableProgressBar : public QProgressBar
222  {
223  Q_OBJECT
224 
225  Q_SIGNALS:
229  void clicked(const QPoint& point);
230  protected:
231  void mouseReleaseEvent(QMouseEvent *event);
232  };
233 
235 
236  class ItemDelegate : public QItemDelegate
237  {
238  Q_OBJECT
239  public:
240  ItemDelegate(QObject* parent) : QItemDelegate(parent) {}
241 
242  Q_SIGNALS:
243  void keyEscapePressed();
244 
245  private:
246  bool eventFilter(QObject *object, QEvent *event);
247  };
248 } // namespace GUIUtil
249 
250 #endif // BITCOIN_QT_GUIUTIL_H
void openDebugLogfile()
Definition: guiutil.cpp:356
QFont fixedPitchFont()
Definition: guiutil.cpp:75
Utility functions used by the Bitcoin Qt UI.
Definition: bitcoingui.h:50
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:297
QList< QModelIndex > getEntryData(QAbstractItemView *view, int column)
Return a field of the currently selected entry as a QString.
Definition: guiutil.cpp:244
void setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode)
Definition: guiutil.cpp:421
bool isDust(interfaces::Node &node, const QString &address, const CAmount &amount)
Definition: guiutil.cpp:208
QString dateTimeStr(const QDateTime &date)
Definition: guiutil.cpp:65
Qt::ConnectionType blockingGUIThreadConnection()
Get connection type to call object slot in GUI thread with invokeMethod.
Definition: guiutil.cpp:328
QString formatBytes(uint64_t bytes)
Definition: guiutil.cpp:878
QString formatTimeOffset(int64_t nTimeOffset)
Definition: guiutil.cpp:836
bool GetStartOnSystemStartup()
Definition: guiutil.cpp:752
ToolTipToRichTextFilter(int size_threshold, QObject *parent=0)
Definition: guiutil.cpp:381
QString HtmlEscape(const QString &str, bool fMultiLine)
Definition: guiutil.cpp:216
Qt event filter that intercepts ToolTipChange events, and replaces the tooltip with a rich text repre...
Definition: guiutil.h:128
Line edit that can be marked as "invalid" to show input validation feedback.
bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out)
Definition: guiutil.cpp:117
QString formatBitcoinURI(const SendCoinsRecipient &info)
Definition: guiutil.cpp:180
TableViewLastColumnResizingFixer(QTableView *table, int lastColMinimumWidth, int allColsMinimumWidth, QObject *parent)
Initializes all internal variables and prepares the the resize modes of the last 2 columns of the tab...
Definition: guiutil.cpp:506
int64_t CAmount
Amount in satoshis (Can be negative)
Definition: amount.h:12
isminefilter filter
Definition: rpcwallet.cpp:1011
void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent)
Definition: guiutil.cpp:104
bool isObscured(QWidget *w)
Definition: guiutil.cpp:347
bool eventFilter(QObject *obj, QEvent *evt)
Definition: guiutil.cpp:388
qreal calculateIdealFontSize(int width, const QString &text, QFont font, qreal minPointSize, qreal font_size)
Definition: guiutil.cpp:890
QString formatDurationStr(int secs)
Definition: guiutil.cpp:773
void setClipboard(const QString &str)
Definition: guiutil.cpp:757
Makes a QTableView last column feel as if it was being resized from its left border.
Definition: guiutil.h:152
void clicked(const QPoint &point)
Emitted when the label is clicked.
bool eventFilter(QObject *object, QEvent *event)
Definition: guiutil.cpp:912
ClickableProgressBar ProgressBar
Definition: guiutil.h:234
QString formatPingTime(double dPingTime)
Definition: guiutil.cpp:831
void on_sectionResized(int logicalIndex, int oldSize, int newSize)
Definition: guiutil.cpp:480
void mouseReleaseEvent(QMouseEvent *event)
Definition: guiutil.cpp:902
bool openBitcoinConf()
Definition: guiutil.cpp:365
void mouseReleaseEvent(QMouseEvent *event)
Definition: guiutil.cpp:907
fs::path qstringToBoostPath(const QString &path)
Definition: guiutil.cpp:763
QString formatServicesStr(quint64 mask)
Definition: guiutil.cpp:793
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:251
bool SetStartOnSystemStartup(bool fAutoStart)
Definition: guiutil.cpp:753
void clicked(const QPoint &point)
Emitted when the progressbar is clicked.
QString formatNiceTimeOffset(qint64 secs)
Definition: guiutil.cpp:841
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:231
QString boostPathToQString(const fs::path &path)
Definition: guiutil.cpp:768
Top-level interface for a bitcoin node (bsha3d process).
Definition: node.h:35
void resizeColumn(int nColumnIndex, int width)
Definition: guiutil.cpp:426
ItemDelegate(QObject *parent)
Definition: guiutil.h:240