aboutsummaryrefslogtreecommitdiff
path: root/src/qt/sendcoinsdialog.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2011-08-07 16:04:48 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2011-08-07 16:04:48 +0200
commitdb7f023417eeeb96eed35c9d06541544abcd7033 (patch)
tree2f10b47a3090b5a7b1ae2c54342d0a7ed70b6d3e /src/qt/sendcoinsdialog.cpp
parent330c190958a31a126de7a7b12124070300b1567b (diff)
Accept "bitcoin:" URL drops from browsers
Diffstat (limited to 'src/qt/sendcoinsdialog.cpp')
-rw-r--r--src/qt/sendcoinsdialog.cpp47
1 files changed, 37 insertions, 10 deletions
diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp
index 54cae21a1b..4d315fb794 100644
--- a/src/qt/sendcoinsdialog.cpp
+++ b/src/qt/sendcoinsdialog.cpp
@@ -5,11 +5,12 @@
#include "addressbookpage.h"
#include "optionsmodel.h"
#include "sendcoinsentry.h"
-
+#include "guiutil.h"
#include <QMessageBox>
#include <QLocale>
#include <QTextDocument>
+#include <QDebug>
SendCoinsDialog::SendCoinsDialog(QWidget *parent) :
QDialog(parent),
@@ -133,17 +134,11 @@ void SendCoinsDialog::on_sendButton_clicked()
void SendCoinsDialog::clear()
{
// Remove entries until only one left
- while(ui->entries->count() > 1)
+ while(ui->entries->count())
{
delete ui->entries->takeAt(0)->widget();
}
-
- // Reset the entry that is left to empty
- SendCoinsEntry *entry = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(0)->widget());
- if(entry)
- {
- entry->clear();
- }
+ addEntry();
updateRemoveEnabled();
@@ -160,7 +155,7 @@ void SendCoinsDialog::accept()
clear();
}
-void SendCoinsDialog::addEntry()
+SendCoinsEntry *SendCoinsDialog::addEntry()
{
SendCoinsEntry *entry = new SendCoinsEntry(this);
entry->setModel(model);
@@ -171,6 +166,7 @@ void SendCoinsDialog::addEntry()
// Focus the field, so that entry can start immediately
entry->clear();
+ return entry;
}
void SendCoinsDialog::updateRemoveEnabled()
@@ -208,3 +204,34 @@ QWidget *SendCoinsDialog::setupTabChain(QWidget *prev)
QWidget::setTabOrder(ui->addButton, ui->sendButton);
return ui->sendButton;
}
+
+void SendCoinsDialog::pasteEntry(const SendCoinsRecipient &rv)
+{
+ SendCoinsEntry *entry = 0;
+ // Replace the first entry if it is still unused
+ if(ui->entries->count() == 1)
+ {
+ SendCoinsEntry *first = qobject_cast<SendCoinsEntry*>(ui->entries->itemAt(0)->widget());
+ if(first->isClear())
+ {
+ entry = first;
+ }
+ }
+ if(!entry)
+ {
+ entry = addEntry();
+ }
+
+ entry->setValue(rv);
+}
+
+
+void SendCoinsDialog::handleURL(const QUrl *url)
+{
+ SendCoinsRecipient rv;
+ if(!GUIUtil::parseBitcoinURL(url, &rv))
+ {
+ return;
+ }
+ pasteEntry(rv);
+}