2 #include "bitcoinaddressvalidator.h"
3 #include "walletmodel.h"
4 #include "bitcoinunits.h"
10 #include <QDoubleValidator>
14 #include <QTextDocument> // For Qt::escape
15 #include <QAbstractItemView>
16 #include <QApplication>
19 QString GUIUtil::dateTimeStr(qint64 nTime)
21 return dateTimeStr(QDateTime::fromTime_t((qint32)nTime));
24 QString GUIUtil::dateTimeStr(const QDateTime &date)
26 return date.date().toString(Qt::SystemLocaleShortDate) + QString(" ") + date.toString("hh:mm");
29 QFont GUIUtil::bitcoinAddressFont()
31 QFont font("Monospace");
32 font.setStyleHint(QFont::TypeWriter);
36 void GUIUtil::setupAddressWidget(QLineEdit *widget, QWidget *parent)
38 widget->setMaxLength(BitcoinAddressValidator::MaxAddressLength);
39 widget->setValidator(new BitcoinAddressValidator(parent));
40 widget->setFont(bitcoinAddressFont());
43 void GUIUtil::setupAmountWidget(QLineEdit *widget, QWidget *parent)
45 QDoubleValidator *amountValidator = new QDoubleValidator(parent);
46 amountValidator->setDecimals(8);
47 amountValidator->setBottom(0.0);
48 widget->setValidator(amountValidator);
49 widget->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
52 bool GUIUtil::parseBitcoinURL(const QUrl *url, SendCoinsRecipient *out)
54 if(url->scheme() != QString("bitcoin"))
57 SendCoinsRecipient rv;
58 rv.address = url->path();
60 QList<QPair<QString, QString> > items = url->queryItems();
61 for (QList<QPair<QString, QString> >::iterator i = items.begin(); i != items.end(); i++)
63 bool fShouldReturnFalse = false;
64 if (i->first.startsWith("req-"))
66 i->first.remove(0, 4);
67 fShouldReturnFalse = true;
70 if (i->first == "label")
73 fShouldReturnFalse = false;
75 else if (i->first == "amount")
77 if(!i->second.isEmpty())
79 if(!BitcoinUnits::parse(BitcoinUnits::BTC, i->second, &rv.amount))
84 fShouldReturnFalse = false;
87 if (fShouldReturnFalse)
97 QString GUIUtil::HtmlEscape(const QString& str, bool fMultiLine)
99 QString escaped = Qt::escape(str);
102 escaped = escaped.replace("\n", "<br>\n");
107 QString GUIUtil::HtmlEscape(const std::string& str, bool fMultiLine)
109 return HtmlEscape(QString::fromStdString(str), fMultiLine);
112 void GUIUtil::copyEntryData(QAbstractItemView *view, int column, int role)
114 if(!view || !view->selectionModel())
116 QModelIndexList selection = view->selectionModel()->selectedRows(column);
118 if(!selection.isEmpty())
121 QApplication::clipboard()->setText(selection.at(0).data(role).toString());