Browse Source

qt: Replace NetworkToggleStatusBarControl with generic ClickableLabel

Generalize the clickable label functionality.

We will use this to add similar functionality to the sync icon.
0.14
Wladimir J. van der Laan 8 years ago
parent
commit
827d9a3be8
  1. 26
      src/qt/bitcoingui.cpp
  2. 19
      src/qt/bitcoingui.h
  3. 7
      src/qt/guiutil.cpp
  4. 14
      src/qt/guiutil.h

26
src/qt/bitcoingui.cpp

@ -199,7 +199,7 @@ BitcoinGUI::BitcoinGUI(const PlatformStyle *_platformStyle, const NetworkStyle * @@ -199,7 +199,7 @@ BitcoinGUI::BitcoinGUI(const PlatformStyle *_platformStyle, const NetworkStyle *
unitDisplayControl = new UnitDisplayStatusBarControl(platformStyle);
labelWalletEncryptionIcon = new QLabel();
labelWalletHDStatusIcon = new QLabel();
connectionsControl = new NetworkToggleStatusBarControl();
connectionsControl = new GUIUtil::ClickableLabel();
labelBlocksIcon = new QLabel();
if(enableWallet)
{
@ -244,6 +244,8 @@ BitcoinGUI::BitcoinGUI(const PlatformStyle *_platformStyle, const NetworkStyle * @@ -244,6 +244,8 @@ BitcoinGUI::BitcoinGUI(const PlatformStyle *_platformStyle, const NetworkStyle *
// Subscribe to notifications from core
subscribeToCoreSignals();
connect(connectionsControl, SIGNAL(clicked(QPoint)), this, SLOT(toggleNetworkActive()));
modalOverlay = new ModalOverlay(this->centralWidget());
#ifdef ENABLE_WALLET
if(enableWallet)
@ -490,7 +492,6 @@ void BitcoinGUI::setClientModel(ClientModel *_clientModel) @@ -490,7 +492,6 @@ void BitcoinGUI::setClientModel(ClientModel *_clientModel)
}
#endif // ENABLE_WALLET
unitDisplayControl->setOptionsModel(_clientModel->getOptionsModel());
connectionsControl->setClientModel(_clientModel);
OptionsModel* optionsModel = _clientModel->getOptionsModel();
if(optionsModel)
@ -517,7 +518,6 @@ void BitcoinGUI::setClientModel(ClientModel *_clientModel) @@ -517,7 +518,6 @@ void BitcoinGUI::setClientModel(ClientModel *_clientModel)
walletFrame->setClientModel(nullptr);
#endif // ENABLE_WALLET
unitDisplayControl->setOptionsModel(nullptr);
connectionsControl->setClientModel(nullptr);
}
}
@ -1171,6 +1171,13 @@ void BitcoinGUI::unsubscribeFromCoreSignals() @@ -1171,6 +1171,13 @@ void BitcoinGUI::unsubscribeFromCoreSignals()
uiInterface.ThreadSafeQuestion.disconnect(boost::bind(ThreadSafeMessageBox, this, _1, _3, _4));
}
void BitcoinGUI::toggleNetworkActive()
{
if (clientModel) {
clientModel->setNetworkActive(!clientModel->getNetworkActive());
}
}
UnitDisplayStatusBarControl::UnitDisplayStatusBarControl(const PlatformStyle *platformStyle) :
optionsModel(0),
menu(0)
@ -1244,16 +1251,3 @@ void UnitDisplayStatusBarControl::onMenuSelection(QAction* action) @@ -1244,16 +1251,3 @@ void UnitDisplayStatusBarControl::onMenuSelection(QAction* action)
optionsModel->setDisplayUnit(action->data());
}
}
void NetworkToggleStatusBarControl::mousePressEvent(QMouseEvent *event)
{
if (clientModel) {
clientModel->setNetworkActive(!clientModel->getNetworkActive());
}
}
/** Lets the control know about the Client Model */
void NetworkToggleStatusBarControl::setClientModel(ClientModel *_clientModel)
{
this->clientModel = _clientModel;
}

19
src/qt/bitcoingui.h

@ -26,7 +26,6 @@ class PlatformStyle; @@ -26,7 +26,6 @@ class PlatformStyle;
class RPCConsole;
class SendCoinsRecipient;
class UnitDisplayStatusBarControl;
class NetworkToggleStatusBarControl;
class WalletFrame;
class WalletModel;
class HelpMessageDialog;
@ -86,7 +85,7 @@ private: @@ -86,7 +85,7 @@ private:
UnitDisplayStatusBarControl *unitDisplayControl;
QLabel *labelWalletEncryptionIcon;
QLabel *labelWalletHDStatusIcon;
NetworkToggleStatusBarControl *connectionsControl;
QLabel *connectionsControl;
QLabel *labelBlocksIcon;
QLabel *progressBarLabel;
QProgressBar *progressBar;
@ -238,6 +237,9 @@ private Q_SLOTS: @@ -238,6 +237,9 @@ private Q_SLOTS:
/** When hideTrayIcon setting is changed in OptionsModel hide or show the icon accordingly. */
void setTrayIconVisible(bool);
/** Toggle networking */
void toggleNetworkActive();
void showModalOverlay();
};
@ -270,17 +272,4 @@ private Q_SLOTS: @@ -270,17 +272,4 @@ private Q_SLOTS:
void onMenuSelection(QAction* action);
};
class NetworkToggleStatusBarControl : public QLabel
{
Q_OBJECT
public:
void setClientModel(ClientModel *clientModel);
protected:
void mousePressEvent(QMouseEvent *event);
private:
ClientModel *clientModel;
};
#endif // BITCOIN_QT_BITCOINGUI_H

7
src/qt/guiutil.cpp

@ -55,6 +55,7 @@ @@ -55,6 +55,7 @@
#include <QSettings>
#include <QTextDocument> // for Qt::mightBeRichText
#include <QThread>
#include <QMouseEvent>
#if QT_VERSION < 0x050000
#include <QUrl>
@ -986,4 +987,10 @@ QString formateNiceTimeOffset(qint64 secs) @@ -986,4 +987,10 @@ QString formateNiceTimeOffset(qint64 secs)
}
return timeBehindText;
}
void ClickableLabel::mousePressEvent(QMouseEvent *event)
{
Q_EMIT clicked(event->pos());
}
} // namespace GUIUtil

14
src/qt/guiutil.h

@ -14,6 +14,7 @@ @@ -14,6 +14,7 @@
#include <QProgressBar>
#include <QString>
#include <QTableView>
#include <QLabel>
#include <boost/filesystem.hpp>
@ -215,6 +216,19 @@ namespace GUIUtil @@ -215,6 +216,19 @@ namespace GUIUtil
typedef QProgressBar ProgressBar;
#endif
class ClickableLabel : public QLabel
{
Q_OBJECT
Q_SIGNALS:
/** Emitted when the label is clicked. The relative mouse coordinates of the click are
* passed to the signal.
*/
void clicked(const QPoint& point);
protected:
void mousePressEvent(QMouseEvent *event);
};
} // namespace GUIUtil
#endif // BITCOIN_QT_GUIUTIL_H

Loading…
Cancel
Save