diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 4e5841c..8bc39aa 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -5,9 +5,10 @@ #include "rpc.h" #include "balancestablemodel.h" #include "settings.h" +#include "utils.h" #include "precompiled.h" -#include "ui_about.h" + using json = nlohmann::json; @@ -28,6 +29,20 @@ MainWindow::MainWindow(QWidget *parent) : ui->statusBar->addPermanentWidget(loadingLabel); loadingLabel->setVisible(false); + ui->statusBar->setContextMenuPolicy(Qt::CustomContextMenu); + QObject::connect(ui->statusBar, &QStatusBar::customContextMenuRequested, [=](QPoint pos) { + auto msg = ui->statusBar->currentMessage(); + if (!msg.isEmpty() && msg.startsWith(Utils::txidStatusMessage)) { + QMenu menu(this); + menu.addAction("Copy txid", [=]() { + QGuiApplication::clipboard()->setText(msg.split(":")[1].trimmed()); + }); + QPoint gpos(mapToGlobal(pos).x(), mapToGlobal(pos).y() + this->height() - ui->statusBar->height()); + menu.exec(gpos); + } + + }); + statusLabel = new QLabel(); ui->statusBar->addPermanentWidget(statusLabel); @@ -316,7 +331,6 @@ MainWindow::~MainWindow() { delete ui; delete rpc; - delete settings; delete loadingMovie; } diff --git a/src/mainwindow.ui b/src/mainwindow.ui index 03ee812..c08eb82 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -273,8 +273,8 @@ 0 0 - 823 - 226 + 825 + 284 @@ -637,7 +637,7 @@ 0 0 889 - 22 + 21 @@ -645,7 +645,6 @@ File - @@ -685,6 +684,9 @@ Import Private Keys + + false + diff --git a/src/rpc.cpp b/src/rpc.cpp index b4d58df..8871e5d 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -1,4 +1,5 @@ #include "rpc.h" +#include "utils.h" #include "transactionitem.h" #include "settings.h" @@ -443,9 +444,8 @@ void RPC::refreshTxStatus(const QString& newOpid) { QString status = QString::fromStdString(it["status"]); if (status == "success") { auto txid = QString::fromStdString(it["result"]["txid"]); - qDebug() << "Tx complete. txid " << txid; - QGuiApplication::clipboard()->setText(txid); - main->ui->statusBar->showMessage("Tx completed! Txid copied to clipboard (" + txid + ")"); + qDebug() << "Tx completed: " << txid; + main->ui->statusBar->showMessage(Utils::txidStatusMessage + " " + txid); main->loadingLabel->setVisible(false); watchingOps.remove(id); diff --git a/src/scripts/mkwinrelease.ps1 b/src/scripts/mkwinrelease.ps1 index c045c11..3388161 100644 --- a/src/scripts/mkwinrelease.ps1 +++ b/src/scripts/mkwinrelease.ps1 @@ -26,4 +26,12 @@ Copy-Item README.md release/$target | Out-Null echo "Zipping" Compress-Archive -LiteralPath release/$target -DestinationPath "release/Windows-$target.zip" +echo "Package Contents" +[Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem') +foreach($sourceFile in (Get-ChildItem "release/Windows-$target.zip")) +{ + [IO.Compression.ZipFile]::OpenRead($sourceFile.FullName).Entries.FullName | + %{ "$sourcefile`:$_" } +} + echo "Done" \ No newline at end of file diff --git a/src/ui_mainwindow.h b/src/ui_mainwindow.h index d1066f7..4989951 100644 --- a/src/ui_mainwindow.h +++ b/src/ui_mainwindow.h @@ -152,6 +152,7 @@ public: actionDonate->setObjectName(QStringLiteral("actionDonate")); actionImport_Private_Keys = new QAction(MainWindow); actionImport_Private_Keys->setObjectName(QStringLiteral("actionImport_Private_Keys")); + actionImport_Private_Keys->setVisible(false); centralWidget = new QWidget(MainWindow); centralWidget->setObjectName(QStringLiteral("centralWidget")); gridLayout_3 = new QGridLayout(centralWidget); @@ -348,7 +349,7 @@ public: sendToScrollArea->setWidgetResizable(true); sendToWidgets = new QWidget(); sendToWidgets->setObjectName(QStringLiteral("sendToWidgets")); - sendToWidgets->setGeometry(QRect(0, 0, 823, 226)); + sendToWidgets->setGeometry(QRect(0, 0, 825, 284)); sendToLayout = new QVBoxLayout(sendToWidgets); sendToLayout->setSpacing(6); sendToLayout->setContentsMargins(11, 11, 11, 11); @@ -604,7 +605,7 @@ public: MainWindow->setCentralWidget(centralWidget); menuBar = new QMenuBar(MainWindow); menuBar->setObjectName(QStringLiteral("menuBar")); - menuBar->setGeometry(QRect(0, 0, 889, 22)); + menuBar->setGeometry(QRect(0, 0, 889, 21)); menuBalance = new QMenu(menuBar); menuBalance->setObjectName(QStringLiteral("menuBalance")); menuHelp = new QMenu(menuBar); @@ -634,7 +635,6 @@ public: menuBar->addAction(menuBalance->menuAction()); menuBar->addAction(menuHelp->menuAction()); menuBalance->addAction(actionImport_Private_Keys); - menuBalance->addSeparator(); menuBalance->addAction(actionSettings); menuBalance->addSeparator(); menuBalance->addAction(actionExit); diff --git a/utils.cpp b/utils.cpp new file mode 100644 index 0000000..4021a08 --- /dev/null +++ b/utils.cpp @@ -0,0 +1,3 @@ +#include "utils.h" + +const QString Utils::txidStatusMessage = QString("Tx submitted (right click to copy) txid:"); \ No newline at end of file diff --git a/utils.h b/utils.h new file mode 100644 index 0000000..7fca4e7 --- /dev/null +++ b/utils.h @@ -0,0 +1,14 @@ +#ifndef UTILS_H +#define UTILS_H + +#include "precompiled.h" + +class Utils +{ +public: + static const QString txidStatusMessage; +private: + Utils() = delete; +}; + +#endif // UTILS_H \ No newline at end of file diff --git a/zcash-qt-wallet.pro b/zcash-qt-wallet.pro index 7b8d94f..61eaefd 100644 --- a/zcash-qt-wallet.pro +++ b/zcash-qt-wallet.pro @@ -49,7 +49,8 @@ SOURCES += \ src/settings.cpp \ src/sendtab.cpp \ src/txtablemodel.cpp \ - src/transactionitem.cpp + src/transactionitem.cpp \ + utils.cpp HEADERS += \ src/mainwindow.h \ @@ -63,7 +64,8 @@ HEADERS += \ src/3rdparty/json/json.hpp \ src/settings.h \ src/txtablemodel.h \ - src/transactionitem.h + src/transactionitem.h \ + utils.h FORMS += \ src/mainwindow.ui \