diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index f406a3dc86..efa214e43a 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -586,7 +586,8 @@ RES_ICONS = \ qt/res/icons/ic-locked.png \ qt/res/icons/ic-unlocked.png \ qt/res/icons/ic-menu.png \ - qt/res/icons/verify.png + qt/res/icons/verify.png \ + qt/res/icons/ic-information-white.png BITCOIN_QT_BASE_CPP = \ qt/splashscreenveil.cpp \ diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 5a96469ddd..722b21f017 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -345,6 +345,14 @@ void BitcoinGUI::createActions() tabGroup->addAction(settingsAction); + QIcon iconHelp(":/icons/ic-information-white"); + helpAction = new QAction(iconHelp,tr("&Help"), this); + helpAction->setStatusTip(tr("Help")); + helpAction->setToolTip(helpAction->statusTip()); + helpAction->setCheckable(true); + helpAction->setShortcut(QKeySequence(Qt::ALT + Qt::Key_7)); + tabGroup->addAction(helpAction); + sendCoinsMenuAction = new QAction(platformStyle->TextColorIcon(":/icons/send"), sendCoinsAction->text(), this); sendCoinsMenuAction->setStatusTip(sendCoinsAction->statusTip()); sendCoinsMenuAction->setToolTip(sendCoinsMenuAction->statusTip()); @@ -373,6 +381,8 @@ void BitcoinGUI::createActions() connect(miningAction, SIGNAL(triggered()), this, SLOT(gotoMiningPage())); connect(settingsAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); connect(settingsAction, SIGNAL(triggered()), this, SLOT(gotoSettingsPage())); + connect(helpAction, SIGNAL(triggered()), this, SLOT(showNormalIfMinimized())); + connect(helpAction, SIGNAL(triggered()), this, SLOT(gotoHelpPage())); } #endif // ENABLE_WALLET @@ -491,6 +501,8 @@ void BitcoinGUI::createToolBars() toolbar->addAction(miningAction); toolbar->addAction(addressesAction); toolbar->addAction(settingsAction); + toolbar->addAction(helpAction); + overviewAction->setChecked(true); toolbar->setIconSize(QSize(24,24)); @@ -843,6 +855,14 @@ void BitcoinGUI::gotoSettingsPage(){ if (walletFrame) walletFrame->gotoSettings(); } +void BitcoinGUI::gotoHelpPage(){ + if(!enableWallet) + return; + + helpAction->setChecked(true); + if (walletFrame) walletFrame->gotoHelpPage(); +} + void BitcoinGUI::gotoSignMessageTab(QString addr) { if(!enableWallet) diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index e09e328ead..92a37b8c38 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -153,6 +153,7 @@ class BitcoinGUI : public QMainWindow QAction* settingsAction = nullptr; QAction* settingsAction2 = nullptr; QAction* miningAction = nullptr; + QAction* helpAction = nullptr; //QAction* historyAction = nullptr; QAction* quitAction = nullptr; QAction* sendCoinsAction = nullptr; @@ -296,6 +297,8 @@ private Q_SLOTS: void gotoAddressesPage(); /** Switch to settings page */ void gotoSettingsPage(); + /** Switch to help page */ + void gotoHelpPage(); /** Show Sign/Verify Message dialog and switch to sign message tab */ void gotoSignMessageTab(QString addr = ""); diff --git a/src/qt/overviewpage.cpp b/src/qt/overviewpage.cpp index fd4e205a2f..c06ef4747a 100644 --- a/src/qt/overviewpage.cpp +++ b/src/qt/overviewpage.cpp @@ -513,14 +513,12 @@ void OverviewPage::setWalletModel(WalletModel *model) interfaces::Wallet& wallet = model->wallet(); - if(wallet.getWalletTxs().size() == 0 ){ - // show empty view - ui->containerEmpty->setVisible(true); - ui->listTransactions->setVisible(false); + if(isNewWallet()){ + showHelp(); connect(model, SIGNAL(balanceChanged(interfaces::WalletBalances)), this, SLOT(updateTxesView())); }else{ - ui->containerEmpty->setVisible(false); + hideHelp(); } // Keep up to date with wallet @@ -541,8 +539,7 @@ void OverviewPage::setWalletModel(WalletModel *model) void OverviewPage::updateTxesView(){ if(ui->containerEmpty->isVisible()){ - ui->containerEmpty->setVisible(false); - ui->listTransactions->setVisible(true); + hideHelp(); disconnect(this, SLOT(updateTxesView())); } } @@ -610,3 +607,37 @@ void OverviewPage::hideEvent(QHideEvent *event){ a->setEasingCurve(QEasingCurve::OutBack); a->start(QPropertyAnimation::DeleteWhenStopped); } + +void OverviewPage::showHelp() +{ + // show empty view + ui->containerEmpty->setVisible(true); + ui->listTransactions->setVisible(false); +} + +void OverviewPage::hideHelp() +{ + ui->containerEmpty->setVisible(false); + ui->listTransactions->setVisible(true); +} + +bool OverviewPage::isNewWallet() +{ + bool retVal = true; + + if(this->walletModel) + { + interfaces::Wallet& wallet = this->walletModel->wallet(); + + if(wallet.getWalletTxs().size() == 0) + { + retVal = true; + } + else + { + retVal = false; + } + } + + return retVal; +} diff --git a/src/qt/overviewpage.h b/src/qt/overviewpage.h index 8b4fe7065a..955f8c0cab 100644 --- a/src/qt/overviewpage.h +++ b/src/qt/overviewpage.h @@ -38,6 +38,9 @@ class OverviewPage : public QWidget void setClientModel(ClientModel *clientModel); void setWalletModel(WalletModel *walletModel); void showOutOfSyncWarning(bool fShow); + void showHelp(); + void hideHelp(); + bool isNewWallet(); Q_SIGNALS: void transactionClicked(const QModelIndex &index); diff --git a/src/qt/res/icons/ic-information-white.png b/src/qt/res/icons/ic-information-white.png new file mode 100644 index 0000000000..6138db7bc3 Binary files /dev/null and b/src/qt/res/icons/ic-information-white.png differ diff --git a/src/qt/veil.qrc b/src/qt/veil.qrc index 24eb823178..6a6928305e 100644 --- a/src/qt/veil.qrc +++ b/src/qt/veil.qrc @@ -286,6 +286,7 @@ res/icons/ic-locked.png res/icons/ic-unlocked.png res/icons/ic-menu.png + res/icons/ic-information-white.png res/movies/spinner-000.png diff --git a/src/qt/walletframe.cpp b/src/qt/walletframe.cpp index 11d1b6780f..a14e795b64 100644 --- a/src/qt/walletframe.cpp +++ b/src/qt/walletframe.cpp @@ -179,6 +179,12 @@ void WalletFrame::gotoSettings(){ i.value()->gotoSettingsPage(); } +void WalletFrame::gotoHelpPage(){ + QMap::const_iterator i; + for (i = mapWalletViews.constBegin(); i != mapWalletViews.constEnd(); ++i) + i.value()->gotoHelpPage(); +} + void WalletFrame::gotoSignMessageTab(QString addr) { WalletView *walletView = currentWalletView(); diff --git a/src/qt/walletframe.h b/src/qt/walletframe.h index ccf6b91a4f..5bbd20f802 100644 --- a/src/qt/walletframe.h +++ b/src/qt/walletframe.h @@ -81,6 +81,8 @@ public Q_SLOTS: void gotoAddressesPage(); /** Switch to settings page */ void gotoSettings(); + /** Switch to help page */ + void gotoHelpPage(); /** Show Sign/Verify Message dialog and switch to sign message tab */ void gotoSignMessageTab(QString addr = ""); diff --git a/src/qt/walletview.cpp b/src/qt/walletview.cpp index 3507e8791c..bcf89730d4 100755 --- a/src/qt/walletview.cpp +++ b/src/qt/walletview.cpp @@ -204,6 +204,10 @@ void WalletView::processNewTransaction(const QModelIndex& parent, int start, int void WalletView::gotoOverviewPage() { + if(!(overviewPage->isNewWallet())) + { + overviewPage->hideHelp(); + } setCurrentWidget(overviewPage); } @@ -239,6 +243,12 @@ void WalletView::gotoSettingsPage(){ setCurrentWidget(settingsWidget); } +void WalletView::gotoHelpPage() +{ + overviewPage->showHelp(); + setCurrentWidget(overviewPage); +} + void WalletView::gotoSignMessageTab(QString addr) { // calls show() in showTab_SM() diff --git a/src/qt/walletview.h b/src/qt/walletview.h index 78a9700208..2bcef0359a 100644 --- a/src/qt/walletview.h +++ b/src/qt/walletview.h @@ -114,6 +114,8 @@ public Q_SLOTS: void gotoAddressesPage(); /** Switch to settings page */ void gotoSettingsPage(); + /** Switch to help page */ + void gotoHelpPage(); /** Show Sign/Verify Message dialog and switch to sign message tab */ void gotoSignMessageTab(QString addr = "");