|
|
|
@ -28,6 +28,7 @@
@@ -28,6 +28,7 @@
|
|
|
|
|
|
|
|
|
|
#include <iostream> |
|
|
|
|
|
|
|
|
|
#include <QAction> |
|
|
|
|
#include <QApplication> |
|
|
|
|
#include <QDateTime> |
|
|
|
|
#include <QDesktopWidget> |
|
|
|
@ -39,6 +40,7 @@
@@ -39,6 +40,7 @@
|
|
|
|
|
#include <QMenuBar> |
|
|
|
|
#include <QMessageBox> |
|
|
|
|
#include <QMimeData> |
|
|
|
|
#include <QPoint> |
|
|
|
|
#include <QProgressBar> |
|
|
|
|
#include <QProgressDialog> |
|
|
|
|
#include <QSettings> |
|
|
|
@ -49,6 +51,8 @@
@@ -49,6 +51,8 @@
|
|
|
|
|
#include <QToolBar> |
|
|
|
|
#include <QVBoxLayout> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if QT_VERSION < 0x050000 |
|
|
|
|
#include <QUrl> |
|
|
|
|
#include <QTextDocument> |
|
|
|
@ -156,10 +160,13 @@ BitcoinGUI::BitcoinGUI(bool fIsTestnet, QWidget *parent) :
@@ -156,10 +160,13 @@ BitcoinGUI::BitcoinGUI(bool fIsTestnet, QWidget *parent) :
|
|
|
|
|
QHBoxLayout *frameBlocksLayout = new QHBoxLayout(frameBlocks); |
|
|
|
|
frameBlocksLayout->setContentsMargins(3,0,3,0); |
|
|
|
|
frameBlocksLayout->setSpacing(3); |
|
|
|
|
unitDisplayControl = new UnitDisplayStatusBarControl(); |
|
|
|
|
labelEncryptionIcon = new QLabel(); |
|
|
|
|
labelConnectionsIcon = new QLabel(); |
|
|
|
|
labelBlocksIcon = new QLabel(); |
|
|
|
|
frameBlocksLayout->addStretch(); |
|
|
|
|
frameBlocksLayout->addWidget(unitDisplayControl); |
|
|
|
|
frameBlocksLayout->addStretch(); |
|
|
|
|
frameBlocksLayout->addWidget(labelEncryptionIcon); |
|
|
|
|
frameBlocksLayout->addStretch(); |
|
|
|
|
frameBlocksLayout->addWidget(labelConnectionsIcon); |
|
|
|
@ -420,6 +427,8 @@ void BitcoinGUI::setClientModel(ClientModel *clientModel)
@@ -420,6 +427,8 @@ void BitcoinGUI::setClientModel(ClientModel *clientModel)
|
|
|
|
|
walletFrame->setClientModel(clientModel); |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
this->unitDisplayControl->setOptionsModel(clientModel->getOptionsModel()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -1000,3 +1009,72 @@ void BitcoinGUI::unsubscribeFromCoreSignals()
@@ -1000,3 +1009,72 @@ void BitcoinGUI::unsubscribeFromCoreSignals()
|
|
|
|
|
// Disconnect signals from client
|
|
|
|
|
uiInterface.ThreadSafeMessageBox.disconnect(boost::bind(ThreadSafeMessageBox, this, _1, _2, _3)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
UnitDisplayStatusBarControl::UnitDisplayStatusBarControl():QLabel() |
|
|
|
|
{ |
|
|
|
|
optionsModel = 0; |
|
|
|
|
createContextMenu(); |
|
|
|
|
setStyleSheet("font:11pt; color: #333333"); |
|
|
|
|
setToolTip(tr("Unit to show amounts in. Click to select another unit.")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** So that it responds to left-button clicks */ |
|
|
|
|
void UnitDisplayStatusBarControl::mousePressEvent(QMouseEvent *event) |
|
|
|
|
{ |
|
|
|
|
onDisplayUnitsClicked(event->pos()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** Creates context menu, its actions, and wires up all the relevant signals for mouse events. */ |
|
|
|
|
void UnitDisplayStatusBarControl::createContextMenu() |
|
|
|
|
{ |
|
|
|
|
menu = new QMenu(); |
|
|
|
|
foreach(BitcoinUnits::Unit u, BitcoinUnits::availableUnits()) |
|
|
|
|
{ |
|
|
|
|
QAction *menuAction = new QAction(QString(BitcoinUnits::name(u)), this); |
|
|
|
|
menuAction->setData(QVariant(u)); |
|
|
|
|
menu->addAction(menuAction); |
|
|
|
|
} |
|
|
|
|
connect(menu,SIGNAL(triggered(QAction*)),this,SLOT(onMenuSelection(QAction*))); |
|
|
|
|
|
|
|
|
|
// what happens on right click.
|
|
|
|
|
setContextMenuPolicy(Qt::CustomContextMenu); |
|
|
|
|
connect(this,SIGNAL(customContextMenuRequested(const QPoint&)),this,SLOT(onDisplayUnitsClicked(const QPoint&))); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** Lets the control know about the Options Model (and its signals) */ |
|
|
|
|
void UnitDisplayStatusBarControl::setOptionsModel(OptionsModel *optionsModel) |
|
|
|
|
{ |
|
|
|
|
if (optionsModel) |
|
|
|
|
{ |
|
|
|
|
this->optionsModel = optionsModel; |
|
|
|
|
|
|
|
|
|
// be aware of a display unit change reported by the OptionsModel object.
|
|
|
|
|
connect(optionsModel,SIGNAL(displayUnitChanged(int)),this,SLOT(updateDisplayUnit(int))); |
|
|
|
|
|
|
|
|
|
// initialize the display units label with the current value in the model.
|
|
|
|
|
updateDisplayUnit(optionsModel->getDisplayUnit()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** When Display Units are changed on OptionsModel it will refresh the display text of the control on the status bar */ |
|
|
|
|
void UnitDisplayStatusBarControl::updateDisplayUnit(int newUnits) |
|
|
|
|
{ |
|
|
|
|
setText(BitcoinUnits::name(newUnits)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** Shows context menu with Display Unit options by the mouse coordinates */ |
|
|
|
|
void UnitDisplayStatusBarControl::onDisplayUnitsClicked(const QPoint& point) |
|
|
|
|
{ |
|
|
|
|
QPoint globalPos = mapToGlobal(point); |
|
|
|
|
menu->exec(globalPos); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** Tells underlying optionsModel to update its current display unit. */ |
|
|
|
|
void UnitDisplayStatusBarControl::onMenuSelection(QAction* action) |
|
|
|
|
{ |
|
|
|
|
if (action) |
|
|
|
|
{ |
|
|
|
|
optionsModel->setDisplayUnit(action->data()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|