Merge pull request #40 from MyHush/denio
fix theme error, fix Fix a phishing vulnerability for memos, Redo Zcash uri parsing to use QUrlQuery, add serbian translation
This commit is contained in:
@@ -13,12 +13,12 @@
|
|||||||
<file>res/logobig.gif</file>
|
<file>res/logobig.gif</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="/translations">
|
<qresource prefix="/translations">
|
||||||
<file>res/zec_qt_wallet_de.qm</file>
|
<file>res/silentdragonlite_de.qm</file>
|
||||||
<file>res/zec_qt_wallet_es.qm</file>
|
<file>res/silentdragonlite_es.qm</file>
|
||||||
<file>res/zec_qt_wallet_fr.qm</file>
|
<file>res/silentdragonlite_fr.qm</file>
|
||||||
<file>res/zec_qt_wallet_pt.qm</file>
|
<file>res/silentdragonlite_pt.qm</file>
|
||||||
<file>res/zec_qt_wallet_it.qm</file>
|
<file>res/silentdragonlite_it.qm</file>
|
||||||
<file>res/zec_qt_wallet_hr.qm</file>
|
<file>res/silentdragonlite_hr.qm</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="/css">
|
<qresource prefix="/css">
|
||||||
<file>res/css/blue.css</file>
|
<file>res/css/blue.css</file>
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
res/silentdragonlite_sr.qm
Normal file
BIN
res/silentdragonlite_sr.qm
Normal file
Binary file not shown.
1936
res/silentdragonlite_sr.ts
Normal file
1936
res/silentdragonlite_sr.ts
Normal file
File diff suppressed because it is too large
Load Diff
@@ -116,14 +116,15 @@ FORMS += \
|
|||||||
src/recurringmultiple.ui
|
src/recurringmultiple.ui
|
||||||
|
|
||||||
|
|
||||||
TRANSLATIONS = res/zec_qt_wallet_es.ts \
|
TRANSLATIONS = res/silentdragonlite_es.ts \
|
||||||
res/zec_qt_wallet_fr.ts \
|
res/silentdragonlite_fr.ts \
|
||||||
res/zec_qt_wallet_de.ts \
|
res/silentdragonlite_de.ts \
|
||||||
res/zec_qt_wallet_pt.ts \
|
res/silentdragonlite_pt.ts \
|
||||||
res/zec_qt_wallet_it.ts \
|
res/silentdragonlite_it.ts \
|
||||||
res/zec_qt_wallet_zh.ts \
|
res/silentdragonlite_zh.ts \
|
||||||
res/zec_qt_wallet_hr.ts \
|
res/silentdragonlite_hr.ts \
|
||||||
res/zec_qt_wallet_tr.ts
|
res/silentdragonlite_sr.ts \
|
||||||
|
res/silentdragonlite_tr.ts
|
||||||
|
|
||||||
include(singleapplication/singleapplication.pri)
|
include(singleapplication/singleapplication.pri)
|
||||||
DEFINES += QAPPLICATION_CLASS=QApplication
|
DEFINES += QAPPLICATION_CLASS=QApplication
|
||||||
|
|||||||
@@ -886,6 +886,7 @@ void MainWindow::setupTransactionsTab() {
|
|||||||
|
|
||||||
if (!memo.isEmpty()) {
|
if (!memo.isEmpty()) {
|
||||||
QMessageBox mb(QMessageBox::Information, tr("Memo"), memo, QMessageBox::Ok, this);
|
QMessageBox mb(QMessageBox::Information, tr("Memo"), memo, QMessageBox::Ok, this);
|
||||||
|
mb.setTextFormat(Qt::PlainText);
|
||||||
mb.setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard);
|
mb.setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard);
|
||||||
mb.exec();
|
mb.exec();
|
||||||
}
|
}
|
||||||
@@ -934,6 +935,7 @@ void MainWindow::setupTransactionsTab() {
|
|||||||
if (!memo.isEmpty()) {
|
if (!memo.isEmpty()) {
|
||||||
menu.addAction(tr("View Memo"), [=] () {
|
menu.addAction(tr("View Memo"), [=] () {
|
||||||
QMessageBox mb(QMessageBox::Information, tr("Memo"), memo, QMessageBox::Ok, this);
|
QMessageBox mb(QMessageBox::Information, tr("Memo"), memo, QMessageBox::Ok, this);
|
||||||
|
mb.setTextFormat(Qt::PlainText);
|
||||||
mb.setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard);
|
mb.setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard);
|
||||||
mb.exec();
|
mb.exec();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -292,27 +292,23 @@ PaymentURI Settings::parseURI(QString uri) {
|
|||||||
ans.error = "Could not understand address";
|
ans.error = "Could not understand address";
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
uri = uri.right(uri.length() - ans.addr.length());
|
uri = uri.right(uri.length() - ans.addr.length()-1); // swallow '?'
|
||||||
|
QUrlQuery query(uri);
|
||||||
|
|
||||||
if (!uri.isEmpty()) {
|
// parse out amt / amount
|
||||||
uri = uri.right(uri.length() - 1); // Eat the "?"
|
if (query.hasQueryItem("amt")) {
|
||||||
|
ans.amt = query.queryItemValue("amt");
|
||||||
|
} else if (query.hasQueryItem("amount")) {
|
||||||
|
ans.amt = query.queryItemValue("amount");
|
||||||
|
}
|
||||||
|
|
||||||
QStringList args = uri.split("&");
|
// parse out memo / msg / message
|
||||||
for (QString arg: args) {
|
if (query.hasQueryItem("memo")) {
|
||||||
QStringList kv = arg.split("=");
|
ans.memo = query.queryItemValue("memo");
|
||||||
if (kv.length() != 2) {
|
} else if (query.hasQueryItem("msg")) {
|
||||||
ans.error = "No value argument was seen";
|
ans.memo = query.queryItemValue("msg");
|
||||||
return ans;
|
} else if (query.hasQueryItem("message")) {
|
||||||
}
|
ans.memo = query.queryItemValue("message");
|
||||||
|
|
||||||
if (kv[0].toLower() == "amt" || kv[0].toLower() == "amount") {
|
|
||||||
ans.amt = kv[1];
|
|
||||||
} else if (kv[0].toLower() == "memo" || kv[0].toLower() == "message" || kv[0].toLower() == "msg") {
|
|
||||||
ans.memo = QUrl::fromPercentEncoding(kv[1].toUtf8());
|
|
||||||
} else {
|
|
||||||
// Ignore unknown fields, since some developers use it to pass extra data.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ans;
|
return ans;
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ QVariant TxTableModel::data(const QModelIndex &index, int role) const {
|
|||||||
return Settings::paymentURIPretty(Settings::parseURI(memo));
|
return Settings::paymentURIPretty(Settings::parseURI(memo));
|
||||||
} else {
|
} else {
|
||||||
return modeldata->at(index.row()).type +
|
return modeldata->at(index.row()).type +
|
||||||
(memo.isEmpty() ? "" : " tx memo: \"" + memo + "\"");
|
(memo.isEmpty() ? "" : " tx memo: \"" + memo.toHtmlEscaped() + "\"");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return concatMultipleMemos(dat);
|
return concatMultipleMemos(dat);
|
||||||
|
|||||||
Reference in New Issue
Block a user