update CClientUIInterface and remove orphan Wx stuff
- fix ThreadSafeMessageBox always displays error icon - allow to specify MSG_ERROR / MSG_WARNING or MSG_INFORMATION without a custom caption / title - allow to specify CClientUIInterface::ICON_ERROR / ICON_WARNING and ICON_INFORMATION (which is default) as message box icon - remove CClientUIInterface::OK from ThreadSafeMessageBox-calls, as the OK button will be set as default, if none is specified - prepend "Bitcoin - " to used captions - rename BitcoinGUI::error() -> BitcoinGUI::message() and add function documentation - change all style parameters and enum flags to unsigned - update code to use that new API - update Client- and WalletModel to use new BitcoinGUI::message() and rename the classes error() method into message() - include the possibility to supply the wanted icon for messages from Client- and WalletModel via "style" parameter
This commit is contained in:
@@ -7,7 +7,6 @@
|
||||
#include "optionsmodel.h"
|
||||
#include "guiutil.h"
|
||||
#include "guiconstants.h"
|
||||
|
||||
#include "init.h"
|
||||
#include "ui_interface.h"
|
||||
#include "qtipcserver.h"
|
||||
@@ -35,18 +34,19 @@ Q_IMPORT_PLUGIN(qtaccessiblewidgets)
|
||||
static BitcoinGUI *guiref;
|
||||
static QSplashScreen *splashref;
|
||||
|
||||
static void ThreadSafeMessageBox(const std::string& message, const std::string& caption, int style)
|
||||
static void ThreadSafeMessageBox(const std::string& message, const std::string& caption, unsigned int style)
|
||||
{
|
||||
// Message from network thread
|
||||
if(guiref)
|
||||
{
|
||||
bool modal = (style & CClientUIInterface::MODAL);
|
||||
// in case of modal message, use blocking connection to wait for user to click OK
|
||||
QMetaObject::invokeMethod(guiref, "error",
|
||||
// In case of modal message, use blocking connection to wait for user to click a button
|
||||
QMetaObject::invokeMethod(guiref, "message",
|
||||
modal ? GUIUtil::blockingGUIThreadConnection() : Qt::QueuedConnection,
|
||||
Q_ARG(QString, QString::fromStdString(caption)),
|
||||
Q_ARG(QString, QString::fromStdString(message)),
|
||||
Q_ARG(bool, modal));
|
||||
Q_ARG(bool, modal),
|
||||
Q_ARG(unsigned int, style));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "notificator.h"
|
||||
#include "guiutil.h"
|
||||
#include "rpcconsole.h"
|
||||
#include "ui_interface.h"
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
#include "macdockiconhandler.h"
|
||||
@@ -366,8 +367,8 @@ void BitcoinGUI::setClientModel(ClientModel *clientModel)
|
||||
setNumBlocks(clientModel->getNumBlocks(), clientModel->getNumBlocksOfPeers());
|
||||
connect(clientModel, SIGNAL(numBlocksChanged(int,int)), this, SLOT(setNumBlocks(int,int)));
|
||||
|
||||
// Report errors from network/worker thread
|
||||
connect(clientModel, SIGNAL(error(QString,QString,bool)), this, SLOT(error(QString,QString,bool)));
|
||||
// Receive and report messages from network/worker thread
|
||||
connect(clientModel, SIGNAL(message(QString,QString,bool,unsigned int)), this, SLOT(message(QString,QString,bool,unsigned int)));
|
||||
|
||||
overviewPage->setClientModel(clientModel);
|
||||
rpcConsole->setClientModel(clientModel);
|
||||
@@ -381,8 +382,8 @@ void BitcoinGUI::setWalletModel(WalletModel *walletModel)
|
||||
this->walletModel = walletModel;
|
||||
if(walletModel)
|
||||
{
|
||||
// Report errors from wallet thread
|
||||
connect(walletModel, SIGNAL(error(QString,QString,bool)), this, SLOT(error(QString,QString,bool)));
|
||||
// Receive and report messages from wallet thread
|
||||
connect(walletModel, SIGNAL(message(QString,QString,bool,unsigned int)), this, SLOT(message(QString,QString,bool,unsigned int)));
|
||||
|
||||
// Put transaction list in tabs
|
||||
transactionView->setModel(walletModel);
|
||||
@@ -592,15 +593,50 @@ void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks)
|
||||
progressBar->setToolTip(tooltip);
|
||||
}
|
||||
|
||||
void BitcoinGUI::error(const QString &title, const QString &message, bool modal)
|
||||
void BitcoinGUI::message(const QString &title, const QString &message, bool modal, unsigned int style)
|
||||
{
|
||||
// Report errors from network/worker thread
|
||||
if(modal)
|
||||
{
|
||||
QMessageBox::critical(this, title, message, QMessageBox::Ok, QMessageBox::Ok);
|
||||
} else {
|
||||
notificator->notify(Notificator::Critical, title, message);
|
||||
QString strTitle = tr("Bitcoin") + " - ";
|
||||
// Default to information icon
|
||||
int nMBoxIcon = QMessageBox::Information;
|
||||
int nNotifyIcon = Notificator::Information;
|
||||
|
||||
// Check for usage of predefined title
|
||||
switch (style) {
|
||||
case CClientUIInterface::MSG_ERROR:
|
||||
strTitle += tr("Error");
|
||||
break;
|
||||
case CClientUIInterface::MSG_WARNING:
|
||||
strTitle += tr("Warning");
|
||||
break;
|
||||
case CClientUIInterface::MSG_INFORMATION:
|
||||
strTitle += tr("Information");
|
||||
break;
|
||||
default:
|
||||
strTitle += title; // Use supplied title
|
||||
}
|
||||
|
||||
// Check for error/warning icon
|
||||
if (style & CClientUIInterface::ICON_ERROR) {
|
||||
nMBoxIcon = QMessageBox::Critical;
|
||||
nNotifyIcon = Notificator::Critical;
|
||||
}
|
||||
else if (style & CClientUIInterface::ICON_WARNING) {
|
||||
nMBoxIcon = QMessageBox::Warning;
|
||||
nNotifyIcon = Notificator::Warning;
|
||||
}
|
||||
|
||||
// Display message
|
||||
if (modal) {
|
||||
// Check for buttons, use OK as default, if none was supplied
|
||||
QMessageBox::StandardButton buttons;
|
||||
if (!(buttons = (QMessageBox::StandardButton)(style & CClientUIInterface::BTN_MASK)))
|
||||
buttons = QMessageBox::Ok;
|
||||
|
||||
QMessageBox mBox((QMessageBox::Icon)nMBoxIcon, strTitle, message, buttons);
|
||||
mBox.exec();
|
||||
}
|
||||
else
|
||||
notificator->notify((Notificator::Class)nNotifyIcon, strTitle, message);
|
||||
}
|
||||
|
||||
void BitcoinGUI::changeEvent(QEvent *e)
|
||||
|
||||
@@ -119,8 +119,14 @@ public slots:
|
||||
*/
|
||||
void setEncryptionStatus(int status);
|
||||
|
||||
/** Notify the user of an error in the network or transaction handling code. */
|
||||
void error(const QString &title, const QString &message, bool modal);
|
||||
/** Notify the user of an event from the core network or transaction handling code.
|
||||
@param[in] title the message box / notification title
|
||||
@param[in] message the displayed text
|
||||
@param[in] modal true to use a message box, false to use a notification
|
||||
@param[in] style style definitions (icon and used buttons - buttons only for message boxes)
|
||||
@see CClientUIInterface::MessageBoxFlags
|
||||
*/
|
||||
void message(const QString &title, const QString &message, bool modal, unsigned int style);
|
||||
/** Asks the user whether to pay the transaction fee or to cancel the transaction.
|
||||
It is currently not possible to pass a return value to another thread through
|
||||
BlockingQueuedConnection, so an indirected pointer is used.
|
||||
|
||||
@@ -84,7 +84,7 @@ void ClientModel::updateAlert(const QString &hash, int status)
|
||||
CAlert alert = CAlert::getAlertByHash(hash_256);
|
||||
if(!alert.IsNull())
|
||||
{
|
||||
emit error(tr("Network Alert"), QString::fromStdString(alert.strStatusBar), false);
|
||||
emit message(tr("Network Alert"), QString::fromStdString(alert.strStatusBar), false, CClientUIInterface::ICON_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -70,8 +70,8 @@ signals:
|
||||
void numBlocksChanged(int count, int countOfPeers);
|
||||
void alertsChanged(const QString &warnings);
|
||||
|
||||
//! Asynchronous error notification
|
||||
void error(const QString &title, const QString &message, bool modal);
|
||||
//! Asynchronous message notification
|
||||
void message(const QString &title, const QString &message, bool modal, unsigned int style);
|
||||
|
||||
public slots:
|
||||
void updateTimer();
|
||||
|
||||
@@ -147,8 +147,8 @@ signals:
|
||||
// this means that the unlocking failed or was cancelled.
|
||||
void requireUnlock();
|
||||
|
||||
// Asynchronous error notification
|
||||
void error(const QString &title, const QString &message, bool modal);
|
||||
// Asynchronous message notification
|
||||
void message(const QString &title, const QString &message, bool modal, unsigned int style);
|
||||
|
||||
public slots:
|
||||
/* Wallet status might have changed */
|
||||
|
||||
Reference in New Issue
Block a user