mirror of
https://github.com/feather-wallet/feather.git
synced 2024-12-23 03:59:29 +00:00
Multibroadcast transactions
This commit is contained in:
parent
858861436b
commit
fcf764e03c
13 changed files with 260 additions and 206 deletions
|
@ -265,6 +265,35 @@ void AppContext::onAmountPrecisionChanged(int precision) {
|
||||||
model->amountPrecision = precision;
|
model->amountPrecision = precision;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AppContext::commitTransaction(PendingTransaction *tx) {
|
||||||
|
// Nodes - even well-connected, properly configured ones - consistently fail to relay transactions
|
||||||
|
// To mitigate transactions failing we just send the transaction to every node we know about over Tor
|
||||||
|
if (config()->get(Config::multiBroadcast).toBool()) {
|
||||||
|
this->onMultiBroadcast(tx);
|
||||||
|
}
|
||||||
|
|
||||||
|
this->currentWallet->commitTransactionAsync(tx);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppContext::onMultiBroadcast(PendingTransaction *tx) {
|
||||||
|
UtilsNetworking *net = new UtilsNetworking(this->network, this);
|
||||||
|
DaemonRpc *rpc = new DaemonRpc(this, net, "");
|
||||||
|
|
||||||
|
int count = tx->txCount();
|
||||||
|
for (int i = 0; i < count; i++) {
|
||||||
|
QString txData = tx->signedTxToHex(i);
|
||||||
|
|
||||||
|
for (const auto& node: this->nodes->websocketNodes()) {
|
||||||
|
if (!node.online) continue;
|
||||||
|
|
||||||
|
QString address = node.as_url();
|
||||||
|
qDebug() << QString("Relaying to: %1").arg(address);
|
||||||
|
rpc->setDaemonAddress(address);
|
||||||
|
rpc->sendRawTransaction(txData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void AppContext::onWalletOpened(Wallet *wallet) {
|
void AppContext::onWalletOpened(Wallet *wallet) {
|
||||||
auto state = wallet->status();
|
auto state = wallet->status();
|
||||||
if (state != Wallet::Status_Ok) {
|
if (state != Wallet::Status_Ok) {
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include "utils/wsclient.h"
|
#include "utils/wsclient.h"
|
||||||
#include "utils/txfiathistory.h"
|
#include "utils/txfiathistory.h"
|
||||||
#include "utils/FeatherSeed.h"
|
#include "utils/FeatherSeed.h"
|
||||||
|
#include "utils/daemonrpc.h"
|
||||||
#include "widgets/RedditPost.h"
|
#include "widgets/RedditPost.h"
|
||||||
#include "widgets/CCSEntry.h"
|
#include "widgets/CCSEntry.h"
|
||||||
#include "utils/RestoreHeightLookup.h"
|
#include "utils/RestoreHeightLookup.h"
|
||||||
|
@ -66,6 +67,7 @@ public:
|
||||||
WSClient *ws;
|
WSClient *ws;
|
||||||
XmRig *XMRig;
|
XmRig *XMRig;
|
||||||
Nodes *nodes;
|
Nodes *nodes;
|
||||||
|
DaemonRpc *daemonRpc;
|
||||||
static Prices *prices;
|
static Prices *prices;
|
||||||
static WalletKeysFilesModel *wallets;
|
static WalletKeysFilesModel *wallets;
|
||||||
static double balance;
|
static double balance;
|
||||||
|
@ -81,6 +83,7 @@ public:
|
||||||
void createWallet(FeatherSeed seed, const QString &path, const QString &password, const QString &seedOffset = "");
|
void createWallet(FeatherSeed seed, const QString &path, const QString &password, const QString &seedOffset = "");
|
||||||
void createWalletFromKeys(const QString &path, const QString &password, const QString &address, const QString &viewkey, const QString &spendkey, quint64 restoreHeight, bool deterministic = false);
|
void createWalletFromKeys(const QString &path, const QString &password, const QString &address, const QString &viewkey, const QString &spendkey, quint64 restoreHeight, bool deterministic = false);
|
||||||
void createWalletFinish(const QString &password);
|
void createWalletFinish(const QString &password);
|
||||||
|
void commitTransaction(PendingTransaction *tx);
|
||||||
void syncStatusUpdated(quint64 height, quint64 target);
|
void syncStatusUpdated(quint64 height, quint64 target);
|
||||||
void updateBalance();
|
void updateBalance();
|
||||||
void initTor();
|
void initTor();
|
||||||
|
@ -105,6 +108,7 @@ public slots:
|
||||||
void onSetRestoreHeight(quint64 height);
|
void onSetRestoreHeight(quint64 height);
|
||||||
void onPreferredFiatCurrencyChanged(const QString &symbol);
|
void onPreferredFiatCurrencyChanged(const QString &symbol);
|
||||||
void onAmountPrecisionChanged(int precision);
|
void onAmountPrecisionChanged(int precision);
|
||||||
|
void onMultiBroadcast(PendingTransaction *tx);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onWSNodes(const QJsonArray &nodes);
|
void onWSNodes(const QJsonArray &nodes);
|
||||||
|
|
|
@ -172,7 +172,7 @@ void TxConfAdvDialog::signedQrCode() {
|
||||||
|
|
||||||
void TxConfAdvDialog::broadcastTransaction() {
|
void TxConfAdvDialog::broadcastTransaction() {
|
||||||
if (m_tx == nullptr) return;
|
if (m_tx == nullptr) return;
|
||||||
m_ctx->currentWallet->commitTransactionAsync(m_tx);
|
m_ctx->commitTransaction(m_tx);
|
||||||
QDialog::accept();
|
QDialog::accept();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1286,11 +1286,10 @@ Wallet::~Wallet()
|
||||||
//Monero::WalletManagerFactory::getWalletManager()->closeWallet(m_walletImpl);
|
//Monero::WalletManagerFactory::getWalletManager()->closeWallet(m_walletImpl);
|
||||||
if(status() == Status_Critical)
|
if(status() == Status_Critical)
|
||||||
qDebug("Not storing wallet cache");
|
qDebug("Not storing wallet cache");
|
||||||
// Don't store on wallet close for now
|
else if( m_walletImpl->store(""))
|
||||||
// else if( m_walletImpl->store(""))
|
qDebug("Wallet cache stored successfully");
|
||||||
// qDebug("Wallet cache stored successfully");
|
else
|
||||||
// else
|
qDebug("Error storing wallet cache");
|
||||||
// qDebug("Error storing wallet cache");
|
|
||||||
delete m_walletImpl;
|
delete m_walletImpl;
|
||||||
m_walletImpl = NULL;
|
m_walletImpl = NULL;
|
||||||
delete m_walletListener;
|
delete m_walletListener;
|
||||||
|
|
|
@ -751,7 +751,7 @@ void MainWindow::onCreateTransactionSuccess(PendingTransaction *tx, const QVecto
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case QDialog::Accepted:
|
case QDialog::Accepted:
|
||||||
m_ctx->currentWallet->commitTransactionAsync(tx);
|
m_ctx->commitTransaction(tx);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,9 @@ Settings::Settings(QWidget *parent) :
|
||||||
ui->tabWidget->setTabVisible(4, false);
|
ui->tabWidget->setTabVisible(4, false);
|
||||||
|
|
||||||
connect(ui->btnCopyToClipboard, &QPushButton::clicked, this, &Settings::copyToClipboard);
|
connect(ui->btnCopyToClipboard, &QPushButton::clicked, this, &Settings::copyToClipboard);
|
||||||
|
connect(ui->checkBox_multiBroadcast, &QCheckBox::toggled, [](bool toggled){
|
||||||
|
config()->set(Config::multiBroadcast, toggled);
|
||||||
|
});
|
||||||
connect(ui->checkBox_externalLink, &QCheckBox::clicked, this, &Settings::checkboxExternalLinkWarn);
|
connect(ui->checkBox_externalLink, &QCheckBox::clicked, this, &Settings::checkboxExternalLinkWarn);
|
||||||
connect(ui->checkBox_hideBalance, &QCheckBox::toggled, [this](bool toggled){
|
connect(ui->checkBox_hideBalance, &QCheckBox::toggled, [this](bool toggled){
|
||||||
config()->set(Config::hideBalance, toggled);
|
config()->set(Config::hideBalance, toggled);
|
||||||
|
@ -34,6 +37,7 @@ Settings::Settings(QWidget *parent) :
|
||||||
connect(ui->nodeWidget, &NodeWidget::connectToNode, m_ctx->nodes, QOverload<const FeatherNode&>::of(&Nodes::connectToNode));
|
connect(ui->nodeWidget, &NodeWidget::connectToNode, m_ctx->nodes, QOverload<const FeatherNode&>::of(&Nodes::connectToNode));
|
||||||
|
|
||||||
// setup checkboxes
|
// setup checkboxes
|
||||||
|
ui->checkBox_multiBroadcast->setChecked(config()->get(Config::multiBroadcast).toBool());
|
||||||
ui->checkBox_externalLink->setChecked(config()->get(Config::warnOnExternalLink).toBool());
|
ui->checkBox_externalLink->setChecked(config()->get(Config::warnOnExternalLink).toBool());
|
||||||
ui->checkBox_hideBalance->setChecked(config()->get(Config::hideBalance).toBool());
|
ui->checkBox_hideBalance->setChecked(config()->get(Config::hideBalance).toBool());
|
||||||
|
|
||||||
|
|
395
src/settings.ui
395
src/settings.ui
|
@ -23,214 +23,225 @@
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>General</string>
|
<string>General</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<layout class="QFormLayout" name="formLayout">
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
<item row="0" column="0">
|
<item>
|
||||||
<widget class="QLabel" name="label">
|
<layout class="QFormLayout" name="formLayout_3">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Preferred fiat currency:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBox_fiatCurrency">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>USD</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>EUR</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>RUB</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>GBP</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>AUD</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>CAD</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>CHF</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>CNY</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>CZK</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>JPY</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>KRW</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>MXN</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>NZD</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>SEK</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>THB</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>TRY</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>ZAR</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_6">
|
||||||
|
<property name="text">
|
||||||
|
<string>Appearance:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBox_skin"/>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Block explorer:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBox_blockExplorer">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>exploremonero.com</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>xmrchain.net</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>moneroblocks.info</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>blockchair.com</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="label_8">
|
||||||
|
<property name="text">
|
||||||
|
<string>Reddit frontend:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBox_redditFrontend">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>old.reddit.com</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>reddit.com</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>teddit.net</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QLabel" name="label_9">
|
||||||
|
<property name="text">
|
||||||
|
<string>Amount precision:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBox_amountPrecision"/>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="0">
|
||||||
|
<widget class="QLabel" name="label_10">
|
||||||
|
<property name="text">
|
||||||
|
<string>Date format:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBox_dateFormat"/>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="0">
|
||||||
|
<widget class="QLabel" name="label_11">
|
||||||
|
<property name="text">
|
||||||
|
<string>Time format:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBox_timeFormat"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="checkBox_multiBroadcast">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Preferred fiat currency:</string>
|
<string>Multibroadcast outgoing transactions</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item>
|
||||||
<widget class="QComboBox" name="comboBox_fiatCurrency">
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>USD</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>EUR</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>RUB</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>GBP</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>AUD</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>CAD</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>CHF</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>CNY</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>CZK</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>JPY</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>KRW</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>MXN</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>NZD</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>SEK</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>THB</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>TRY</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>ZAR</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="label_6">
|
|
||||||
<property name="text">
|
|
||||||
<string>Appearance:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QComboBox" name="comboBox_skin"/>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QLabel" name="label_2">
|
|
||||||
<property name="text">
|
|
||||||
<string>Block explorer:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QComboBox" name="comboBox_blockExplorer">
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>exploremonero.com</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>xmrchain.net</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>moneroblocks.info</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>blockchair.com</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="7" column="0">
|
|
||||||
<widget class="QCheckBox" name="checkBox_externalLink">
|
<widget class="QCheckBox" name="checkBox_externalLink">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Warn before opening external link</string>
|
<string>Warn before opening external link</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="0">
|
<item>
|
||||||
<widget class="QCheckBox" name="checkBox_hideBalance">
|
<widget class="QCheckBox" name="checkBox_hideBalance">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Hide balance</string>
|
<string>Hide balance</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
|
||||||
<widget class="QLabel" name="label_8">
|
|
||||||
<property name="text">
|
|
||||||
<string>Reddit frontend:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="1">
|
|
||||||
<widget class="QComboBox" name="comboBox_redditFrontend">
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>old.reddit.com</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>reddit.com</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>teddit.net</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="0">
|
|
||||||
<widget class="QLabel" name="label_9">
|
|
||||||
<property name="text">
|
|
||||||
<string>Amount precision:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="1">
|
|
||||||
<widget class="QComboBox" name="comboBox_amountPrecision"/>
|
|
||||||
</item>
|
|
||||||
<item row="5" column="0">
|
|
||||||
<widget class="QLabel" name="label_10">
|
|
||||||
<property name="text">
|
|
||||||
<string>Date format:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="5" column="1">
|
|
||||||
<widget class="QComboBox" name="comboBox_dateFormat"/>
|
|
||||||
</item>
|
|
||||||
<item row="6" column="0">
|
|
||||||
<widget class="QLabel" name="label_11">
|
|
||||||
<property name="text">
|
|
||||||
<string>Time format:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="6" column="1">
|
|
||||||
<widget class="QComboBox" name="comboBox_timeFormat"/>
|
|
||||||
</item>
|
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="tab_node">
|
<widget class="QWidget" name="tab_node">
|
||||||
|
|
|
@ -50,7 +50,8 @@ static const QHash<Config::ConfigKey, ConfigDirective> configStrings = {
|
||||||
{Config::GUI_HistoryViewState, {QS("GUI_HistoryViewState"), {}}},
|
{Config::GUI_HistoryViewState, {QS("GUI_HistoryViewState"), {}}},
|
||||||
{Config::amountPrecision, {QS("amountPrecision"), 4}},
|
{Config::amountPrecision, {QS("amountPrecision"), 4}},
|
||||||
{Config::dateFormat, {QS("dateFormat"), "yyyy-MM-dd"}},
|
{Config::dateFormat, {QS("dateFormat"), "yyyy-MM-dd"}},
|
||||||
{Config::timeFormat, {QS("timeFormat"), "HH:mm"}}
|
{Config::timeFormat, {QS("timeFormat"), "HH:mm"}},
|
||||||
|
{Config::multiBroadcast, {QS("multiBroadcast"), true}}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,8 @@ public:
|
||||||
amountPrecision,
|
amountPrecision,
|
||||||
portableMode,
|
portableMode,
|
||||||
dateFormat,
|
dateFormat,
|
||||||
timeFormat
|
timeFormat,
|
||||||
|
multiBroadcast
|
||||||
};
|
};
|
||||||
|
|
||||||
~Config() override;
|
~Config() override;
|
||||||
|
|
|
@ -376,6 +376,10 @@ QList<FeatherNode> Nodes::customNodes() {
|
||||||
return m_customNodes;
|
return m_customNodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QList<FeatherNode> Nodes::websocketNodes() {
|
||||||
|
return m_websocketNodes;
|
||||||
|
}
|
||||||
|
|
||||||
FeatherNode Nodes::connection() {
|
FeatherNode Nodes::connection() {
|
||||||
return m_connection;
|
return m_connection;
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,8 +69,8 @@ struct FeatherNode {
|
||||||
return QString("%1%2").arg(auth).arg(this->address);
|
return QString("%1%2").arg(auth).arg(this->address);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString as_url() {
|
QString as_url() const {
|
||||||
return QString("%1://%2/get_info").arg(this->isHttps ? "https": "http",this->full);
|
return QString("%1://%2").arg(this->isHttps ? "https": "http",this->full);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator == (const FeatherNode &other) const {
|
bool operator == (const FeatherNode &other) const {
|
||||||
|
@ -88,7 +88,9 @@ public:
|
||||||
|
|
||||||
NodeSource source();
|
NodeSource source();
|
||||||
FeatherNode connection();
|
FeatherNode connection();
|
||||||
|
|
||||||
QList<FeatherNode> customNodes();
|
QList<FeatherNode> customNodes();
|
||||||
|
QList<FeatherNode> websocketNodes();
|
||||||
|
|
||||||
NodeModel *modelWebsocket;
|
NodeModel *modelWebsocket;
|
||||||
NodeModel *modelCustom;
|
NodeModel *modelCustom;
|
||||||
|
|
|
@ -94,7 +94,7 @@ void NodeWidget::onContextConnect() {
|
||||||
void NodeWidget::onContextStatusURL() {
|
void NodeWidget::onContextStatusURL() {
|
||||||
FeatherNode node = this->selectedNode();
|
FeatherNode node = this->selectedNode();
|
||||||
if (!node.full.isEmpty())
|
if (!node.full.isEmpty())
|
||||||
Utils::externalLinkWarning(this, node.as_url());
|
Utils::externalLinkWarning(this, QString("%1/get_info").arg(node.as_url()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void NodeWidget::onContextNodeCopy() {
|
void NodeWidget::onContextNodeCopy() {
|
||||||
|
|
|
@ -69,8 +69,7 @@ WalletWizard::WalletWizard(AppContext *ctx, WalletWizard::Page startPage, QWidge
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(openWalletPage, &PageOpenWallet::openWallet, [=](const QString &path){
|
connect(openWalletPage, &PageOpenWallet::openWallet, [=](const QString &path){
|
||||||
const auto walletPassword = this->field("walletPassword").toString();
|
emit openWallet(path, "");
|
||||||
emit openWallet(path, walletPassword);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue