diff --git a/src/qt/addressbookpage.cpp b/src/qt/addressbookpage.cpp index 0cf52891449b0..b60b0a916d4e8 100644 --- a/src/qt/addressbookpage.cpp +++ b/src/qt/addressbookpage.cpp @@ -15,7 +15,9 @@ #include "csvmodelwriter.h" #include "editaddressdialog.h" #include "guiutil.h" +#include "optionsmodel.h" #include "platformstyle.h" +#include "qrdialog.h" #include #include @@ -42,6 +44,7 @@ AddressBookPage::AddressBookPage(const PlatformStyle *platformStyle, Mode _mode, ui->deleteAddress->setIcon(QIcon(":/icons/" + theme + "/remove")); ui->exportButton->setIcon(QIcon(":/icons/" + theme + "/export")); } + ui->showAddressQRCode->setIcon(QIcon()); switch(mode) { @@ -81,6 +84,7 @@ AddressBookPage::AddressBookPage(const PlatformStyle *platformStyle, Mode _mode, QAction *copyAddressAction = new QAction(tr("&Copy Address"), this); QAction *copyLabelAction = new QAction(tr("Copy &Label"), this); QAction *editAction = new QAction(tr("&Edit"), this); + QAction *showAddressQRCodeAction = new QAction(tr("&Show address QR code"), this); deleteAction = new QAction(ui->deleteAddress->text(), this); // Build context menu @@ -91,12 +95,14 @@ AddressBookPage::AddressBookPage(const PlatformStyle *platformStyle, Mode _mode, if(tab == SendingTab) contextMenu->addAction(deleteAction); contextMenu->addSeparator(); + contextMenu->addAction(showAddressQRCodeAction); // Connect signals for context menu actions connect(copyAddressAction, SIGNAL(triggered()), this, SLOT(on_copyAddress_clicked())); connect(copyLabelAction, SIGNAL(triggered()), this, SLOT(onCopyLabelAction())); connect(editAction, SIGNAL(triggered()), this, SLOT(onEditAction())); connect(deleteAction, SIGNAL(triggered()), this, SLOT(on_deleteAddress_clicked())); + connect(showAddressQRCodeAction, SIGNAL(triggered()), this, SLOT(on_showAddressQRCode_clicked())); connect(ui->tableView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextualMenu(QPoint))); @@ -213,6 +219,23 @@ void AddressBookPage::on_deleteAddress_clicked() } } +void AddressBookPage::on_showAddressQRCode_clicked() +{ + QList entries = GUIUtil::getEntryData(ui->tableView, AddressTableModel::Address); + if (entries.empty()) { + return; + } + + QString strAddress = entries.at(0).data(Qt::EditRole).toString(); + QRDialog* dialog = new QRDialog(this); + OptionsModel *model = new OptionsModel(NULL, false); + + dialog->setModel(model); + dialog->setAttribute(Qt::WA_DeleteOnClose); + dialog->setInfo(tr("QR code"), "dash:"+strAddress, "", strAddress); + dialog->show(); +} + void AddressBookPage::selectionChanged() { // Set button states based on selected tab and selection @@ -238,11 +261,13 @@ void AddressBookPage::selectionChanged() break; } ui->copyAddress->setEnabled(true); + ui->showAddressQRCode->setEnabled(true); } else { ui->deleteAddress->setEnabled(false); ui->copyAddress->setEnabled(false); + ui->showAddressQRCode->setEnabled(false); } } diff --git a/src/qt/addressbookpage.h b/src/qt/addressbookpage.h index c22566d473729..55e8101a412ca 100644 --- a/src/qt/addressbookpage.h +++ b/src/qt/addressbookpage.h @@ -71,6 +71,8 @@ private Q_SLOTS: void onCopyLabelAction(); /** Edit currently selected address entry (no button) */ void onEditAction(); + /** Show QR code for the currently selected address */ + void on_showAddressQRCode_clicked(); /** Export button clicked */ void on_exportButton_clicked(); diff --git a/src/qt/forms/addressbookpage.ui b/src/qt/forms/addressbookpage.ui index 56aa5da9d0ba3..fa5c0234024b2 100644 --- a/src/qt/forms/addressbookpage.ui +++ b/src/qt/forms/addressbookpage.ui @@ -77,6 +77,19 @@ + + + + Show QR code for the currently selected address + + + &Show QR code + + + false + + + diff --git a/src/qt/masternodelist.cpp b/src/qt/masternodelist.cpp index 8810802726756..b1f04036e66b7 100644 --- a/src/qt/masternodelist.cpp +++ b/src/qt/masternodelist.cpp @@ -8,7 +8,6 @@ #include "init.h" #include "masternode-sync.h" #include "netbase.h" -#include "qrdialog.h" #include "sync.h" #include "wallet/wallet.h" #include "walletmodel.h" diff --git a/src/qt/qrdialog.cpp b/src/qt/qrdialog.cpp index 9764a1b39f699..b3dee7b0402f4 100644 --- a/src/qt/qrdialog.cpp +++ b/src/qt/qrdialog.cpp @@ -136,6 +136,10 @@ void QRDialog::update() setWindowTitle(strWindowtitle); ui->button_saveImage->setEnabled(false); + if (strTextInfo.isEmpty()) { + ui->outUri->setVisible(false); + adjustSize(); + } ui->outUri->setText(strTextInfo); #ifdef USE_QRCODE diff --git a/src/qt/res/css/crownium.css b/src/qt/res/css/crownium.css index ea0fb2ac09f5d..e05fd4d24e9a0 100644 --- a/src/qt/res/css/crownium.css +++ b/src/qt/res/css/crownium.css @@ -606,6 +606,23 @@ QWidget#AddressBookPage QPushButton#copyAddress:pressed { border:1px solid #9e9e9e; } +QWidget#AddressBookPage QPushButton#showAddressQRCode { /* Show Address QR code Button */ +background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(250, 250, 250, 128), stop: .95 rgba(250, 250, 250, 255), stop: 1 #ebebeb); +border:1px solid #d2d2d2; +color:#616161; +padding-left:10px; +padding-right:10px; +} + +QWidget#AddressBookPage QPushButton#showAddressQRCode:hover { +background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(240, 240, 240, 255), stop: .95 rgba(240, 240, 240, 255), stop: 1 #ebebeb); +color:#333; +} + +QWidget#AddressBookPage QPushButton#showAddressQRCode:pressed { +border:1px solid #9e9e9e; +} + QWidget#AddressBookPage QPushButton#deleteAddress { /* Delete Address Button */ background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(250, 250, 250, 128), stop: .95 rgba(250, 250, 250, 255), stop: 1 #ebebeb); border:1px solid #d2d2d2; diff --git a/src/qt/res/css/drkblue.css b/src/qt/res/css/drkblue.css index b0748206e022c..7df96e7160b48 100644 --- a/src/qt/res/css/drkblue.css +++ b/src/qt/res/css/drkblue.css @@ -601,6 +601,23 @@ QWidget#AddressBookPage QPushButton#copyAddress:pressed { border:1px solid #9e9e9e; } +QWidget#AddressBookPage QPushButton#showAddressQRCode { /* Show Address QR code Button */ +background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(250, 250, 250, 128), stop: .95 rgba(250, 250, 250, 255), stop: 1 #ebebeb); +border:1px solid #d2d2d2; +color:#616161; +padding-left:10px; +padding-right:10px; +} + +QWidget#AddressBookPage QPushButton#showAddressQRCode:hover { +background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(240, 240, 240, 255), stop: .95 rgba(240, 240, 240, 255), stop: 1 #ebebeb); +color:#333; +} + +QWidget#AddressBookPage QPushButton#showAddressQRCode:pressed { +border:1px solid #9e9e9e; +} + QWidget#AddressBookPage QPushButton#deleteAddress { /* Delete Address Button */ background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(250, 250, 250, 128), stop: .95 rgba(250, 250, 250, 255), stop: 1 #ebebeb); border:1px solid #d2d2d2; diff --git a/src/qt/res/css/light-hires-retro.css b/src/qt/res/css/light-hires-retro.css index ec7ccd6b405f5..7e3925bd87229 100644 --- a/src/qt/res/css/light-hires-retro.css +++ b/src/qt/res/css/light-hires-retro.css @@ -604,6 +604,23 @@ QWidget#AddressBookPage QPushButton#copyAddress:pressed { border:1px solid #9e9e9e; } +QWidget#AddressBookPage QPushButton#showAddressQRCode { /* Show Address QR code Button */ +background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(250, 250, 250, 128), stop: .95 rgba(250, 250, 250, 255), stop: 1 #ebebeb); +border:1px solid #d2d2d2; +color:#616161; +padding-left:10px; +padding-right:10px; +} + +QWidget#AddressBookPage QPushButton#showAddressQRCode:hover { +background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(240, 240, 240, 255), stop: .95 rgba(240, 240, 240, 255), stop: 1 #ebebeb); +color:#333; +} + +QWidget#AddressBookPage QPushButton#showAddressQRCode:pressed { +border:1px solid #9e9e9e; +} + QWidget#AddressBookPage QPushButton#deleteAddress { /* Delete Address Button */ background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(250, 250, 250, 128), stop: .95 rgba(250, 250, 250, 255), stop: 1 #ebebeb); border:1px solid #d2d2d2; diff --git a/src/qt/res/css/light-hires.css b/src/qt/res/css/light-hires.css index 50389c6d9da72..c049e3957e2eb 100644 --- a/src/qt/res/css/light-hires.css +++ b/src/qt/res/css/light-hires.css @@ -604,6 +604,23 @@ QWidget#AddressBookPage QPushButton#copyAddress:pressed { border:1px solid #9e9e9e; } +QWidget#AddressBookPage QPushButton#showAddressQRCode { /* Show Address QR code Button */ +background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(250, 250, 250, 128), stop: .95 rgba(250, 250, 250, 255), stop: 1 #ebebeb); +border:1px solid #d2d2d2; +color:#616161; +padding-left:10px; +padding-right:10px; +} + +QWidget#AddressBookPage QPushButton#showAddressQRCode:hover { +background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(240, 240, 240, 255), stop: .95 rgba(240, 240, 240, 255), stop: 1 #ebebeb); +color:#333; +} + +QWidget#AddressBookPage QPushButton#showAddressQRCode:pressed { +border:1px solid #9e9e9e; +} + QWidget#AddressBookPage QPushButton#deleteAddress { /* Delete Address Button */ background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(250, 250, 250, 128), stop: .95 rgba(250, 250, 250, 255), stop: 1 #ebebeb); border:1px solid #d2d2d2; diff --git a/src/qt/res/css/light-retro.css b/src/qt/res/css/light-retro.css index 784a3818a13ab..b3b9769aa902b 100644 --- a/src/qt/res/css/light-retro.css +++ b/src/qt/res/css/light-retro.css @@ -604,6 +604,23 @@ QWidget#AddressBookPage QPushButton#copyAddress:pressed { border:1px solid #9e9e9e; } +QWidget#AddressBookPage QPushButton#showAddressQRCode { /* Show Address QR code Button */ +background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(250, 250, 250, 128), stop: .95 rgba(250, 250, 250, 255), stop: 1 #ebebeb); +border:1px solid #d2d2d2; +color:#616161; +padding-left:10px; +padding-right:10px; +} + +QWidget#AddressBookPage QPushButton#showAddressQRCode:hover { +background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(240, 240, 240, 255), stop: .95 rgba(240, 240, 240, 255), stop: 1 #ebebeb); +color:#333; +} + +QWidget#AddressBookPage QPushButton#showAddressQRCode:pressed { +border:1px solid #9e9e9e; +} + QWidget#AddressBookPage QPushButton#deleteAddress { /* Delete Address Button */ background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(250, 250, 250, 128), stop: .95 rgba(250, 250, 250, 255), stop: 1 #ebebeb); border:1px solid #d2d2d2; diff --git a/src/qt/res/css/light.css b/src/qt/res/css/light.css index 52a31ae9da9c6..2b92b8fd0cf30 100644 --- a/src/qt/res/css/light.css +++ b/src/qt/res/css/light.css @@ -604,6 +604,23 @@ QWidget#AddressBookPage QPushButton#copyAddress:pressed { border:1px solid #9e9e9e; } +QWidget#AddressBookPage QPushButton#showAddressQRCode { /* Show Address QR code Button */ +background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(250, 250, 250, 128), stop: .95 rgba(250, 250, 250, 255), stop: 1 #ebebeb); +border:1px solid #d2d2d2; +color:#616161; +padding-left:10px; +padding-right:10px; +} + +QWidget#AddressBookPage QPushButton#showAddressQRCode:hover { +background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(240, 240, 240, 255), stop: .95 rgba(240, 240, 240, 255), stop: 1 #ebebeb); +color:#333; +} + +QWidget#AddressBookPage QPushButton#showAddressQRCode:pressed { +border:1px solid #9e9e9e; +} + QWidget#AddressBookPage QPushButton#deleteAddress { /* Delete Address Button */ background-color:qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: .01 #f6f6f6, stop: .1 rgba(250, 250, 250, 128), stop: .95 rgba(250, 250, 250, 255), stop: 1 #ebebeb); border:1px solid #d2d2d2; diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index ce8d2f36c3c3c..2b5814cd4d8f7 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -11,6 +11,7 @@ #include "guiutil.h" #include "optionsmodel.h" #include "platformstyle.h" +#include "qrdialog.h" #include "transactiondescdialog.h" #include "transactionfilterproxy.h" #include "transactionrecord.h" @@ -167,6 +168,7 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa QAction *copyTxPlainText = new QAction(tr("Copy full transaction details"), this); QAction *editLabelAction = new QAction(tr("Edit label"), this); QAction *showDetailsAction = new QAction(tr("Show transaction details"), this); + QAction *showAddressQRCodeAction = new QAction(tr("Show address QR code"), this); contextMenu = new QMenu(this); contextMenu->addAction(copyAddressAction); @@ -176,6 +178,7 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa contextMenu->addAction(copyTxHexAction); contextMenu->addAction(copyTxPlainText); contextMenu->addAction(showDetailsAction); + contextMenu->addAction(showAddressQRCodeAction); contextMenu->addSeparator(); contextMenu->addAction(abandonAction); contextMenu->addAction(editLabelAction); @@ -205,6 +208,7 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa connect(copyTxPlainText, SIGNAL(triggered()), this, SLOT(copyTxPlainText())); connect(editLabelAction, SIGNAL(triggered()), this, SLOT(editLabel())); connect(showDetailsAction, SIGNAL(triggered()), this, SLOT(showDetails())); + connect(showAddressQRCodeAction, SIGNAL(triggered()), this, SLOT(showAddressQRCode())); } void TransactionView::setModel(WalletModel *_model) @@ -542,6 +546,23 @@ void TransactionView::showDetails() } } +void TransactionView::showAddressQRCode() +{ + QList entries = GUIUtil::getEntryData(transactionView, 0); + if (entries.empty()) { + return; + } + + QString strAddress = entries.at(0).data(TransactionTableModel::AddressRole).toString(); + QRDialog* dialog = new QRDialog(this); + OptionsModel *model = new OptionsModel(NULL, false); + + dialog->setModel(model); + dialog->setAttribute(Qt::WA_DeleteOnClose); + dialog->setInfo(tr("QR code"), "dash:"+strAddress, "", strAddress); + dialog->show(); +} + /** Compute sum of all selected transactions */ void TransactionView::computeSum() { diff --git a/src/qt/transactionview.h b/src/qt/transactionview.h index 7b62e8f31eae4..334d2052bc712 100644 --- a/src/qt/transactionview.h +++ b/src/qt/transactionview.h @@ -91,6 +91,7 @@ private Q_SLOTS: void contextualMenu(const QPoint &); void dateRangeChanged(); void showDetails(); + void showAddressQRCode(); void copyAddress(); void editLabel(); void copyLabel();