From 75fe3e661429d18591139cabff8372347c7dbb73 Mon Sep 17 00:00:00 2001 From: tobtoht Date: Tue, 6 Jul 2021 16:10:24 +0200 Subject: [PATCH] Tools: add address checker --- src/MainWindow.cpp | 23 +++++++++++++++++++++++ src/MainWindow.h | 1 + src/MainWindow.ui | 8 +++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index c552aa72..dd08be1f 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -5,6 +5,7 @@ #include "ui_MainWindow.h" #include +#include #include #include "config-feather.h" @@ -305,6 +306,7 @@ void MainWindow::initMenu() { connect(ui->actionLoadSignedTxFromText, &QAction::triggered, this, &MainWindow::loadSignedTxFromText); connect(ui->actionImport_transaction, &QAction::triggered, this, &MainWindow::importTransaction); connect(ui->actionPay_to_many, &QAction::triggered, this, &MainWindow::payToMany); + connect(ui->actionAddress_checker, &QAction::triggered, this, &MainWindow::showAddressChecker); connect(ui->actionCalculator, &QAction::triggered, this, &MainWindow::showCalcWindow); connect(ui->actionCreateDesktopEntry, &QAction::triggered, this, &MainWindow::onCreateDesktopEntry); @@ -967,6 +969,27 @@ void MainWindow::showAccountSwitcherDialog() { dialog.exec(); } +void MainWindow::showAddressChecker() { + QString address = QInputDialog::getText(this, "Address Checker", "Address: "); + if (address.isEmpty()) { + return; + } + + if (!WalletManager::addressValid(address, constants::networkType)) { + QMessageBox::warning(this, "Address Checker", "Invalid address."); + return; + } + + SubaddressIndex index = m_ctx->wallet->subaddressIndex(address); + if (!index.isValid()) { + // TODO: probably mention lookahead here + QMessageBox::warning(this, "Address Checker", "This address does not belong to this wallet."); + return; + } else { + QMessageBox::information(this, "Address Checker", QString("This address belongs to Account #%1").arg(index.major)); + } +} + void MainWindow::showNodeExhaustedMessage() { // Spawning dialogs inside a lambda can cause system freezes on linux so we have to do it this way ¯\_(ツ)_/¯ diff --git a/src/MainWindow.h b/src/MainWindow.h index 212b62df..41272f89 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -155,6 +155,7 @@ private slots: void showViewOnlyDialog(); void showWalletCacheDebugDialog(); void showAccountSwitcherDialog(); + void showAddressChecker(); void donateButtonClicked(); void showCalcWindow(); diff --git a/src/MainWindow.ui b/src/MainWindow.ui index 4386c2e4..6b886813 100644 --- a/src/MainWindow.ui +++ b/src/MainWindow.ui @@ -352,7 +352,7 @@ 0 0 977 - 28 + 27 @@ -455,6 +455,7 @@ + @@ -797,6 +798,11 @@ Show Searchbar + + + Address checker + +