From 9dd6821178478e9d8b2dca9f92b913c016ff8b33 Mon Sep 17 00:00:00 2001 From: Aditya Kulkarni Date: Fri, 22 Mar 2019 12:44:40 -0700 Subject: [PATCH] Refactor MemoEdit --- src/memodialog.ui | 9 ++- src/memoedit.cpp | 44 +++++++++++++++ src/memoedit.h | 22 ++++++++ src/precompiled.h | 2 + src/requestdialog.cpp | 14 +++++ src/requestdialog.h | 22 ++++++++ src/requestdialog.ui | 124 ++++++++++++++++++++++++++++++++++++++++++ src/sendtab.cpp | 23 +------- src/settings.ui | 39 +++++++++++-- zec-qt-wallet.pro | 11 +++- 10 files changed, 282 insertions(+), 28 deletions(-) create mode 100644 src/memoedit.cpp create mode 100644 src/memoedit.h create mode 100644 src/requestdialog.cpp create mode 100644 src/requestdialog.h create mode 100644 src/requestdialog.ui diff --git a/src/memodialog.ui b/src/memodialog.ui index 0d7e704..1c144e0 100644 --- a/src/memodialog.ui +++ b/src/memodialog.ui @@ -35,7 +35,7 @@ - + @@ -70,6 +70,13 @@ + + + MemoEdit + QPlainTextEdit +
memoedit.h
+
+
diff --git a/src/memoedit.cpp b/src/memoedit.cpp new file mode 100644 index 0000000..f8a3565 --- /dev/null +++ b/src/memoedit.cpp @@ -0,0 +1,44 @@ +#include "memoedit.h" + +MemoEdit::MemoEdit(QWidget* parent) : QPlainTextEdit(parent) { + QObject::connect(this, &QPlainTextEdit::textChanged, [=]() { + QString txt = this->toPlainText(); + if (lenDisplayLabel) + lenDisplayLabel->setText(QString::number(txt.toUtf8().size()) + "/" + QString::number(maxlen)); + + if (txt.toUtf8().size() <= maxlen) { + // Everything is fine + acceptButton->setEnabled(true); + lenDisplayLabel->setStyleSheet(""); + } + else { + // Overweight + acceptButton->setEnabled(false); + lenDisplayLabel->setStyleSheet("color: red;"); + } + + }); +} + +void MemoEdit::setMaxLen(int len) { + this->maxlen = len; +} + +void MemoEdit::setLenDisplayLabel(QLabel* label) { + this->lenDisplayLabel = label; +} + +void MemoEdit::setAcceptButton(QPushButton* button) { + this->acceptButton = button; +} + +void MemoEdit::includeReplyTo(QString addr) { + if (addr.isEmpty()) + return; + + auto curText = this->toPlainText(); + if (curText.endsWith(addr)) + return; + + this->setPlainText(curText + "\n" + tr("Reply to") + ":\n" + addr); +} \ No newline at end of file diff --git a/src/memoedit.h b/src/memoedit.h new file mode 100644 index 0000000..1c6ba93 --- /dev/null +++ b/src/memoedit.h @@ -0,0 +1,22 @@ +#ifndef MEMOEDIT_H +#define MEMOEDIT_H + +#include "precompiled.h" + +class MemoEdit : public QPlainTextEdit +{ +public: + MemoEdit(QWidget* parent); + + void setMaxLen(int len); + void setLenDisplayLabel(QLabel* label); + void setAcceptButton(QPushButton* button); + void includeReplyTo(QString replyToAddress); + +private: + int maxlen = 512; + QLabel* lenDisplayLabel = nullptr; + QPushButton* acceptButton = nullptr; +}; + +#endif // MEMOEDIT_H \ No newline at end of file diff --git a/src/precompiled.h b/src/precompiled.h index ee2dea5..5745182 100644 --- a/src/precompiled.h +++ b/src/precompiled.h @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -44,6 +45,7 @@ #include #include #include +#include #include #include #include diff --git a/src/requestdialog.cpp b/src/requestdialog.cpp new file mode 100644 index 0000000..5a56298 --- /dev/null +++ b/src/requestdialog.cpp @@ -0,0 +1,14 @@ +#include "requestdialog.h" +#include "ui_requestdialog.h" + +RequestDialog::RequestDialog(QWidget *parent) : + QDialog(parent), + ui(new Ui::RequestDialog) +{ + ui->setupUi(this); +} + +RequestDialog::~RequestDialog() +{ + delete ui; +} diff --git a/src/requestdialog.h b/src/requestdialog.h new file mode 100644 index 0000000..36e2da0 --- /dev/null +++ b/src/requestdialog.h @@ -0,0 +1,22 @@ +#ifndef REQUESTDIALOG_H +#define REQUESTDIALOG_H + +#include + +namespace Ui { +class RequestDialog; +} + +class RequestDialog : public QDialog +{ + Q_OBJECT + +public: + explicit RequestDialog(QWidget *parent = nullptr); + ~RequestDialog(); + +private: + Ui::RequestDialog *ui; +}; + +#endif // REQUESTDIALOG_H diff --git a/src/requestdialog.ui b/src/requestdialog.ui new file mode 100644 index 0000000..b2a11b3 --- /dev/null +++ b/src/requestdialog.ui @@ -0,0 +1,124 @@ + + + RequestDialog + + + + 0 + 0 + 544 + 450 + + + + Dialog + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + amount in ZEC + + + + + + + Amount USD + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Amount + + + + + + + + + + + 0 + 0 + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + z address + + + + + + + Memo + + + + + + + Request From + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + RequestDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + RequestDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/sendtab.cpp b/src/sendtab.cpp index b0ffb47..a91ff4c 100644 --- a/src/sendtab.cpp +++ b/src/sendtab.cpp @@ -330,22 +330,8 @@ void MainWindow::memoButtonClicked(int number, bool includeReplyTo) { memoDialog.setupUi(&dialog); Settings::saveRestore(&dialog); - QObject::connect(memoDialog.memoTxt, &QPlainTextEdit::textChanged, [=] () { - QString txt = memoDialog.memoTxt->toPlainText(); - memoDialog.memoSize->setText(QString::number(txt.toUtf8().size()) + "/512"); - - if (txt.toUtf8().size() <= 512) { - // Everything is fine - memoDialog.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true); - memoDialog.memoSize->setStyleSheet(""); - } - else { - // Overweight - memoDialog.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); - memoDialog.memoSize->setStyleSheet("color: red;"); - } - - }); + memoDialog.memoTxt->setLenDisplayLabel(memoDialog.memoSize); + memoDialog.memoTxt->setAcceptButton(memoDialog.buttonBox->button(QDialogButtonBox::Ok)); auto fnAddReplyTo = [=, &dialog]() { QString replyTo = ui->inputsCombo->currentText(); @@ -354,11 +340,8 @@ void MainWindow::memoButtonClicked(int number, bool includeReplyTo) { if (replyTo.isEmpty()) return; } - auto curText = memoDialog.memoTxt->toPlainText(); - if (curText.endsWith(replyTo)) - return; - memoDialog.memoTxt->setPlainText(curText + "\n" + tr("Reply to") + ":\n" + replyTo); + memoDialog.memoTxt->includeReplyTo(replyTo); // MacOS has a really annoying bug where the Plaintext doesn't refresh when the content is // updated. So we do this ugly hack - resize the window slightly to force it to refresh diff --git a/src/settings.ui b/src/settings.ui index 38d40c1..d026952 100644 --- a/src/settings.ui +++ b/src/settings.ui @@ -274,7 +274,7 @@ Troubleshooting - + Reindex @@ -305,7 +305,7 @@ - + Qt::Vertical @@ -318,7 +318,24 @@ - + + + + + + + + + + + Rescan the blockchain for any missing wallet transactions and to correct your wallet balance. This will take several hours. You need to restart ZecWallet for this to take effect + + + true + + + + Rebuild the entire blockchain from the genesis block, by rescanning all the block files. This may take several hours to days, depending on your hardware. You need to restart ZecWallet for this to take effect @@ -328,13 +345,27 @@ - + + + + Rescan + + + + Qt::Horizontal + + + + + + + diff --git a/zec-qt-wallet.pro b/zec-qt-wallet.pro index 83af52b..3f08154 100644 --- a/zec-qt-wallet.pro +++ b/zec-qt-wallet.pro @@ -55,7 +55,9 @@ SOURCES += \ src/addresscombo.cpp \ src/websockets.cpp \ src/mobileappconnector.cpp \ - src/recurring.cpp + src/recurring.cpp \ + src/requestdialog.cpp \ + src/memoedit.cpp HEADERS += \ src/mainwindow.h \ @@ -78,7 +80,9 @@ HEADERS += \ src/addresscombo.h \ src/websockets.h \ src/mobileappconnector.h \ - src/recurring.h + src/recurring.h \ + src/requestdialog.h \ + src/memoedit.h FORMS += \ src/mainwindow.ui \ @@ -95,7 +99,8 @@ FORMS += \ src/mobileappconnector.ui \ src/createzcashconfdialog.ui \ src/recurringdialog.ui \ - src/newrecurring.ui + src/newrecurring.ui \ + src/requestdialog.ui TRANSLATIONS = res/zec_qt_wallet_es.ts \