PRCYCoin  2.0.0.7rc1
P2P Digital Currency
guiutil.h
Go to the documentation of this file.
1 // Copyright (c) 2011-2013 The Bitcoin developers
2 // Distributed under the MIT/X11 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 <QCalendarWidget>
12 #include <QEvent>
13 #include <QHeaderView>
14 #include <QMessageBox>
15 #include <QObject>
16 #include <QProgressBar>
17 #include <QString>
18 #include <QTableView>
19 #include <QTableWidget>
20 
21 
22 class QValidatedLineEdit;
23 class SendCoinsRecipient;
24 
25 QT_BEGIN_NAMESPACE
26 class QAbstractItemView;
27 class QDateTime;
28 class QFont;
29 class QLineEdit;
30 class QUrl;
31 class QWidget;
32 QT_END_NAMESPACE
33 
36 namespace GUIUtil
37 {
38 // Create human-readable string from date
39 QString dateTimeStr(const QDateTime& datetime);
40 QString dateTimeStr(qint64 nTime);
41 
42 // Render PRCY addresses in monospace font
43 QFont bitcoinAddressFont();
44 
45 void HideDisabledWidgets(QVector<QWidget*> widgets );
46 
47 
48 // Set up widgets for address and amounts
49 void setupAddressWidget(QValidatedLineEdit* widget, QWidget* parent);
50 void setupAmountWidget(QLineEdit* widget, QWidget* parent);
51 
52 // Parse "prcycoin:" 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(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 
78 QVariant getEntryData(QAbstractItemView *view, int column, int role);
79 
80 void setClipboard(const QString& str);
81 
92 QString getSaveFileName(QWidget* parent, const QString& caption, const QString& dir, const QString& filter, QString* selectedSuffixOut);
93 
103 QString getOpenFileName(QWidget* parent, const QString& caption, const QString& dir, const QString& filter, QString* selectedSuffixOut);
104 
110 Qt::ConnectionType blockingGUIThreadConnection();
111 
112 // Activate, show and raise the widget
113 void bringToFront(QWidget* w);
114 
115 // Determine whether a widget is hidden behind other windows
116 bool isObscured(QWidget* w);
117 
118 // Open debug.log
119 bool openDebugLogfile();
120 
121 // Open prcycoin.conf
122 bool openConfigfile();
123 
124 // Open masternode.conf
125 bool openMNConfigfile();
126 
127 // Browse DataDir folder
128 bool showDataDir();
129 
130 // Browse Qt Dir folder
131 void showQtDir();
132 
133 // Browse backup folder
134 bool showBackups();
135 
140 class ToolTipEventFilter : public QObject
141 {
142  Q_OBJECT
143 public:
144  explicit ToolTipEventFilter(QObject* parent=0);
145 protected:
146  bool eventFilter(QObject* object, QEvent* event) override
147  {
148  if (event->type() == QEvent::ToolTip)
149  return true;
150  else
151  return object->eventFilter(object, event);
152  }
153 };
154 
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 
179 class TableViewLastColumnResizingFixer : public QObject
180 {
181  Q_OBJECT
182 
183 public:
184  TableViewLastColumnResizingFixer(QTableView* table, int lastColMinimumWidth, int allColsMinimumWidth);
185  void stretchColumnWidth(int column);
186 
187 private:
188  QTableView* tableView;
194 
196  int getAvailableWidthForColumn(int column);
197  int getColumnsWidth();
200  void setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode);
201  void resizeColumn(int nColumnIndex, int width);
202 
203 private Q_SLOTS:
204  void on_sectionResized(int logicalIndex, int oldSize, int newSize);
205  void on_geometriesChanged();
206 };
207 
212 class DHMSTableWidgetItem : public QTableWidgetItem
213 {
214 public:
215  DHMSTableWidgetItem(const int64_t seconds);
216  virtual bool operator<(QTableWidgetItem const& item) const;
217 
218 private:
219  // Private backing value for DHMS string, used for sorting.
220  int64_t value;
221 };
222 
224 bool SetStartOnSystemStartup(bool fAutoStart);
225 
227 void saveWindowGeometry(const QString& strSetting, QWidget* parent);
229 void restoreWindowGeometry(const QString& strSetting, const QSize& defaultSizeIn, QWidget* parent);
230 
232 QString loadStyleSheet();
234 void refreshStyleSheet();
236 void colorCalendarWidgetWeekends(QCalendarWidget* widget, QColor color);
238 void setWindowless(QWidget* widget);
240 void disableTooltips(QWidget* widget);
241 
243 bool isExternal(QString theme);
244 
245 //display a windowless prompt
246 void prompt(QString message);
247 
248 /* Convert QString to OS specific boost path through UTF-8 */
249 fs::path qstringToBoostPath(const QString& path);
250 
251 /* Convert OS specific boost path to QString through UTF-8 */
252 QString boostPathToQString(const fs::path& path);
253 
254 /* Convert seconds into a QString with days, hours, mins, secs */
255 QString formatDurationStr(int secs);
256 
257 /* Format CNodeStats.nServices bitmask into a user-readable string */
258 QString formatServicesStr(quint64 mask);
259 
260 /* Format a CNodeCombinedStats.dPingTime into a user-readable string or display N/A, if 0*/
261 QString formatPingTime(double dPingTime);
262 
263 /* Format a CNodeCombinedStats.nTimeOffset into a user-readable string. */
264 QString formatTimeOffset(int64_t nTimeOffset);
265 
266 QString formatBytes(uint64_t bytes);
267 
268 typedef QProgressBar ProgressBar;
269 
270 } // namespace GUIUtil
271 
272 #endif // BITCOIN_QT_GUIUTIL_H
GUIUtil::TableViewLastColumnResizingFixer::on_geometriesChanged
void on_geometriesChanged()
Definition: guiutil.cpp:501
GUIUtil::setWindowless
void setWindowless(QWidget *widget)
Hideframes for pop up widgets.
Definition: guiutil.cpp:750
GUIUtil::ToolTipToRichTextFilter
Definition: guiutil.h:155
GUIUtil::TableViewLastColumnResizingFixer::connectViewHeadersSignals
void connectViewHeadersSignals()
Definition: guiutil.cpp:419
GUIUtil::DHMSTableWidgetItem::operator<
virtual bool operator<(QTableWidgetItem const &item) const
Comparator overload to ensure that the "DHMS"-type durations as used in the "active-since" list in th...
Definition: guiutil.cpp:542
GUIUtil::bitcoinAddressFont
QFont bitcoinAddressFont()
Definition: guiutil.cpp:81
GUIUtil::boostPathToQString
QString boostPathToQString(const fs::path &path)
Definition: guiutil.cpp:799
GUIUtil::TableViewLastColumnResizingFixer::columnCount
int columnCount
Definition: guiutil.h:192
GUIUtil::openDebugLogfile
bool openDebugLogfile()
Definition: guiutil.cpp:359
GUIUtil::openConfigfile
bool openConfigfile()
Definition: guiutil.cpp:364
fs.h
GUIUtil::showDataDir
bool showDataDir()
Definition: guiutil.cpp:374
GUIUtil::colorCalendarWidgetWeekends
void colorCalendarWidgetWeekends(QCalendarWidget *widget, QColor color)
Change the color of weekends on calendar widget *Defaults to Red.
Definition: guiutil.cpp:770
GUIUtil::openMNConfigfile
bool openMNConfigfile()
Definition: guiutil.cpp:369
GUIUtil::SetStartOnSystemStartup
bool SetStartOnSystemStartup(bool fAutoStart)
Definition: guiutil.cpp:687
GUIUtil::TableViewLastColumnResizingFixer::resizeColumn
void resizeColumn(int nColumnIndex, int width)
Definition: guiutil.cpp:439
GUIUtil::disableTooltips
void disableTooltips(QWidget *widget)
Disable tooltips.
Definition: guiutil.cpp:758
GUIUtil::showQtDir
void showQtDir()
Definition: guiutil.cpp:384
GUIUtil::TableViewLastColumnResizingFixer
Makes a QTableView last column feel as if it was being resized from its left border.
Definition: guiutil.h:179
GUIUtil::ToolTipToRichTextFilter::eventFilter
bool eventFilter(QObject *obj, QEvent *evt)
Definition: guiutil.cpp:400
GUIUtil
Utility functions used by the PRCY Qt UI.
Definition: guiutil.cpp:68
GUIUtil::ProgressBar
QProgressBar ProgressBar
Definition: guiutil.h:268
GUIUtil::parseBitcoinURI
bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out)
Definition: guiutil.cpp:104
GUIUtil::TableViewLastColumnResizingFixer::stretchColumnWidth
void stretchColumnWidth(int column)
Definition: guiutil.cpp:482
GUIUtil::formatBitcoinURI
QString formatBitcoinURI(const SendCoinsRecipient &info)
Definition: guiutil.cpp:167
GUIUtil::bringToFront
void bringToFront(QWidget *w)
Definition: guiutil.cpp:325
GUIUtil::qstringToBoostPath
fs::path qstringToBoostPath(const QString &path)
Definition: guiutil.cpp:794
GUIUtil::TableViewLastColumnResizingFixer::tableView
QTableView * tableView
Definition: guiutil.h:188
GUIUtil::isObscured
bool isObscured(QWidget *w)
Definition: guiutil.cpp:320
GUIUtil::setClipboard
void setClipboard(const QString &str)
Definition: guiutil.cpp:785
SendCoinsRecipient
Definition: walletmodel.h:46
GUIUtil::getEntryData
QVariant getEntryData(QAbstractItemView *view, int column, int role)
Return a field of the currently selected entry as a QString.
Definition: guiutil.cpp:227
GUIUtil::formatTimeOffset
QString formatTimeOffset(int64_t nTimeOffset)
Definition: guiutil.cpp:857
GUIUtil::ToolTipEventFilter
Qt event filter that intercepts ToolTipChange events, and replaces the tooltip with a rich text repre...
Definition: guiutil.h:140
GUIUtil::getOpenFileName
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:277
GUIUtil::TableViewLastColumnResizingFixer::secondToLastColumnIndex
int secondToLastColumnIndex
Definition: guiutil.h:193
GUIUtil::TableViewLastColumnResizingFixer::getAvailableWidthForColumn
int getAvailableWidthForColumn(int column)
Definition: guiutil.cpp:454
GUIUtil::HideDisabledWidgets
void HideDisabledWidgets(QVector< QWidget * > widgets)
Definition: guiutil.cpp:698
GUIUtil::saveWindowGeometry
void saveWindowGeometry(const QString &strSetting, QWidget *parent)
Save window size and position.
Definition: guiutil.cpp:691
GUIUtil::DHMSTableWidgetItem
Extension to QTableWidgetItem that facilitates proper ordering for "DHMS" strings (primarily used in ...
Definition: guiutil.h:212
CAmount
int64_t CAmount
Amount in PRCY (Can be negative)
Definition: amount.h:17
QValidatedLineEdit
Line edit that can be marked as "invalid" to show input validation feedback.
Definition: qvalidatedlineedit.h:13
GUIUtil::TableViewLastColumnResizingFixer::adjustTableColumnsWidth
void adjustTableColumnsWidth()
Definition: guiutil.cpp:468
GUIUtil::showBackups
bool showBackups()
Definition: guiutil.cpp:390
GUIUtil::copyEntryData
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:215
GUIUtil::TableViewLastColumnResizingFixer::getColumnsWidth
int getColumnsWidth()
Definition: guiutil.cpp:445
GUIUtil::TableViewLastColumnResizingFixer::disconnectViewHeadersSignals
void disconnectViewHeadersSignals()
Definition: guiutil.cpp:426
GUIUtil::formatBytes
QString formatBytes(uint64_t bytes)
Definition: guiutil.cpp:862
GUIUtil::setupAmountWidget
void setupAmountWidget(QLineEdit *widget, QWidget *parent)
Definition: guiutil.cpp:95
GUIUtil::formatServicesStr
QString formatServicesStr(quint64 mask)
Definition: guiutil.cpp:824
GUIUtil::prompt
void prompt(QString message)
Definition: guiutil.cpp:761
GUIUtil::DHMSTableWidgetItem::value
int64_t value
Definition: guiutil.h:220
GUIUtil::getSaveFileName
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:239
GUIUtil::ToolTipEventFilter::ToolTipEventFilter
ToolTipEventFilter(QObject *parent=0)
GUIUtil::GetStartOnSystemStartup
bool GetStartOnSystemStartup()
Definition: guiutil.cpp:683
GUIUtil::HtmlEscape
QString HtmlEscape(const QString &str, bool fMultiLine)
Definition: guiutil.cpp:200
GUIUtil::DHMSTableWidgetItem::DHMSTableWidgetItem
DHMSTableWidgetItem(const int64_t seconds)
Class constructor.
Definition: guiutil.cpp:530
GUIUtil::ToolTipToRichTextFilter::size_threshold
int size_threshold
Definition: guiutil.h:166
GUIUtil::TableViewLastColumnResizingFixer::lastColumnMinimumWidth
int lastColumnMinimumWidth
Definition: guiutil.h:189
GUIUtil::TableViewLastColumnResizingFixer::on_sectionResized
void on_sectionResized(int logicalIndex, int oldSize, int newSize)
Definition: guiutil.cpp:490
GUIUtil::blockingGUIThreadConnection
Qt::ConnectionType blockingGUIThreadConnection()
Get connection type to call object slot in GUI thread with invokeMethod.
Definition: guiutil.cpp:304
GUIUtil::formatPingTime
QString formatPingTime(double dPingTime)
Definition: guiutil.cpp:852
GUIUtil::isExternal
bool isExternal(QString theme)
Check whether a theme is not build-in.
GUIUtil::ToolTipToRichTextFilter::ToolTipToRichTextFilter
ToolTipToRichTextFilter(int size_threshold, QObject *parent=0)
Definition: guiutil.cpp:395
GUIUtil::formatDurationStr
QString formatDurationStr(int secs)
Definition: guiutil.cpp:804
GUIUtil::dateTimeStr
QString dateTimeStr(const QDateTime &date)
Definition: guiutil.cpp:70
GUIUtil::loadStyleSheet
QString loadStyleSheet()
Load global CSS theme.
Definition: guiutil.cpp:721
GUIUtil::TableViewLastColumnResizingFixer::TableViewLastColumnResizingFixer
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:514
GUIUtil::isDust
bool isDust(const QString &address, const CAmount &amount)
Definition: guiutil.cpp:192
GUIUtil::setupAddressWidget
void setupAddressWidget(QValidatedLineEdit *widget, QWidget *parent)
Definition: guiutil.cpp:86
GUIUtil::refreshStyleSheet
void refreshStyleSheet()
Refresh App theme.
Definition: guiutil.cpp:742
amount.h
GUIUtil::TableViewLastColumnResizingFixer::lastColumnIndex
int lastColumnIndex
Definition: guiutil.h:191
GUIUtil::TableViewLastColumnResizingFixer::setViewHeaderResizeMode
void setViewHeaderResizeMode(int logicalIndex, QHeaderView::ResizeMode resizeMode)
Definition: guiutil.cpp:434
GUIUtil::restoreWindowGeometry
void restoreWindowGeometry(const QString &strSetting, const QSize &defaultSize, QWidget *parent)
Restore window size and position.
Definition: guiutil.cpp:704
GUIUtil::TableViewLastColumnResizingFixer::allColumnsMinimumWidth
int allColumnsMinimumWidth
Definition: guiutil.h:190
GUIUtil::ToolTipEventFilter::eventFilter
bool eventFilter(QObject *object, QEvent *event) override
Definition: guiutil.h:146