Qt/Options: Expose maxuploadtarget in GUI using rwconf

This commit is contained in:
Luke Dashjr 2016-02-11 05:58:01 +00:00
parent ea9ad3d1ff
commit 8518a3e56e
4 changed files with 76 additions and 0 deletions

View File

@ -672,6 +672,46 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_maxuploadtarget">
<item>
<widget class="QCheckBox" name="maxuploadtargetCheckbox">
<property name="text">
<string>Try to keep upload traffic under</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="maxuploadtarget"/>
</item>
<item>
<widget class="QLabel" name="maxuploadtargetUnitLabel">
<property name="text">
<string>MB per day</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="buddy">
<cstring>maxuploadtargetCheckbox</cstring>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_maxuploadtarget">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_Network">
<property name="orientation">

View File

@ -132,6 +132,10 @@ OptionsDialog::OptionsDialog(QWidget* parent, bool enableWallet)
connect(ui->connectSocksTor, &QPushButton::toggled, ui->proxyPortTor, &QWidget::setEnabled);
connect(ui->connectSocksTor, &QPushButton::toggled, this, &OptionsDialog::updateProxyValidationState);
ui->maxuploadtarget->setMinimum(144 /* MB/day */);
ui->maxuploadtarget->setMaximum(std::numeric_limits<int>::max());
connect(ui->maxuploadtargetCheckbox, SIGNAL(toggled(bool)), ui->maxuploadtarget, SLOT(setEnabled(bool)));
/* Window elements init */
#ifdef Q_OS_MACOS
/* remove Window tab on Mac */
@ -324,6 +328,20 @@ void OptionsDialog::setMapper()
mapper->addMapping(ui->proxyIpTor, OptionsModel::ProxyIPTor);
mapper->addMapping(ui->proxyPortTor, OptionsModel::ProxyPortTor);
int current_maxuploadtarget = model->data(model->index(OptionsModel::maxuploadtarget, 0), Qt::EditRole).toInt();
if (current_maxuploadtarget == 0) {
ui->maxuploadtargetCheckbox->setChecked(false);
ui->maxuploadtarget->setEnabled(false);
ui->maxuploadtarget->setValue(ui->maxuploadtarget->minimum());
} else {
if (current_maxuploadtarget < ui->maxuploadtarget->minimum()) {
ui->maxuploadtarget->setMinimum(current_maxuploadtarget);
}
ui->maxuploadtargetCheckbox->setChecked(true);
ui->maxuploadtarget->setEnabled(true);
ui->maxuploadtarget->setValue(current_maxuploadtarget);
}
/* Window */
#ifndef Q_OS_MACOS
if (QSystemTrayIcon::isSystemTrayAvailable()) {
@ -431,6 +449,12 @@ void OptionsDialog::on_okButton_clicked()
model->setData(model->index(OptionsModel::FontForMoney, 0), ui->moneyFont->itemData(ui->moneyFont->currentIndex()));
model->setData(model->index(OptionsModel::FontForQRCodes, 0), ui->qrFont->itemData(ui->qrFont->currentIndex()));
if (ui->maxuploadtargetCheckbox->isChecked()) {
model->setData(model->index(OptionsModel::maxuploadtarget, 0), ui->maxuploadtarget->value());
} else {
model->setData(model->index(OptionsModel::maxuploadtarget, 0), 0);
}
mapper->submit();
accept();
updateDefaultProxyNets();

View File

@ -17,6 +17,7 @@
#include <net.h>
#include <netbase.h>
#include <node/chainstatemanager_args.h>
#include <node/context.h>
#include <txdb.h> // for -dbcache defaults
#include <util/string.h>
#include <validation.h> // For DEFAULT_SCRIPTCHECK_THREADS
@ -512,6 +513,8 @@ QVariant OptionsModel::getOption(OptionID option, const std::string& suffix) con
return SettingToBool(setting(), false);
case MaskValues:
return m_mask_values;
case maxuploadtarget:
return qlonglong(node().context()->connman->GetMaxOutboundTarget() / 1024 / 1024);
default:
return QVariant();
}
@ -752,6 +755,14 @@ bool OptionsModel::setOption(OptionID option, const QVariant& value, const std::
m_mask_values = value.toBool();
settings.setValue("mask_values", m_mask_values);
break;
case maxuploadtarget:
{
if (changed()) {
gArgs.ModifyRWConfigFile("maxuploadtarget", value.toString().toStdString());
node().context()->connman->SetMaxOutboundTarget(value.toLongLong() * 1024 * 1024);
}
break;
}
default:
break;
}

View File

@ -78,6 +78,7 @@ public:
Server, // bool
EnablePSBTControls, // bool
MaskValues, // bool
maxuploadtarget,
OptionIDRowCount,
};