X-Git-Url: http://git.maemo.org/git/?p=jenirok;a=blobdiff_plain;f=src%2Fgui%2Fsettingsdialog.cpp;h=f9dd623f8134013b4d161f544e2f52d9d3984cbd;hp=25ba29da4a0624f5504049245a7e995e2977cbbf;hb=2136f257ebff2370bdfe7572e0c87ef50705feb2;hpb=89496ceee9788c2908c27ad4e2535f2728310d76 diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp index 25ba29d..f9dd623 100644 --- a/src/gui/settingsdialog.cpp +++ b/src/gui/settingsdialog.cpp @@ -21,6 +21,8 @@ #include #include #include +#include +#include #include #include #include @@ -28,122 +30,190 @@ #include "settings.h" #include "db.h" #include "daemon.h" +#include "cache.h" -QMap SettingsDialog::sites_ = Eniro::getSites(); +QMap SettingsDialog::sites_; SettingsDialog::SettingsDialog(QWidget* parent): QDialog(parent), -usernameInput_(0), passwordInput_(0), cacheInput_(0), siteSelector_(0), autostartSelector_(0) +usernameInput_(0), passwordInput_(0), cacheInput_(0), siteSelector_(0), +autostartSelector_(0) { - setWindowTitle(tr("Settings")); - - DB::connect(); - - QVBoxLayout* left = new QVBoxLayout; - QHBoxLayout* mainLayout = new QHBoxLayout; - QHBoxLayout* username = new QHBoxLayout; - QHBoxLayout* password = new QHBoxLayout; - QHBoxLayout* cache = new QHBoxLayout; - - QLabel* usernameLabel = new QLabel(tr("Eniro username")); - usernameInput_ = new QLineEdit(Settings::instance()->get("eniro_username")); - - QLabel* passwordLabel = new QLabel(tr("Eniro password")); - passwordInput_ = new QLineEdit(Settings::instance()->get("eniro_password")); - - QLabel* cacheLabel = new QLabel(tr("Cache size (numbers)")); - cacheInput_ = new QLineEdit(Settings::instance()->get("cache_size")); - cacheInput_->setValidator(new QIntValidator(0, 10000, this)); - - siteSelector_ = new ButtonSelector(tr("Eniro site"), this); - QString site = Settings::instance()->get("eniro_site"); - int i = 0; - QMap ::const_iterator it; - for(it = sites_.begin(); it != sites_.end(); it++) - { - siteSelector_->addItem(it.value().name, it.value().id); - - if(it.value().id == site) - { - siteSelector_->setCurrentIndex(i); - } - - i++; - } - - autostartSelector_ = new ButtonSelector(tr("Autostart"), this); - QString autostart = Settings::instance()->get("autostart"); - autostartSelector_->addItem(tr("Enabled"), "1"); - autostartSelector_->addItem(tr("Disabled"), "0"); - autostartSelector_->setCurrentIndex(autostart == "1" ? 0 : 1); - - QPushButton* submitButton = new QPushButton(tr("Save")); - connect(submitButton, SIGNAL(pressed()), this, SLOT(saveSettings())); - - username->addWidget(usernameLabel); - username->addWidget(usernameInput_); - password->addWidget(passwordLabel); - password->addWidget(passwordInput_); - cache->addWidget(cacheLabel); - cache->addWidget(cacheInput_); - left->addLayout(username); - left->addLayout(password); - left->addLayout(cache); - left->addWidget(siteSelector_); - left->addWidget(autostartSelector_); - - mainLayout->addLayout(left); - mainLayout->addWidget(submitButton); - - setLayout(mainLayout); - - DB::disconnect(); + setWindowTitle(tr("Settings")); + + DB::connect(); + + QVBoxLayout* general = new QVBoxLayout; + QVBoxLayout* daemon = new QVBoxLayout; + QHBoxLayout* mainLayout = new QHBoxLayout; + QHBoxLayout* username = new QHBoxLayout; + QHBoxLayout* password = new QHBoxLayout; + QHBoxLayout* cache = new QHBoxLayout; + + QLabel* usernameLabel = new QLabel(tr("Eniro username")); + usernameInput_ = new QLineEdit(Settings::instance()->get("eniro_username")); + + QLabel* passwordLabel = new QLabel(tr("Eniro password")); + passwordInput_ = new QLineEdit(Settings::instance()->get("eniro_password")); + passwordInput_->setEchoMode(QLineEdit::PasswordEchoOnEdit); + + QLabel* cacheLabel = new QLabel(tr("Cache size (numbers)")); + cacheInput_ = new QLineEdit(Settings::instance()->get("cache_size")); + cacheInput_->setValidator(new QIntValidator(0, 10000, this)); + QPushButton* cacheResetButton = new QPushButton(tr("Clear"), this); + connect(cacheResetButton, SIGNAL(pressed()), this, SLOT(resetCache())); + + siteSelector_ = new ButtonSelector(tr("Eniro site"), this); + QString site = Settings::instance()->get("eniro_site"); + int i = 0; + + if(sites_.empty()) + { + sites_ = Eniro::getSites(); + } + + QMap ::const_iterator it; + for(it = sites_.begin(); it != sites_.end(); it++) + { + QString name; + + switch(it.key()) + { + case Eniro::FI: + name = tr("Finnish"); + break; + case Eniro::SE: + name = tr("Swedish"); + break; + case Eniro::DK: + name = tr("Danish"); + break; + default: + qDebug() << "Unknown site"; + continue; + + } + siteSelector_->addItem(name, it.value().id); + + if(it.value().id == site) + { + siteSelector_->setCurrentIndex(i); + } + + i++; + } + + autostartSelector_ = new ButtonSelector(tr("Autostart"), this); + QString autostart = Settings::instance()->get("autostart"); + autostartSelector_->addItem(tr("Enabled"), "1"); + autostartSelector_->addItem(tr("Disabled"), "0"); + autostartSelector_->setCurrentIndex(autostart == "1" ? 0 : 1); + + autoconnectCheck_ = new QCheckBox(tr("Allow daemon to connect automatically")); + QString autoconnect = Settings::instance()->get("autoconnect"); + autoconnectCheck_->setChecked(autoconnect == "1"); + + connectionSelector_ = new ConnectionSelector(tr("Connection to use"), this); + QString selectedConnection = Settings::instance()->get("connection"); + + if(selectedConnection != "0") + { + connectionSelector_->addItem(Settings::instance()->get("connection_name"), selectedConnection); + connectionSelector_->selectByValue(selectedConnection); + } + + QPushButton* submitButton = new QPushButton(tr("Save"), this); + connect(submitButton, SIGNAL(pressed()), this, SLOT(saveSettings())); + + username->addWidget(usernameLabel); + username->addWidget(usernameInput_); + password->addWidget(passwordLabel); + password->addWidget(passwordInput_); + cache->addWidget(cacheLabel); + cache->addWidget(cacheInput_); + cache->addWidget(cacheResetButton); + general->addLayout(username); + general->addLayout(password); + general->addLayout(cache); + general->addWidget(siteSelector_); + + daemon->addWidget(autostartSelector_); + daemon->addWidget(autoconnectCheck_); + daemon->addWidget(connectionSelector_); + + QDialogButtonBox* buttons = new QDialogButtonBox; + buttons->setCenterButtons(false); + buttons->addButton(submitButton, QDialogButtonBox::AcceptRole); + + QTabWidget* tabs = new QTabWidget; + + QWidget* generalTab = new QWidget; + generalTab->setLayout(general); + + QWidget* daemonTab = new QWidget; + daemonTab->setLayout(daemon); + + tabs->addTab(generalTab, tr("General")); + tabs->addTab(daemonTab, tr("Daemon")); + + mainLayout->addWidget(tabs); + mainLayout->addWidget(buttons); + + setLayout(mainLayout); + + DB::disconnect(); } void SettingsDialog::saveSettings() { - DB::connect(); + hide(); + + DB::connect(); + + Settings::instance()->set("eniro_username", usernameInput_->text()); + Settings::instance()->set("eniro_password", passwordInput_->text()); + Settings::instance()->set("cache_size", cacheInput_->text()); + QString site = siteSelector_->value().toString(); + Settings::instance()->set("site", site); + QString autostart = autostartSelector_->value().toString(); + Settings::instance()->set("autostart", autostart); + bool autoconnect = autoconnectCheck_->isChecked(); + Settings::instance()->set("autoconnect", autoconnect ? "1" : "0"); + QString connection = connectionSelector_->value().toString(); + Settings::instance()->set("connection", connection); + Settings::instance()->set("connection_name", connectionSelector_->text()); + + DB::disconnect(); + + if((site != currentSite_ || + autoconnect != currentAutoconnect_ || + connection != currentConnection_) && Daemon::isRunning()) + { + QMaemo5InformationBox::information(this, tr("Restarting daemon...")); + Daemon::restart(); + currentSite_ = site; + } - Settings::instance()->set("eniro_username", usernameInput_->text()); - Settings::instance()->set("eniro_password", passwordInput_->text()); - Settings::instance()->set("cache_size", cacheInput_->text()); - QString site = siteSelector_->value().toString(); - Settings::instance()->set("site", site); - QString autostart = autostartSelector_->value().toString(); - Settings::instance()->set("autostart", autostart); - - DB::disconnect(); - - hide(); - - if(site != currentSite_ && Daemon::isRunning()) - { - QMaemo5InformationBox::information(this, tr("Restarting daemon...")); - Daemon::restart(); - currentSite_ = site; - } - - if(autostart != currentAutostart_) - { - bool value = false; +} - if(autostart == "1") - { - value = true; - } +void SettingsDialog::setVisible(bool visible) +{ + QDialog::setVisible(visible); - Daemon::setAutostart(value); - } + if(visible) + { + currentSite_ = siteSelector_->value().toString(); + currentConnection_ = connectionSelector_->value().toString(); + currentAutoconnect_ = autoconnectCheck_->isChecked(); + } } -void SettingsDialog::setVisible(bool visible) +void SettingsDialog::resetCache() { - QDialog::setVisible(visible); - - if(visible) - { - currentSite_ = siteSelector_->value().toString(); - currentAutostart_ = autostartSelector_->value().toString(); - } + int ret = Cache::instance().clear(); + if(ret >= 0) + { + QMaemo5InformationBox::information(this, tr("%n number(s) were deleted from cache", "", ret)); + } }