86d5634941
- converted openBictoinAction to toggleHideAction - put GUIUtil functions into a namespace instead of a class - put window-related functions together in optionsdialog Reasoning: - toggle is more typical behaviour - it's more functional - better UX The typical issue with toggling visibility is that when a window is obscured by other windows but in the 'shown' state, hiding it isn't what you want. I've added an 'isObscured' function to GUIUtil that checks several pixels in the window to see if they are visible on the desktop so that an obscured but shown window can be raised. Conflicts: src/qt/guiutil.cpp src/qt/guiutil.h
74 lines
2.9 KiB
C++
74 lines
2.9 KiB
C++
#ifndef GUIUTIL_H
|
|
#define GUIUTIL_H
|
|
|
|
#include <QString>
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
class QFont;
|
|
class QLineEdit;
|
|
class QWidget;
|
|
class QDateTime;
|
|
class QUrl;
|
|
class QAbstractItemView;
|
|
QT_END_NAMESPACE
|
|
class SendCoinsRecipient;
|
|
|
|
/** Utility functions used by the Bitcoin Qt UI.
|
|
*/
|
|
namespace GUIUtil
|
|
{
|
|
// Create human-readable string from date
|
|
QString dateTimeStr(const QDateTime &datetime);
|
|
QString dateTimeStr(qint64 nTime);
|
|
|
|
// Render bitcoin addresses in monospace font
|
|
QFont bitcoinAddressFont();
|
|
|
|
// Set up widgets for address and amounts
|
|
void setupAddressWidget(QLineEdit *widget, QWidget *parent);
|
|
void setupAmountWidget(QLineEdit *widget, QWidget *parent);
|
|
|
|
// Parse "bitcoin:" URI into recipient object, return true on succesful parsing
|
|
// See Bitcoin URI definition discussion here: https://bitcointalk.org/index.php?topic=33490.0
|
|
bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out);
|
|
bool parseBitcoinURI(QString uri, SendCoinsRecipient *out);
|
|
|
|
// HTML escaping for rich text controls
|
|
QString HtmlEscape(const QString& str, bool fMultiLine=false);
|
|
QString HtmlEscape(const std::string& str, bool fMultiLine=false);
|
|
|
|
/** Copy a field of the currently selected entry of a view to the clipboard. Does nothing if nothing
|
|
is selected.
|
|
@param[in] column Data column to extract from the model
|
|
@param[in] role Data role to extract from the model
|
|
@see TransactionView::copyLabel, TransactionView::copyAmount, TransactionView::copyAddress
|
|
*/
|
|
void copyEntryData(QAbstractItemView *view, int column, int role=Qt::EditRole);
|
|
|
|
/** Get save file name, mimics QFileDialog::getSaveFileName, except that it appends a default suffix
|
|
when no suffix is provided by the user.
|
|
|
|
@param[in] parent Parent window (or 0)
|
|
@param[in] caption Window caption (or empty, for default)
|
|
@param[in] dir Starting directory (or empty, to default to documents directory)
|
|
@param[in] filter Filter specification such as "Comma Separated Files (*.csv)"
|
|
@param[out] selectedSuffixOut Pointer to return the suffix (file type) that was selected (or 0).
|
|
Can be useful when choosing the save file format based on suffix.
|
|
*/
|
|
QString getSaveFileName(QWidget *parent=0, const QString &caption=QString(),
|
|
const QString &dir=QString(), const QString &filter=QString(),
|
|
QString *selectedSuffixOut=0);
|
|
|
|
/** Get connection type to call object slot in GUI thread with invokeMethod. The call will be blocking.
|
|
|
|
@returns If called from the GUI thread, return a Qt::DirectConnection.
|
|
If called from another thread, return a Qt::BlockingQueuedConnection.
|
|
*/
|
|
Qt::ConnectionType blockingGUIThreadConnection();
|
|
|
|
// Determine whether a widget is hidden behind other windows
|
|
bool isObscured(QWidget *w);
|
|
|
|
} // namespace GUIUtil
|
|
|
|
#endif // GUIUTIL_H
|