aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/qt/forms/receiverequestdialog.ui205
-rw-r--r--src/qt/receivecoinsdialog.cpp3
-rw-r--r--src/qt/receiverequestdialog.cpp83
-rw-r--r--src/qt/receiverequestdialog.h12
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 &amp;URI</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="btnCopyImage">
+ <property name="text">
+ <string>&amp;Copy Image</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<widget class="QPushButton" name="btnSaveAs">
<property name="text">
<string>&amp;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