diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index a9a3b824c3..2c7aa67182 100755 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -306,6 +306,8 @@ RES_ICONS = \ qt/res/icons/connect2.svg \ qt/res/icons/connect3.svg \ qt/res/icons/connect4.svg \ + qt/res/icons/dark_mode.svg \ + qt/res/icons/dark_mode_active.svg \ qt/res/icons/debugwindow.png \ qt/res/icons/edit.png \ qt/res/icons/editcopy.png \ @@ -316,6 +318,10 @@ RES_ICONS = \ qt/res/icons/gridcoin.ico \ qt/res/icons/gridcoin_testnet.ico \ qt/res/icons/key.png \ + qt/res/icons/light_mode.svg \ + qt/res/icons/light_mode_active.svg \ + qt/res/icons/menu.svg \ + qt/res/icons/menu_active.svg \ qt/res/icons/message.svg \ qt/res/icons/qrcode.png \ qt/res/icons/quit.png \ @@ -340,6 +346,8 @@ RES_ICONS = \ qt/res/icons/warning.svg \ qt/res/icons/white_and_red_x.svg \ qt/res/icons/www.png \ + qt/res/icons/icons_light/settings.svg \ + qt/res/icons/icons_light/settings_action_needed.svg \ qt/res/icons/icons_light/sidebar_favorites_active.svg \ qt/res/icons/icons_light/sidebar_favorites_inactive.svg \ qt/res/icons/icons_light/sidebar_history_active.svg \ @@ -352,6 +360,8 @@ RES_ICONS = \ qt/res/icons/icons_light/sidebar_receive_inactive.svg \ qt/res/icons/icons_light/sidebar_send_active.svg \ qt/res/icons/icons_light/sidebar_send_inactive.svg \ + qt/res/icons/icons_light/sidebar_settings_active.svg \ + qt/res/icons/icons_light/sidebar_settings_inactive.svg \ qt/res/icons/icons_light/sidebar_unlocked_active.svg \ qt/res/icons/icons_light/sidebar_unlocked_inactive.svg \ qt/res/icons/icons_light/sidebar_voting_active.svg \ @@ -378,6 +388,7 @@ RES_ICONS = \ qt/res/icons/icons_light/status_sync_done.svg \ qt/res/icons/icons_light/status_sync_stalled.svg \ qt/res/icons/icons_light/status_sync_syncing.svg \ + qt/res/icons/icons_dark/settings_action_needed.svg \ qt/res/icons/icons_dark/sidebar_favorites_active.svg \ qt/res/icons/icons_dark/sidebar_favorites_inactive.svg \ qt/res/icons/icons_dark/sidebar_history_active.svg \ @@ -390,6 +401,8 @@ RES_ICONS = \ qt/res/icons/icons_dark/sidebar_receive_inactive.svg \ qt/res/icons/icons_dark/sidebar_send_active.svg \ qt/res/icons/icons_dark/sidebar_send_inactive.svg \ + qt/res/icons/icons_dark/sidebar_settings_active.svg \ + qt/res/icons/icons_dark/sidebar_settings_inactive.svg \ qt/res/icons/icons_dark/sidebar_unlocked_active.svg \ qt/res/icons/icons_dark/sidebar_unlocked_inactive.svg \ qt/res/icons/icons_dark/sidebar_voting_active.svg \ diff --git a/src/main.cpp b/src/main.cpp index a37f4d9338..3926025b36 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -191,13 +191,6 @@ void GlobalStatus::SetGlobalStatus(bool force) errors.clear(); - std::string Alerts = GetWarnings("statusbar"); - - if (!Alerts.empty()) - { - errors += _("Alert: ") + Alerts + "; "; - } - if (difficulty < 0.1) { errors += _("Low difficulty!; "); @@ -3057,6 +3050,14 @@ string GetWarnings(string strFor) } } + const GlobalStatus::globalStatusType status = g_GlobalStatus.GetGlobalStatus(); + + if (!strStatusBar.empty() && !status.errors.empty()) { + strStatusBar += "; "; + } + + strStatusBar += status.errors; + if (strFor == "statusbar") return strStatusBar; assert(!"GetWarnings() : invalid parameter"); diff --git a/src/qt/bitcoin.qrc b/src/qt/bitcoin.qrc index 930add0204..610bf38e7d 100644 --- a/src/qt/bitcoin.qrc +++ b/src/qt/bitcoin.qrc @@ -48,6 +48,8 @@ res/icons/icons_light/sidebar_receive_active.svg res/icons/icons_light/sidebar_send_inactive.svg res/icons/icons_light/sidebar_send_active.svg + res/icons/icons_light/sidebar_settings_inactive.svg + res/icons/icons_light/sidebar_settings_active.svg res/icons/icons_light/sidebar_voting_inactive.svg res/icons/icons_light/sidebar_voting_active.svg @@ -88,6 +90,8 @@ res/icons/icons_light/chevron_down.svg res/icons/icons_light/chevron_up.svg + res/icons/icons_light/settings.svg + res/icons/icons_light/settings_action_needed.svg res/icons/icons_dark/chevron_down.svg res/icons/icons_dark/chevron_up.svg + res/icons/icons_dark/settings_action_needed.svg res/icons/tx_pos_ss.svg res/icons/tx_por.svg @@ -162,6 +169,13 @@ res/icons/tx_contract_beacon.svg res/icons/tx_contract_voting.svg res/icons/message.svg + res/icons/menu.svg + res/icons/menu_active.svg + res/icons/dark_mode.svg + res/icons/dark_mode_active.svg + res/icons/light_mode.svg + res/icons/light_mode_active.svg + res/images/splash3.png diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index aa444097a0..a3f984d69c 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -206,11 +206,6 @@ BitcoinGUI::BitcoinGUI(QWidget *parent): signVerifyMessageDialog = new SignVerifyMessageDialog(this); - QVBoxLayout *centralVbox = new QVBoxLayout(this); - centralVbox->setContentsMargins(0, 0, 0, 0); - centralVbox->setSpacing(0); - centralVbox->addWidget(appMenuBar); - centralWidget = new QStackedWidget(this); centralWidget->addWidget(overviewPage); centralWidget->addWidget(transactionsPage); @@ -218,11 +213,8 @@ BitcoinGUI::BitcoinGUI(QWidget *parent): centralWidget->addWidget(receiveCoinsPage); centralWidget->addWidget(sendCoinsPage); centralWidget->addWidget(votingPage); - centralVbox->addWidget(centralWidget); - QWidget* centralWidgetWrapper = new QWidget(this); - centralWidgetWrapper->setLayout(centralVbox); - setCentralWidget(centralWidgetWrapper); + setCentralWidget(centralWidget); // Create status bar statusBar(); @@ -532,13 +524,15 @@ void BitcoinGUI::createMenuBar() #ifdef Q_OS_MAC // Create a decoupled menu bar on Mac which stays even if the window is closed appMenuBar = new QMenuBar(); + QMenu *file = appMenuBar->addMenu(tr("&File")); #else - // Get the main window's menu bar on other platforms - appMenuBar = menuBar(); + // Windows and Linux: collapse the main application's menu bar into a menu + // button. On macOS, we'll continue to use the system's separate menu bar. + appMenuBar = new QMenu(); + QMenu *file = appMenuBar; #endif // Configure the menus - QMenu *file = appMenuBar->addMenu(tr("&File")); file->addAction(backupWalletAction); file->addAction(exportAction); file->addAction(signMessageAction); @@ -553,7 +547,9 @@ void BitcoinGUI::createMenuBar() file->addAction(resetblockchainAction); file->addSeparator(); +#ifdef Q_OS_MAC file->addAction(quitAction); +#endif QMenu *settings = appMenuBar->addMenu(tr("&Settings")); settings->addAction(encryptWalletAction); @@ -581,20 +577,64 @@ void BitcoinGUI::createMenuBar() help->addAction(diagnosticsAction); help->addSeparator(); help->addAction(aboutAction); + +#ifndef Q_OS_MAC + file->addSeparator(); + file->addAction(quitAction); +#endif } void BitcoinGUI::createToolBars() { ClickLabel *logoLabel = new ClickLabel(); logoLabel->setObjectName("toolbarLogoLabel"); + QSizePolicy logoLabelSizePolicy = logoLabel->sizePolicy(); + logoLabelSizePolicy.setHorizontalStretch(2); + logoLabel->setSizePolicy(logoLabelSizePolicy); connect(logoLabel, SIGNAL(clicked()), this, SLOT(websiteClicked())); + QHBoxLayout *logoWrapperLayout = new QHBoxLayout(); + logoWrapperLayout->setContentsMargins(2, 0, 2, 0); + logoWrapperLayout->setSpacing(0); + + QWidget *logoWrapper = new QWidget(); + logoWrapper->setObjectName("toolbarLogoWrapper"); + logoWrapper->setLayout(logoWrapperLayout); + +#ifndef Q_OS_MAC + // Windows and Linux: collapse the main application's menu bar into a menu + // button. On macOS, we'll continue to use the system's separate menu bar. + QPushButton *menuButton = new QPushButton(); + menuButton->setObjectName("toolbarMenuButton"); + menuButton->setToolTip(tr("Open menu.")); + menuButton->setMenu(appMenuBar); + QSizePolicy menuButtonSizePolicy = menuButton->sizePolicy(); + menuButtonSizePolicy.setHorizontalStretch(1); + menuButton->setSizePolicy(menuButtonSizePolicy); + logoWrapperLayout->addWidget(menuButton); + logoWrapperLayout->setAlignment(menuButton, Qt::AlignHCenter | Qt::AlignVCenter); +#else + logoWrapperLayout->addStretch(1); +#endif + + logoWrapperLayout->addWidget(logoLabel); + + QPushButton *themeToggleButton = new QPushButton(); + themeToggleButton->setObjectName("themeToggleButton"); + themeToggleButton->setToolTip(tr("Toggle light/dark mode.")); + QSizePolicy themeToggleButtonSizePolicy = themeToggleButton->sizePolicy(); + themeToggleButtonSizePolicy.setHorizontalStretch(1); + themeToggleButton->setSizePolicy(themeToggleButtonSizePolicy); + connect(themeToggleButton, SIGNAL(clicked()), this, SLOT(themeToggled())); + logoWrapperLayout->addWidget(themeToggleButton); + logoWrapperLayout->setAlignment(themeToggleButton, Qt::AlignHCenter | Qt::AlignVCenter); + QWidget *boincLabelSpacer = new QWidget(); boincLabelSpacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); ClickLabel *boincLabel = new ClickLabel(); boincLabel->setObjectName("toolbarBoincLabel"); - connect(logoLabel, SIGNAL(clicked()), this, SLOT(boincClicked())); + connect(boincLabel, SIGNAL(clicked()), this, SLOT(boincClicked())); // "Tabs" toolbar (vertical, aligned on left side of overview screen). QToolBar *toolbar = addToolBar("Tabs toolbar"); @@ -607,7 +647,7 @@ void BitcoinGUI::createToolBars() // Setting a taller height than the rendered icon provides additional // padding between the icon and the button text: toolbar->setIconSize(GRC::ScaleSize(this, 16, 24)); - toolbar->addWidget(logoLabel); + toolbar->addWidget(logoWrapper); toolbar->addAction(overviewAction); toolbar->addAction(sendCoinsAction); toolbar->addAction(receiveCoinsAction); @@ -635,6 +675,10 @@ void BitcoinGUI::createToolBars() statusBar()->addWidget(testnetLabel); } + statusbarAlertsLabel = new QLabel(); + statusBar()->addWidget(statusbarAlertsLabel); + statusBar()->layout()->setAlignment(statusbarAlertsLabel, Qt::AlignLeft | Qt::AlignVCenter); + frameBlocks->setContentsMargins(0,0,0,0); QHBoxLayout *frameBlocksLayout = new QHBoxLayout(frameBlocks); @@ -844,6 +888,11 @@ void BitcoinGUI::optionsClicked() dlg.exec(); } +void BitcoinGUI::themeToggled() +{ + clientModel->getOptionsModel()->setCurrentStyle(sSheet == "light" ? "dark" : "light"); +} + void BitcoinGUI::openConfigClicked() { boost::filesystem::path pathConfig = GetConfigFile(); @@ -923,7 +972,6 @@ void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks) return; } - QString strStatusBarWarnings = clientModel->getStatusBarWarnings(); QString tooltip(tr("Processed %n block(s) of transaction history.", "", count)); QDateTime lastBlockDate = clientModel->getLastBlockDate(); @@ -1469,6 +1517,18 @@ void BitcoinGUI::updateGlobalStatus() { overviewPage->updateGlobalStatus(); setNumConnections(clientModel->getNumConnections()); + + QString warnings = clientModel->getStatusBarWarnings(); + + if (!warnings.isEmpty()) + { + statusbarAlertsLabel->setText(warnings); + statusbarAlertsLabel->setVisible(true); + } + else + { + statusbarAlertsLabel->setVisible(false); + } } catch(std::runtime_error &e) { diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index cb181eb2ab..181e5b7c29 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -86,6 +86,7 @@ class BitcoinGUI : public QMainWindow SignVerifyMessageDialog *signVerifyMessageDialog; std::unique_ptr updateMessageDialog; + QLabel *statusbarAlertsLabel; QLabel *labelEncryptionIcon; QLabel *labelStakingIcon; QLabel *labelConnectionsIcon; @@ -93,7 +94,13 @@ class BitcoinGUI : public QMainWindow QLabel *labelScraperIcon; QLabel *labelBeaconIcon; + // Windows and Linux: collapse the main application's menu bar into a menu + // button. On macOS, we'll continue to use the system's separate menu bar. +#ifdef Q_OS_MAC QMenuBar *appMenuBar; +#else + QMenu *appMenuBar; +#endif QAction *overviewAction; QAction *historyAction; QAction *quitAction; @@ -210,6 +217,8 @@ private slots: /** Show configuration dialog */ void optionsClicked(); + /** Switch the active light/dark theme */ + void themeToggled(); /** Show researcher/beacon configuration dialog */ void researcherClicked(); /** Show about dialog */ diff --git a/src/qt/bitcoinunits.cpp b/src/qt/bitcoinunits.cpp index 1bb2c2a2dc..afe2581106 100644 --- a/src/qt/bitcoinunits.cpp +++ b/src/qt/bitcoinunits.cpp @@ -117,6 +117,27 @@ QString BitcoinUnits::formatWithUnit(int unit, qint64 amount, bool plussign) return format(unit, amount, plussign) + QString(" ") + name(unit); } +QString BitcoinUnits::formatOverviewRounded(qint64 amount) +{ + if (amount < factor(BTC)) { + return format(BTC, amount); + } + + qint64 round_scale = 10; + qint64 amount_temp = amount / factor(BTC); + + while (amount_temp /= 10) { + round_scale *= 10; + } + + round_scale = std::min(round_scale, factor(BTC) / 100); + + // Rounds half-down to avoid over-representing the amount: + const qint64 rounded_amount = static_cast(amount) / round_scale; + + return format(BTC, rounded_amount * round_scale); +} + bool BitcoinUnits::parse(int unit, const QString &value, qint64 *val_out) { if(!valid(unit) || value.isEmpty()) diff --git a/src/qt/bitcoinunits.h b/src/qt/bitcoinunits.h index 9b7c9e160e..70e4558092 100644 --- a/src/qt/bitcoinunits.h +++ b/src/qt/bitcoinunits.h @@ -44,6 +44,8 @@ class BitcoinUnits: public QAbstractListModel static QString format(int unit, qint64 amount, bool plussign=false); //! Format as string (with unit) static QString formatWithUnit(int unit, qint64 amount, bool plussign=false); + //! Format as a rounded string approximation for overview presentation + static QString formatOverviewRounded(qint64 amount); //! Parse string to coin amount static bool parse(int unit, const QString &value, qint64 *val_out); ///@} diff --git a/src/qt/forms/overviewpage.ui b/src/qt/forms/overviewpage.ui index 8176986061..3ac9045a85 100644 --- a/src/qt/forms/overviewpage.ui +++ b/src/qt/forms/overviewpage.ui @@ -31,849 +31,1041 @@ Form - - - - - - - 6 - - - - - - 0 - 0 - + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::NoFrame + + + QFrame::Plain + + + + 15 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 4 - - - 0 - 0 - + + 0 - - - 16777215 - 16777215 - + + 0 - - - - - 7 - - - - - Wallet - - - Qt::PlainText - - - - - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Gridcoin network after a connection is established, but this process has not completed yet. - - - (out of sync) - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 12 - - - - - Available: - - - true - - - - - - - - 0 - 0 - - - - IBeamCursor - - - Your current spendable balance - - - 0 GRC - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - Immature Stake: - - - true - - - - - - - - 0 - 0 - - - - IBeamCursor - - - Amount staked for a recent block that must wait for 110 confirmations to mature before you can spend it. - - - 0 GRC - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - Unconfirmed: - - - true - - - - - - - - 0 - 0 - - - - IBeamCursor - - - Total of transactions that have yet to be confirmed, and do not yet count toward the current balance - - - 0 GRC - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - Immature: - - - true - - - - - - - - 0 - 0 - - - - Total mined coins that have not yet matured. - - - 0 GRC - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - Total: - - - true - - - - - - - - 0 - 0 - - - - Your current total balance - - - 0 GRC - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - 7 - - - - - Staking - - - Qt::PlainText - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 12 - - - - - Blocks: - - - true - - - - - - - - 0 - 0 - - - - - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - Difficulty: - - - true - - - - - - - - 0 - 0 - - - - - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - Net Weight: - - - true - - - - - - - - 0 - 0 - - - - - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - Coin Weight: - - - true - - - - - - - - 0 - 0 - - - - - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - 7 - - - - - Researcher - - - Qt::PlainText - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 12 - - - - - Status: - - - true - - - - - - - - 0 - 0 - - - - - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - CPID: - - - true - - - - - - - - 0 - 0 - - - - - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - Magnitude: - - - true - - - - - - - - 0 - 0 - - - - - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - Pending Reward: - - - true - - - - - - - - 0 - 0 - - - - - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - Open the researcher/beacon configuration wizard. - - - &Beacon... - - - false - - - false - - - - - - - - 0 - 0 - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 16 - 16 - - - - - 16 - 16 - - - - - - - :/icons/warning - - - true - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - Qt::NoTextInteraction - - - - - - - Action Needed - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 20 - 10000 - - - - - - - - - - - - - 6 - - - - - - 0 - 0 - + + 0 - - - 0 - 0 - + + 0 - - - 0 - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Recent transactions - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - The displayed information may be out of date. Your wallet automatically synchronizes with the Gridcoin network after a connection is established, but this process has not completed yet. - - - (out of sync) - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 40 - 20 - - - - - - - - - - - 1 - 0 - - - - - 0 - 0 - - - - QFrame::NoFrame - - - Qt::ScrollBarAlwaysOff - - - Qt::ScrollBarAlwaysOff - - - QAbstractItemView::NoSelection - - - - - - - - - + + + + Account Overview + + + + + + + + + + 0 + 0 + + + + CPID + + + + + + + + 0 + 0 + + + + + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0.00 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Magnitude + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + Qt::Vertical + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0.00 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Available (GRC) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + - + - 12 + 0 - - - - Current Poll: + + + + Qt::Horizontal - + + + 0 + 20 + + + - - + + - - 0 + + 1 0 - - - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - Error Messages: - + + + 9 + + + 9 + + + 9 + + + + + + 9 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 7 + + + + + Wallet + + + Qt::PlainText + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + The displayed information may be out of date. Your wallet automatically synchronizes with the Gridcoin network after a connection is established, but this process has not completed yet. + + + Out of Sync + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + + Qt::Horizontal + + + + + + + 12 + + + + + Total: + + + true + + + + + + + + 0 + 0 + + + + IBeamCursor + + + Your current spendable balance + + + 0 GRC + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + + 0 + 0 + + + + IBeamCursor + + + Total of transactions that have yet to be confirmed, and do not yet count toward the current balance + + + 0 GRC + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + + 0 + 0 + + + + IBeamCursor + + + Amount staked for a recent block that must wait for 110 confirmations to mature before you can spend it. + + + 0 GRC + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + Unconfirmed: + + + true + + + + + + + + 0 + 0 + + + + Your current total balance + + + 0 GRC + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + Available: + + + true + + + + + + + + 0 + 0 + + + + Total mined coins that have not yet matured. + + + 0 GRC + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + Immature Stake: + + + true + + + + + + + Immature: + + + true + + + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 7 + + + + + Staking + + + Qt::PlainText + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Horizontal + + + + + + + 12 + + + + + Blocks: + + + true + + + + + + + + 0 + 0 + + + + + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + Difficulty: + + + true + + + + + + + + 0 + 0 + + + + + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + Net Weight: + + + true + + + + + + + + 0 + 0 + + + + + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + Coin Weight: + + + true + + + + + + + + 0 + 0 + + + + + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 7 + + + + + Researcher + + + Qt::PlainText + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Action Needed + + + + + + + Open the researcher/beacon configuration wizard. + + + false + + + + + + + + + Qt::Horizontal + + + + + + + 12 + + + + + Status: + + + true + + + + + + + + 0 + 0 + + + + + + + true + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + Magnitude: + + + true + + + + + + + + 0 + 0 + + + + + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + Pending Reward: + + + true + + + + + + + + 0 + 0 + + + + + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 7 + + + + + Current Polls + + + Qt::PlainText + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Horizontal + + + + + + + + + + + + + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + Recent Transactions + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + The displayed information may be out of date. Your wallet automatically synchronizes with the Gridcoin network after a connection is established, but this process has not completed yet. + + + Out of Sync + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + Qt::Horizontal + + + + + + + + 1 + 0 + + + + + 0 + 0 + + + + QFrame::NoFrame + + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + QAbstractItemView::NoSelection + + + + + + + - - - - - 0 - 0 - - - - + + + + Qt::Horizontal - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + 0 + 20 + - + @@ -886,8 +1078,6 @@
clicklabel.h
- - - + diff --git a/src/qt/locale/bitcoin_af_ZA.ts b/src/qt/locale/bitcoin_af_ZA.ts index ab054358f1..fe8abd2c0f 100644 --- a/src/qt/locale/bitcoin_af_ZA.ts +++ b/src/qt/locale/bitcoin_af_ZA.ts @@ -1909,18 +1909,18 @@ Dit beteken dat 'n fooi van ten minste %2 word benodig. - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync uit sinchro diff --git a/src/qt/locale/bitcoin_ar.ts b/src/qt/locale/bitcoin_ar.ts index 4d8f489ed9..a8c91646cf 100644 --- a/src/qt/locale/bitcoin_ar.ts +++ b/src/qt/locale/bitcoin_ar.ts @@ -1881,12 +1881,12 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls @@ -1927,7 +1927,7 @@ This label turns red, if the priority is smaller than "medium". - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_be_BY.ts b/src/qt/locale/bitcoin_be_BY.ts index b04220b407..ef613228b9 100644 --- a/src/qt/locale/bitcoin_be_BY.ts +++ b/src/qt/locale/bitcoin_be_BY.ts @@ -1898,18 +1898,18 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_bg.ts b/src/qt/locale/bitcoin_bg.ts index f12e9be8f6..b69a3f1b19 100644 --- a/src/qt/locale/bitcoin_bg.ts +++ b/src/qt/locale/bitcoin_bg.ts @@ -1836,7 +1836,7 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions Скорошни транзакции @@ -1897,13 +1897,13 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_bs.ts b/src/qt/locale/bitcoin_bs.ts index a90f645fb6..c04834f65b 100644 --- a/src/qt/locale/bitcoin_bs.ts +++ b/src/qt/locale/bitcoin_bs.ts @@ -1893,12 +1893,12 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls @@ -1909,7 +1909,7 @@ This label turns red, if the priority is smaller than "medium". - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_ca.ts b/src/qt/locale/bitcoin_ca.ts index bd0651d947..d243edcafe 100644 --- a/src/qt/locale/bitcoin_ca.ts +++ b/src/qt/locale/bitcoin_ca.ts @@ -1836,7 +1836,7 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions Transaccions recents @@ -1897,13 +1897,13 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_ca@valencia.ts b/src/qt/locale/bitcoin_ca@valencia.ts index 817c729443..527b7725ce 100644 --- a/src/qt/locale/bitcoin_ca@valencia.ts +++ b/src/qt/locale/bitcoin_ca@valencia.ts @@ -1836,7 +1836,7 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions Transaccions recents @@ -1897,13 +1897,13 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_ca_ES.ts b/src/qt/locale/bitcoin_ca_ES.ts index ca6b7e74e7..490e5d62d1 100644 --- a/src/qt/locale/bitcoin_ca_ES.ts +++ b/src/qt/locale/bitcoin_ca_ES.ts @@ -1850,7 +1850,7 @@ En aquest cas es requereix una comisió d'almenys 2%. - Recent transactions + Recent Transactions Transaccions recents @@ -1911,13 +1911,13 @@ En aquest cas es requereix una comisió d'almenys 2%. - Current Poll: + Current Polls - out of sync + Out of Sync Fora de sincronia diff --git a/src/qt/locale/bitcoin_cs.ts b/src/qt/locale/bitcoin_cs.ts index 48df5af730..8640f5dc1f 100644 --- a/src/qt/locale/bitcoin_cs.ts +++ b/src/qt/locale/bitcoin_cs.ts @@ -1845,7 +1845,7 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions Poslední transakce @@ -1906,13 +1906,13 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls - out of sync + Out of Sync nesynchronizováno diff --git a/src/qt/locale/bitcoin_cy.ts b/src/qt/locale/bitcoin_cy.ts index df8265a03d..6781e200ac 100644 --- a/src/qt/locale/bitcoin_cy.ts +++ b/src/qt/locale/bitcoin_cy.ts @@ -1910,18 +1910,18 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_da.ts b/src/qt/locale/bitcoin_da.ts index 1570678dd8..8f0d467f51 100644 --- a/src/qt/locale/bitcoin_da.ts +++ b/src/qt/locale/bitcoin_da.ts @@ -1853,7 +1853,7 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. - Recent transactions + Recent Transactions Nylige transaktioner @@ -1914,13 +1914,13 @@ Det betyder, at et gebyr på mindst %2 er påkrævet. - Current Poll: + Current Polls - out of sync + Out of Sync ikke synkroniseret diff --git a/src/qt/locale/bitcoin_de.ts b/src/qt/locale/bitcoin_de.ts index 2d6c9c8b42..dea2dddee2 100644 --- a/src/qt/locale/bitcoin_de.ts +++ b/src/qt/locale/bitcoin_de.ts @@ -1855,7 +1855,7 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. - Recent transactions + Recent Transactions Letzte Transaktionen @@ -1916,13 +1916,13 @@ Dieses Label wird rot, wenn die Priorität kleiner ist als Mittel. - Current Poll: + Current Polls - out of sync + Out of Sync nicht synchron diff --git a/src/qt/locale/bitcoin_el_GR.ts b/src/qt/locale/bitcoin_el_GR.ts index e70f357feb..7ac964749f 100644 --- a/src/qt/locale/bitcoin_el_GR.ts +++ b/src/qt/locale/bitcoin_el_GR.ts @@ -1837,7 +1837,7 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions Πρόσφατες συναλλαγές @@ -1898,13 +1898,13 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_en.ts b/src/qt/locale/bitcoin_en.ts index 56a58ce0cc..4892eedc46 100644 --- a/src/qt/locale/bitcoin_en.ts +++ b/src/qt/locale/bitcoin_en.ts @@ -1895,19 +1895,19 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync - out of sync + Out of Sync + Out of Sync diff --git a/src/qt/locale/bitcoin_eo.ts b/src/qt/locale/bitcoin_eo.ts index 7a7e364a5a..a2f8e0bed4 100644 --- a/src/qt/locale/bitcoin_eo.ts +++ b/src/qt/locale/bitcoin_eo.ts @@ -1825,7 +1825,7 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls @@ -1900,13 +1900,13 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions Lastaj transakcioj - out of sync + Out of Sync nesinkronigita diff --git a/src/qt/locale/bitcoin_es.ts b/src/qt/locale/bitcoin_es.ts index 590d2c31e2..65f199a579 100644 --- a/src/qt/locale/bitcoin_es.ts +++ b/src/qt/locale/bitcoin_es.ts @@ -1835,7 +1835,7 @@ Esto significa que se requiere una cuota de al menos %2. - Current Poll: + Current Polls @@ -1915,13 +1915,13 @@ Esto significa que se requiere una cuota de al menos %2. - Recent transactions + Recent Transactions Transacciones recientes - out of sync + Out of Sync desincronizado diff --git a/src/qt/locale/bitcoin_es_CL.ts b/src/qt/locale/bitcoin_es_CL.ts index eeeab867d5..c4515a9c79 100644 --- a/src/qt/locale/bitcoin_es_CL.ts +++ b/src/qt/locale/bitcoin_es_CL.ts @@ -1892,12 +1892,12 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls @@ -1908,7 +1908,7 @@ This label turns red, if the priority is smaller than "medium". - out of sync + Out of Sync desincronizado diff --git a/src/qt/locale/bitcoin_es_DO.ts b/src/qt/locale/bitcoin_es_DO.ts index aa0b44a9e6..8787fae171 100644 --- a/src/qt/locale/bitcoin_es_DO.ts +++ b/src/qt/locale/bitcoin_es_DO.ts @@ -1860,12 +1860,12 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls @@ -1906,7 +1906,7 @@ This label turns red, if the priority is smaller than "medium". - out of sync + Out of Sync desincronizado diff --git a/src/qt/locale/bitcoin_es_MX.ts b/src/qt/locale/bitcoin_es_MX.ts index 8799e3774e..035d6f2ee1 100644 --- a/src/qt/locale/bitcoin_es_MX.ts +++ b/src/qt/locale/bitcoin_es_MX.ts @@ -1892,18 +1892,18 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_es_UY.ts b/src/qt/locale/bitcoin_es_UY.ts index 1226a016a4..784ec6b915 100644 --- a/src/qt/locale/bitcoin_es_UY.ts +++ b/src/qt/locale/bitcoin_es_UY.ts @@ -1892,18 +1892,18 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_et.ts b/src/qt/locale/bitcoin_et.ts index 9710c5e5ad..a4a6eaee0e 100644 --- a/src/qt/locale/bitcoin_et.ts +++ b/src/qt/locale/bitcoin_et.ts @@ -1865,7 +1865,7 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls @@ -1900,13 +1900,13 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions Hiljutised tehingud - out of sync + Out of Sync sünkimata diff --git a/src/qt/locale/bitcoin_eu_ES.ts b/src/qt/locale/bitcoin_eu_ES.ts index 632876279d..0645856ee9 100644 --- a/src/qt/locale/bitcoin_eu_ES.ts +++ b/src/qt/locale/bitcoin_eu_ES.ts @@ -1892,18 +1892,18 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_fa.ts b/src/qt/locale/bitcoin_fa.ts index 56885d0ce1..50747b2944 100644 --- a/src/qt/locale/bitcoin_fa.ts +++ b/src/qt/locale/bitcoin_fa.ts @@ -1811,7 +1811,7 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls @@ -1891,13 +1891,13 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions تراکنش های اخیر - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_fa_IR.ts b/src/qt/locale/bitcoin_fa_IR.ts index ef905e4095..fa684d8db2 100644 --- a/src/qt/locale/bitcoin_fa_IR.ts +++ b/src/qt/locale/bitcoin_fa_IR.ts @@ -1856,7 +1856,7 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls @@ -1891,13 +1891,13 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_fi.ts b/src/qt/locale/bitcoin_fi.ts index 59e417f4f7..e05119d2c1 100644 --- a/src/qt/locale/bitcoin_fi.ts +++ b/src/qt/locale/bitcoin_fi.ts @@ -1834,7 +1834,7 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. - Current Poll: + Current Polls @@ -1914,13 +1914,13 @@ Tämä tarkoittaa, että ainakin %2 rahansiirtopalkkio tarvitaan. - Recent transactions + Recent Transactions Viimeisimmät rahansiirrot - out of sync + Out of Sync Ei ajan tasalla diff --git a/src/qt/locale/bitcoin_fr.ts b/src/qt/locale/bitcoin_fr.ts index c5fe4bf087..bddaa53342 100644 --- a/src/qt/locale/bitcoin_fr.ts +++ b/src/qt/locale/bitcoin_fr.ts @@ -1834,8 +1834,8 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. - Current Poll: - Sondage: + Current Polls + Sondage @@ -1914,13 +1914,13 @@ Cela implique que des frais à hauteur d'au moins %2 seront nécessaires. - Recent transactions + Recent Transactions Transactions récentes - out of sync + Out of Sync désynchronisé diff --git a/src/qt/locale/bitcoin_fr_CA.ts b/src/qt/locale/bitcoin_fr_CA.ts index 728604d8aa..11621933e0 100644 --- a/src/qt/locale/bitcoin_fr_CA.ts +++ b/src/qt/locale/bitcoin_fr_CA.ts @@ -1909,18 +1909,18 @@ Les montants inférieurs à 0.546 fois les frais minimum de relais apparaissent - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync désynchronisé diff --git a/src/qt/locale/bitcoin_gl.ts b/src/qt/locale/bitcoin_gl.ts index 91f0de7b84..8bd4630c15 100644 --- a/src/qt/locale/bitcoin_gl.ts +++ b/src/qt/locale/bitcoin_gl.ts @@ -1860,12 +1860,12 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls @@ -1906,7 +1906,7 @@ This label turns red, if the priority is smaller than "medium". - out of sync + Out of Sync non sincronizado diff --git a/src/qt/locale/bitcoin_he.ts b/src/qt/locale/bitcoin_he.ts index 53efc3ff76..54693595b1 100644 --- a/src/qt/locale/bitcoin_he.ts +++ b/src/qt/locale/bitcoin_he.ts @@ -1817,7 +1817,7 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls @@ -1897,13 +1897,13 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions העברות אחרונות - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_hi_IN.ts b/src/qt/locale/bitcoin_hi_IN.ts index 80007f6d6f..a599275c80 100644 --- a/src/qt/locale/bitcoin_hi_IN.ts +++ b/src/qt/locale/bitcoin_hi_IN.ts @@ -1894,18 +1894,18 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_hr.ts b/src/qt/locale/bitcoin_hr.ts index 2921117dab..aeb4e0b3b6 100644 --- a/src/qt/locale/bitcoin_hr.ts +++ b/src/qt/locale/bitcoin_hr.ts @@ -1896,12 +1896,12 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls @@ -1912,7 +1912,7 @@ This label turns red, if the priority is smaller than "medium". - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_hu.ts b/src/qt/locale/bitcoin_hu.ts index 2d7d389aa6..ebd66d283d 100644 --- a/src/qt/locale/bitcoin_hu.ts +++ b/src/qt/locale/bitcoin_hu.ts @@ -1814,7 +1814,7 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls @@ -1894,13 +1894,13 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions A legutóbbi tranzakciók - out of sync + Out of Sync Nincs szinkronban. diff --git a/src/qt/locale/bitcoin_id_ID.ts b/src/qt/locale/bitcoin_id_ID.ts index dad63da7f0..31fd0c31e3 100644 --- a/src/qt/locale/bitcoin_id_ID.ts +++ b/src/qt/locale/bitcoin_id_ID.ts @@ -1849,12 +1849,12 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls @@ -1900,7 +1900,7 @@ This label turns red, if the priority is smaller than "medium". - out of sync + Out of Sync tidak tersinkron diff --git a/src/qt/locale/bitcoin_it.ts b/src/qt/locale/bitcoin_it.ts index 0ed1dbf840..ca3af2c93a 100644 --- a/src/qt/locale/bitcoin_it.ts +++ b/src/qt/locale/bitcoin_it.ts @@ -1834,8 +1834,8 @@ Questa etichetta diventa rossa se la priorità è minore di "media". - Current Poll: - Sondaggio corrente: + Current Polls + Sondaggio Corrente @@ -1914,13 +1914,13 @@ Questa etichetta diventa rossa se la priorità è minore di "media". - Recent transactions + Recent Transactions Transazioni recenti - out of sync + Out of Sync fuori sincrono diff --git a/src/qt/locale/bitcoin_ja.ts b/src/qt/locale/bitcoin_ja.ts index 715527bd9c..442c807bcc 100644 --- a/src/qt/locale/bitcoin_ja.ts +++ b/src/qt/locale/bitcoin_ja.ts @@ -1811,7 +1811,7 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls @@ -1891,13 +1891,13 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions 最近のトランザクション - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_ka.ts b/src/qt/locale/bitcoin_ka.ts index 3ce93fedf6..8ef65526db 100644 --- a/src/qt/locale/bitcoin_ka.ts +++ b/src/qt/locale/bitcoin_ka.ts @@ -1852,12 +1852,12 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls @@ -1903,7 +1903,7 @@ This label turns red, if the priority is smaller than "medium". - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_kk_KZ.ts b/src/qt/locale/bitcoin_kk_KZ.ts index 31f1dfa728..75395cdc09 100644 --- a/src/qt/locale/bitcoin_kk_KZ.ts +++ b/src/qt/locale/bitcoin_kk_KZ.ts @@ -1892,18 +1892,18 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_ko_KR.ts b/src/qt/locale/bitcoin_ko_KR.ts index 70217ba82d..cfa08cc5b3 100644 --- a/src/qt/locale/bitcoin_ko_KR.ts +++ b/src/qt/locale/bitcoin_ko_KR.ts @@ -1811,7 +1811,7 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls @@ -1891,13 +1891,13 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions 최근 거래 - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_ky.ts b/src/qt/locale/bitcoin_ky.ts index 7c9508db5e..9acc85ea3f 100644 --- a/src/qt/locale/bitcoin_ky.ts +++ b/src/qt/locale/bitcoin_ky.ts @@ -1892,18 +1892,18 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_la.ts b/src/qt/locale/bitcoin_la.ts index f426ed542d..97c809f7cb 100644 --- a/src/qt/locale/bitcoin_la.ts +++ b/src/qt/locale/bitcoin_la.ts @@ -1890,12 +1890,12 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls @@ -1906,7 +1906,7 @@ This label turns red, if the priority is smaller than "medium". - out of sync + Out of Sync non synchronizato diff --git a/src/qt/locale/bitcoin_lt.ts b/src/qt/locale/bitcoin_lt.ts index 2740000bc1..85143fbe6e 100644 --- a/src/qt/locale/bitcoin_lt.ts +++ b/src/qt/locale/bitcoin_lt.ts @@ -1861,12 +1861,12 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls @@ -1912,7 +1912,7 @@ This label turns red, if the priority is smaller than "medium". - out of sync + Out of Sync nesinchronizuota diff --git a/src/qt/locale/bitcoin_lv_LV.ts b/src/qt/locale/bitcoin_lv_LV.ts index ce13daf88d..6aa0758e67 100644 --- a/src/qt/locale/bitcoin_lv_LV.ts +++ b/src/qt/locale/bitcoin_lv_LV.ts @@ -1861,12 +1861,12 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls @@ -1912,7 +1912,7 @@ This label turns red, if the priority is smaller than "medium". - out of sync + Out of Sync nav sinhroniz?ts diff --git a/src/qt/locale/bitcoin_ms_MY.ts b/src/qt/locale/bitcoin_ms_MY.ts index 3cd8a27f43..e03468c0d1 100644 --- a/src/qt/locale/bitcoin_ms_MY.ts +++ b/src/qt/locale/bitcoin_ms_MY.ts @@ -1887,18 +1887,18 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_nb.ts b/src/qt/locale/bitcoin_nb.ts index 361b2990bd..ed5bf37639 100644 --- a/src/qt/locale/bitcoin_nb.ts +++ b/src/qt/locale/bitcoin_nb.ts @@ -1822,7 +1822,7 @@ Dette betyr at det trengs en avgift på minimum %2. - Current Poll: + Current Polls @@ -1902,13 +1902,13 @@ Dette betyr at det trengs en avgift på minimum %2. - Recent transactions + Recent Transactions Nylige transaksjoner - out of sync + Out of Sync ute av synk diff --git a/src/qt/locale/bitcoin_nl.ts b/src/qt/locale/bitcoin_nl.ts index ac82b70d0f..64a5c8d8b5 100644 --- a/src/qt/locale/bitcoin_nl.ts +++ b/src/qt/locale/bitcoin_nl.ts @@ -1834,7 +1834,7 @@ Dit betekend dat een fee van %2 is vereist. - Current Poll: + Current Polls @@ -1914,13 +1914,13 @@ Dit betekend dat een fee van %2 is vereist. - Recent transactions + Recent Transactions Recente transacties - out of sync + Out of Sync niet gesynchroniseerd diff --git a/src/qt/locale/bitcoin_pam.ts b/src/qt/locale/bitcoin_pam.ts index 41d9dcee83..809fc97968 100644 --- a/src/qt/locale/bitcoin_pam.ts +++ b/src/qt/locale/bitcoin_pam.ts @@ -1704,12 +1704,12 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls @@ -1735,7 +1735,7 @@ This label turns red, if the priority is smaller than "medium". - out of sync + Out of Sync ali ya maka-sync diff --git a/src/qt/locale/bitcoin_pl.ts b/src/qt/locale/bitcoin_pl.ts index 409f22d8d1..c7400009fe 100644 --- a/src/qt/locale/bitcoin_pl.ts +++ b/src/qt/locale/bitcoin_pl.ts @@ -1844,8 +1844,8 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " - Current Poll: - Aktualne głosowanie: + Current Polls + Aktualne Głosowanie @@ -1924,13 +1924,13 @@ Wartości poniżej 0.546*minimalna wartość przekazu. są traktowane jako " - Recent transactions + Recent Transactions Ostatnie transakcje - out of sync + Out of Sync desynchronizacja diff --git a/src/qt/locale/bitcoin_pt_BR.ts b/src/qt/locale/bitcoin_pt_BR.ts index da1d13967d..57cce3137e 100644 --- a/src/qt/locale/bitcoin_pt_BR.ts +++ b/src/qt/locale/bitcoin_pt_BR.ts @@ -1820,7 +1820,7 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls @@ -1900,13 +1900,13 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions Transações recentes - out of sync + Out of Sync fora de sincronia diff --git a/src/qt/locale/bitcoin_pt_PT.ts b/src/qt/locale/bitcoin_pt_PT.ts index 747e6ec9b6..7c6563673e 100644 --- a/src/qt/locale/bitcoin_pt_PT.ts +++ b/src/qt/locale/bitcoin_pt_PT.ts @@ -1903,18 +1903,18 @@ Isto significa que uma taxa de pelo menos %2 é necessária. - Recent transactions + Recent Transactions Transações recentes - Current Poll: - Votação Atual: + Current Polls + Votação Atual - out of sync + Out of Sync fora de sincronia @@ -5939,4 +5939,4 @@ Se o ficheiro não existir, crie-o com permissões de leitura. Erro - \ No newline at end of file + diff --git a/src/qt/locale/bitcoin_ro_RO.ts b/src/qt/locale/bitcoin_ro_RO.ts index 917ece8686..06304d15e2 100644 --- a/src/qt/locale/bitcoin_ro_RO.ts +++ b/src/qt/locale/bitcoin_ro_RO.ts @@ -1840,7 +1840,7 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? - Current Poll: + Current Polls @@ -1920,13 +1920,13 @@ Acest lucru înseamn? c? o tax? de cel pu?in %2 este necesar? - Recent transactions + Recent Transactions Tranzacţii recente - out of sync + Out of Sync Nu este sincronizat diff --git a/src/qt/locale/bitcoin_ru.ts b/src/qt/locale/bitcoin_ru.ts index 77a977a716..77823485be 100644 --- a/src/qt/locale/bitcoin_ru.ts +++ b/src/qt/locale/bitcoin_ru.ts @@ -1842,8 +1842,8 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: - Текущий Опрос: + Current Polls + Текущий Опрос @@ -1922,13 +1922,13 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions Последние транзакции - out of sync + Out of Sync не синхронизировано diff --git a/src/qt/locale/bitcoin_sk.ts b/src/qt/locale/bitcoin_sk.ts index c0ef1a06fc..0613131959 100644 --- a/src/qt/locale/bitcoin_sk.ts +++ b/src/qt/locale/bitcoin_sk.ts @@ -1840,7 +1840,7 @@ To znamená, že je potrebný poplatok aspoň %2. - Current Poll: + Current Polls @@ -1920,13 +1920,13 @@ To znamená, že je potrebný poplatok aspoň %2. - Recent transactions + Recent Transactions Nedávne transakcie - out of sync + Out of Sync nesynchronizované diff --git a/src/qt/locale/bitcoin_sl_SI.ts b/src/qt/locale/bitcoin_sl_SI.ts index e56820cc91..86175b21ec 100644 --- a/src/qt/locale/bitcoin_sl_SI.ts +++ b/src/qt/locale/bitcoin_sl_SI.ts @@ -1846,7 +1846,7 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". - Current Poll: + Current Polls @@ -1926,13 +1926,13 @@ Ta oznaka se obarva rde?e, ?e je prioriteta manjša kot "srednja". - Recent transactions + Recent Transactions Nedavne transakcije - out of sync + Out of Sync nesinhronizirano diff --git a/src/qt/locale/bitcoin_sq.ts b/src/qt/locale/bitcoin_sq.ts index 846d37d340..69b1f48871 100644 --- a/src/qt/locale/bitcoin_sq.ts +++ b/src/qt/locale/bitcoin_sq.ts @@ -1892,18 +1892,18 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_sr.ts b/src/qt/locale/bitcoin_sr.ts index 9ba1126f20..a864301208 100644 --- a/src/qt/locale/bitcoin_sr.ts +++ b/src/qt/locale/bitcoin_sr.ts @@ -1898,18 +1898,18 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_sv.ts b/src/qt/locale/bitcoin_sv.ts index 229ba366e4..9e2659bb71 100644 --- a/src/qt/locale/bitcoin_sv.ts +++ b/src/qt/locale/bitcoin_sv.ts @@ -1835,8 +1835,8 @@ Detta betyder att en avgift på minst %2 krävs. - Current Poll: - Aktuell omröstning: + Current Polls + Aktuell omröstning @@ -1915,13 +1915,13 @@ Detta betyder att en avgift på minst %2 krävs. - Recent transactions + Recent Transactions Nyligen genomförda transaktioner - out of sync + Out of Sync osynkroniserad diff --git a/src/qt/locale/bitcoin_th_TH.ts b/src/qt/locale/bitcoin_th_TH.ts index bd2d6ecc8f..dd6c3a414e 100644 --- a/src/qt/locale/bitcoin_th_TH.ts +++ b/src/qt/locale/bitcoin_th_TH.ts @@ -1886,18 +1886,18 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_tr.ts b/src/qt/locale/bitcoin_tr.ts index 131fbde190..df7bff22c2 100644 --- a/src/qt/locale/bitcoin_tr.ts +++ b/src/qt/locale/bitcoin_tr.ts @@ -1828,7 +1828,7 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls @@ -1908,13 +1908,13 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions Son işlemler - out of sync + Out of Sync Eşleşme Dışı diff --git a/src/qt/locale/bitcoin_uk.ts b/src/qt/locale/bitcoin_uk.ts index 77fa7771f9..2ee52e3060 100644 --- a/src/qt/locale/bitcoin_uk.ts +++ b/src/qt/locale/bitcoin_uk.ts @@ -1823,7 +1823,7 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls @@ -1903,13 +1903,13 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions Останні транзакції - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_ur_PK.ts b/src/qt/locale/bitcoin_ur_PK.ts index 8a0c0aa5a5..12f9733c5f 100644 --- a/src/qt/locale/bitcoin_ur_PK.ts +++ b/src/qt/locale/bitcoin_ur_PK.ts @@ -1892,18 +1892,18 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_vi.ts b/src/qt/locale/bitcoin_vi.ts index 4d8510e628..e12155cb83 100644 --- a/src/qt/locale/bitcoin_vi.ts +++ b/src/qt/locale/bitcoin_vi.ts @@ -1886,18 +1886,18 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_vi_VN.ts b/src/qt/locale/bitcoin_vi_VN.ts index 12d60aa656..ab56e7a27c 100644 --- a/src/qt/locale/bitcoin_vi_VN.ts +++ b/src/qt/locale/bitcoin_vi_VN.ts @@ -1876,12 +1876,12 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - Current Poll: + Current Polls @@ -1897,7 +1897,7 @@ This label turns red, if the priority is smaller than "medium". - out of sync + Out of Sync diff --git a/src/qt/locale/bitcoin_zh_CN.ts b/src/qt/locale/bitcoin_zh_CN.ts index 65f1d3a546..7e25761a05 100644 --- a/src/qt/locale/bitcoin_zh_CN.ts +++ b/src/qt/locale/bitcoin_zh_CN.ts @@ -1823,8 +1823,8 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: - 当前民意调查: + Current Polls + 当前民意调查 @@ -1903,13 +1903,13 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions - out of sync + Out of Sync 未完成同步 diff --git a/src/qt/locale/bitcoin_zh_TW.ts b/src/qt/locale/bitcoin_zh_TW.ts index 95d8bdf064..686e79b544 100644 --- a/src/qt/locale/bitcoin_zh_TW.ts +++ b/src/qt/locale/bitcoin_zh_TW.ts @@ -1811,7 +1811,7 @@ This label turns red, if the priority is smaller than "medium". - Current Poll: + Current Polls @@ -1891,13 +1891,13 @@ This label turns red, if the priority is smaller than "medium". - Recent transactions + Recent Transactions 最近的交易 - out of sync + Out of Sync diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp index a75287463d..3ceb0cd5b2 100644 --- a/src/qt/optionsmodel.cpp +++ b/src/qt/optionsmodel.cpp @@ -354,6 +354,11 @@ QString OptionsModel::getCurrentStyle() return walletStylesheet; } +void OptionsModel::setCurrentStyle(QString theme) +{ + setData(QAbstractItemModel::createIndex(WalletStylesheet, 0), theme, Qt::EditRole); +} + QString OptionsModel::getDataDir() { return dataDir; diff --git a/src/qt/optionsmodel.h b/src/qt/optionsmodel.h index 691a286d2d..580bfdc777 100644 --- a/src/qt/optionsmodel.h +++ b/src/qt/optionsmodel.h @@ -65,6 +65,9 @@ class OptionsModel : public QAbstractListModel QString getCurrentStyle(); QString getDataDir(); + /* Explicit setters */ + void setCurrentStyle(QString theme); + private: int nDisplayUnit; bool fMinimizeToTray; diff --git a/src/qt/overviewpage.cpp b/src/qt/overviewpage.cpp index e0261a8294..ad0fcb6522 100644 --- a/src/qt/overviewpage.cpp +++ b/src/qt/overviewpage.cpp @@ -21,16 +21,21 @@ #include #include -#define DECORATION_SIZE 48 +#define DECORATION_SIZE 40 class TxViewDelegate : public QAbstractItemDelegate { Q_OBJECT public: - TxViewDelegate(QObject *parent=nullptr, int scaledDecorationSize = DECORATION_SIZE): - QAbstractItemDelegate(parent), unit(BitcoinUnits::BTC), scaledDecorationSize(scaledDecorationSize) + TxViewDelegate(QObject *parent = nullptr) : QAbstractItemDelegate(parent), unit(BitcoinUnits::BTC) { + QPaintDevice *paintDevice = dynamic_cast(parent); + m_decoration_size = GRC::ScalePx(paintDevice, DECORATION_SIZE); + m_padding_y = GRC::ScalePx(paintDevice, 6); + m_offset_x = m_decoration_size + GRC::ScalePx(paintDevice, 8); + m_height = m_decoration_size + (m_padding_y * 2); + m_half_height = (m_height - (m_padding_y * 2)) / 2; } inline void paint(QPainter *painter, const QStyleOptionViewItem &option, @@ -38,14 +43,15 @@ class TxViewDelegate : public QAbstractItemDelegate { painter->save(); + // Paint the theme's background color for the hover state: + const QStyle* const style = option.widget->style(); + style->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, painter, option.widget); + QIcon icon = qvariant_cast(index.data(Qt::DecorationRole)); QRect mainRect = option.rect; - QRect decorationRect(mainRect.topLeft(), QSize(scaledDecorationSize, scaledDecorationSize)); - int xspace = scaledDecorationSize + 8; - int ypad = 6; - int halfheight = (mainRect.height() - 2*ypad)/2; - QRect amountRect(mainRect.left() + xspace, mainRect.top()+ypad, mainRect.width() - xspace, halfheight); - QRect addressRect(mainRect.left() + xspace, mainRect.top()+ypad+halfheight, mainRect.width() - xspace, halfheight); + QRect decorationRect(mainRect.left(), mainRect.top() + m_padding_y, m_decoration_size, m_decoration_size); + QRect amountRect(mainRect.left() + m_offset_x, mainRect.top() + m_padding_y, mainRect.width() - m_offset_x, m_half_height); + QRect addressRect(mainRect.left() + m_offset_x, mainRect.top() + m_padding_y + m_half_height, mainRect.width() - m_offset_x, m_half_height); icon.paint(painter, decorationRect); QDateTime date = index.data(TransactionTableModel::DateRole).toDateTime(); @@ -91,15 +97,22 @@ class TxViewDelegate : public QAbstractItemDelegate inline QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { - return QSize(scaledDecorationSize, scaledDecorationSize); + return QSize(m_decoration_size, m_height); + } + + int height() const + { + return m_height; } int unit; private: - - int scaledDecorationSize; - + int m_decoration_size; + int m_padding_y; + int m_offset_x; + int m_height; + int m_half_height; }; #include "overviewpage.moc" @@ -113,41 +126,42 @@ OverviewPage::OverviewPage(QWidget *parent) : currentUnconfirmedBalance(-1), currentImmatureBalance(-1) { - scaledDecorationSize = GRC::ScalePx(this, DECORATION_SIZE); - - txdelegate = new TxViewDelegate(this, scaledDecorationSize); + txdelegate = new TxViewDelegate(this); ui->setupUi(this); - GRC::ScaleFontPointSize(ui->overviewWalletLabel, 15); - GRC::ScaleFontPointSize(ui->researcherHeaderLabel, 15); - GRC::ScaleFontPointSize(ui->stakingHeaderLabel, 15); - GRC::ScaleFontPointSize(ui->recentTransLabel, 15); + GRC::ScaleFontPointSize(ui->headerTitleLabel, 15); + GRC::ScaleFontPointSize(ui->cpidLabel, 9); + GRC::ScaleFontPointSize(ui->headerBalanceLabel, 14); + GRC::ScaleFontPointSize(ui->headerBalanceCaptionLabel, 8); + GRC::ScaleFontPointSize(ui->headerMagnitudeLabel, 14); + GRC::ScaleFontPointSize(ui->headerMagnitudeCaptionLabel, 8); + GRC::ScaleFontPointSize(ui->overviewWalletLabel, 11); + GRC::ScaleFontPointSize(ui->researcherHeaderLabel, 11); + GRC::ScaleFontPointSize(ui->stakingHeaderLabel, 11); + GRC::ScaleFontPointSize(ui->currentPollsHeaderLabel, 11); + GRC::ScaleFontPointSize(ui->recentTransLabel, 11); + GRC::ScaleFontPointSize(ui->walletStatusLabel, 8); + GRC::ScaleFontPointSize(ui->transactionsStatusLabel, 8); + GRC::ScaleFontPointSize(ui->researcherAlertLabel, 8); // Override .ui default spacing to deal with various dpi displays. int verticalSpacing = GRC::ScalePx(this, 7); - ui->verticalLayout_10->setMargin(verticalSpacing); ui->walletGridLayout->setVerticalSpacing(verticalSpacing); ui->stakingGridLayout->setVerticalSpacing(verticalSpacing); ui->researcherGridLayout->setVerticalSpacing(verticalSpacing); - QRect verticalSpacerSpacing(0, 0, 20, GRC::ScalePx(this, 20)); - ui->verticalSpacer->setGeometry(verticalSpacerSpacing); - ui->researcherSectionVerticalSpacer->setGeometry(verticalSpacerSpacing); - - // Recent transactions + // Recent Transactions ui->listTransactions->setItemDelegate(txdelegate); - ui->listTransactions->setIconSize(QSize(scaledDecorationSize, scaledDecorationSize)); ui->listTransactions->setAttribute(Qt::WA_MacShowFocusRect, false); updateTransactions(); connect(ui->listTransactions, SIGNAL(clicked(QModelIndex)), this, SLOT(handleTransactionClicked(QModelIndex))); - - connect(ui->pollLabel, SIGNAL(clicked()), this, SLOT(handlePollLabelClicked())); + connect(ui->currentPollsTitleLabel, SIGNAL(clicked()), this, SLOT(handlePollLabelClicked())); // init "out of sync" warning labels - ui->walletStatusLabel->setText("(" + tr("out of sync") + ")"); - ui->transactionsStatusLabel->setText("(" + tr("out of sync") + ")"); + ui->walletStatusLabel->setText(tr("Out of Sync")); + ui->transactionsStatusLabel->setText(tr("Out of Sync")); // start with displaying the "out of sync" warnings showOutOfSyncWarning(true); @@ -155,8 +169,6 @@ OverviewPage::OverviewPage(QWidget *parent) : void OverviewPage::handleTransactionClicked(const QModelIndex &index) { - OverviewPage::UpdateBoincUtilization(); - if(filter) emit transactionClicked(filter->mapToSource(index)); } @@ -183,7 +195,7 @@ int OverviewPage::getNumTransactionsForView() { // Compute the maximum number of transactions the transaction list widget // can hold without overflowing. - const size_t itemHeight = scaledDecorationSize + ui->listTransactions->spacing(); + const size_t itemHeight = txdelegate->height() + ui->listTransactions->spacing(); const size_t contentsHeight = ui->listTransactions->height(); const int numItems = contentsHeight / itemHeight; @@ -240,6 +252,7 @@ void OverviewPage::setBalance(qint64 balance, qint64 stake, qint64 unconfirmedBa currentStake = stake; currentUnconfirmedBalance = unconfirmedBalance; currentImmatureBalance = immatureBalance; + ui->headerBalanceLabel->setText(BitcoinUnits::formatOverviewRounded(balance)); ui->balanceLabel->setText(BitcoinUnits::formatWithUnit(unit, balance)); ui->stakeLabel->setText(BitcoinUnits::formatWithUnit(unit, stake)); ui->unconfirmedLabel->setText(BitcoinUnits::formatWithUnit(unit, unconfirmedBalance)); @@ -251,30 +264,6 @@ void OverviewPage::setBalance(qint64 balance, qint64 stake, qint64 unconfirmedBa bool showImmature = immatureBalance != 0; ui->immatureLabel->setVisible(showImmature); ui->immatureTextLabel->setVisible(showImmature); - OverviewPage::UpdateBoincUtilization(); - -} - -void OverviewPage::UpdateBoincUtilization() -{ - { - LogPrint(BCLog::MISC, "OverviewPage::UpdateBoincUtilization()"); - - if (miner_first_pass_complete) g_GlobalStatus.SetGlobalStatus(true); - - const GlobalStatus::globalStatusStringType& globalStatusStrings = g_GlobalStatus.GetGlobalStatusStrings(); - - ui->blocksLabel->setText(QString::fromUtf8(globalStatusStrings.blocks.c_str())); - ui->difficultyLabel->setText(QString::fromUtf8(globalStatusStrings.difficulty.c_str())); - ui->netWeightLabel->setText(QString::fromUtf8(globalStatusStrings.netWeight.c_str())); - ui->coinWeightLabel->setText(QString::fromUtf8(globalStatusStrings.coinWeight.c_str())); - ui->errorsLabel->setText(QString::fromUtf8(globalStatusStrings.errors.c_str())); - } - - // GetCurrentPollTitle() locks cs_main: - ui->pollLabel->setText(QString::fromStdString(GRC::GetCurrentPollTitle()) - .left(80) - .replace(QChar('_'), QChar(' '), Qt::CaseSensitive)); } void OverviewPage::setResearcherModel(ResearcherModel *researcherModel) @@ -290,7 +279,7 @@ void OverviewPage::setResearcherModel(ResearcherModel *researcherModel) connect(researcherModel, SIGNAL(magnitudeChanged()), this, SLOT(updateMagnitude())); connect(researcherModel, SIGNAL(accrualChanged()), this, SLOT(updatePendingAccrual())); connect(researcherModel, SIGNAL(beaconChanged()), this, SLOT(updateResearcherAlert())); - connect(ui->beaconButton, SIGNAL(clicked()), this, SLOT(onBeaconButtonClicked())); + connect(ui->researcherConfigToolButton, SIGNAL(clicked()), this, SLOT(onBeaconButtonClicked())); } void OverviewPage::setWalletModel(WalletModel *model) @@ -317,8 +306,6 @@ void OverviewPage::setWalletModel(WalletModel *model) connect(model->getOptionsModel(), SIGNAL(LimitTxnDisplayChanged(bool)), this, SLOT(updateTransactions())); connect(model, SIGNAL(transactionUpdated()), this, SLOT(updateTransactions())); - - UpdateBoincUtilization(); } // update the display unit, to not use the default ("BTC") @@ -347,7 +334,24 @@ void OverviewPage::updateResearcherStatus() } ui->statusLabel->setText(researcherModel->formatStatus()); - ui->cpidLabel->setText(researcherModel->formatCpid()); + + if (researcherModel->hasEligibleProjects()) { + ui->cpidTextLabel->setText("CPID"); + ui->cpidLabel->setText(researcherModel->formatCpid()); + ui->cpidLabel->setVisible(true); + ui->headerMagnitudeWrapper->setVisible(true); + ui->headerMagnitudeVLine->setVisible(true); + } else if (researcherModel->hasPoolProjects()) { + ui->cpidTextLabel->setText(tr("Pool")); + ui->cpidLabel->setVisible(false); + ui->headerMagnitudeWrapper->setVisible(false); + ui->headerMagnitudeVLine->setVisible(false); + } else { + ui->cpidTextLabel->setText(tr("Staking Only")); + ui->cpidLabel->setVisible(false); + ui->headerMagnitudeWrapper->setVisible(false); + ui->headerMagnitudeVLine->setVisible(false); + } updateMagnitude(); updatePendingAccrual(); @@ -360,7 +364,10 @@ void OverviewPage::updateMagnitude() return; } - ui->magnitudeLabel->setText(researcherModel->formatMagnitude()); + const QString magnitude = researcherModel->formatMagnitude(); + + ui->headerMagnitudeLabel->setText(magnitude); + ui->magnitudeLabel->setText(magnitude); } void OverviewPage::updatePendingAccrual() @@ -384,7 +391,12 @@ void OverviewPage::updateResearcherAlert() return; } - ui->researcherAlertWrapper->setVisible(researcherModel->actionNeeded()); + const bool action_needed = researcherModel->actionNeeded(); + + ui->researcherAlertLabel->setVisible(action_needed); + ui->researcherConfigToolButton->setProperty("actionNeeded", action_needed); + ui->researcherConfigToolButton->style()->unpolish(ui->researcherConfigToolButton); + ui->researcherConfigToolButton->style()->polish(ui->researcherConfigToolButton); } void OverviewPage::onBeaconButtonClicked() @@ -400,10 +412,25 @@ void OverviewPage::showOutOfSyncWarning(bool fShow) { ui->walletStatusLabel->setVisible(fShow); ui->transactionsStatusLabel->setVisible(fShow); - OverviewPage::UpdateBoincUtilization(); } void OverviewPage::updateGlobalStatus() { - OverviewPage::UpdateBoincUtilization(); + { + LogPrint(BCLog::MISC, "OverviewPage::UpdateBoincUtilization()"); + + if (miner_first_pass_complete) g_GlobalStatus.SetGlobalStatus(true); + + const GlobalStatus::globalStatusStringType& globalStatusStrings = g_GlobalStatus.GetGlobalStatusStrings(); + + ui->blocksLabel->setText(QString::fromUtf8(globalStatusStrings.blocks.c_str())); + ui->difficultyLabel->setText(QString::fromUtf8(globalStatusStrings.difficulty.c_str())); + ui->netWeightLabel->setText(QString::fromUtf8(globalStatusStrings.netWeight.c_str())); + ui->coinWeightLabel->setText(QString::fromUtf8(globalStatusStrings.coinWeight.c_str())); + } + + // GetCurrentPollTitle() locks cs_main: + ui->currentPollsTitleLabel->setText(QString::fromStdString(GRC::GetCurrentPollTitle()) + .left(80) + .replace(QChar('_'), QChar(' '), Qt::CaseSensitive)); } diff --git a/src/qt/overviewpage.h b/src/qt/overviewpage.h index ab79c1c052..01c67db5d1 100644 --- a/src/qt/overviewpage.h +++ b/src/qt/overviewpage.h @@ -29,7 +29,6 @@ class OverviewPage : public QWidget void setWalletModel(WalletModel *model); void showOutOfSyncWarning(bool fShow); void updateGlobalStatus(); - void UpdateBoincUtilization(); public slots: void setBalance(qint64 balance, qint64 stake, qint64 unconfirmedBalance, qint64 immatureBalance); diff --git a/src/qt/res/icons/dark_mode.svg b/src/qt/res/icons/dark_mode.svg new file mode 100644 index 0000000000..0f5ccb338b --- /dev/null +++ b/src/qt/res/icons/dark_mode.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/qt/res/icons/dark_mode_active.svg b/src/qt/res/icons/dark_mode_active.svg new file mode 100644 index 0000000000..b6d2cd443a --- /dev/null +++ b/src/qt/res/icons/dark_mode_active.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/qt/res/icons/icons_dark/settings_action_needed.svg b/src/qt/res/icons/icons_dark/settings_action_needed.svg new file mode 100644 index 0000000000..e86183a657 --- /dev/null +++ b/src/qt/res/icons/icons_dark/settings_action_needed.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/qt/res/icons/icons_dark/sidebar_settings_active.svg b/src/qt/res/icons/icons_dark/sidebar_settings_active.svg new file mode 100644 index 0000000000..fdb7ba34d2 --- /dev/null +++ b/src/qt/res/icons/icons_dark/sidebar_settings_active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/qt/res/icons/icons_dark/sidebar_settings_inactive.svg b/src/qt/res/icons/icons_dark/sidebar_settings_inactive.svg new file mode 100644 index 0000000000..55a514de5d --- /dev/null +++ b/src/qt/res/icons/icons_dark/sidebar_settings_inactive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/qt/res/icons/icons_light/settings.svg b/src/qt/res/icons/icons_light/settings.svg new file mode 100644 index 0000000000..d9492dd637 --- /dev/null +++ b/src/qt/res/icons/icons_light/settings.svg @@ -0,0 +1 @@ + diff --git a/src/qt/res/icons/icons_light/settings_action_needed.svg b/src/qt/res/icons/icons_light/settings_action_needed.svg new file mode 100644 index 0000000000..53d3621e47 --- /dev/null +++ b/src/qt/res/icons/icons_light/settings_action_needed.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/qt/res/icons/icons_light/sidebar_settings_active.svg b/src/qt/res/icons/icons_light/sidebar_settings_active.svg new file mode 100644 index 0000000000..d472b1feaf --- /dev/null +++ b/src/qt/res/icons/icons_light/sidebar_settings_active.svg @@ -0,0 +1 @@ + diff --git a/src/qt/res/icons/icons_light/sidebar_settings_inactive.svg b/src/qt/res/icons/icons_light/sidebar_settings_inactive.svg new file mode 100644 index 0000000000..083f55f6d2 --- /dev/null +++ b/src/qt/res/icons/icons_light/sidebar_settings_inactive.svg @@ -0,0 +1 @@ + diff --git a/src/qt/res/icons/light_mode.svg b/src/qt/res/icons/light_mode.svg new file mode 100644 index 0000000000..9d9a47d9a0 --- /dev/null +++ b/src/qt/res/icons/light_mode.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/qt/res/icons/light_mode_active.svg b/src/qt/res/icons/light_mode_active.svg new file mode 100644 index 0000000000..6775d5ea8f --- /dev/null +++ b/src/qt/res/icons/light_mode_active.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/qt/res/icons/menu.svg b/src/qt/res/icons/menu.svg new file mode 100644 index 0000000000..f8ec2f0faf --- /dev/null +++ b/src/qt/res/icons/menu.svg @@ -0,0 +1 @@ + diff --git a/src/qt/res/icons/menu_active.svg b/src/qt/res/icons/menu_active.svg new file mode 100644 index 0000000000..020805d952 --- /dev/null +++ b/src/qt/res/icons/menu_active.svg @@ -0,0 +1 @@ + diff --git a/src/qt/res/icons/tx_input.svg b/src/qt/res/icons/tx_input.svg index 03eefd227b..32180b0785 100644 --- a/src/qt/res/icons/tx_input.svg +++ b/src/qt/res/icons/tx_input.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/qt/res/icons/tx_output.svg b/src/qt/res/icons/tx_output.svg index 68e7c56df8..2072f6814d 100644 --- a/src/qt/res/icons/tx_output.svg +++ b/src/qt/res/icons/tx_output.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/qt/res/stylesheets/dark_stylesheet.qss b/src/qt/res/stylesheets/dark_stylesheet.qss index 2b5e1e8cfd..1c6c763c0e 100644 --- a/src/qt/res/stylesheets/dark_stylesheet.qss +++ b/src/qt/res/stylesheets/dark_stylesheet.qss @@ -43,17 +43,19 @@ TransactionView { background: rgb(23, 30, 40); border: none; border-radius: 0.26em; - padding: 0.75em; + padding: 0.75em 1em; } /* HLine */ QFrame[frameShape="4"] { - border-top: 0.065em solid rgb(58, 70, 94); + border-top: 0.065em solid rgba(255, 255, 255, 0.1); + background: transparent; } /* VLine */ QFrame[frameShape="5"] { - border-left: 0.065em solid rgb(58, 70, 94); + border-left: 0.065em solid rgba(255, 255, 255, 0.1); + background: transparent; } QAbstractItemView { @@ -355,6 +357,11 @@ QToolButton { padding: 0.25em; } +ClickLabel { + color: palette(link); + text-decoration: underline; +} + QDateEdit::up-button, QDateEdit::down-button, QDoubleSpinBox::up-button, @@ -429,6 +436,7 @@ QTabBar::tab:!selected:hover { QToolBar#toolbar { border-right: 0.065em solid rgb(18, 26, 34); height: 100%; + padding: 0; } QToolBar#toolbar QToolButton { @@ -452,12 +460,58 @@ QToolBar#toolbar::separator { margin: 0.25em 1.5em; } +#toolbarLogoWrapper { + min-height: 4em; + max-height: 4em; + border-bottom: 0.065em solid rgb(18, 26, 34); +} + +#toolbarMenuButton, +#themeToggleButton { + background: none; + border: none; + min-width: 1.1em; + max-width: 1.1em; + min-height: 1.1em; + max-height: 1.1em; + padding: 0.1em; +} + +#toolbarMenuButton:hover, +#toolbarMenuButton:pressed, +#themeToggleButton:hover, +#themeToggleButton::pressed { + background-color: rgb(26, 145, 235); +} + +#toolbarMenuButton { + image: url(:/icons/menu); +} + +#toolbarMenuButton:hover, +#toolbarMenuButton:pressed { + image: url(:/icons/menu_active); +} + +#toolbarMenuButton::menu-indicator { + width: 0; + height: 0; +} + +#themeToggleButton { + image: url(:/icons/light_mode); +} + +#themeToggleButton:hover, +#themeToggleButton:pressed { + image: url(:/icons/light_mode_active); +} + #toolbarLogoLabel { image: url(:/images/gridcoin); - border-bottom: 0.065em solid rgb(18, 26, 34); min-width: 2.75em; min-height: 2.75em; - padding: 1em 1.5em; + max-height: 2.75em; } #toolbarBoincLabel { @@ -499,6 +553,10 @@ QStatusBar QToolTip { font-weight: bold; } +#statusbarAlertsLabel { + color: white; +} + #aboutLogoLabel{ image:url(:/images/about); min-width:2.25em; @@ -507,20 +565,74 @@ QStatusBar QToolTip { max-height:9.225em; } +#headerFrame { + background: none; + border-bottom: 0.065em solid rgb(18, 26, 34); + border-radius: 0; + min-height: 4em; + max-height: 4em; + padding: 0 1em; +} + +/* VLine */ +#headerFrame QFrame[frameShape="5"] { + margin: 1em 0; +} + +#headerFrame #headerTitleLabel { + color: white; + font-weight: 500; +} + +#contentFrame { + background: none; + max-width: 60em; + padding: 0; + margin: 0; +} + +#currentPollsFrame, +#recentTransactionsFrame, +#researcherFrame, +#stakingFrame, +#walletFrame { + border-bottom: 0.065em solid rgba(0, 0, 0, 0.4); +} + /* overview page */ +#currentPollsHeaderLabel, #overviewWalletLabel, #researcherHeaderLabel, #stakingHeaderLabel, #recentTransLabel { - font-weight: bold; - color: rgb(250, 250, 250); + font-weight: 500; + color: rgb(235, 236, 238); } #OverviewPage QLabel[isRowHeader=true] { min-width: 6.5em; } +#OverviewPage #cpidTextLabel { + border: 0.065em solid rgb(250, 250, 250); + border-radius: 0.5em; + margin-right: 0.25em; + padding: 0 0.1em; + color: rgb(250, 250, 250); +} + +#OverviewPage #headerBalanceLabel, +#OverviewPage #headerMagnitudeLabel { + color: rgb(26, 145, 235); + font-weight: 500; +} + +#OverviewPage #headerBalanceCaptionLabel, +#OverviewPage #headerMagnitudeCaptionLabel { + color: rgb(183, 189, 190); +} + #availableLabel, #immatureTextLabel, #totalBalanceLabel { @@ -530,13 +642,41 @@ QStatusBar QToolTip { #walletStatusLabel, #transactionsStatusLabel, #researcherAlertLabel { - color: red; + background-color: rgb(237, 81, 68); + border-radius: 0.25em; + padding: 0 0.2em; + color: white; + font-weight: bold; +} + +#researcherConfigToolButton { + background: none; + border: none; + padding: 0.1em; + width: 1em; + height: 1em; +} + +#researcherConfigToolButton:hover { + background-color: rgb(21, 126, 205); +} + +#researcherConfigToolButton { + image: url(:/icons/settings_dark); +} + +#researcherConfigToolButton[actionNeeded=true] { + image: url(:/icons/dark_settings_action_needed); } #listTransactions { background: none; } +#listTransactions::item { + border-radius: 0.26em; +} + /* coincontrol dialog*/ #coinControlFeaturesLabel{ diff --git a/src/qt/res/stylesheets/light_stylesheet.qss b/src/qt/res/stylesheets/light_stylesheet.qss index 3922f6e310..66c38a7ba4 100644 --- a/src/qt/res/stylesheets/light_stylesheet.qss +++ b/src/qt/res/stylesheets/light_stylesheet.qss @@ -39,7 +39,7 @@ TransactionView { background: white; border: none; border-radius: 0.26em; - padding: 0.75em; + padding: 0.75em 1em; } /* HLine */ @@ -365,6 +365,11 @@ QToolButton { color: rgb(97, 101, 118); } +ClickLabel { + color: palette(link); + text-decoration: underline; +} + QDateEdit::up-button, QDateEdit::down-button, QDoubleSpinBox::up-button, @@ -440,6 +445,7 @@ QToolBar#toolbar { background-color: rgb(54, 1, 102); border: none; height: 100%; + padding: 0; } QToolBar#toolbar QToolButton { @@ -464,13 +470,59 @@ QToolBar#toolbar::separator { margin: 0.25em 1.5em; } -#toolbarLogoLabel { - image: url(:/images/gridcoin); +#toolbarLogoWrapper { background-color: rgb(48, 11, 82); + min-height: 4em; + max-height: 4em; border-bottom: 0.065em solid rgb(74, 26, 117); +} + +#toolbarMenuButton, +#themeToggleButton { + background: none; + border: none; + min-width: 1.1em; + max-width: 1.1em; + min-height: 1.1em; + max-height: 1.1em; + padding: 0.1em; +} + +#toolbarMenuButton:hover, +#toolbarMenuButton:pressed, +#themeToggleButton:hover, +#themeToggleButton:pressed { + background: rgb(109, 25, 186); +} + +#toolbarMenuButton { + image: url(:/icons/menu); +} + +#toolbarMenuButton:hover, +#toolbarMenuButton:pressed { + image: url(:/icons/menu_active); +} + +#toolbarMenuButton::menu-indicator { + width: 0; + height: 0; +} + +#themeToggleButton { + image: url(:/icons/dark_mode); +} + +#themeToggleButton:hover, +#themeToggleButton:pressed { + image: url(:/icons/dark_mode_active); +} + +#toolbarLogoLabel { + image: url(:/images/gridcoin); min-width: 2.75em; min-height: 2.75em; - padding: 1em 1.5em; + max-height: 2.75em; } #toolbarBoincLabel { @@ -516,8 +568,43 @@ QStatusBar .QFrame QLabel { max-height:9.225em; } +#headerFrame { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgb(240, 240, 240), stop: 0.1 rgb(255, 255, 255)); + border-bottom: 0.065em solid rgb(230, 230, 230); + border-radius: 0; + min-height: 4em; + max-height: 4em; + padding: 0 1em; +} + +/* VLine */ +#headerFrame QFrame[frameShape="5"] { + margin: 1em 0; +} + +#headerFrame #headerTitleLabel { + color: rgb(43, 52, 69); + font-weight: 500; +} + +#contentFrame { + background: none; + max-width: 60em; + padding: 0; + margin: 0; +} + +#currentPollsFrame, +#recentTransactionsFrame, +#researcherFrame, +#stakingFrame, +#walletFrame { + border-bottom: 0.065em solid rgba(0, 0, 0, 0.1); +} + /* overview page */ +#currentPollsHeaderLabel, #overviewWalletLabel, #researcherHeaderLabel, #stakingHeaderLabel, @@ -530,6 +617,20 @@ QStatusBar .QFrame QLabel { min-width: 6.5em; } +#OverviewPage #cpidTextLabel { + border: 0.065em solid rgb(43, 52, 69); + border-radius: 0.5em; + margin-right: 0.25em; + padding: 0 0.1em; + color: rgb(43, 52, 69); +} + +#OverviewPage #headerBalanceLabel, +#OverviewPage #headerMagnitudeLabel { + color: rgb(140, 20, 254); + font-weight: 500; +} + #availableLabel, #immatureTextLabel, #totalBalanceLabel { @@ -539,13 +640,41 @@ QStatusBar .QFrame QLabel { #walletStatusLabel, #transactionsStatusLabel, #researcherAlertLabel { - color: red; + background-color: rgb(237, 81, 68); + border-radius: 0.25em; + padding: 0 0.2em; + color: white; + font-weight: bold; +} + +#researcherConfigToolButton { + background: none; + border: none; + padding: 0.1em; + width: 1em; + height: 1em; +} + +#researcherConfigToolButton:hover { + background: rgb(241, 245, 247); +} + +#researcherConfigToolButton { + image: url(:/icons/light_settings); +} + +#researcherConfigToolButton[actionNeeded=true] { + image: url(:/icons/light_settings_action_needed); } #listTransactions { background: none; } +#listTransactions::item { + border-radius: 0.26em; +} + /* coincontrol dialog*/ #coinControlFeaturesLabel{