Accept "bitcoin:" URL drops from browsers
[novacoin.git] / src / qt / guiutil.cpp
index 31b2802..3516d4f 100644 (file)
@@ -1,5 +1,7 @@
 #include "guiutil.h"
 #include "bitcoinaddressvalidator.h"
+#include "walletmodel.h"
+#include "bitcoinunits.h"
 
 #include "headers.h"
 
 #include <QDoubleValidator>
 #include <QFont>
 #include <QLineEdit>
+#include <QUrl>
 
 QString GUIUtil::DateTimeStr(qint64 nTime)
 {
-    QDateTime date = QDateTime::fromTime_t((qint32)nTime);
+    return DateTimeStr(QDateTime::fromTime_t((qint32)nTime));
+}
+
+QString GUIUtil::DateTimeStr(const QDateTime &date)
+{
     return date.date().toString(Qt::SystemLocaleShortDate) + QString(" ") + date.toString("hh:mm");
 }
 
@@ -38,12 +45,21 @@ void GUIUtil::setupAmountWidget(QLineEdit *widget, QWidget *parent)
     widget->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
 }
 
-bool GUIUtil::parseMoney(const QString &amount, qint64 *val_out)
+bool GUIUtil::parseBitcoinURL(const QUrl *url, SendCoinsRecipient *out)
 {
-    return ParseMoney(amount.toStdString(), *val_out);
-}
+    if(url->scheme() != QString("bitcoin"))
+        return false;
 
-QString GUIUtil::formatMoney(qint64 amount, bool plussign)
-{
-    return QString::fromStdString(FormatMoney(amount, plussign));
+    SendCoinsRecipient rv;
+    rv.address = url->path();
+    rv.label = url->queryItemValue("label");
+    if(!BitcoinUnits::parse(BitcoinUnits::BTC, url->queryItemValue("amount"), &rv.amount))
+    {
+        return false;
+    }
+    if(out)
+    {
+        *out = rv;
+    }
+    return true;
 }