From dfcf488c7c97a6652ca0ed4d8667bdf900cb938b Mon Sep 17 00:00:00 2001 From: felixrojauro Date: Thu, 26 Nov 2015 08:15:34 +0100 Subject: [PATCH] UI Checkbox, Radiobutton, Indication arrows styling. Info dialog moveed to scrollarea --- src/qt/addressbookpage.cpp | 12 - src/qt/bitcoin.qrc | 6 + src/qt/bitcoingui.cpp | 3 +- src/qt/cscfusionstyle.cpp | 159 +++- src/qt/forms/addressbookpage.ui | 7 +- src/qt/forms/infopage.ui | 876 ++++++++++-------- src/qt/forms/optionsdialog.ui | 826 ++++++++--------- src/qt/forms/sendcoinsentry.ui | 13 +- .../icons/GUI20_mainToolBar_redeemprypto.png | Bin 2836 -> 4892 bytes src/qt/res/icons/adverts_arrow_bottom.png | Bin 0 -> 243 bytes .../res/icons/adverts_arrow_bottom_hover.png | Bin 0 -> 295 bytes src/qt/res/icons/adverts_arrow_top.png | Bin 0 -> 243 bytes src/qt/res/icons/adverts_arrow_top_hover.png | Bin 0 -> 277 bytes src/qt/res/icons/checkbox_tick.png | Bin 0 -> 217 bytes src/qt/res/icons/radiobutton_tick.png | Bin 0 -> 396 bytes 15 files changed, 1011 insertions(+), 891 deletions(-) create mode 100644 src/qt/res/icons/adverts_arrow_bottom.png create mode 100644 src/qt/res/icons/adverts_arrow_bottom_hover.png create mode 100644 src/qt/res/icons/adverts_arrow_top.png create mode 100644 src/qt/res/icons/adverts_arrow_top_hover.png create mode 100644 src/qt/res/icons/checkbox_tick.png create mode 100644 src/qt/res/icons/radiobutton_tick.png diff --git a/src/qt/addressbookpage.cpp b/src/qt/addressbookpage.cpp index 8c094cb..3f70687 100644 --- a/src/qt/addressbookpage.cpp +++ b/src/qt/addressbookpage.cpp @@ -28,18 +28,6 @@ AddressBookPage::AddressBookPage(Mode mode, Tabs tab, QWidget *parent) : tab(tab) { ui->setupUi(this); - GUI20Skin& gui20Skin = GUI20Skin::Instance(); - ui->exportButton->setStyleSheet("background-color: rgb (" + QString::number( gui20Skin.GetColorToolbarMainGradientBegin().red() ) + - ", " + QString::number( gui20Skin.GetColorToolbarMainGradientBegin().green() ) + - ", " + QString::number( gui20Skin.GetColorToolbarMainGradientBegin().blue() ) + - ");" \ - "color: rgb(255, 255, 255);" \ - "pressed" \ - "{" \ - "background-color: rgb(170, 28, 33);" \ - "}" - ); - qDebug() << ui->exportButton->styleSheet(); #ifdef Q_OS_MAC // Icons on push buttons are very uncommon on Mac ui->newAddress->setIcon(QIcon()); ui->copyAddress->setIcon(QIcon()); diff --git a/src/qt/bitcoin.qrc b/src/qt/bitcoin.qrc index a68e3ee..65a9830 100644 --- a/src/qt/bitcoin.qrc +++ b/src/qt/bitcoin.qrc @@ -59,6 +59,12 @@ res/icons/GUI20_mainToolBar_contacts.png res/icons/GUI20_mainToolBar_contacts_hover.png res/icons/prypto.png + res/icons/checkbox_tick.png + res/icons/adverts_arrow_bottom_hover.png + res/icons/adverts_arrow_bottom.png + res/icons/adverts_arrow_top.png + res/icons/adverts_arrow_top_hover.png + res/icons/radiobutton_tick.png res/images/about.png diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index d2198e6..9891334 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -74,6 +74,8 @@ BitcoinGUI::BitcoinGUI(QWidget *parent) : rpcConsole(0), prevBlocks(0) { + QApplication::setStyle(new CSCFusionStyle); + restoreWindowGeometry(); setWindowTitle(tr("CasinoCoin") + " - " + tr("Wallet")); #ifndef Q_OS_MAC @@ -167,7 +169,6 @@ BitcoinGUI::BitcoinGUI(QWidget *parent) : // Initially wallet actions should be disabled setWalletActionsEnabled(false); - QApplication::setStyle(new CSCFusionStyle); } BitcoinGUI::~BitcoinGUI() diff --git a/src/qt/cscfusionstyle.cpp b/src/qt/cscfusionstyle.cpp index a589bde..ebceaa4 100644 --- a/src/qt/cscfusionstyle.cpp +++ b/src/qt/cscfusionstyle.cpp @@ -1,43 +1,3 @@ -/**************************************************************************** -** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names -** of its contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - #include #include "cscfusionstyle.h" @@ -139,6 +99,22 @@ int CSCFusionStyle::pixelMetric(PixelMetric metric, { return 8; } + case PM_IndicatorHeight: + { + return 18; + } + case PM_IndicatorWidth: + { + return 18; + } + case PM_ExclusiveIndicatorWidth: + { + return 18; + } + case PM_ExclusiveIndicatorHeight: + { + return 18; + } case PM_ScrollBarExtent: { return QProxyStyle::pixelMetric(metric, option, widget) + 4; @@ -168,9 +144,9 @@ int CSCFusionStyle::styleHint(StyleHint hint, const QStyleOption *option, { return int(true); } - case SH_ComboBox_Popup: + case SH_ScrollView_FrameOnlyAroundContents: { - qDebug() << "yep, there are some comboboxes!"; + return int(true); } default: { @@ -184,6 +160,8 @@ void CSCFusionStyle::drawPrimitive(PrimitiveElement element, QPainter *painter, const QWidget *widget) const { + GUI20Skin& skin = GUI20Skin::Instance(); + switch (element) { case PE_FrameDefaultButton: @@ -196,9 +174,6 @@ void CSCFusionStyle::drawPrimitive(PrimitiveElement element, } case PE_PanelItemViewRow: { - int x, y, width, height; - option->rect.getRect(&x, &y, &width, &height); - QPainterPath roundRect = roundRectPath(option->rect, 0); QBrush brush = option->palette.base(); @@ -208,6 +183,46 @@ void CSCFusionStyle::drawPrimitive(PrimitiveElement element, painter->restore(); break; } + case PE_IndicatorArrowDown: + case PE_IndicatorArrowUp: + case PE_IndicatorArrowLeft: + case PE_IndicatorArrowRight: + { + int x, y, width, height; + option->rect.getRect(&x, &y, &width, &height); + painter->save(); + painter->setRenderHint(QPainter::Antialiasing, true); + QImage imgArrow; + QString strPath = ":/icons/advertsArrow"; + if ( element == PE_IndicatorArrowDown ) + { + strPath.append( "Down" ); + } + else if ( element == PE_IndicatorArrowLeft ) + { + strPath.append( "Left" ); + } + else if ( element == PE_IndicatorArrowUp ) + { + strPath.append( "Top" ); + } + else if ( element == PE_IndicatorArrowRight ) + { + strPath.append( "Right" ); + } + + if ( option->state & QStyle::State_MouseOver ) + { + strPath.append( "Hover" ); + } + qDebug() << "gonna draw: " << strPath; + imgArrow.load( strPath ); + int iTopLeftX = x + ( ( ( width - imgArrow.width() ) / 2 ) ); + int iTopLeftY = y + ( ( ( height - imgArrow.height() ) / 2 ) ); + painter->drawImage( QPoint( iTopLeftX, iTopLeftY), imgArrow ); + painter->restore(); + break; + } case PE_FrameGroupBox: case PE_FrameWindow: case PE_Frame: @@ -224,6 +239,55 @@ void CSCFusionStyle::drawPrimitive(PrimitiveElement element, painter->restore(); break; } + case PE_IndicatorRadioButton: + { + int x, y, width, height; + option->rect.getRect(&x, &y, &width, &height); + + QPainterPath roundRect = roundRectPath( QRect( x + 1, y + 1, width - 1, height - 1 ), ( width -1 ) / 2); + QPen pen( skin.GetColorToolbarMainGradientBegin(), 2 ); + painter->save(); + painter->setPen( pen ); + painter->setRenderHint(QPainter::Antialiasing, true); + painter->drawPath( roundRect ); + if ( option->state & QStyle::State_Off ) + { + } + else if ( option->state & QStyle::State_On ) + { + QImage checkboxTick( ":/icons/radiobuttonTick" ); + checkboxTick = checkboxTick.scaled( 10, 10 ); + int iTopLeftX = x + ( ( ( width - checkboxTick.width() ) / 2 ) ); + int iTopLeftY = y + ( ( ( height - checkboxTick.height() ) / 2 ) ); + painter->drawImage( QPoint( iTopLeftX, iTopLeftY ), checkboxTick ); + } + painter->restore(); + break; + } + case PE_IndicatorCheckBox: + { + int x, y, width, height; + option->rect.getRect(&x, &y, &width, &height); + + QPainterPath roundRect = roundRectPath( QRect( x + 1, y + 1, width - 1, height - 1 ), 2 ); + QPen pen( skin.GetColorToolbarMainGradientBegin(), 2 ); + painter->save(); + painter->setPen( pen ); + painter->setRenderHint(QPainter::Antialiasing, true); + painter->drawPath( roundRect ); + if ( option->state & QStyle::State_Off ) + { + } + else if ( option->state & QStyle::State_On ) + { + QImage checkboxTick( ":/icons/checkboxTick" ); + int iTopLeftX = x + ( ( ( width - checkboxTick.width() ) / 2 ) ); + int iTopLeftY = y + ( ( ( height - checkboxTick.height() ) / 2 ) ); + painter->drawImage( QPoint( iTopLeftX, iTopLeftY ), checkboxTick ); + } + painter->restore(); + break; + } case PE_PanelButtonTool: case PE_PanelButtonCommand: { @@ -237,9 +301,9 @@ void CSCFusionStyle::drawPrimitive(PrimitiveElement element, int x, y, width, height; option->rect.getRect(&x, &y, &width, &height); - QPainterPath roundRect = roundRectPath(option->rect, 5 ); - int radius = 5; + QPainterPath roundRect = roundRectPath( QRect( x + 1, y + 1, width - 1, height - 1 ), radius ); + QBrush brush; @@ -377,5 +441,4 @@ QPainterPath CSCFusionStyle::roundRectPath(const QRect &rect, int radius) path.closeSubpath(); return path; } -//! [40] diff --git a/src/qt/forms/addressbookpage.ui b/src/qt/forms/addressbookpage.ui index 90865ad..d298937 100644 --- a/src/qt/forms/addressbookpage.ui +++ b/src/qt/forms/addressbookpage.ui @@ -119,7 +119,12 @@ false - + background-color: rgb(170, 28, 33); +color: rgb(255, 255, 255); +pressed +{ +background-color: rgb(170, 28, 33); +} &Export diff --git a/src/qt/forms/infopage.ui b/src/qt/forms/infopage.ui index 9f9e6d4..acef11b 100644 --- a/src/qt/forms/infopage.ui +++ b/src/qt/forms/infopage.ui @@ -139,414 +139,478 @@ QFrame::Sunken - - - - 10 - 41 - 351 - 192 - - - - - 15 - - - 10 - - - 10 - - - 10 - - - 10 - - - 10 - - - - - color: rgb(0, 0, 0); - - - Current number of blocks + + + + + + MS Shell Dlg 2 + 10 + 75 + true + + + + color: rgb(166, 27, 31); + + + Information + + + + + + + + 0 + 0 + + + + Qt::ScrollBarAlwaysOn + + + Qt::ScrollBarAsNeeded + + + true + + + + + 0 + 0 + 343 + 217 + + + + + + QFormLayout::AllNonFixedFieldsGrow + + + 15 + + + 10 + + + 10 + + + 10 + + + 10 + + + 10 + + + + + + + + Current number of blocks + + + true + + + + + + + + 75 + true + + + + + + + - + + + true + + + + + + + + + + Last block time + + + true + + + + + + + + 75 + true + + + + + + + - + + + true + + + + + + + + + + Coin Supply + + + true + + + + + + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + + + 75 + true + + + + + + + - + + + true + + + + + + + + + + Number of connections + + + true + + + + + + + + 75 + true + + + + + + + - + + + true + + + + + + + + + + Difficulty + + + true + + + + + + + + 75 + true + + + + + + + - + + + true + + + + + + + + + + Network Hashrate + + + true + + + + + + + + 75 + true + + + + + + + - + + + true + + + + + + + + + + Transactions + + + true + + + + + + + + 75 + true + + + + + + + - + + + true + + + + + + - - - - - color: rgb(0, 0, 0); - - - Last block time - - - - - - - color: rgb(0, 0, 0); - - - Coin Supply - - - - - - - color: rgb(0, 0, 0); - - - Number of connections - - - - - - - color: rgb(0, 0, 0); - - - Difficulty - - - - - - - - 75 - true - - - - color: rgb(0, 0, 0); - - - - - - - - - - - - 75 - true - - - - color: rgb(0, 0, 0); - - - - - - - - - - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - - - 75 - true - - - - color: rgb(0, 0, 0); - - - - - - - - - - - - 75 - true - - - - color: rgb(0, 0, 0); - - - - - - - - - - - - 75 - true - - - - color: rgb(0, 0, 0); - - - - - - - - - - - color: rgb(0, 0, 0); - - - Network Hashrate - - - - - - - - 75 - true - - - - color: rgb(0, 0, 0); - - - - - - - - - - - color: rgb(0, 0, 0); - - - Transactions - - - - - - - - 75 - true - - - - color: rgb(0, 0, 0); - - - - - - - - - - - - - 20 - 10 - 341 - 21 - - - - - MS Shell Dlg 2 - 10 - 75 - true - - - - color: rgb(166, 27, 31); - - - Information - - + + + diff --git a/src/qt/forms/optionsdialog.ui b/src/qt/forms/optionsdialog.ui index a29b13f..cce8ecd 100644 --- a/src/qt/forms/optionsdialog.ui +++ b/src/qt/forms/optionsdialog.ui @@ -16,8 +16,8 @@ true - - + + QTabWidget::North @@ -31,59 +31,73 @@ - - - Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. - - - Qt::PlainText - - - true - + + + + + + Optional transaction fee per kB that helps make sure your transactions are processed quickly. Most transactions are 1 kB. + + + Qt::PlainText + + + true + + + + - - - - - Pay transaction &fee - - - Qt::PlainText - - - transactionFee - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - + + + + + + Pay transaction &fee + + + Qt::PlainText + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + - - - Automatically start CasinoCoin after logging in to the system. - - - &Start CasinoCoin on system login - + + + + + + Automatically start CasinoCoin after logging in to the system. + + + + + + &Start CasinoCoin on system login + + + + @@ -100,34 +114,36 @@ - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Reset all client options to default. - - - &Reset Options - - - false - - - - + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Reset all client options to default. + + + &Reset Options + + + false + + + + + @@ -137,114 +153,113 @@ - - - Automatically open the CasinoCoin client port on the router. This only works when your router supports UPnP and it is enabled. - - - Map port using &UPnP - + + + + + + Connect to the CasinoCoin network through a SOCKS proxy (e.g. when connecting through Tor). + + + &Connect through SOCKS proxy: + + + + + + + Automatically open the CasinoCoin client port on the router. This only works when your router supports UPnP and it is enabled. + + + Map port using &UPnP + + + + - - - Connect to the CasinoCoin network through a SOCKS proxy (e.g. when connecting through Tor). - - - &Connect through SOCKS proxy: - + + + + + + Proxy &IP: + + + Qt::PlainText + + + + + + + &Port: + + + Qt::PlainText + + + + + + + SOCKS &Version: + + + Qt::PlainText + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + SOCKS version of the proxy (e.g. 5) + + + + + + + + 140 + 16777215 + + + + IP address of the proxy (e.g. 127.0.0.1) + + + + + + + + 55 + 16777215 + + + + Port of the proxy (e.g. 9050) + + + + - - - - - - Proxy &IP: - - - Qt::PlainText - - - proxyIp - - - - - - - - 140 - 16777215 - - - - IP address of the proxy (e.g. 127.0.0.1) - - - - - - - &Port: - - - Qt::PlainText - - - proxyPort - - - - - - - - 55 - 16777215 - - - - Port of the proxy (e.g. 9050) - - - - - - - SOCKS &Version: - - - Qt::PlainText - - - socksVersion - - - - - - - SOCKS version of the proxy (e.g. 5) - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - @@ -266,23 +281,29 @@ - - - Show only a tray icon after minimizing the window. - - - &Minimize to the tray instead of the taskbar - - - - - - - Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Quit in the menu. - - - M&inimize on close - + + + + + + Show only a tray icon after minimizing the window. + + + &Minimize to the tray instead of the taskbar + + + + + + + Minimize instead of exit the application when the window is closed. When this option is enabled, the application will be closed only after selecting Quit in the menu. + + + M&inimize on close + + + + @@ -304,231 +325,196 @@ &Display - - - - 10 - 100 - 491 - 20 - - - - Whether to show CasinoCoin addresses in the transaction list or not. - - - &Display addresses in transaction list - - - - - - 10 - 130 - 491 - 20 - - - - Whether to show coin control features or not. - - - Display coin &control features (experts only!) - - - - - - 10 - 70 - 491 - 29 - - - - - - - Currency to show amounts in: - - - Qt::PlainText - - - currency - - - - - - - Choose the default currency in which to show your total coin value. - - - - - - - - - 11 - 11 - 491 - 29 - - - - - QLayout::SetMaximumSize - - - - - User Interface &language: - - - Qt::PlainText - - - lang - - - - - - - The user interface language can be set here. This setting will take effect after restarting CasinoCoin. - - - - - - - - - 11 - 42 - 491 - 29 - - - - - - - &Unit to show amounts in: - - - Qt::PlainText - - - unit - - - - - - - Choose the default subdivision unit to show in the interface and when sending coins. - - - - - - - - - 10 - 160 - 491 - 20 - - - - Whether to show casino promotions on the overview page or not. - - - Display casino promotions - - + + + + + + + + QLayout::SetMaximumSize + + + + + User Interface &language: + + + Qt::PlainText + + + + + + + The user interface language can be set here. This setting will take effect after restarting CasinoCoin. + + + + + + + + + + + &Unit to show amounts in: + + + Qt::PlainText + + + + + + + Choose the default subdivision unit to show in the interface and when sending coins. + + + + + + + + + + + Currency to show amounts in: + + + Qt::PlainText + + + + + + + Choose the default currency in which to show your total coin value. + + + + + + + + + + + + + + + Whether to show CasinoCoin addresses in the transaction list or not. + + + &Display addresses in transaction list + + + + + + + Whether to show coin control features or not. + + + Display coin &control features (experts only!) + + + + + + + Whether to show casino promotions on the overview page or not. + + + Display casino promotions + + + + + + + - - - - - - Qt::Horizontal - - - - 40 - 48 - - - - - - - - - 75 - true - - - - - - - Qt::PlainText - - - true - - - - - - - Qt::Horizontal - - - - 40 - 48 - - - - - - - - &OK - - - - - - - &Cancel - - - false - - - - - - - &Apply - - - false - - - - + + + + + + + Qt::Horizontal + + + + 40 + 48 + + + + + + + + + 75 + true + + + + + + + Qt::PlainText + + + true + + + + + + + Qt::Horizontal + + + + 40 + 48 + + + + + + + + &OK + + + + + + + &Cancel + + + false + + + + + + + &Apply + + + false + + + + + diff --git a/src/qt/forms/sendcoinsentry.ui b/src/qt/forms/sendcoinsentry.ui index d1bde90..41a04b3 100644 --- a/src/qt/forms/sendcoinsentry.ui +++ b/src/qt/forms/sendcoinsentry.ui @@ -49,9 +49,6 @@ - - - @@ -177,6 +174,16 @@ + + + + + 0 + 0 + + + + diff --git a/src/qt/res/icons/GUI20_mainToolBar_redeemprypto.png b/src/qt/res/icons/GUI20_mainToolBar_redeemprypto.png index 3c3631c758d738230dfea468941da7327fc8b08c..ec992c422a838d55a003d8341bcc6aae7ec35700 100644 GIT binary patch literal 4892 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 literal 0 HcmV?d00001 diff --git a/src/qt/res/icons/adverts_arrow_top_hover.png b/src/qt/res/icons/adverts_arrow_top_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..77848e5931e4bfd2722e9f818948adac881540ca GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^AT}Qd8;}%R+`Ae`u_bxCyDx`7I;J! zGca%qgD@k*tT_@uLG}_)Usv|~+)@mTl2SXQ4S_<7JY5_^G|q3mXwAjs$kXt!e%p;h z+Dm3M-_Y*j;!ZN$nm*gfeyc{p)~U*M5nTtRnZv zi&%Rbym%R=v^pN1a9QukmaRJ&vw)Hu3+-sY*Ig$ SX$lk2wG5uFelF{r5}E*d&1Q1| literal 0 HcmV?d00001 diff --git a/src/qt/res/icons/checkbox_tick.png b/src/qt/res/icons/checkbox_tick.png new file mode 100644 index 0000000000000000000000000000000000000000..cf704d4d849c15a0eb24e00e2470c97f221742ad GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`3p`yMLo9le6C^k`#CSz+Yiw-n z)H!>4$&;Gto~QrEsOj4Gr#MgZIQ`SX^nbjX?*ICkQ~u<9GIjn?=Vc;4PkYfh?vK;A zIQ=ooZ1wIw@>KNX6`lX=S|1s13N+1*o>t$w z>;q@uEKUihIcZ8fifbhM6^~>eOX7GrD-o!8(~TNdR=!OpleriIch3!M=Uo#IbSs0W LtDnm{r-UW|!7Ee! literal 0 HcmV?d00001 diff --git a/src/qt/res/icons/radiobutton_tick.png b/src/qt/res/icons/radiobutton_tick.png new file mode 100644 index 0000000000000000000000000000000000000000..012c0972650c5d7293f8bf6c58069f9de4023a44 GIT binary patch literal 396 zcmV;70dxL|P)9I&;LqQ}1`>faC_#hv5Ct`J12uHo#AURMR$%Lh1f>;J&_KZ?%1KBe z34epGWTF|^9liI?dH3CW?s+U3nOTSRVtETCds;R{O16ML% zz_{lVoMLm1HW}owfhXL)57*w3087zxVVcw55_O_ob&5M=b<{?R? zOZgzlWYh7Sd!hEC7zK9#Nww2~PRzN_uO+3yxrsXx2!}Od&aZQlq=7Zj7`t*(v=&xl qy~s$dnSbH0R<3s2!=*mczs4t#w_0PuoY2Dn0000