#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),
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));
ui->torPort->setEnabled(false);
ui->torPort->setValidator(new QIntValidator(1, 65535, this));
ui->TorOnly->setEnabled(false);
+ ui->torName->setEnabled(false);
ui->socksVersion->setEnabled(false);
ui->socksVersion->addItem("5", 5);
connect(ui->connectTor, SIGNAL(toggled(bool)), ui->torIp, SLOT(setEnabled(bool)));
connect(ui->connectTor, SIGNAL(toggled(bool)), ui->torPort, SLOT(setEnabled(bool)));
connect(ui->connectTor, SIGNAL(toggled(bool)), ui->TorOnly, SLOT(setEnabled(bool)));
+ connect(ui->connectTor, SIGNAL(toggled(bool)), ui->torName, SLOT(setEnabled(bool)));
connect(ui->TorOnly, SIGNAL(toggled(bool)), ui->connectSocks, SLOT(setDisabled(bool)));
ui->proxyIp->installEventFilter(this);
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);
mapper->addMapping(ui->torIp, OptionsModel::TorIP);
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 */
#ifndef Q_OS_MAC
void OptionsDialog::on_okButton_clicked()
{
mapper->submit();
- accept();
+// accept();
+ close();
}
void OptionsDialog::on_cancelButton_clicked()
{
- reject();
+// reject();
+ close();
}
void OptionsDialog::on_applyButton_clicked()
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::writableLocation(QStandardPaths::ApplicationsLocation);
+#endif
+
+ QString filename = QFileDialog::getOpenFileName(this, tr("Choose peer collector application"), openDir, tr("Applications (*.*)"));
+ if(!filename.isEmpty()) {
+ ui->externalSeederCommand->setText(filename);
+ }
}