PIVX Core  5.6.99
P2P Digital Currency
navmenuwidget.cpp
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 #include "navmenuwidget.h"
6 #include "ui_navmenuwidget.h"
7 
8 #include "clientversion.h"
9 #include "optionsmodel.h"
10 #include "qtutils.h"
11 
12 #include <QScrollBar>
13 
14 NavMenuWidget::NavMenuWidget(PIVXGUI *mainWindow, QWidget *parent) :
15  PWidget(mainWindow, parent),
16  ui(new Ui::NavMenuWidget)
17 {
18  ui->setupUi(this);
19  this->setFixedWidth(100);
20  setCssProperty(ui->navContainer_2, "container-nav");
21  setCssProperty(ui->imgLogo, "img-nav-logo");
22 
23  // App version
24  ui->labelVersion->setText(QString(tr("v%1")).arg(QString::fromStdString(FormatVersionFriendly())));
25  ui->labelVersion->setProperty("cssClass", "text-title-white");
26 
27  // Buttons
28  ui->btnDashboard->setProperty("name", "dash");
29  ui->btnDashboard->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
30  ui->btnSend->setProperty("name", "send");
31  ui->btnSend->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
32  ui->btnReceive->setProperty("name", "receive");
33  ui->btnReceive->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
34  ui->btnAddress->setProperty("name", "address");
35  ui->btnAddress->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
36  ui->btnMaster->setProperty("name", "master");
37  ui->btnMaster->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
38  ui->btnColdStaking->setProperty("name", "cold-staking");
39  ui->btnColdStaking->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
40  ui->btnSettings->setProperty("name", "settings");
41  ui->btnSettings->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
42  ui->btnGovernance->setProperty("name", "governance");
43  ui->btnGovernance->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
44  btns = {ui->btnDashboard, ui->btnSend, ui->btnReceive, ui->btnAddress, ui->btnMaster, ui->btnColdStaking, ui->btnSettings, ui->btnGovernance};
45  onNavSelected(ui->btnDashboard, true);
46 
47  ui->scrollAreaNav->setWidgetResizable(true);
48 
49  QSizePolicy scrollAreaPolicy = ui->scrollAreaNav->sizePolicy();
50  scrollAreaPolicy.setVerticalStretch(1);
51  ui->scrollAreaNav->setSizePolicy(scrollAreaPolicy);
52 
53  QSizePolicy scrollVertPolicy = ui->scrollAreaNavVert->sizePolicy();
54  scrollVertPolicy.setVerticalStretch(1);
55  ui->scrollAreaNavVert->setSizePolicy(scrollVertPolicy);
56 
58 }
59 
62  ui->btnColdStaking->setVisible(walletModel->getOptionsModel()->isColdStakingScreenEnabled());
63  }
64 }
65 
70  connect(ui->btnDashboard, &QPushButton::clicked, this, &NavMenuWidget::onDashboardClicked);
71  connect(ui->btnSend, &QPushButton::clicked, this, &NavMenuWidget::onSendClicked);
72  connect(ui->btnAddress, &QPushButton::clicked, this, &NavMenuWidget::onAddressClicked);
73  connect(ui->btnMaster, &QPushButton::clicked, this, &NavMenuWidget::onMasterNodesClicked);
74  connect(ui->btnSettings, &QPushButton::clicked, this, &NavMenuWidget::onSettingsClicked);
75  connect(ui->btnReceive, &QPushButton::clicked, this, &NavMenuWidget::onReceiveClicked);
76  connect(ui->btnColdStaking, &QPushButton::clicked, this, &NavMenuWidget::onColdStakingClicked);
77  connect(ui->btnGovernance, &QPushButton::clicked, this, &NavMenuWidget::onGovClicked);
78 
79  ui->btnDashboard->setShortcut(QKeySequence(SHORT_KEY + Qt::Key_1));
80  ui->btnSend->setShortcut(QKeySequence(SHORT_KEY + Qt::Key_2));
81  ui->btnReceive->setShortcut(QKeySequence(SHORT_KEY + Qt::Key_3));
82  ui->btnAddress->setShortcut(QKeySequence(SHORT_KEY + Qt::Key_4));
83  ui->btnMaster->setShortcut(QKeySequence(SHORT_KEY + Qt::Key_5));
84  ui->btnColdStaking->setShortcut(QKeySequence(SHORT_KEY + Qt::Key_6));
85  ui->btnSettings->setShortcut(QKeySequence(SHORT_KEY + Qt::Key_7));
86 }
87 
89  window->goToSend();
90  onNavSelected(ui->btnSend);
91 }
92 
95  onNavSelected(ui->btnDashboard);
96 }
97 
100  onNavSelected(ui->btnAddress);
101 }
102 
105  onNavSelected(ui->btnMaster);
106 }
107 
110  onNavSelected(ui->btnColdStaking);
111 }
112 
114 {
116  onNavSelected(ui->btnGovernance);
117 }
118 
120  window->goToSettings();
121  onNavSelected(ui->btnSettings);
122 }
123 
125  window->goToReceive();
126  onNavSelected(ui->btnReceive);
127 }
128 
129 void NavMenuWidget::onNavSelected(QWidget* active, bool startup) {
130  QString start = "btn-nav-";
131  for (QWidget* w : btns) {
132  QString clazz = start + w->property("name").toString();
133  if (w == active) {
134  clazz += "-active";
135  }
136  setCssProperty(w, clazz);
137  }
138  if (!startup) updateButtonStyles();
139 }
140 
143 }
144 
146  ui->btnColdStaking->setVisible(show);
147  if (show)
148  ui->scrollAreaNav->verticalScrollBar()->setValue(ui->btnColdStaking->y());
149 }
150 
151 void NavMenuWidget::showEvent(QShowEvent *event) {
152  if (!init) {
153  init = true;
154  ui->scrollAreaNav->verticalScrollBar()->setValue(ui->btnDashboard->y());
155  }
156 }
157 
160  ui->btnDashboard,
161  ui->btnSend,
162  ui->btnAddress,
163  ui->btnMaster,
164  ui->btnSettings,
165  ui->btnReceive,
166  ui->btnColdStaking,
167  ui->btnGovernance
168  });
169 }
170 
172  delete ui;
173 }
void onSettingsClicked()
void onMasterNodesClicked()
void onSendClicked()
NavMenuWidget(PIVXGUI *mainWindow, QWidget *parent=nullptr)
void onDashboardClicked()
void loadWalletModel() override
void onColdStakingClicked()
virtual void showEvent(QShowEvent *event) override
void onAddressClicked()
void updateButtonStyles()
Ui::NavMenuWidget * ui
Definition: navmenuwidget.h:43
void onNavSelected(QWidget *active, bool startup=false)
QList< QWidget * > btns
Definition: navmenuwidget.h:44
void connectActions()
Actions.
void onShowHideColdStakingChanged(bool show)
void onReceiveClicked()
bool isColdStakingScreenEnabled()
Definition: optionsmodel.h:85
PIVX GUI main class.
Definition: pivxgui.h:46
void goToReceive()
Definition: pivxgui.cpp:533
void goToSend()
Definition: pivxgui.cpp:496
void goToDashboard()
Definition: pivxgui.cpp:488
void goToSettings()
Definition: pivxgui.cpp:522
void goToAddresses()
Definition: pivxgui.cpp:501
void goToGovernance()
Definition: pivxgui.cpp:517
void goToColdStaking()
Definition: pivxgui.cpp:512
void goToMasterNodes()
Definition: pivxgui.cpp:506
PIVXGUI * window
Definition: pwidget.h:59
WalletModel * walletModel
Definition: pwidget.h:61
OptionsModel * getOptionsModel()
std::string FormatVersionFriendly()
void forceUpdateStyle(QWidget *widget, bool forceUpdate)
Definition: qtutils.cpp:348
Qt::Modifier SHORT_KEY
Definition: qtutils.cpp:19
void setCssProperty(std::initializer_list< QWidget * > args, const QString &value)
Definition: qtutils.cpp:334