PIVX Core  5.6.99
P2P Digital Currency
pivxgui.h
Go to the documentation of this file.
1 // Copyright (c) 2019-2022 The PIVX Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #ifndef PIVX_QT_PIVXGUI_H
6 #define PIVX_QT_PIVXGUI_H
7 
8 #if defined(HAVE_CONFIG_H)
9 #include "config/pivx-config.h"
10 #endif
11 
12 #include <QMainWindow>
13 #include <QStackedWidget>
14 #include <QSystemTrayIcon>
15 #include <QLabel>
16 
17 #include "addresseswidget.h"
18 #include "coldstakingwidget.h"
19 #include "dashboardwidget.h"
20 #include "governancewidget.h"
21 #include "masternodeswidget.h"
22 #include "navmenuwidget.h"
23 #include "qt/settings/faqwidget.h"
25 #include "qt/rpcconsole.h"
26 #include "receivewidget.h"
27 #include "send.h"
28 #include "snackbar.h"
29 #include "topbar.h"
30 
31 namespace interfaces {
32  class Handler;
33 }
34 
35 class ClientModel;
36 class NetworkStyle;
37 class Notificator;
38 class WalletModel;
39 
40 
45 class PIVXGUI : public QMainWindow
46 {
47  Q_OBJECT
48 
49 public:
50  static const QString DEFAULT_WALLET;
51 
52  explicit PIVXGUI(const NetworkStyle* networkStyle, QWidget* parent = 0);
53  ~PIVXGUI();
54 
59 
60 
61  void resizeEvent(QResizeEvent *event) override;
62  void showHide(bool show);
63  int getNavWidth();
64 Q_SIGNALS:
65  void themeChanged(bool isLightTheme, QString& theme);
66  void windowResizeEvent(QResizeEvent* event);
67 public Q_SLOTS:
68  void changeTheme(bool isLightTheme);
69  void goToDashboard();
70  void goToSend();
71  void goToReceive();
72  void goToAddresses();
73  void goToMasterNodes();
74  void goToGovernance();
75  void goToColdStaking();
76  void goToSettings();
77  void goToSettingsInfo();
78  void openNetworkMonitor();
79 
80  void connectActions();
81 
83  void handleRestart(QStringList args);
84 
92  void message(const QString& title, const QString& message, unsigned int style, bool* ret = nullptr);
93  void messageInfo(const QString& message);
94  bool execDialog(QDialog *dialog, int xDiv = 3, int yDiv = 5);
96  void openFAQ(SettingsFaqWidget::Section section = SettingsFaqWidget::Section::INTRO);
97 
99  void incomingTransaction(const QString& date, int unit, const CAmount& amount, const QString& type, const QString& address);
100 #ifdef ENABLE_WALLET
101  void setGovModel(GovernanceModel* govModel);
102  void setMNModel(MNModel* mnModel);
107  bool addWallet(const QString& name, WalletModel* walletModel);
108  bool setCurrentWallet(const QString& name);
109  void removeAllWallets();
110 #endif // ENABLE_WALLET
111 
112 protected:
113 
114  void changeEvent(QEvent* e) override;
115  void closeEvent(QCloseEvent* event) override;
116 
117  /*
118  void dragEnterEvent(QDragEnterEvent* event);
119  void dropEvent(QDropEvent* event);
120  bool eventFilter(QObject* object, QEvent* event);
121  */
122 
123 private:
124  // Handlers
125  std::unique_ptr<interfaces::Handler> m_handler_message_box;
126 
129  MNModel* mnModel = nullptr;
130 
131  // Actions
132  QAction* quitAction = nullptr;
133  QAction* toggleHideAction = nullptr;
134 
135  // Frame
136  NavMenuWidget *navMenu = nullptr;
137  TopBar *topBar = nullptr;
138  QStackedWidget *stackedContainer = nullptr;
139 
141  SendWidget *sendWidget = nullptr;
148 
149  SnackBar *snackBar = nullptr;
150 
151  RPCConsole* rpcConsole = nullptr;
152 
153  //
154  QSystemTrayIcon* trayIcon = nullptr;
155  QMenu* trayIconMenu = nullptr;
157 
158  QLabel *op = nullptr;
159  bool opEnabled = false;
160 
162  void createActions(const NetworkStyle* networkStyle);
164  void createTrayIcon(const NetworkStyle* networkStyle);
166  void createTrayIconMenu();
167 
168  void showTop(QWidget *view);
169  bool openStandardDialog(QString title = "", QString body = "", QString okBtn = "OK", QString cancelBtn = "CANCEL");
170 
172  void subscribeToCoreSignals();
175 
176 public Q_SLOTS:
178  void detectShutdown();
179 
180 private Q_SLOTS:
182  void showNormalIfMinimized(bool fToggleHidden = false);
183 
185  void toggleHidden();
186 
187 #ifndef Q_OS_MAC
189  void trayIconActivated(QSystemTrayIcon::ActivationReason reason);
190 #else
192  void macosDockIconActivated();
193 #endif
194 
195 Q_SIGNALS:
197  void receivedURI(const QString& uri);
199  void requestedRestart(QStringList args);
200 
201 };
202 
203 
204 #endif // PIVX_QT_PIVXGUI_H
int64_t CAmount
Amount in PIV (Can be negative)
Definition: amount.h:13
Model for PIVX network client.
Definition: clientmodel.h:50
Cross-platform desktop notification client.
Definition: notificator.h:26
PIVX GUI main class.
Definition: pivxgui.h:46
MasterNodesWidget * masterNodesWidget
Definition: pivxgui.h:144
RPCConsole * rpcConsole
Definition: pivxgui.h:151
void goToReceive()
Definition: pivxgui.cpp:533
void createTrayIcon(const NetworkStyle *networkStyle)
Create system tray icon and notification.
Definition: pivxgui.cpp:212
QAction * toggleHideAction
Definition: pivxgui.h:133
bool execDialog(QDialog *dialog, int xDiv=3, int yDiv=5)
Definition: pivxgui.cpp:574
AddressesWidget * addressesWidget
Definition: pivxgui.h:143
std::unique_ptr< interfaces::Handler > m_handler_message_box
Definition: pivxgui.h:125
void unsubscribeFromCoreSignals()
Disconnect core signals from GUI client.
Definition: pivxgui.cpp:729
QLabel * op
Definition: pivxgui.h:158
void showNormalIfMinimized(bool fToggleHidden=false)
Show window if hidden, unminimize when minimized, rise when obscured or show if hidden and fToggleHid...
Definition: pivxgui.cpp:463
void themeChanged(bool isLightTheme, QString &theme)
SnackBar * snackBar
Definition: pivxgui.h:149
QSystemTrayIcon * trayIcon
Definition: pivxgui.h:154
~PIVXGUI()
Definition: pivxgui.cpp:224
void requestedRestart(QStringList args)
Restart handling.
void closeEvent(QCloseEvent *event) override
Definition: pivxgui.cpp:355
bool enableWallet
Definition: pivxgui.h:127
bool openStandardDialog(QString title="", QString body="", QString okBtn="OK", QString cancelBtn="CANCEL")
Definition: pivxgui.cpp:440
void goToSend()
Definition: pivxgui.cpp:496
void detectShutdown()
called by a timer to check if ShutdownRequested()
Definition: pivxgui.cpp:479
void incomingTransaction(const QString &date, int unit, const CAmount &amount, const QString &type, const QString &address)
Show incoming transaction notification for new transactions.
void createActions(const NetworkStyle *networkStyle)
Create the main UI actions.
Definition: pivxgui.cpp:169
void goToDashboard()
Definition: pivxgui.cpp:488
void changeEvent(QEvent *e) override
Definition: pivxgui.cpp:336
int getNavWidth()
Definition: pivxgui.cpp:607
void showHide(bool show)
Definition: pivxgui.cpp:579
TopBar * topBar
Definition: pivxgui.h:137
void receivedURI(const QString &uri)
Signal raised when a URI was entered or dragged to the GUI.
NavMenuWidget * navMenu
Definition: pivxgui.h:136
void messageInfo(const QString &message)
Definition: pivxgui.cpp:372
SendWidget * sendWidget
Definition: pivxgui.h:141
ClientModel * clientModel
Definition: pivxgui.h:128
void resizeEvent(QResizeEvent *event) override
Definition: pivxgui.cpp:564
bool opEnabled
Definition: pivxgui.h:159
void trayIconActivated(QSystemTrayIcon::ActivationReason reason)
Handle tray icon clicked.
Definition: pivxgui.cpp:321
void message(const QString &title, const QString &message, unsigned int style, bool *ret=nullptr)
Notify the user of an event from the core network or transaction handling code.
Definition: pivxgui.cpp:381
void goToSettings()
Definition: pivxgui.cpp:522
static const QString DEFAULT_WALLET
Definition: pivxgui.h:50
void goToAddresses()
Definition: pivxgui.cpp:501
GovernanceWidget * governancewidget
Definition: pivxgui.h:146
void subscribeToCoreSignals()
Connect core signals to GUI client.
Definition: pivxgui.cpp:723
void goToGovernance()
Definition: pivxgui.cpp:517
QMenu * trayIconMenu
Definition: pivxgui.h:155
QStackedWidget * stackedContainer
Definition: pivxgui.h:138
ColdStakingWidget * coldStakingWidget
Definition: pivxgui.h:145
ReceiveWidget * receiveWidget
Definition: pivxgui.h:142
MNModel * mnModel
Definition: pivxgui.h:129
SettingsWidget * settingsWidget
Definition: pivxgui.h:147
PIVXGUI(const NetworkStyle *networkStyle, QWidget *parent=0)
Definition: pivxgui.cpp:40
void changeTheme(bool isLightTheme)
Definition: pivxgui.cpp:551
DashboardWidget * dashboard
Definition: pivxgui.h:140
void goToColdStaking()
Definition: pivxgui.cpp:512
void connectActions()
Here add every event connection.
Definition: pivxgui.cpp:186
QAction * quitAction
Definition: pivxgui.h:132
void openNetworkMonitor()
Definition: pivxgui.cpp:538
void windowResizeEvent(QResizeEvent *event)
void goToMasterNodes()
Definition: pivxgui.cpp:506
Notificator * notificator
Definition: pivxgui.h:156
void showTop(QWidget *view)
Definition: pivxgui.cpp:543
void setClientModel(ClientModel *clientModel)
Set the client model.
Definition: pivxgui.cpp:246
void openFAQ(SettingsFaqWidget::Section section=SettingsFaqWidget::Section::INTRO)
Open FAQ dialog.
Definition: pivxgui.cpp:612
void handleRestart(QStringList args)
Get restart command-line parameters and request restart.
Definition: pivxgui.cpp:239
void goToSettingsInfo()
Definition: pivxgui.cpp:526
void toggleHidden()
Simply calls showNormalIfMinimized(true) for use in SLOT() macro.
Definition: pivxgui.cpp:474
void createTrayIconMenu()
Create system tray menu (or setup the dock menu)
Definition: pivxgui.cpp:290
Local Bitcoin RPC console.
Definition: rpcconsole.h:33
Definition: topbar.h:27
Interface to PIVX wallet from Qt view code.
Definition: walletmodel.h:109
bool isLightTheme()
Definition: qtutils.cpp:210
const char * name
Definition: rest.cpp:37