From ae5ff35cc3a81db4952b0a574a1ea1a47481eb03 Mon Sep 17 00:00:00 2001 From: tobtoht Date: Sat, 10 Jul 2021 17:33:58 +0200 Subject: [PATCH 1/7] Qr scanner: close dialog on no available cameras --- src/qrcode_scanner/QrCodeScanDialog.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/qrcode_scanner/QrCodeScanDialog.cpp b/src/qrcode_scanner/QrCodeScanDialog.cpp index 2980f5c2..37d289c2 100644 --- a/src/qrcode_scanner/QrCodeScanDialog.cpp +++ b/src/qrcode_scanner/QrCodeScanDialog.cpp @@ -22,6 +22,7 @@ QrCodeScanDialog::QrCodeScanDialog(QWidget *parent) if (m_cameras.count() < 1) { QMessageBox::warning(parent, "QR code scanner", "No available cameras found."); this->close(); + return; } for (const auto &camera : m_cameras) { From 2b2107b32dd8965baef6e60f34b386def1f41c1b Mon Sep 17 00:00:00 2001 From: tobtoht Date: Sat, 10 Jul 2021 17:36:30 +0200 Subject: [PATCH 2/7] Qr scanner: use camera description on Windows --- src/qrcode_scanner/QrCodeScanDialog.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/qrcode_scanner/QrCodeScanDialog.cpp b/src/qrcode_scanner/QrCodeScanDialog.cpp index 37d289c2..1dd78b31 100644 --- a/src/qrcode_scanner/QrCodeScanDialog.cpp +++ b/src/qrcode_scanner/QrCodeScanDialog.cpp @@ -26,7 +26,11 @@ QrCodeScanDialog::QrCodeScanDialog(QWidget *parent) } for (const auto &camera : m_cameras) { +#ifdef Q_OS_WIN + ui->combo_camera->addItem(camera.description()); +#else ui->combo_camera->addItem(camera.deviceName()); +#endif } connect(ui->combo_camera, QOverload::of(&QComboBox::currentIndexChanged), this, &QrCodeScanDialog::onCameraSwitched); From e2a591baedab6d31262c95b5755c4f85adb4d160 Mon Sep 17 00:00:00 2001 From: tobtoht Date: Fri, 4 Jun 2021 20:48:44 +0200 Subject: [PATCH 3/7] Enter password to open seed, keys dialog --- src/MainWindow.cpp | 24 ++++++++++++++++++++++++ src/MainWindow.h | 1 + 2 files changed, 25 insertions(+) diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 8e6fd3f0..c6121649 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -701,6 +701,10 @@ void MainWindow::showSeedDialog() { return; } + if (!this->verifyPassword()) { + return; + } + SeedDialog dialog{m_ctx, this}; dialog.exec(); } @@ -772,6 +776,10 @@ void MainWindow::showRestoreHeightDialog() { } void MainWindow::showKeysDialog() { + if (!this->verifyPassword()) { + return; + } + KeysDialog dialog{m_ctx, this}; dialog.exec(); } @@ -1557,6 +1565,22 @@ void MainWindow::updateRecentlyOpenedMenu() { ui->menuRecently_open->addAction(m_clearRecentlyOpenAction); } +bool MainWindow::verifyPassword() { + bool ok; + while (true) { + QString password = QInputDialog::getText(this, "Enter password", "Please enter your password:", QLineEdit::EchoMode::Password, "", &ok); + if (!ok) { // Dialog cancelled + return false; + } + if (password != m_ctx->wallet->getPassword()) { + QMessageBox::warning(this, "Error", "Incorrect password"); + continue; + } + break; + } + return true; +} + void MainWindow::toggleSearchbar(bool visible) { config()->set(Config::showSearchbar, visible); diff --git a/src/MainWindow.h b/src/MainWindow.h index b83f0a16..6def9ddd 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -212,6 +212,7 @@ private: void addToRecentlyOpened(const QString &filename); void updateRecentlyOpenedMenu(); void updateWidgetIcons(); + bool verifyPassword(); QIcon hardwareDevicePairedIcon(); QIcon hardwareDeviceUnpairedIcon(); From e8057fc35d6039fd586a3307e0aed9b772e3ca8a Mon Sep 17 00:00:00 2001 From: tobtoht Date: Fri, 4 Jun 2021 20:32:18 +0200 Subject: [PATCH 4/7] contacts: double click to pay to --- src/ContactsWidget.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/ContactsWidget.cpp b/src/ContactsWidget.cpp index a4616e07..b535e3c6 100644 --- a/src/ContactsWidget.cpp +++ b/src/ContactsWidget.cpp @@ -36,6 +36,12 @@ ContactsWidget::ContactsWidget(QSharedPointer ctx, QWidget *parent) connect(ui->contacts->header(), &QHeaderView::customContextMenuRequested, this, &ContactsWidget::showHeaderMenu); + connect(ui->contacts, &QTreeView::doubleClicked, [this](QModelIndex index){ + if (!(m_model->flags(index) & Qt::ItemIsEditable)) { + this->payTo(); + } + }); + // context menu ui->contacts->setContextMenuPolicy(Qt::CustomContextMenu); m_contextMenu = new QMenu(ui->contacts); @@ -45,8 +51,7 @@ ContactsWidget::ContactsWidget(QSharedPointer ctx, QWidget *parent) // row context menu m_rowMenu = new QMenu(ui->contacts); - m_rowMenu->addAction(icons()->icon("copy.png"), "Copy address", this, &ContactsWidget::copyAddress); - m_rowMenu->addAction(icons()->icon("copy.png"), "Copy name", this, &ContactsWidget::copyName); + m_rowMenu->addAction("Copy address", this, &ContactsWidget::copyAddress); m_rowMenu->addAction("Pay to", this, &ContactsWidget::payTo); m_rowMenu->addAction("Delete", this, &ContactsWidget::deleteContact); From 233698914789c25c4af670607b07ed850803545c Mon Sep 17 00:00:00 2001 From: tobtoht Date: Fri, 4 Jun 2021 19:48:55 +0200 Subject: [PATCH 5/7] Contacts: switch Name and Address Suggested by /u/stephen_gordon9 on Reddit https://old.reddit.com/r/Monero/comments/nmapig/_/gzssmlo/ --- src/ContactsWidget.cpp | 4 ++-- src/model/AddressBookModel.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ContactsWidget.cpp b/src/ContactsWidget.cpp index b535e3c6..c43a4b62 100644 --- a/src/ContactsWidget.cpp +++ b/src/ContactsWidget.cpp @@ -24,8 +24,8 @@ ContactsWidget::ContactsWidget(QSharedPointer ctx, QWidget *parent) ui->contacts->setModel(m_proxyModel); ui->contacts->setSortingEnabled(true); - ui->contacts->header()->setSectionResizeMode(AddressBookModel::Address, QHeaderView::Stretch); - ui->contacts->header()->setSectionResizeMode(AddressBookModel::Description, QHeaderView::ResizeToContents); + ui->contacts->header()->setSectionResizeMode(AddressBookModel::Address, QHeaderView::ResizeToContents); + ui->contacts->header()->setSectionResizeMode(AddressBookModel::Description, QHeaderView::Stretch); ui->contacts->header()->setMinimumSectionSize(200); // header context menu diff --git a/src/model/AddressBookModel.h b/src/model/AddressBookModel.h index 7157c6d1..0257bcbe 100644 --- a/src/model/AddressBookModel.h +++ b/src/model/AddressBookModel.h @@ -16,8 +16,8 @@ class AddressBookModel : public QAbstractTableModel public: enum ModelColumn { - Address = 0, - Description, + Description = 0, + Address, COUNT }; From 12d1c2e3a6f25096e0157ca0ea2757517bd33e11 Mon Sep 17 00:00:00 2001 From: tobtoht Date: Fri, 4 Jun 2021 19:48:04 +0200 Subject: [PATCH 6/7] Nodes: add MoneroOutreach node --- src/assets/nodes.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/assets/nodes.json b/src/assets/nodes.json index 2ca37fc9..181fda8a 100644 --- a/src/assets/nodes.json +++ b/src/assets/nodes.json @@ -14,6 +14,7 @@ "node-1.sethsimmons.me:18089", "selsta1.featherwallet.net:18081", "selsta2.featherwallet.net:18081", + "node.monerooutreach.org:18081", "xmr-node-eu.cakewallet.com:18081", "xmr-node-usa-east.cakewallet.com:18081", "canada.node.xmr.pm:18089", From 85363625d3487c8b2a34384cf890f7227b8e6ba9 Mon Sep 17 00:00:00 2001 From: tobtoht Date: Sat, 10 Jul 2021 22:05:04 +0200 Subject: [PATCH 7/7] TxInfoDialog: disable inputs for now --- src/dialog/TxInfoDialog.cpp | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/dialog/TxInfoDialog.cpp b/src/dialog/TxInfoDialog.cpp index d873530d..69576e74 100644 --- a/src/dialog/TxInfoDialog.cpp +++ b/src/dialog/TxInfoDialog.cpp @@ -43,21 +43,21 @@ TxInfoDialog::TxInfoDialog(QSharedPointer ctx, TransactionInfo *txIn } else { ui->btn_rebroadcastTx->hide(); } - - if (txInfo->direction() == TransactionInfo::Direction_Out) { - // TODO: this will not properly represent coinjoin-like transactions. - QVector coins = m_ctx->wallet->coins()->coins_from_txid(m_txid); - QTextCursor c_i = ui->inputs->textCursor(); - QString inputs_str; - for (const auto &coin : coins) { - inputs_str += QString("%1 %2\n").arg(coin->pubKey(), coin->displayAmount()); - } - ui->inputs->setText(inputs_str); - ui->label_inputs->setText(QString("Inputs (%1)").arg(QString::number(coins.size()))); - this->adjustHeight(ui->inputs, coins.size()); - } else { - ui->frameInputs->hide(); - } +// +// if (txInfo->direction() == TransactionInfo::Direction_Out) { +// // TODO: this will not properly represent coinjoin-like transactions. +// QVector coins = m_ctx->wallet->coins()->coins_from_txid(m_txid); +// QTextCursor c_i = ui->inputs->textCursor(); +// QString inputs_str; +// for (const auto &coin : coins) { +// inputs_str += QString("%1 %2\n").arg(coin->pubKey(), coin->displayAmount()); +// } +// ui->inputs->setText(inputs_str); +// ui->label_inputs->setText(QString("Inputs (%1)").arg(QString::number(coins.size()))); +// this->adjustHeight(ui->inputs, coins.size()); +// } else { + ui->frameInputs->hide(); +// } QTextCursor cursor = ui->outputs->textCursor();