Network options: External seeder option
[novacoin.git] / src / qt / optionsdialog.cpp
index c964fc3..63b5c7d 100644 (file)
 #include <QMessageBox>
 #include <QRegExp>
 #include <QRegExpValidator>
+#include <QKeyEvent>
+#include <QFileDialog>
+
+#if QT_VERSION < 0x050000
+#include <QDesktopServices>
+#else
+#include <QStandardPaths>
+#endif
 
 OptionsDialog::OptionsDialog(QWidget *parent) :
-    QDialog(parent, DIALOGWINDOWHINTS),
+    QWidget(parent, DIALOGWINDOWHINTS),
     ui(new Ui::OptionsDialog),
     model(0),
     mapper(0),
@@ -29,10 +37,6 @@ OptionsDialog::OptionsDialog(QWidget *parent) :
     ui->setupUi(this);
 
     /* Network elements init */
-#ifndef USE_UPNP
-    ui->mapPortUpnp->setEnabled(false);
-#endif
-
     ui->proxyIp->setEnabled(false);
     ui->proxyPort->setEnabled(false);
     ui->proxyPort->setValidator(new QIntValidator(1, 65535, this));
@@ -157,8 +161,6 @@ void OptionsDialog::setMapper()
     mapper->addMapping(ui->detachDatabases, OptionsModel::DetachDatabases);
 
     /* Network */
-    mapper->addMapping(ui->mapPortUpnp, OptionsModel::MapPortUPnP);
-
     mapper->addMapping(ui->connectSocks, OptionsModel::ProxyUse);
     mapper->addMapping(ui->proxyIp, OptionsModel::ProxyIP);
     mapper->addMapping(ui->proxyPort, OptionsModel::ProxyPort);
@@ -169,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 */
@@ -216,12 +219,14 @@ void OptionsDialog::setSaveButtonState(bool fState)
 void OptionsDialog::on_okButton_clicked()
 {
     mapper->submit();
-    accept();
+//    accept();
+    close();
 }
 
 void OptionsDialog::on_cancelButton_clicked()
 {
-    reject();
+//    reject();
+    close();
 }
 
 void OptionsDialog::on_applyButton_clicked()
@@ -332,5 +337,33 @@ bool OptionsDialog::eventFilter(QObject *object, QEvent *event)
             emit torIpValid(ui->torIp, LookupNumeric(ui->torIp->text().toStdString().c_str(), addr));
         }
     }
-    return QDialog::eventFilter(object, event);
+    return QWidget::eventFilter(object, event);
+}
+
+void OptionsDialog::keyPressEvent(QKeyEvent *event)
+{
+#ifdef ANDROID
+    if(windowType() != Qt::Widget && event->key() == Qt::Key_Back)
+    {
+        close();
+    }
+#else
+    if(windowType() != Qt::Widget && event->key() == Qt::Key_Escape)
+    {
+        close();
+    }
+#endif
+}
+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);
+    }
 }