Anoncoin  0.9.4
P2P Digital Currency
guiutil.h
Go to the documentation of this file.
1 // Copyright (c) 2011-2013 The Bitcoin developers
2 // Copyright (c) 2013-2014 The Anoncoin 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 GUIUTIL_H
7 #define GUIUTIL_H
8 
9 #include <QEvent>
10 #include <QHeaderView>
11 #include <QMessageBox>
12 #include <QObject>
13 #include <QProgressBar>
14 #include <QString>
15 #include <QTableView>
16 
17 #include <boost/filesystem.hpp>
18 
19 class QValidatedLineEdit;
20 class SendCoinsRecipient;
21 
22 QT_BEGIN_NAMESPACE
23 class QAbstractItemView;
24 class QDateTime;
25 class QFont;
26 class QLineEdit;
27 class QUrl;
28 class QWidget;
29 QT_END_NAMESPACE
30 
33 namespace GUIUtil
34 {
35  // Create human-readable string from date
36  QString dateTimeStr(const QDateTime &datetime);
37  QString dateTimeStr(qint64 nTime);
38 
39  // Render Anoncoin addresses in monospace font
40  QFont anoncoinAddressFont();
41 
42  // Set up widgets for address and amounts
43  void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent);
44  void setupAmountWidget(QLineEdit *widget, QWidget *parent);
45 
46  // Parse "anoncoin:" URI into recipient object, return true on successful parsing
47  bool parseAnoncoinURI(const QUrl &uri, SendCoinsRecipient *out);
48  bool parseAnoncoinURI(QString uri, SendCoinsRecipient *out);
49  QString formatAnoncoinURI(const SendCoinsRecipient &info);
50 
51  // Returns true if given address+amount meets "dust" definition
52  bool isDust(const QString& address, qint64 amount);
53 
54  // HTML escaping for rich text controls
55  QString HtmlEscape(const QString& str, bool fMultiLine=false);
56  QString HtmlEscape(const std::string& str, bool fMultiLine=false);
57 
64  void copyEntryData(QAbstractItemView *view, int column, int role=Qt::EditRole);
65 
66  void setClipboard(const QString& str);
67 
78  QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir,
79  const QString &filter,
80  QString *selectedSuffixOut);
81 
91  QString getOpenFileName(QWidget *parent, const QString &caption, const QString &dir,
92  const QString &filter,
93  QString *selectedSuffixOut);
94 
100  Qt::ConnectionType blockingGUIThreadConnection();
101 
102  // Determine whether a widget is hidden behind other windows
103  bool isObscured(QWidget *w);
104 
105  // Open debug.log
106  void openDebugLogfile();
107 
113  // Replace invalid default fonts with known good ones
114  void SubstituteFonts();
115 
116  class ToolTipToRichTextFilter : public QObject
117  {
118  Q_OBJECT
119 
120  public:
121  explicit ToolTipToRichTextFilter(int size_threshold, QObject *parent = 0);
122 
123  protected:
124  bool eventFilter(QObject *obj, QEvent *evt);
125 
126  private:
128  };
129 
140  class TableViewLastColumnResizingFixer: public QObject
141  {
142  Q_OBJECT
143 
144  public:
145  TableViewLastColumnResizingFixer(QTableView* table, int lastColMinimumWidth, int allColsMinimumWidth);
146  void stretchColumnWidth(int column);
147 
148  private:
149  QTableView* tableView;
155 
157  int getAvailableWidthForColumn(int column);
158  int getColumnsWidth();
161  void setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode);
162  void resizeColumn(int nColumnIndex, int width);
163 
164  private slots:
165  void on_sectionResized(int logicalIndex, int oldSize, int newSize);
166  void on_geometriesChanged();
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 
177  /* Convert QString to OS specific boost path through UTF-8 */
178  boost::filesystem::path qstringToBoostPath(const QString &path);
179 
180  /* Convert OS specific boost path to QString through UTF-8 */
181  QString boostPathToQString(const boost::filesystem::path &path);
182 
183  /* Convert seconds into a QString with days, hours, mins, secs */
184  QString formatDurationStr(int secs);
185 
186  /* Format CNodeStats.nServices bitmask into a user-readable string */
187  QString formatServicesStr(quint64 mask);
188 
189  /* Format a CNodeCombinedStats.dPingTime into a user-readable string or display N/A, if 0*/
190  QString formatPingTime(double dPingTime);
191 
192 #ifdef Q_OS_MAC
193  // workaround for Qt OSX Bug:
194  // https://bugreports.qt-project.org/browse/QTBUG-15631
195  // QProgressBar uses around 10% CPU even when app is in background
196  class ProgressBar : public QProgressBar
197  {
198  bool event(QEvent *e) {
199  return (e->type() != QEvent::StyleAnimationUpdate) ? QProgressBar::event(e) : false;
200  }
201  };
202 #else
203  typedef QProgressBar ProgressBar;
204 #endif
205 
206 } // namespace GUIUtil
207 
208 #endif // GUIUTIL_H
void openDebugLogfile()
Definition: guiutil.cpp:373
Utility functions used by the Anoncoin Qt UI.
Definition: guiutil.cpp:73
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:310
void setupAmountWidget(QLineEdit *widget, QWidget *parent)
Definition: guiutil.cpp:108
void setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode)
Definition: guiutil.cpp:441
TableViewLastColumnResizingFixer(QTableView *table, int lastColMinimumWidth, int allColsMinimumWidth)
Initializes all internal variables and prepares the the resize modes of the last 2 columns of the tab...
Definition: guiutil.cpp:530
QProgressBar ProgressBar
Definition: guiutil.h:203
QString dateTimeStr(const QDateTime &date)
Definition: guiutil.cpp:75
bool parseAnoncoinURI(const QUrl &uri, SendCoinsRecipient *out)
Definition: guiutil.cpp:117
Qt::ConnectionType blockingGUIThreadConnection()
Get connection type to call object slot in GUI thread with invokeMethod.
Definition: guiutil.cpp:345
bool GetStartOnSystemStartup()
Definition: guiutil.cpp:733
ToolTipToRichTextFilter(int size_threshold, QObject *parent=0)
Definition: guiutil.cpp:382
QString HtmlEscape(const QString &str, bool fMultiLine)
Definition: guiutil.cpp:228
boost::filesystem::path qstringToBoostPath(const QString &path)
Definition: guiutil.cpp:779
Line edit that can be marked as "invalid" to show input validation feedback.
void saveWindowGeometry(const QString &strSetting, QWidget *parent)
Save window size and position.
Definition: guiutil.cpp:738
void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent)
Definition: guiutil.cpp:96
void SubstituteFonts()
Qt event filter that intercepts ToolTipChange events, and replaces the tooltip with a rich text repre...
Definition: guiutil.cpp:388
bool isObscured(QWidget *w)
Definition: guiutil.cpp:364
bool eventFilter(QObject *obj, QEvent *evt)
Definition: guiutil.cpp:408
QString formatDurationStr(int secs)
Definition: guiutil.cpp:790
void setClipboard(const QString &str)
Definition: guiutil.cpp:761
bool isDust(const QString &address, qint64 amount)
Definition: guiutil.cpp:220
Makes a QTableView last column feel as if it was being resized from its left border.
Definition: guiutil.h:140
QFont anoncoinAddressFont()
Definition: guiutil.cpp:85
void restoreWindowGeometry(const QString &strSetting, const QSize &defaultSize, QWidget *parent)
Restore window size and position.
Definition: guiutil.cpp:745
QString formatPingTime(double dPingTime)
Definition: guiutil.cpp:836
void on_sectionResized(int logicalIndex, int oldSize, int newSize)
Definition: guiutil.cpp:504
QString formatServicesStr(quint64 mask)
Definition: guiutil.cpp:810
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:260
bool SetStartOnSystemStartup(bool fAutoStart)
Definition: guiutil.cpp:734
QString boostPathToQString(const boost::filesystem::path &path)
Definition: guiutil.cpp:784
QString formatAnoncoinURI(const SendCoinsRecipient &info)
Definition: guiutil.cpp:192
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:247
void resizeColumn(int nColumnIndex, int width)
Definition: guiutil.cpp:450