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 layout->addWidget (_displayButton);
25 _updateButton = new QMaemo5ValueButton (tr ("Update"), this);
26 layout->addWidget (_updateButton);
27 _alertsButton = new QMaemo5ValueButton (tr ("Alerts"), this);
28 layout->addWidget (_alertsButton);
30 connect (_displayButton, SIGNAL (clicked ()), SLOT (displayClicked ()));
31 connect (_updateButton, SIGNAL (clicked ()), SLOT (updateClicked ()));
35 void SettingsDialog::displayClicked ()
37 DisplaySettingsDialog dlg (_settings);
42 void SettingsDialog::updateClicked ()
44 UpdateSettingsDialog dlg (_settings);
49 // --------------------------------------------------
51 // --------------------------------------------------
52 BaseSettingsDialog::BaseSettingsDialog (Settings *settings)
55 _layout (new QVBoxLayout)
57 QHBoxLayout *layout = new QHBoxLayout (this);
58 QVBoxLayout *right_layout = new QVBoxLayout ();
62 _saveButton = new QPushButton (tr ("Save"), this);
63 policy = _saveButton->sizePolicy ();
64 policy.setHorizontalPolicy (QSizePolicy::Maximum);
65 _saveButton->setSizePolicy (policy);
66 connect (_saveButton, SIGNAL (clicked ()), SLOT (saveClicked ()));
68 right_layout->addStretch ();
69 right_layout->addWidget (_saveButton);
72 layout->addLayout (_layout);
73 layout->addLayout (right_layout);
75 // Left side would be initialized later
79 void BaseSettingsDialog::saveClicked ()
87 // --------------------------------------------------
88 // DisplaySettingsDialog
89 // --------------------------------------------------
90 DisplaySettingsDialog::DisplaySettingsDialog (Settings *_settings)
91 : BaseSettingsDialog (_settings)
93 setWindowTitle (tr ("Display settings"));
94 setMinimumSize (300, 400);
96 initCities (layout ());
97 initChecks (layout ());
101 void DisplaySettingsDialog::initCities (QBoxLayout *layout)
103 _cities = new QListWidget (this);
104 QMap<QString, QString> cities_map = settings ()->cities ();
105 QMap<QString, QString>::iterator it = cities_map.begin ();
107 // Populate list with cities
108 while (it != cities_map.end ()) {
109 QListWidgetItem *item = new QListWidgetItem (it.value (), _cities);
111 item->setData (Qt::UserRole, QVariant (it.key ()));
112 if (it.key () == settings ()->regionID ())
113 _cities->setCurrentItem (item);
117 layout->addWidget (_cities);
121 void DisplaySettingsDialog::initChecks (QBoxLayout *layout)
123 QGridLayout *grid = new QGridLayout;
125 _showLight = new QCheckBox (tr ("Light"), this);
126 _showLight->setChecked (settings ()->check (Settings::C_ShowLight));
127 _showRank = new QCheckBox (tr ("Rank"), this);
128 _showRank->setChecked (settings ()->check (Settings::C_ShowRank));
129 _showTime = new QCheckBox (tr ("Time"), this);
130 _showTime->setChecked (settings ()->check (Settings::C_ShowTime));
131 _showHint = new QCheckBox (tr ("Hint"), this);
132 _showHint->setChecked (settings ()->check (Settings::C_ShowHint));
134 grid->addWidget (_showLight, 0, 0);
135 grid->addWidget (_showRank, 0, 1);
136 grid->addWidget (_showTime, 1, 0);
137 grid->addWidget (_showHint, 1, 1);
139 layout->addLayout (grid);
143 void DisplaySettingsDialog::saveSettings ()
145 QListWidgetItem *cur = _cities->currentItem ();
148 settings ()->setRegionID (cur->data (Qt::UserRole).toString ());
150 settings ()->setCheck (Settings::C_ShowLight, _showLight->isChecked ());
151 settings ()->setCheck (Settings::C_ShowRank, _showRank->isChecked ());
152 settings ()->setCheck (Settings::C_ShowTime, _showTime->isChecked ());
153 settings ()->setCheck (Settings::C_ShowHint, _showHint->isChecked ());
157 // --------------------------------------------------
158 // UpdateSettingsDialog
159 // --------------------------------------------------
160 UpdateSettingsDialog::UpdateSettingsDialog (Settings *_settings)
161 : BaseSettingsDialog (_settings)
163 setWindowTitle (tr ("Update settings"));
165 _wifiUpdate = new QCheckBox (tr ("Update on WiFi connection"), this);
166 _wifiUpdate->setChecked (settings ()->check (Settings::C_UpdateOnWiFi));
167 _gsmUpdate = new QCheckBox (tr ("Update on GSM connection"), this);
168 _gsmUpdate->setChecked (settings ()->check (Settings::C_UpdateOnGSM));
170 initUpdateInterval (layout ());
172 layout ()->addWidget (_wifiUpdate);
173 layout ()->addWidget (_gsmUpdate);
177 void UpdateSettingsDialog::saveSettings ()
180 QMaemo5ListPickSelector *selector = static_cast<QMaemo5ListPickSelector*> (_intervalButton->pickSelector ());
183 settings ()->setUpdateIntervalIndex (selector->currentIndex ());
185 settings ()->setCheck (Settings::C_UpdateOnWiFi, _wifiUpdate->isChecked ());
186 settings ()->setCheck (Settings::C_UpdateOnGSM, _gsmUpdate->isChecked ());
190 void UpdateSettingsDialog::initUpdateInterval (QBoxLayout *layout)
192 _intervalButton = new QMaemo5ValueButton (tr ("Update interval"), this);
193 layout->addWidget (_intervalButton);
196 QMaemo5ListPickSelector *selector = new QMaemo5ListPickSelector;
197 QStandardItemModel *model = new QStandardItemModel (0, 1);
198 QStringList updateIntervals = settings ()->updateIntervals ();
199 QStringList::iterator it = updateIntervals.begin ();
201 while (it != updateIntervals.end ()) {
202 model->appendRow (new QStandardItem (*it));
206 selector->setModel (model);
207 selector->setCurrentIndex (settings ()->getUpdateIntervalIndex ());
209 _intervalButton->setPickSelector (selector);