X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=settingsDialog.cpp;h=7dac9e71e7fd08710a10224af56eaaa150faab49;hb=210dce51827f41f96a70a2d1c367e79ae45863fd;hp=0bc9852e069e37f0a4e4bdab45213b8799900c46;hpb=7557e186ad03c14c1c7c8960b11f563cce4f0c88;p=yandex-traffic diff --git a/settingsDialog.cpp b/settingsDialog.cpp index 0bc9852..7dac9e7 100644 --- a/settingsDialog.cpp +++ b/settingsDialog.cpp @@ -20,57 +20,135 @@ SettingsDialog::SettingsDialog (Settings *settings) QVBoxLayout *layout = new QVBoxLayout (this); - displayButton = new QMaemo5ValueButton (tr ("Display"), this); - layout->addWidget (displayButton); - updateButton = new QMaemo5ValueButton (tr ("Update"), this); - layout->addWidget (updateButton); - alertsButton = new QMaemo5ValueButton (tr ("Alerts"), this); - layout->addWidget (alertsButton); - - connect (displayButton, SIGNAL (clicked ()), SLOT (displayClicked ())); + _displayButton = new QMaemo5ValueButton (tr ("Display"), this); + _displayButton->setValueLayout (QMaemo5ValueButton::ValueUnderText); + updateDisplayButtonValue (); + layout->addWidget (_displayButton); + _updateButton = new QMaemo5ValueButton (tr ("Update"), this); + _updateButton->setValueLayout (QMaemo5ValueButton::ValueUnderText); + updateUpdateButtonValue (); + layout->addWidget (_updateButton); + + connect (_displayButton, SIGNAL (clicked ()), SLOT (displayClicked ())); + connect (_updateButton, SIGNAL (clicked ()), SLOT (updateClicked ())); } void SettingsDialog::displayClicked () { DisplaySettingsDialog dlg (_settings); + dlg.exec (); + updateDisplayButtonValue (); +} + +void SettingsDialog::updateClicked () +{ + UpdateSettingsDialog dlg (_settings); dlg.exec (); + updateUpdateButtonValue (); +} + + +void SettingsDialog::updateDisplayButtonValue () +{ + QString val; + QStringList list; + + val = tr ("City: ") + _settings->cities ()[_settings->regionID ()] + ", " + tr ("Data: "); + + if (_settings->check (Settings::C_ShowLight)) + list.append (tr ("lights")); + if (_settings->check (Settings::C_ShowRank)) + list.append (tr ("rank")); + if (_settings->check (Settings::C_ShowTime)) + list.append (tr ("time")); + if (_settings->check (Settings::C_ShowHint)) + list.append (tr ("hint")); + + _displayButton->setValueText (val + list.join (", ")); +} + + +void SettingsDialog::updateUpdateButtonValue () +{ + QStringList list, intervals = _settings->updateIntervals (); + QString val; + + val = tr ("Interval: ") + intervals[_settings->getUpdateIntervalIndex ()] + ", " + tr ("Update via: "); + + if (_settings->check (Settings::C_UpdateOnWiFi)) + list.append (tr ("WiFi")); + if (_settings->check (Settings::C_UpdateOnGSM)) + list.append (tr ("GSM")); + + val += list.join (", "); + + if (_settings->check (Settings::C_UpdateWhenLocked)) + val += ", " + tr ("Update when locked"); + else + val += ", " + tr ("Not update when locked"); + + _updateButton->setValueText (val); } // -------------------------------------------------- -// DisplaySettingsDialog +// BaseSettingsDialog // -------------------------------------------------- -DisplaySettingsDialog::DisplaySettingsDialog (Settings *settings) - : QDialog (0), - _settings (settings) +BaseSettingsDialog::BaseSettingsDialog (Settings *settings) + : QDialog (), + _settings (settings), + _layout (new QVBoxLayout) { - setWindowTitle (tr ("Display settings")); - QHBoxLayout *layout = new QHBoxLayout (this); - QVBoxLayout *left_layout = new QVBoxLayout (); QVBoxLayout *right_layout = new QVBoxLayout (); + QSizePolicy policy; // Right side - _saveButton = new QPushButton (tr ("&Save"), this); + _saveButton = new QPushButton (tr ("Save"), this); + policy = _saveButton->sizePolicy (); + policy.setHorizontalPolicy (QSizePolicy::Maximum); + _saveButton->setSizePolicy (policy); + connect (_saveButton, SIGNAL (clicked ()), SLOT (saveClicked ())); + right_layout->addStretch (); right_layout->addWidget (_saveButton); - // Left side - initCities (left_layout); - initChecks (left_layout); - - // Pack them together - layout->addLayout (left_layout); + // Path them together + layout->addLayout (_layout); layout->addLayout (right_layout); + + // Left side would be initialized later +} + + +void BaseSettingsDialog::saveClicked () +{ + saveSettings (); + _settings->save (); + accept (); +} + + +// -------------------------------------------------- +// DisplaySettingsDialog +// -------------------------------------------------- +DisplaySettingsDialog::DisplaySettingsDialog (Settings *_settings) + : BaseSettingsDialog (_settings) +{ + setWindowTitle (tr ("Display settings")); + setMinimumSize (300, 400); + + initCities (layout ()); + initChecks (layout ()); } void DisplaySettingsDialog::initCities (QBoxLayout *layout) { _cities = new QListWidget (this); - QMap cities_map = _settings->cities (); + QMap cities_map = settings ()->cities (); QMap::iterator it = cities_map.begin (); // Populate list with cities @@ -78,7 +156,7 @@ void DisplaySettingsDialog::initCities (QBoxLayout *layout) QListWidgetItem *item = new QListWidgetItem (it.value (), _cities); item->setData (Qt::UserRole, QVariant (it.key ())); - if (it.key () == _settings->regionID ()) + if (it.key () == settings ()->regionID ()) _cities->setCurrentItem (item); it++; } @@ -91,10 +169,14 @@ void DisplaySettingsDialog::initChecks (QBoxLayout *layout) { QGridLayout *grid = new QGridLayout; - _showLight = new QCheckBox ("Light", this); - _showRank = new QCheckBox ("Rank", this); - _showTime = new QCheckBox ("Time", this); - _showHint = new QCheckBox ("Hint", this); + _showLight = new QCheckBox (tr ("Light"), this); + _showLight->setChecked (settings ()->check (Settings::C_ShowLight)); + _showRank = new QCheckBox (tr ("Rank"), this); + _showRank->setChecked (settings ()->check (Settings::C_ShowRank)); + _showTime = new QCheckBox (tr ("Time"), this); + _showTime->setChecked (settings ()->check (Settings::C_ShowTime)); + _showHint = new QCheckBox (tr ("Hint"), this); + _showHint->setChecked (settings ()->check (Settings::C_ShowHint)); grid->addWidget (_showLight, 0, 0); grid->addWidget (_showRank, 0, 1); @@ -103,3 +185,78 @@ void DisplaySettingsDialog::initChecks (QBoxLayout *layout) layout->addLayout (grid); } + + +void DisplaySettingsDialog::saveSettings () +{ + QListWidgetItem *cur = _cities->currentItem (); + + if (cur) + settings ()->setRegionID (cur->data (Qt::UserRole).toString ()); + + settings ()->setCheck (Settings::C_ShowLight, _showLight->isChecked ()); + settings ()->setCheck (Settings::C_ShowRank, _showRank->isChecked ()); + settings ()->setCheck (Settings::C_ShowTime, _showTime->isChecked ()); + settings ()->setCheck (Settings::C_ShowHint, _showHint->isChecked ()); +} + + +// -------------------------------------------------- +// UpdateSettingsDialog +// -------------------------------------------------- +UpdateSettingsDialog::UpdateSettingsDialog (Settings *_settings) + : BaseSettingsDialog (_settings) +{ + setWindowTitle (tr ("Update settings")); + + _wifiUpdate = new QCheckBox (tr ("Update via WiFi"), this); + _wifiUpdate->setChecked (settings ()->check (Settings::C_UpdateOnWiFi)); + _gsmUpdate = new QCheckBox (tr ("Update via GSM"), this); + _gsmUpdate->setChecked (settings ()->check (Settings::C_UpdateOnGSM)); + _lockedUpdate = new QCheckBox (tr ("Update when device locked"), this); + _lockedUpdate->setChecked (settings ()->check (Settings::C_UpdateWhenLocked)); + + initUpdateInterval (layout ()); + + layout ()->addWidget (_wifiUpdate); + layout ()->addWidget (_gsmUpdate); + layout ()->addWidget (_lockedUpdate); +} + + +void UpdateSettingsDialog::saveSettings () +{ +#ifdef Q_WS_MAEMO_5 + QMaemo5ListPickSelector *selector = static_cast (_intervalButton->pickSelector ()); + + if (selector) + settings ()->setUpdateIntervalIndex (selector->currentIndex ()); +#endif + settings ()->setCheck (Settings::C_UpdateOnWiFi, _wifiUpdate->isChecked ()); + settings ()->setCheck (Settings::C_UpdateOnGSM, _gsmUpdate->isChecked ()); + settings ()->setCheck (Settings::C_UpdateWhenLocked, _lockedUpdate->isChecked ()); +} + + +void UpdateSettingsDialog::initUpdateInterval (QBoxLayout *layout) +{ + _intervalButton = new QMaemo5ValueButton (tr ("Update interval"), this); + layout->addWidget (_intervalButton); + +#ifdef Q_WS_MAEMO_5 + QMaemo5ListPickSelector *selector = new QMaemo5ListPickSelector; + QStandardItemModel *model = new QStandardItemModel (0, 1); + QStringList updateIntervals = settings ()->updateIntervals (); + QStringList::iterator it = updateIntervals.begin (); + + while (it != updateIntervals.end ()) { + model->appendRow (new QStandardItem (*it)); + it++; + } + + selector->setModel (model); + selector->setCurrentIndex (settings ()->getUpdateIntervalIndex ()); + + _intervalButton->setPickSelector (selector); +#endif +}