From 016a254eca6fdc1b40320809710532115fc78527 Mon Sep 17 00:00:00 2001 From: mceme Date: Sat, 22 Jun 2019 23:53:39 +0100 Subject: [PATCH 1/5] messaging --- src/qt/encryptdecryptdialog.cpp | 56 ++++++++++------ src/qt/forms/sendcoinsentry.ui | 2 +- src/qt/forms/transactiondescdialog.ui | 59 ++++++++++++++-- src/qt/sendcoinsentry.cpp | 18 +++-- src/qt/transactiondescdialog.cpp | 96 ++++++++++++++++++++++++++- src/qt/transactiondescdialog.h | 1 + 6 files changed, 196 insertions(+), 36 deletions(-) diff --git a/src/qt/encryptdecryptdialog.cpp b/src/qt/encryptdecryptdialog.cpp index e6300c7..dc8dfce 100644 --- a/src/qt/encryptdecryptdialog.cpp +++ b/src/qt/encryptdecryptdialog.cpp @@ -597,36 +597,50 @@ void EncryptDecryptDialog::decodebase64Clicked() void EncryptDecryptDialog::on_cmdShowSave_clicked() { std::string delctype = "Files (*.png *.jpeg *.jpg *.gif *.tiff *.bmp)"; - QString encodestringqt = ui->lineEditimgbase64->text(); + std::string savefile= "c:/image.png"; + + QString encodestringqt = ui->lineEditimgbase64->text(); std::string encodestr = encodestringqt.toUtf8().constData(); std::string typebase64 = encodestr.substr(0, 1); - if(typebase64=="J" /*pdf*/ || typebase64=="V"){ - delctype = "Files (*.pdf *.txt)";; - } - else if(typebase64=="A" /*mp4*/) - { - delctype = "Files (*.mp4)";; - } - else if( typebase64=="R") /*gif*/ - { - delctype = "Files (*.gif)";; - } - else if( typebase64=="U") /*avi*/ - { - delctype = "Files (*.avi)";; - } - else if( typebase64=="S") /*mp3*/ - { - delctype = "Files (*.mp3)";; - } + if(typebase64=="J" /*pdf*/ ){ + delctype = "Files (*.pdf)"; + savefile = "c:/doc.pdf"; + } + else if(typebase64=="V" /*txt*/) + { + delctype = "Files (*.txt)"; + savefile = "c:/text.txt"; + } + else if(typebase64=="A" /*mp4*/) + { + delctype = "Files (*.mp4)"; + savefile = "c:/movie.mp4"; + } + else if( typebase64=="R") /*gif*/ + { + delctype = "Files (*.gif)"; + savefile = "c:/image.gif"; + } + else if( typebase64=="U") /*avi*/ + { + delctype = "Files (*.avi)"; + savefile = "c:/movie.avi"; + } + else if( typebase64=="S") /*mp3*/ + { + delctype = "Files (*.mp3)"; + savefile = "c:/music.mp3"; + } + + QString fileNamesave = QFileDialog::getSaveFileName(this, tr("Save File"), - "c:/image.png", + savefile, tr(delctype.c_str())); QByteArray base64decodefilearray; diff --git a/src/qt/forms/sendcoinsentry.ui b/src/qt/forms/sendcoinsentry.ui index 39c29a1..bde6852 100644 --- a/src/qt/forms/sendcoinsentry.ui +++ b/src/qt/forms/sendcoinsentry.ui @@ -242,7 +242,7 @@ - Base64: + Message: Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter diff --git a/src/qt/forms/transactiondescdialog.ui b/src/qt/forms/transactiondescdialog.ui index 087cd69..c084a92 100644 --- a/src/qt/forms/transactiondescdialog.ui +++ b/src/qt/forms/transactiondescdialog.ui @@ -35,14 +35,61 @@ - - - Qt::Horizontal + + + 0 - - QDialogButtonBox::Close + + 0 - + + + + true + + + + 80 + 16777215 + + + + Qt::LeftToRight + + + + + + Download + + + + + + + + 16777215 + 16777215 + + + + Qt::LeftToRight + + + false + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close + + + + diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp index d13ab35..c20aa21 100644 --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -26,6 +26,8 @@ base64 base64; typedef unsigned char BYTE; +bool fileselected=false; + SendCoinsEntry::SendCoinsEntry(const PlatformStyle *platformStyle, QWidget *parent) : QStackedWidget(parent), ui(new Ui::SendCoinsEntry), @@ -121,6 +123,8 @@ void SendCoinsEntry::clear() ui->addAsLabel->clear(); ui->payAmount->clear(); ui->Imgbase64Edit->clear(); + ui->Imgbase64Edit->setEnable(1); + fileselected=false; ui->checkboxSubtractFeeFromAmount->setCheckState(Qt::Unchecked); ui->messageTextLabel->clear(); ui->messageTextLabel->hide(); @@ -156,15 +160,15 @@ void SendCoinsEntry::on_chooserButton_clicked() if (dialog.exec()){ QStringList fileNames = dialog.selectedFiles(); - if(fileNames.size()>0){ + if(fileNames.size()>0){ QString file = fileNames[0]; ui->FileNamesTxt->setText(file); - std::string filestr = file.toUtf8().constData(); - std::string encodedstring = base64.encode(filestr); - QString qsencoded = QString::fromStdString(encodedstring); + std::string filestr = file.toUtf8().constData(); + std::string encodedstring = base64.encode(filestr); + QString qsencoded = QString::fromStdString(encodedstring); if(!base64.base64Validator(encodedstring)){ @@ -180,8 +184,9 @@ void SendCoinsEntry::on_chooserButton_clicked() ui->Imgbase64Edit->setText(""); return; } - + fileselected=true; ui->Imgbase64Edit->setText(qsencoded); + ui->Imgbase64Edit->setDisabled(1); } } } @@ -262,6 +267,9 @@ SendCoinsRecipient SendCoinsEntry::getValue() recipient.address = ui->payTo->text(); recipient.label = ui->addAsLabel->text(); recipient.imgbase64 = ui->Imgbase64Edit->text(); + if(ui->Imgbase64Edit->size()>0 && !fileselected){ //message + recipient.imgbase64 ="message:"+ ui->Imgbase64Edit->text(); + } recipient.amount = ui->payAmount->value(); recipient.message = ui->messageTextLabel->text(); recipient.fSubtractFeeFromAmount = (ui->checkboxSubtractFeeFromAmount->checkState() == Qt::Checked); diff --git a/src/qt/transactiondescdialog.cpp b/src/qt/transactiondescdialog.cpp index fc126b8..1d8e6cc 100644 --- a/src/qt/transactiondescdialog.cpp +++ b/src/qt/transactiondescdialog.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -27,7 +28,7 @@ #include - + QString encodeqstring ; TransactionDescDialog::TransactionDescDialog(const QModelIndex &idx, QWidget *parent) : QDialog(parent), @@ -35,6 +36,7 @@ TransactionDescDialog::TransactionDescDialog(const QModelIndex &idx, QWidget *pa { ui->setupUi(this); ui->graphicsView->setVisible(false); + ui->DownloadButton->setVisible(false); /* Open CSS when configured */ this->setStyleSheet(GUIUtil::loadStyleSheet()); @@ -42,15 +44,23 @@ TransactionDescDialog::TransactionDescDialog(const QModelIndex &idx, QWidget *pa ui->detailText->setHtml(desc); /* Start ImageView */ - QString encodeqstring = idx.data(TransactionTableModel::Imgbase64Role).toString(); + encodeqstring = idx.data(TransactionTableModel::Imgbase64Role).toString(); std::string encodestr = encodeqstring.toUtf8().constData(); std::string extension = "png"; float delctype = 0; - + + + if(encodestr.size()>5) { + std:string ismessage = encodestr.substr(0, 8); + + if(ismessage != "message:"){ + + ui->DownloadButton->setVisible(true); + std::string typebase64 = encodestr.substr(0, 1); if(typebase64=="J" /*pdf*/ || typebase64=="V"){ delctype = 2; @@ -131,9 +141,89 @@ TransactionDescDialog::TransactionDescDialog(const QModelIndex &idx, QWidget *pa } } } + else { //message + + QGraphicsTextItem * io = new QGraphicsTextItem; + io->setPos(150,70); + io->setPlainText(encodestr); + QGraphicsScene* scene = new QGraphicsScene(QRect(0, 0, 400, 250)); + scene->addItem(io); + + ui->graphicsView->setScene( scene ); + ui->graphicsView->setVisible(true); + ui->graphicsView->setGeometry(QRect(0, 0, 400, 250)); + ui->graphicsView->show(); + + } + } } +void TransactionDescDialog::on_DownloadButton_clicked() + { + + + std::string delctype = "Files (*.png *.jpeg *.jpg *.gif *.tiff *.bmp)"; + + std::string savefile = "c:/image.png"; + + std::string encodestr = encodeqstring.toUtf8().constData(); + + std::string typebase64 = encodestr.substr(0, 1); + + + + if(typebase64=="J" /*pdf*/ ){ + delctype = "Files (*.pdf)"; + savefile = "c:/doc.pdf"; + } + else if(typebase64=="V" /*txt*/) + { + delctype = "Files (*.txt)"; + savefile = "c:/text.txt"; + } + else if(typebase64=="A" /*mp4*/) + { + delctype = "Files (*.mp4)"; + savefile = "c:/movie.mp4"; + } + else if( typebase64=="R") /*gif*/ + { + delctype = "Files (*.gif)"; + savefile = "c:/image.gif"; + } + else if( typebase64=="U") /*avi*/ + { + delctype = "Files (*.avi)"; + savefile = "c:/movie.avi"; + } + else if( typebase64=="S") /*mp3*/ + { + delctype = "Files (*.mp3)"; + savefile = "c:/music.mp3"; + } + + + + + QString fileNamesave = QFileDialog::getSaveFileName(this, tr("Save File"), + savefile, + tr(delctype.c_str())); + + QByteArray base64decodefilearray; + + base64decodefilearray.setRawData(base64decodearray->data(), base64decodearray->size()); + // ... fill the array with data ... + + QFile file(fileNamesave.toUtf8().constData()); + file.open(QIODevice::WriteOnly); + + + file.write(base64decodefilearray); + file.close(); + + } + TransactionDescDialog::~TransactionDescDialog() { delete ui; diff --git a/src/qt/transactiondescdialog.h b/src/qt/transactiondescdialog.h index 54374e3..1454d86 100644 --- a/src/qt/transactiondescdialog.h +++ b/src/qt/transactiondescdialog.h @@ -26,6 +26,7 @@ class TransactionDescDialog : public QDialog private: Ui::TransactionDescDialog *ui; + void on_DownloadButton_clicked(); }; #endif // BITCOIN_QT_TRANSACTIONDESCDIALOG_H From 8a1679fbfb95be80f55fa23156e6e56c1f5621c3 Mon Sep 17 00:00:00 2001 From: mceme Date: Sun, 23 Jun 2019 00:57:11 +0100 Subject: [PATCH 2/5] sub --- src/qt/encryptdecryptdialog.cpp | 4 ++-- src/qt/sendcoinsentry.cpp | 4 ++-- src/qt/transactiondescdialog.cpp | 21 +++++++++++++++------ 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/qt/encryptdecryptdialog.cpp b/src/qt/encryptdecryptdialog.cpp index dc8dfce..f0694b5 100644 --- a/src/qt/encryptdecryptdialog.cpp +++ b/src/qt/encryptdecryptdialog.cpp @@ -612,7 +612,7 @@ void EncryptDecryptDialog::on_cmdShowSave_clicked() { delctype = "Files (*.txt)"; savefile = "c:/text.txt"; - } + } else if(typebase64=="A" /*mp4*/) { delctype = "Files (*.mp4)"; @@ -640,7 +640,7 @@ void EncryptDecryptDialog::on_cmdShowSave_clicked() QString fileNamesave = QFileDialog::getSaveFileName(this, tr("Save File"), - savefile, + savefile.c_str(), tr(delctype.c_str())); QByteArray base64decodefilearray; diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp index c20aa21..bb47847 100644 --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -123,7 +123,7 @@ void SendCoinsEntry::clear() ui->addAsLabel->clear(); ui->payAmount->clear(); ui->Imgbase64Edit->clear(); - ui->Imgbase64Edit->setEnable(1); + ui->Imgbase64Edit->setEnabled(1); fileselected=false; ui->checkboxSubtractFeeFromAmount->setCheckState(Qt::Unchecked); ui->messageTextLabel->clear(); @@ -267,7 +267,7 @@ SendCoinsRecipient SendCoinsEntry::getValue() recipient.address = ui->payTo->text(); recipient.label = ui->addAsLabel->text(); recipient.imgbase64 = ui->Imgbase64Edit->text(); - if(ui->Imgbase64Edit->size()>0 && !fileselected){ //message + if(ui->Imgbase64Edit->text()->size()>0 && !fileselected){ //message recipient.imgbase64 ="message:"+ ui->Imgbase64Edit->text(); } recipient.amount = ui->payAmount->value(); diff --git a/src/qt/transactiondescdialog.cpp b/src/qt/transactiondescdialog.cpp index 1d8e6cc..8f82199 100644 --- a/src/qt/transactiondescdialog.cpp +++ b/src/qt/transactiondescdialog.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -54,10 +55,9 @@ TransactionDescDialog::TransactionDescDialog(const QModelIndex &idx, QWidget *pa if(encodestr.size()>5) { + std::string ismessage = encodestr.substr(0, 8); - std:string ismessage = encodestr.substr(0, 8); - - if(ismessage != "message:"){ + if(ismessage.c_str() != "message:"){ ui->DownloadButton->setVisible(true); @@ -145,7 +145,7 @@ TransactionDescDialog::TransactionDescDialog(const QModelIndex &idx, QWidget *pa QGraphicsTextItem * io = new QGraphicsTextItem; io->setPos(150,70); - io->setPlainText(encodestr); + io->setPlainText(encodestr.c_str()); QGraphicsScene* scene = new QGraphicsScene(QRect(0, 0, 400, 250)); scene->addItem(io); @@ -203,11 +203,20 @@ void TransactionDescDialog::on_DownloadButton_clicked() savefile = "c:/music.mp3"; } + base64 base64trdialog; + + std::vector bytesarray = base64trdialog.decode(encodestr); + + if(bytesarray.size()>0) + { + + QByteArray *base64decodearray; + base64decodearray = new QByteArray(reinterpret_cast(bytesarray.data()), bytesarray.size()); QString fileNamesave = QFileDialog::getSaveFileName(this, tr("Save File"), - savefile, + savefile.c_str(), tr(delctype.c_str())); QByteArray base64decodefilearray; @@ -221,7 +230,7 @@ void TransactionDescDialog::on_DownloadButton_clicked() file.write(base64decodefilearray); file.close(); - + } } TransactionDescDialog::~TransactionDescDialog() From b26c2780baab9f38989304c76d727430a03d1354 Mon Sep 17 00:00:00 2001 From: mceme Date: Sun, 23 Jun 2019 01:40:38 +0100 Subject: [PATCH 3/5] sub --- src/qt/forms/transactiondescdialog.ui | 4 ++-- src/qt/sendcoinsentry.cpp | 11 +++++++++-- src/qt/transactiondescdialog.h | 4 ++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/qt/forms/transactiondescdialog.ui b/src/qt/forms/transactiondescdialog.ui index c084a92..bc2d7b4 100644 --- a/src/qt/forms/transactiondescdialog.ui +++ b/src/qt/forms/transactiondescdialog.ui @@ -49,7 +49,7 @@ - 80 + 100 16777215 @@ -68,7 +68,7 @@ - 16777215 + 16777015 16777215 diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp index bb47847..35b5ff5 100644 --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -220,13 +220,20 @@ bool SendCoinsEntry::validate() { std::string imgbase64=ui->Imgbase64Edit->text().toUtf8().constData(); - if(!base64.base64Validator(imgbase64)){ + + + if(fileselected) + { + if(!base64.base64Validator(imgbase64)){ ui->Imgbase64Edit->setStyleSheet("QLineEdit { background: rgb(220, 20, 60); selection-background-color: rgb(233, 99, 0); }"); ui->Imgbase64Edit->setToolTip("Base64 string not valid."); ui->Imgbase64Edit->setText(""); retval = false; - } + } + } + + if(ui->Imgbase64Edit->text().length()>10000000) { ui->Imgbase64Edit->setStyleSheet("QLineEdit { background: rgb(220, 20, 60); selection-background-color: rgb(233, 99, 0); }"); diff --git a/src/qt/transactiondescdialog.h b/src/qt/transactiondescdialog.h index 1454d86..7ff343b 100644 --- a/src/qt/transactiondescdialog.h +++ b/src/qt/transactiondescdialog.h @@ -24,9 +24,13 @@ class TransactionDescDialog : public QDialog explicit TransactionDescDialog(const QModelIndex &idx, QWidget *parent = 0); ~TransactionDescDialog(); + private: Ui::TransactionDescDialog *ui; + +private Q_SLOTS: void on_DownloadButton_clicked(); + }; #endif // BITCOIN_QT_TRANSACTIONDESCDIALOG_H From 9967b7b1f3d9c850b9ffd84486883047690f1a9e Mon Sep 17 00:00:00 2001 From: mceme Date: Sun, 23 Jun 2019 01:55:01 +0100 Subject: [PATCH 4/5] sub --- src/qt/sendcoinsentry.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp index 35b5ff5..ababde7 100644 --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -274,7 +274,7 @@ SendCoinsRecipient SendCoinsEntry::getValue() recipient.address = ui->payTo->text(); recipient.label = ui->addAsLabel->text(); recipient.imgbase64 = ui->Imgbase64Edit->text(); - if(ui->Imgbase64Edit->text()->size()>0 && !fileselected){ //message + if(ui->Imgbase64Edit->text().size()>0 && !fileselected){ //message recipient.imgbase64 ="message:"+ ui->Imgbase64Edit->text(); } recipient.amount = ui->payAmount->value(); From 09747dec2179a8d3dc8aababccf3e83bce517b11 Mon Sep 17 00:00:00 2001 From: mceme Date: Sun, 23 Jun 2019 17:33:23 +0100 Subject: [PATCH 5/5] sub --- src/qt/forms/transactiondescdialog.ui | 2 +- src/qt/sendcoinsentry.cpp | 2 +- src/qt/transactiondescdialog.cpp | 28 +++++++++++---------------- src/qt/transactionview.cpp | 2 +- 4 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/qt/forms/transactiondescdialog.ui b/src/qt/forms/transactiondescdialog.ui index bc2d7b4..e67e794 100644 --- a/src/qt/forms/transactiondescdialog.ui +++ b/src/qt/forms/transactiondescdialog.ui @@ -49,7 +49,7 @@ - 100 + 120 16777215 diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp index ababde7..842f6cb 100644 --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -275,7 +275,7 @@ SendCoinsRecipient SendCoinsEntry::getValue() recipient.label = ui->addAsLabel->text(); recipient.imgbase64 = ui->Imgbase64Edit->text(); if(ui->Imgbase64Edit->text().size()>0 && !fileselected){ //message - recipient.imgbase64 ="message:"+ ui->Imgbase64Edit->text(); + recipient.imgbase64 ="m:"+ ui->Imgbase64Edit->text(); } recipient.amount = ui->payAmount->value(); recipient.message = ui->messageTextLabel->text(); diff --git a/src/qt/transactiondescdialog.cpp b/src/qt/transactiondescdialog.cpp index 8f82199..08becd8 100644 --- a/src/qt/transactiondescdialog.cpp +++ b/src/qt/transactiondescdialog.cpp @@ -53,11 +53,13 @@ TransactionDescDialog::TransactionDescDialog(const QModelIndex &idx, QWidget *pa - if(encodestr.size()>5) + if(encodestr.size()>2) { - std::string ismessage = encodestr.substr(0, 8); - if(ismessage.c_str() != "message:"){ + std::string ismessage = encodestr.substr(0, 2); + + if(ismessage != "m:") + { ui->DownloadButton->setVisible(true); @@ -103,7 +105,7 @@ TransactionDescDialog::TransactionDescDialog(const QModelIndex &idx, QWidget *pa else if(delctype==1){ ui->graphicsView->setVisible(true); ui->graphicsView->setGeometry(QRect(0, 0, 400, 250)); - ui->graphicsView->show(); + QLabel *gif_anim = new QLabel(); gif_anim->setGeometry(0, 0, 400, 250); @@ -117,7 +119,7 @@ TransactionDescDialog::TransactionDescDialog(const QModelIndex &idx, QWidget *pa QGraphicsProxyWidget *proxy = scene->addWidget(gif_anim); scene->addWidget(gif_anim); ui->graphicsView->setScene( scene ); - + ui->graphicsView->show(); } /* Start Document */ else if (delctype==2) @@ -143,19 +145,11 @@ TransactionDescDialog::TransactionDescDialog(const QModelIndex &idx, QWidget *pa } else { //message - QGraphicsTextItem * io = new QGraphicsTextItem; - io->setPos(150,70); - io->setPlainText(encodestr.c_str()); - QGraphicsScene* scene = new QGraphicsScene(QRect(0, 0, 400, 250)); - - scene->addItem(io); - - ui->graphicsView->setScene( scene ); - ui->graphicsView->setVisible(true); - ui->graphicsView->setGeometry(QRect(0, 0, 400, 250)); - ui->graphicsView->show(); - + ui->DownloadButton->setVisible(false); + desc = desc + "
"+encodestr.c_str(); + ui->detailText->setHtml(desc); } + } } diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index 7e1808a..50a4cea 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -165,7 +165,7 @@ TransactionView::TransactionView(const PlatformStyle *platformStyle, QWidget *pa QAction *copyAddressAction = new QAction(tr("Copy address"), this); QAction *copyLabelAction = new QAction(tr("Copy label"), this); QAction *copyAmountAction = new QAction(tr("Copy amount"), this); - QAction *copyImgbase64Action = new QAction(tr("Copy imgbase64"), this); + QAction *copyImgbase64Action = new QAction(tr("Copy img"), this); QAction *copyTxIDAction = new QAction(tr("Copy transaction ID"), this); QAction *copyTxHexAction = new QAction(tr("Copy raw transaction"), this); QAction *copyTxPlainText = new QAction(tr("Copy full transaction details"), this);