diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/qt/forms/receiverequestdialog.ui | 205 | ||||
-rw-r--r-- | src/qt/receivecoinsdialog.cpp | 3 | ||||
-rw-r--r-- | src/qt/receiverequestdialog.cpp | 83 | ||||
-rw-r--r-- | src/qt/receiverequestdialog.h | 12 |
4 files changed, 84 insertions, 219 deletions
diff --git a/src/qt/forms/receiverequestdialog.ui b/src/qt/forms/receiverequestdialog.ui index 4f53dc19b8..fc0d10b4e4 100644 --- a/src/qt/forms/receiverequestdialog.ui +++ b/src/qt/forms/receiverequestdialog.ui @@ -17,7 +17,7 @@ <item> <widget class="QRImageWidget" name="lblQRCode"> <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> @@ -40,6 +40,28 @@ </widget> </item> <item> + <widget class="QTextEdit" name="outUri"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>50</height> + </size> + </property> + <property name="tabChangesFocus"> + <bool>true</bool> + </property> + <property name="textInteractionFlags"> + <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> + </property> + </widget> + </item> + <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <spacer name="horizontalSpacer"> @@ -55,6 +77,20 @@ </spacer> </item> <item> + <widget class="QPushButton" name="btnCopyURI"> + <property name="text"> + <string>Copy &URI</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="btnCopyImage"> + <property name="text"> + <string>&Copy Image</string> + </property> + </widget> + </item> + <item> <widget class="QPushButton" name="btnSaveAs"> <property name="text"> <string>&Save Image...</string> @@ -63,177 +99,10 @@ </item> </layout> </item> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Bitcoin URI:</string> - </property> - </widget> - </item> - <item> - <widget class="QPlainTextEdit" name="outUri"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Minimum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="minimumSize"> - <size> - <width>0</width> - <height>50</height> - </size> - </property> - <property name="tabChangesFocus"> - <bool>true</bool> - </property> - <property name="textInteractionFlags"> - <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>Payment information:</string> - </property> - </widget> - </item> - <item> - <widget class="QWidget" name="widget" native="true"> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <layout class="QFormLayout" name="formLayout"> - <property name="fieldGrowthPolicy"> - <enum>QFormLayout::AllNonFixedFieldsGrow</enum> - </property> - <item row="2" column="0"> - <widget class="QLabel" name="lblLabel"> - <property name="text"> - <string>Label:</string> - </property> - <property name="textFormat"> - <enum>Qt::PlainText</enum> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="buddy"> - <cstring>lnLabel</cstring> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="lnLabel"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="readOnly"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="lblMessage"> - <property name="text"> - <string>Message:</string> - </property> - <property name="textFormat"> - <enum>Qt::PlainText</enum> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="buddy"> - <cstring>lnMessage</cstring> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QLineEdit" name="lnMessage"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="readOnly"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="lblAmount"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Maximum"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string>Amount:</string> - </property> - <property name="textFormat"> - <enum>Qt::PlainText</enum> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="buddy"> - <cstring>lnReqAmount</cstring> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="BitcoinAmountField" name="lnReqAmount" native="true"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="minimumSize"> - <size> - <width>80</width> - <height>0</height> - </size> - </property> - <property name="readOnly" stdset="0"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string>Address:</string> - </property> - <property name="textFormat"> - <enum>Qt::PlainText</enum> - </property> - <property name="alignment"> - <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> - </property> - <property name="buddy"> - <cstring>reqAddress</cstring> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="lnAddress"> - <property name="readOnly"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - </item> </layout> </widget> <customwidgets> <customwidget> - <class>BitcoinAmountField</class> - <extends>QWidget</extends> - <header>bitcoinamountfield.h</header> - </customwidget> - <customwidget> <class>QRImageWidget</class> <extends>QLabel</extends> <header>receiverequestdialog.h</header> diff --git a/src/qt/receivecoinsdialog.cpp b/src/qt/receivecoinsdialog.cpp index fff678d0c6..f3ab343fea 100644 --- a/src/qt/receivecoinsdialog.cpp +++ b/src/qt/receivecoinsdialog.cpp @@ -98,8 +98,9 @@ void ReceiveCoinsDialog::on_receiveButton_clicked() } SendCoinsRecipient info(address, label, ui->reqAmount->value(), ui->reqMessage->text()); - ReceiveRequestDialog *dialog = new ReceiveRequestDialog(info, this); + ReceiveRequestDialog *dialog = new ReceiveRequestDialog(this); dialog->setModel(model->getOptionsModel()); + dialog->setInfo(info); dialog->setAttribute(Qt::WA_DeleteOnClose); dialog->show(); clear(); diff --git a/src/qt/receiverequestdialog.cpp b/src/qt/receiverequestdialog.cpp index efbc6ebd70..f6031e2b47 100644 --- a/src/qt/receiverequestdialog.cpp +++ b/src/qt/receiverequestdialog.cpp @@ -9,6 +9,9 @@ #include <QPixmap> #include <QClipboard> +#include <QMouseEvent> +#include <QDrag> +#include <QMimeData> #if QT_VERSION < 0x050000 #include <QUrl> #endif @@ -64,34 +67,21 @@ void QRImageWidget::copyImage() QApplication::clipboard()->setImage(exportImage()); } -ReceiveRequestDialog::ReceiveRequestDialog(const SendCoinsRecipient &info, QWidget *parent) : +ReceiveRequestDialog::ReceiveRequestDialog(QWidget *parent) : QDialog(parent), ui(new Ui::ReceiveRequestDialog), - model(0), - info(info) + model(0) { ui->setupUi(this); - QString target = info.label; - if(target.isEmpty()) - target = info.address; - setWindowTitle(tr("Request payment to %1").arg(target)); - - ui->lnAddress->setText(info.address); - if(info.amount) - ui->lnReqAmount->setValue(info.amount); - ui->lnReqAmount->setReadOnly(true); - ui->lnLabel->setText(info.label); - ui->lnMessage->setText(info.message); - #ifndef USE_QRCODE ui->btnSaveAs->setVisible(false); + ui->btnCopyImage->setVisible(false); ui->lblQRCode->setVisible(false); #endif connect(ui->btnSaveAs, SIGNAL(clicked()), ui->lblQRCode, SLOT(saveImage())); - - genCode(); + connect(ui->btnCopyImage, SIGNAL(clicked()), ui->lblQRCode, SLOT(copyImage())); } ReceiveRequestDialog::~ReceiveRequestDialog() @@ -104,17 +94,42 @@ void ReceiveRequestDialog::setModel(OptionsModel *model) this->model = model; if (model) - connect(model, SIGNAL(displayUnitChanged(int)), this, SLOT(updateDisplayUnit())); + connect(model, SIGNAL(displayUnitChanged(int)), this, SLOT(update())); - // update the display unit, to not use the default ("BTC") - updateDisplayUnit(); + // update the display unit if necessary + update(); } -void ReceiveRequestDialog::genCode() +void ReceiveRequestDialog::setInfo(const SendCoinsRecipient &info) { + this->info = info; + update(); +} + +void ReceiveRequestDialog::update() +{ + if(!model) + return; + QString target = info.label; + if(target.isEmpty()) + target = info.address; + setWindowTitle(tr("Request payment to %1").arg(target)); + QString uri = GUIUtil::formatBitcoinURI(info); ui->btnSaveAs->setEnabled(false); - ui->outUri->setPlainText(uri); + QString html; + html += "<html><font face='verdana, arial, helvetica, sans-serif'>"; + html += "<a href=\""+uri+"\">" + GUIUtil::HtmlEscape(uri) + "</a><br>"; + html += "<br>"; + html += "<b>"+tr("Payment information")+"</b><br>"; + html += "<b>"+tr("Address")+"</b>: " + GUIUtil::HtmlEscape(info.address) + "<br>"; + if(info.amount) + html += "<b>"+tr("Amount")+"</b>: " + BitcoinUnits::formatWithUnit(model->getDisplayUnit(), info.amount) + "<br>"; + if(!info.label.isEmpty()) + html += "<b>"+tr("Label")+"</b>: " + GUIUtil::HtmlEscape(info.label) + "<br>"; + if(!info.message.isEmpty()) + html += "<b>"+tr("Message")+"</b>: " + GUIUtil::HtmlEscape(info.message) + "<br>"; + ui->outUri->setText(html); #ifdef USE_QRCODE ui->lblQRCode->setText(""); @@ -151,26 +166,10 @@ void ReceiveRequestDialog::genCode() #endif } -void ReceiveRequestDialog::on_lnReqAmount_textChanged() -{ - genCode(); -} - -void ReceiveRequestDialog::on_lnLabel_textChanged() -{ - genCode(); -} - -void ReceiveRequestDialog::on_lnMessage_textChanged() +void ReceiveRequestDialog::on_btnCopyURI_clicked() { - genCode(); + QString uri = GUIUtil::formatBitcoinURI(info); + QApplication::clipboard()->setText(uri, QClipboard::Clipboard); + QApplication::clipboard()->setText(uri, QClipboard::Selection); } -void ReceiveRequestDialog::updateDisplayUnit() -{ - if (model) - { - // Update lnReqAmount with the current unit - ui->lnReqAmount->setDisplayUnit(model->getDisplayUnit()); - } -} diff --git a/src/qt/receiverequestdialog.h b/src/qt/receiverequestdialog.h index bfe50bde77..8db1ad83a1 100644 --- a/src/qt/receiverequestdialog.h +++ b/src/qt/receiverequestdialog.h @@ -36,25 +36,21 @@ class ReceiveRequestDialog : public QDialog Q_OBJECT public: - explicit ReceiveRequestDialog(const SendCoinsRecipient &info, QWidget *parent = 0); + explicit ReceiveRequestDialog(QWidget *parent = 0); ~ReceiveRequestDialog(); void setModel(OptionsModel *model); + void setInfo(const SendCoinsRecipient &info); private slots: - void on_lnReqAmount_textChanged(); - void on_lnLabel_textChanged(); - void on_lnMessage_textChanged(); + void on_btnCopyURI_clicked(); - void updateDisplayUnit(); + void update(); private: Ui::ReceiveRequestDialog *ui; OptionsModel *model; SendCoinsRecipient info; - - void genCode(); - QString getURI(); }; #endif // QRCODEDIALOG_H |