X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fgui%2Fsettingsdialog.cpp;h=337a9bd3026bbc0611517eddc29f8e9272e4cf2c;hb=d187495fd3566da1ee1eb94cc313c2f561a0fac5;hp=bb2d35135c4d7af441cea731050fa1b7e745a77c;hpb=28a07e35293ce3ee730b72de527e9d145fa47129;p=jenirok diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp index bb2d351..337a9bd 100644 --- a/src/gui/settingsdialog.cpp +++ b/src/gui/settingsdialog.cpp @@ -31,30 +31,29 @@ #include "db.h" #include "daemon.h" #include "cache.h" +#include "buttonselector.h" +#include "connectionselector.h" +#include "sourceguiconfig.h" -QMap SettingsDialog::sites_; +QList SettingsDialog::sources_; SettingsDialog::SettingsDialog(QWidget* parent): QDialog(parent), -usernameInput_(0), passwordInput_(0), cacheInput_(0), siteSelector_(0), -autostartSelector_(0) +sourceConfig_(0), cacheInput_(0), sourceSelector_(0), +autostartSelector_(0), connectionSelector_(0), tabs_(0) { 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")); + currentSource_ = Settings::instance()->get("source"); + Source::SourceId sourceId = Source::stringToId(currentSource_); + sourceConfig_ = SourceGuiConfig::getGuiConfig(sourceId, this); - QLabel* passwordLabel = new QLabel(tr("Eniro password")); - passwordInput_ = new QLineEdit(Settings::instance()->get("eniro_password")); - passwordInput_->setEchoMode(QLineEdit::PasswordEchoOnEdit); + Q_ASSERT(sourceConfig_ != 0); QLabel* cacheLabel = new QLabel(tr("Cache size (numbers)")); cacheInput_ = new QLineEdit(Settings::instance()->get("cache_size")); @@ -62,46 +61,44 @@ autostartSelector_(0) 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; + languageSelector_ = new ButtonSelector(tr("Language"), this); + languageSelector_->addItem(tr("Automatic"), ""); - if(sites_.empty()) - { - sites_ = Eniro::getSites(); - } + selectedLanguage_ = Settings::instance()->get("language"); - QMap ::const_iterator it; - for(it = sites_.begin(); it != sites_.end(); it++) + QList langs; + Settings::getLanguages(langs); + + for(int i = 0; i < langs.size(); i++) { - QString name; + languageSelector_->addItem(langs.at(i).name, langs.at(i).id); - switch(it.key()) + if(langs.at(i).id == selectedLanguage_) { - 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; - + languageSelector_->setCurrentIndex(i + 1); } - siteSelector_->addItem(name, it.value().id); + } + + sourceSelector_ = new ButtonSelector(tr("Phonebook"), this); + + if(sources_.isEmpty()) + { + Source::getSources(sources_); + } + + for(int i = 0; i < sources_.size(); i++) + { + sourceSelector_->addItem(sources_.at(i).name, sources_.at(i).id); - if(it.value().id == site) + if(sources_.at(i).id == currentSource_) { - siteSelector_->setCurrentIndex(i); + sourceSelector_->setCurrentIndex(i); } - - i++; } + connect(sourceSelector_, SIGNAL(selected(unsigned int, QString const&, QVariant const&)), + this, SLOT(onSourceSelected(unsigned int, QString const&, QVariant const&))); + autostartSelector_ = new ButtonSelector(tr("Autostart"), this); QString autostart = Settings::instance()->get("autostart"); autostartSelector_->addItem(tr("Enabled"), "1"); @@ -115,17 +112,12 @@ autostartSelector_(0) 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_); + general->addWidget(languageSelector_); + general->addWidget(sourceSelector_); daemon->addWidget(autostartSelector_); daemon->addWidget(connectionSelector_); @@ -134,7 +126,7 @@ autostartSelector_(0) buttons->setCenterButtons(false); buttons->addButton(submitButton, QDialogButtonBox::AcceptRole); - QTabWidget* tabs = new QTabWidget; + tabs_ = new QTabWidget; QWidget* generalTab = new QWidget; generalTab->setLayout(general); @@ -142,52 +134,47 @@ autostartSelector_(0) QWidget* daemonTab = new QWidget; daemonTab->setLayout(daemon); - tabs->addTab(generalTab, tr("General")); - tabs->addTab(daemonTab, tr("Daemon")); + tabs_->addTab(generalTab, tr("General")); + tabs_->addTab(daemonTab, tr("Daemon")); + tabs_->addTab(sourceConfig_, tr("Phonebook settings")); - mainLayout->addWidget(tabs); + mainLayout->addWidget(tabs_); mainLayout->addWidget(buttons); setLayout(mainLayout); - DB::disconnect(); } void SettingsDialog::saveSettings() { hide(); - DB::connect(); + Settings::instance()->startEdit(); - Settings::instance()->set("eniro_username", usernameInput_->text()); - Settings::instance()->set("eniro_password", passwordInput_->text()); + sourceConfig_->save(); Settings::instance()->set("cache_size", cacheInput_->text()); - QString site = siteSelector_->value().toString(); - Settings::instance()->set("site", site); + QString source = sourceSelector_->value().toString(); + Settings::instance()->set("source", source); QString autostart = autostartSelector_->value().toString(); Settings::instance()->set("autostart", autostart); QString connection = connectionSelector_->value().toString(); Settings::instance()->set("connection", connection); Settings::instance()->set("connection_name", connectionSelector_->text()); + QString language = languageSelector_->value().toString(); + Settings::instance()->set("language", language); - DB::disconnect(); + Settings::instance()->endEdit(); - if(site != currentSite_ && Daemon::isRunning()) + if(Daemon::isRunning()) { QMaemo5InformationBox::information(this, tr("Restarting daemon...")); Daemon::restart(); - currentSite_ = site; } -} - -void SettingsDialog::setVisible(bool visible) -{ - QDialog::setVisible(visible); - - if(visible) + if(language != selectedLanguage_) { - currentSite_ = siteSelector_->value().toString(); + QMaemo5InformationBox::information(this, tr("You need to restart Jenirok for language change to take effect.")); + selectedLanguage_ = language; } } @@ -201,3 +188,24 @@ void SettingsDialog::resetCache() QMaemo5InformationBox::information(this, tr("%n number(s) were deleted from cache", "", ret)); } } + +void SettingsDialog::onSourceSelected(unsigned int index, + QString const& text, + QVariant const& value) +{ + Q_UNUSED(index); + Q_UNUSED(text); + + QString source = value.toString(); + + if(source != currentSource_) + { + tabs_->removeTab(tabs_->count() - 1); + delete sourceConfig_; + Source::SourceId sourceId = Source::stringToId(value.toString()); + sourceConfig_ = SourceGuiConfig::getGuiConfig(sourceId, this); + Q_ASSERT(sourceConfig_ != 0); + tabs_->addTab(sourceConfig_, tr("Phonebook settings")); + currentSource_ = source; + } +}