6 #include "QtMaemo5Adapters.hpp"
9 #include "settingsDialog.hpp"
12 // --------------------------------------------------
14 // --------------------------------------------------
15 SettingsDialog::SettingsDialog (Settings *settings)
19 setWindowTitle (tr ("Settings"));
21 QVBoxLayout *layout = new QVBoxLayout (this);
23 _displayButton = new QMaemo5ValueButton (tr ("Display"), this);
24 _displayButton->setValueLayout (QMaemo5ValueButton::ValueUnderText);
25 updateDisplayButtonValue ();
26 layout->addWidget (_displayButton);
27 _updateButton = new QMaemo5ValueButton (tr ("Update"), this);
28 _updateButton->setValueLayout (QMaemo5ValueButton::ValueUnderText);
29 updateUpdateButtonValue ();
30 layout->addWidget (_updateButton);
32 connect (_displayButton, SIGNAL (clicked ()), SLOT (displayClicked ()));
33 connect (_updateButton, SIGNAL (clicked ()), SLOT (updateClicked ()));
37 void SettingsDialog::displayClicked ()
39 DisplaySettingsDialog dlg (_settings);
41 updateDisplayButtonValue ();
45 void SettingsDialog::updateClicked ()
47 UpdateSettingsDialog dlg (_settings);
49 updateUpdateButtonValue ();
53 void SettingsDialog::updateDisplayButtonValue ()
58 val = tr ("City: ") + _settings->cities ()[_settings->regionID ()] + ", " + tr ("Data: ");
60 if (_settings->check (Settings::C_ShowLight))
61 list.append (tr ("lights"));
62 if (_settings->check (Settings::C_ShowRank))
63 list.append (tr ("rank"));
64 if (_settings->check (Settings::C_ShowTime))
65 list.append (tr ("time"));
66 if (_settings->check (Settings::C_ShowHint))
67 list.append (tr ("hint"));
69 _displayButton->setValueText (val + list.join (", "));
73 void SettingsDialog::updateUpdateButtonValue ()
75 QStringList list, intervals = _settings->updateIntervals ();
78 val = tr ("Interval: ") + intervals[_settings->getUpdateIntervalIndex ()] + ", " + tr ("Update via: ");
80 if (_settings->check (Settings::C_UpdateOnWiFi))
81 list.append (tr ("WiFi"));
82 if (_settings->check (Settings::C_UpdateOnGSM))
83 list.append (tr ("GSM"));
85 val += list.join (", ");
87 if (_settings->check (Settings::C_UpdateWhenLocked))
88 val += ", " + tr ("Update when locked");
90 val += ", " + tr ("Not update when locked");
92 _updateButton->setValueText (val);
96 // --------------------------------------------------
98 // --------------------------------------------------
99 BaseSettingsDialog::BaseSettingsDialog (Settings *settings)
101 _settings (settings),
102 _layout (new QVBoxLayout)
104 QHBoxLayout *layout = new QHBoxLayout (this);
105 QVBoxLayout *right_layout = new QVBoxLayout ();
109 _saveButton = new QPushButton (tr ("Save"), this);
110 policy = _saveButton->sizePolicy ();
111 policy.setHorizontalPolicy (QSizePolicy::Maximum);
112 _saveButton->setSizePolicy (policy);
113 connect (_saveButton, SIGNAL (clicked ()), SLOT (saveClicked ()));
115 right_layout->addStretch ();
116 right_layout->addWidget (_saveButton);
118 // Path them together
119 layout->addLayout (_layout);
120 layout->addLayout (right_layout);
122 // Left side would be initialized later
126 void BaseSettingsDialog::saveClicked ()
134 // --------------------------------------------------
135 // DisplaySettingsDialog
136 // --------------------------------------------------
137 DisplaySettingsDialog::DisplaySettingsDialog (Settings *_settings)
138 : BaseSettingsDialog (_settings)
140 setWindowTitle (tr ("Display settings"));
141 setMinimumSize (300, 400);
143 initCities (layout ());
144 initChecks (layout ());
148 void DisplaySettingsDialog::initCities (QBoxLayout *layout)
150 _cities = new QListWidget (this);
151 QMap<QString, QString> cities_map = settings ()->cities ();
152 QMap<QString, QString>::iterator it = cities_map.begin ();
154 // Populate list with cities
155 while (it != cities_map.end ()) {
156 QListWidgetItem *item = new QListWidgetItem (it.value (), _cities);
158 item->setData (Qt::UserRole, QVariant (it.key ()));
159 if (it.key () == settings ()->regionID ())
160 _cities->setCurrentItem (item);
164 layout->addWidget (_cities);
168 void DisplaySettingsDialog::initChecks (QBoxLayout *layout)
170 QGridLayout *grid = new QGridLayout;
172 _showLight = new QCheckBox (tr ("Light"), this);
173 _showLight->setChecked (settings ()->check (Settings::C_ShowLight));
174 _showRank = new QCheckBox (tr ("Rank"), this);
175 _showRank->setChecked (settings ()->check (Settings::C_ShowRank));
176 _showTime = new QCheckBox (tr ("Time"), this);
177 _showTime->setChecked (settings ()->check (Settings::C_ShowTime));
178 _showHint = new QCheckBox (tr ("Hint"), this);
179 _showHint->setChecked (settings ()->check (Settings::C_ShowHint));
181 grid->addWidget (_showLight, 0, 0);
182 grid->addWidget (_showRank, 0, 1);
183 grid->addWidget (_showTime, 1, 0);
184 grid->addWidget (_showHint, 1, 1);
186 layout->addLayout (grid);
190 void DisplaySettingsDialog::saveSettings ()
192 QListWidgetItem *cur = _cities->currentItem ();
195 settings ()->setRegionID (cur->data (Qt::UserRole).toString ());
197 settings ()->setCheck (Settings::C_ShowLight, _showLight->isChecked ());
198 settings ()->setCheck (Settings::C_ShowRank, _showRank->isChecked ());
199 settings ()->setCheck (Settings::C_ShowTime, _showTime->isChecked ());
200 settings ()->setCheck (Settings::C_ShowHint, _showHint->isChecked ());
204 // --------------------------------------------------
205 // UpdateSettingsDialog
206 // --------------------------------------------------
207 UpdateSettingsDialog::UpdateSettingsDialog (Settings *_settings)
208 : BaseSettingsDialog (_settings)
210 setWindowTitle (tr ("Update settings"));
212 _wifiUpdate = new QCheckBox (tr ("Update via WiFi"), this);
213 _wifiUpdate->setChecked (settings ()->check (Settings::C_UpdateOnWiFi));
214 _gsmUpdate = new QCheckBox (tr ("Update via GSM"), this);
215 _gsmUpdate->setChecked (settings ()->check (Settings::C_UpdateOnGSM));
216 _lockedUpdate = new QCheckBox (tr ("Update when device locked"), this);
217 _lockedUpdate->setChecked (settings ()->check (Settings::C_UpdateWhenLocked));
219 initUpdateInterval (layout ());
221 layout ()->addWidget (_wifiUpdate);
222 layout ()->addWidget (_gsmUpdate);
223 layout ()->addWidget (_lockedUpdate);
227 void UpdateSettingsDialog::saveSettings ()
230 QMaemo5ListPickSelector *selector = static_cast<QMaemo5ListPickSelector*> (_intervalButton->pickSelector ());
233 settings ()->setUpdateIntervalIndex (selector->currentIndex ());
235 settings ()->setCheck (Settings::C_UpdateOnWiFi, _wifiUpdate->isChecked ());
236 settings ()->setCheck (Settings::C_UpdateOnGSM, _gsmUpdate->isChecked ());
237 settings ()->setCheck (Settings::C_UpdateWhenLocked, _lockedUpdate->isChecked ());
241 void UpdateSettingsDialog::initUpdateInterval (QBoxLayout *layout)
243 _intervalButton = new QMaemo5ValueButton (tr ("Update interval"), this);
244 layout->addWidget (_intervalButton);
247 QMaemo5ListPickSelector *selector = new QMaemo5ListPickSelector;
248 QStandardItemModel *model = new QStandardItemModel (0, 1);
249 QStringList updateIntervals = settings ()->updateIntervals ();
250 QStringList::iterator it = updateIntervals.begin ();
252 while (it != updateIntervals.end ()) {
253 model->appendRow (new QStandardItem (*it));
257 selector->setModel (model);
258 selector->setCurrentIndex (settings ()->getUpdateIntervalIndex ());
260 _intervalButton->setPickSelector (selector);