From 07fc3447c6e0de124cacba2594426b4c17f7b4d3 Mon Sep 17 00:00:00 2001 From: CryptoManiac Date: Thu, 24 Mar 2016 01:50:20 +0300 Subject: [PATCH] Network options: External seeder option --- novacoin-qt.pro | 1 + src/init.cpp | 2 +- src/qt/forms/optionsdialog.ui | 25 +++++++++++++++++++++++-- src/qt/optionsdialog.cpp | 23 ++++++++++++++++++++++- src/qt/optionsdialog.h | 2 ++ src/qt/optionsmodel.cpp | 9 +++++++++ src/qt/optionsmodel.h | 1 + 7 files changed, 59 insertions(+), 4 deletions(-) diff --git a/novacoin-qt.pro b/novacoin-qt.pro index 4bdce2a..46a3fc7 100644 --- a/novacoin-qt.pro +++ b/novacoin-qt.pro @@ -11,6 +11,7 @@ CONFIG += static # QMAKE_CC=clang # QMAKE_CXX=clang++ +# QMAKE_LINK=clang++ freebsd-g++: QMAKE_TARGET.arch = $$QMAKE_HOST.arch linux-g++: QMAKE_TARGET.arch = $$QMAKE_HOST.arch diff --git a/src/init.cpp b/src/init.cpp index a636b6e..55308ea 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1001,7 +1001,7 @@ bool AppInit2() // ********************************************************* Step 13: IP collection thread strCollectorCommand = GetArg("-peercollector", ""); - if (strCollectorCommand != "") + if (!fTestNet && strCollectorCommand != "") NewThread(ThreadIPCollector, NULL); // ********************************************************* Step 14: finished diff --git a/src/qt/forms/optionsdialog.ui b/src/qt/forms/optionsdialog.ui index 8edfa60..7cf60cf 100644 --- a/src/qt/forms/optionsdialog.ui +++ b/src/qt/forms/optionsdialog.ui @@ -6,7 +6,7 @@ 0 0 - 550 + 595 380 @@ -324,7 +324,28 @@ - + + + + + Seeder command: + + + + + + + + + + Choose ... + + + + + + + Qt::Vertical diff --git a/src/qt/optionsdialog.cpp b/src/qt/optionsdialog.cpp index 79e8260..63b5c7d 100644 --- a/src/qt/optionsdialog.cpp +++ b/src/qt/optionsdialog.cpp @@ -14,6 +14,13 @@ #include #include #include +#include + +#if QT_VERSION < 0x050000 +#include +#else +#include +#endif OptionsDialog::OptionsDialog(QWidget *parent) : QWidget(parent, DIALOGWINDOWHINTS), @@ -164,6 +171,7 @@ void OptionsDialog::setMapper() mapper->addMapping(ui->torPort, OptionsModel::TorPort); mapper->addMapping(ui->TorOnly, OptionsModel::TorOnly); mapper->addMapping(ui->torName, OptionsModel::TorName); + mapper->addMapping(ui->externalSeederCommand, OptionsModel::ExternalSeeder); /* Window */ @@ -345,4 +353,17 @@ void OptionsDialog::keyPressEvent(QKeyEvent *event) close(); } #endif -} \ No newline at end of file +} +void OptionsDialog::on_chooseSeeder_clicked() +{ +#if QT_VERSION < 0x050000 + QString openDir = QDesktopServices::storageLocation(QDesktopServices::ApplicationsLocation); +#else + QString openDir = QStandardPaths::ApplicationsLocation(QStandardPaths::ApplicationsLocation); +#endif + + QString filename = QFileDialog::getOpenFileName(this, tr("Choose peer collector application"), openDir, tr("Applications (*.*)")); + if(!filename.isEmpty()) { + ui->externalSeederCommand->setText(filename); + } +} diff --git a/src/qt/optionsdialog.h b/src/qt/optionsdialog.h index cec9331..b568916 100644 --- a/src/qt/optionsdialog.h +++ b/src/qt/optionsdialog.h @@ -49,6 +49,8 @@ private slots: void handleProxyIpValid(QValidatedLineEdit *object, bool fState); void handleTorIpValid(QValidatedLineEdit *object, bool fState); + void on_chooseSeeder_clicked(); + signals: void proxyIpValid(QValidatedLineEdit *object, bool fValid); void torIpValid(QValidatedLineEdit *object, bool fValid); diff --git a/src/qt/optionsmodel.cpp b/src/qt/optionsmodel.cpp index 7a84ef2..6639e27 100644 --- a/src/qt/optionsmodel.cpp +++ b/src/qt/optionsmodel.cpp @@ -99,6 +99,10 @@ void OptionsModel::Init() } } + if (!fTestNet && settings.contains("externalSeeder") && settings.value("externalSeeder").toString() != "") { + SoftSetArg("-peercollector", settings.value("externalSeeder").toString().toStdString()); + } + if (settings.contains("detachDB")) SoftSetBoolArg("-detachdb", settings.value("detachDB").toBool()); if (!language.isEmpty()) @@ -161,6 +165,8 @@ QVariant OptionsModel::data(const QModelIndex & index, int role) const return settings.value("fTorOnly", false); case TorName: return settings.value("TorName", ""); + case ExternalSeeder: + return settings.value("externalSeeder", ""); case Fee: return QVariant(static_cast(nTransactionFee)); case DisplayUnit: @@ -270,6 +276,9 @@ bool OptionsModel::setData(const QModelIndex & index, const QVariant & value, in settings.setValue("TorName", value.toString()); } break; + case ExternalSeeder: + settings.setValue("externalSeeder", value.toString()); + break; case Fee: nTransactionFee = value.toLongLong(); settings.setValue("nTransactionFee", static_cast(nTransactionFee)); diff --git a/src/qt/optionsmodel.h b/src/qt/optionsmodel.h index e3d2cae..605f821 100644 --- a/src/qt/optionsmodel.h +++ b/src/qt/optionsmodel.h @@ -36,6 +36,7 @@ public: DetachDatabases, // bool Language, // QString CoinControlFeatures, // bool + ExternalSeeder, // QString OptionIDRowCount, }; -- 1.7.1