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();
59 rv.label = url->queryItemValue("label");
61 QString amount = url->queryItemValue("amount");
66 else // Amount is non-empty
68 if(!BitcoinUnits::parse(BitcoinUnits::BTC, amount, &rv.amount))
80 QString GUIUtil::HtmlEscape(const QString& str, bool fMultiLine)
82 QString escaped = Qt::escape(str);
85 escaped = escaped.replace("\n", "<br>\n");
90 QString GUIUtil::HtmlEscape(const std::string& str, bool fMultiLine)
92 return HtmlEscape(QString::fromStdString(str), fMultiLine);
95 void GUIUtil::copyEntryData(QAbstractItemView *view, int column, int role)
97 if(!view || !view->selectionModel())
99 QModelIndexList selection = view->selectionModel()->selectedRows(column);
101 if(!selection.isEmpty())
104 QApplication::clipboard()->setText(selection.at(0).data(role).toString());