From 4bd43bf030e4100967020c59a130ba837b7e12a2 Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Fri, 26 Oct 2018 09:54:31 -0700 Subject: [PATCH] Support to view memos --- .gitignore | 1 + src/mainwindow.cpp | 7 +++++++ src/rpc.cpp | 23 ++++++++++++++++++----- src/rpc.h | 1 + src/senttxstore.cpp | 2 +- src/txtablemodel.cpp | 4 ++++ src/txtablemodel.h | 1 + 7 files changed, 33 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index dcaf0f6..2747031 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ src/precompiled.h.cpp .qmake.stash zec-qt-wallet zec-qt-wallet.vcxproj* +zec-qt-wallet.pro.user Makefile Makefile.* qrc_application.cpp diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 2606f6d..68a95b7 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -268,7 +268,9 @@ void MainWindow::setupTransactionsTab() { QMenu menu(this); auto txModel = dynamic_cast(ui->transactionsTable->model()); + QString txid = txModel->getTxId(index.row()); + QString memo = txModel->getMemo(index.row()); menu.addAction("Copy txid", [=] () { QGuiApplication::clipboard()->setText(txid); @@ -283,6 +285,11 @@ void MainWindow::setupTransactionsTab() { } QDesktopServices::openUrl(QUrl(url)); }); + if (!memo.isEmpty()) { + menu.addAction("View Memo", [=] () { + QMessageBox::information(this, "Memo", memo, QMessageBox::Ok); + }); + } menu.exec(ui->transactionsTable->viewport()->mapToGlobal(pos)); }); diff --git a/src/rpc.cpp b/src/rpc.cpp index 5dce998..ceb60b0 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -364,11 +364,23 @@ void RPC::refreshReceivedZTrans(QList zaddrs) { // Process all txids, removing duplicates. This can happen if the same address // appears multiple times in a single tx's outputs. QSet txids; + QMap memos; for (auto it = zaddrTxids->constBegin(); it != zaddrTxids->constEnd(); it++) { for (auto& i : it.value().get()) { // Filter out change txs - if (! i["change"].get()) - txids.insert(QString::fromStdString(i["txid"].get())); + if (! i["change"].get()) { + auto txid = QString::fromStdString(i["txid"].get()); + txids.insert(txid); + + // Check for Memos + QString memoBytes = QString::fromStdString(i["memo"].get()); + if (!memoBytes.startsWith("f600")) { + QString memo(QByteArray::fromHex( + QByteArray::fromStdString(i["memo"].get()))); + if (!memo.trimmed().isEmpty()) + memos[txid] = memo; + } + } } } @@ -408,9 +420,10 @@ void RPC::refreshReceivedZTrans(QList zaddrs) { } auto amount = i["amount"].get(); - auto confirmations = txidInfo["confirmations"].get(); + auto confirmations = txidInfo["confirmations"].get(); - TransactionItem tx{ QString("receive"), timestamp, zaddr, txid, amount, confirmations, "" }; + TransactionItem tx{ QString("receive"), timestamp, zaddr, txid, amount, + confirmations, "", memos.value(txid, "") }; txdata.push_front(tx); } } @@ -602,7 +615,7 @@ void RPC::refreshTransactions() { QString::fromStdString(it["txid"]), it["amount"].get() + fee, it["confirmations"].get(), - "" + "", "" }; txdata.push_back(tx); diff --git a/src/rpc.h b/src/rpc.h index bdb903b..a174ca3 100644 --- a/src/rpc.h +++ b/src/rpc.h @@ -20,6 +20,7 @@ struct TransactionItem { double amount; unsigned long confirmations; QString fromAddr; + QString memo; }; class RPC diff --git a/src/senttxstore.cpp b/src/senttxstore.cpp index 256ced4..656fe05 100644 --- a/src/senttxstore.cpp +++ b/src/senttxstore.cpp @@ -42,7 +42,7 @@ QList SentTxStore::readSentTxFile() { sentTx["address"].toString(), sentTx["txid"].toString(), sentTx["amount"].toDouble() + sentTx["fee"].toDouble(), - 0, sentTx["from"].toString()}; + 0, sentTx["from"].toString(), ""}; items.push_back(t); } diff --git a/src/txtablemodel.cpp b/src/txtablemodel.cpp index 7a9eb97..f86c860 100644 --- a/src/txtablemodel.cpp +++ b/src/txtablemodel.cpp @@ -131,4 +131,8 @@ void TxTableModel::updateAllData() { QString TxTableModel::getTxId(int row) { return modeldata->at(row).txid; +} + +QString TxTableModel::getMemo(int row) { + return modeldata->at(row).memo; } \ No newline at end of file diff --git a/src/txtablemodel.h b/src/txtablemodel.h index b03e7a2..27de88f 100644 --- a/src/txtablemodel.h +++ b/src/txtablemodel.h @@ -16,6 +16,7 @@ public: void addZRecvData(const QList& data); QString getTxId(int row); + QString getMemo(int row); int rowCount(const QModelIndex &parent) const; int columnCount(const QModelIndex &parent) const;