layout->addWidget (_label);
setLayout (layout);
- _light->setVisible (_settings->check (Settings::C_Light));
+ _light->setVisible (_settings->check (Settings::C_ShowLight));
updateSize ();
bool first = true;
_light->setColor (info.color ());
- if (_settings->check (Settings::C_Rank)) {
+ if (_settings->check (Settings::C_ShowRank)) {
data.append (QString::number (info.level ()));
data.append (info.level () > 1 ? tr (" points") : tr (" point"));
first = false;
}
- if (_settings->check (Settings::C_Time)) {
+ if (_settings->check (Settings::C_ShowTime)) {
if (!first)
data.append (", ");
data.append (info.localtime ());
first = false;
}
- if (_settings->check (Settings::C_Hint)) {
+ if (_settings->check (Settings::C_ShowHint)) {
if (!first)
data.append ("\n");
data.append (info.hint ());
dlg.exec ();
// Handle settings
- _light->setVisible (_settings->check (Settings::C_Light));
+ _light->setVisible (_settings->check (Settings::C_ShowLight));
updateSize ();
trafficUpdated ();
{
QSize minSize (0, 80);
- if (_settings->check (Settings::C_Light))
+ if (_settings->check (Settings::C_ShowLight))
minSize += QSize (80, 0);
- if (_settings->check (Settings::C_Hint))
+ if (_settings->check (Settings::C_ShowHint))
minSize += QSize (270, 0);
else {
- if (_settings->check (Settings::C_Time))
+ if (_settings->check (Settings::C_ShowTime))
minSize += QSize (75, 0);
- if (_settings->check (Settings::C_Rank))
+ if (_settings->check (Settings::C_ShowRank))
minSize += QSize (75, 0);
}
_regionID = settings.value ("region", _regionID).toString ();
- _checks[C_Light] = settings.value ("checks/light", _checks[C_Light]).toBool ();
- _checks[C_Rank] = settings.value ("checks/rank", _checks[C_Rank]).toBool ();
- _checks[C_Time] = settings.value ("checks/time", _checks[C_Time]).toBool ();
- _checks[C_Hint] = settings.value ("checks/hint", _checks[C_Hint]).toBool ();
+ _checks[C_ShowLight] = settings.value ("checks/light", _checks[C_ShowLight]).toBool ();
+ _checks[C_ShowRank] = settings.value ("checks/rank", _checks[C_ShowRank]).toBool ();
+ _checks[C_ShowTime] = settings.value ("checks/time", _checks[C_ShowTime]).toBool ();
+ _checks[C_ShowHint] = settings.value ("checks/hint", _checks[C_ShowHint]).toBool ();
+ _checks[C_UpdateOnWiFi] = settings.value ("checks/updateOnWifi", _checks[C_UpdateOnWiFi]).toBool ();
+ _checks[C_UpdateOnGSM] = settings.value ("checks/updateOnGSM", _checks[C_UpdateOnGSM]).toBool ();
loadCities (&settings);
+
+ _updateIntervalIndex = minutes2IntervalIndex (settings.value ("updateInterval", intervalIndex2Minutes (_updateIntervalIndex)).toInt ());
}
settings.setValue ("region", _regionID);
- settings.setValue ("checks/light", _checks[C_Light]);
- settings.setValue ("checks/rank", _checks[C_Rank]);
- settings.setValue ("checks/time", _checks[C_Time]);
- settings.setValue ("checks/hint", _checks[C_Hint]);
+ settings.setValue ("checks/light", _checks[C_ShowLight]);
+ settings.setValue ("checks/rank", _checks[C_ShowRank]);
+ settings.setValue ("checks/time", _checks[C_ShowTime]);
+ settings.setValue ("checks/hint", _checks[C_ShowHint]);
+ settings.setValue ("checks/updateOnWifi", _checks[C_UpdateOnWiFi]);
+ settings.setValue ("checks/updateOnGSM", _checks[C_UpdateOnGSM]);
+
+ settings.setValue ("updateInterval", intervalIndex2Minutes (_updateIntervalIndex));
saveCities (&settings);
}
_cities["11162"] = tr ("Ekaterinburg");
_cities["11079"] = tr ("N.Novgorod");
- setCheck (C_Light, true);
- setCheck (C_Rank, true);
- setCheck (C_Hint, true);
+ setCheck (C_ShowLight, true);
+ setCheck (C_ShowRank, true);
+ setCheck (C_ShowHint, true);
+
+ setCheck (C_UpdateOnWiFi, true);
+
+ _updateIntervalIndex = 3;
+}
+
+
+QStringList Settings::updateIntervals () const
+{
+ QStringList res;
+
+ res.append (tr ("Never"));
+ res.append (tr ("1 min"));
+ res.append (tr ("2 min"));
+ res.append (tr ("5 min"));
+ res.append (tr ("15 min"));
+ res.append (tr ("30 min"));
+
+ return res;
+}
+
+
+int Settings::intervalIndex2Minutes (int index) const
+{
+ int int2min[] = { -1, 1, 2, 5, 15, 30 };
+
+ if (index < 0 || sizeof (int2min) / sizeof (int2min[0]))
+ return -1;
+
+ return int2min[index];
+}
+
+
+int Settings::minutes2IntervalIndex (int minutes) const
+{
+ switch (minutes) {
+ case -1:
+ return 0;
+ case 1:
+ return 1;
+ case 2:
+ return 2;
+ case 5:
+ return 3;
+ case 15:
+ return 4;
+ case 30:
+ return 5;
+ default:
+ return 0;
+ }
}
Q_OBJECT
public:
enum check_t {
- C_Light = 0,
- C_Rank,
- C_Time,
- C_Hint,
+ C_ShowLight = 0,
+ C_ShowRank,
+ C_ShowTime,
+ C_ShowHint,
+ C_UpdateOnWiFi,
+ C_UpdateOnGSM,
};
private:
QString _regionID; // region ID which will be displayed
QMap<QString, QString> _cities;
QMap<check_t, bool> _checks;
+ int _updateIntervalIndex;
void makeDefault ();
void loadCities (QSettings *settings);
void saveCities (QSettings *settings);
+ int intervalIndex2Minutes (int index) const;
+ int minutes2IntervalIndex (int minutes) const;
+
public:
Settings ();
{ return _checks[entry]; };
void setCheck (check_t entry, bool val)
- { _checks[entry] = val; }
+ { _checks[entry] = val; };
+
+ QStringList updateIntervals () const;
+
+ int getUpdateIntervalIndex () const
+ { return _updateIntervalIndex; };
+
+ void setUpdateIntervalIndex (int index)
+ { _updateIntervalIndex = index; };
};
{
QHBoxLayout *layout = new QHBoxLayout (this);
QVBoxLayout *right_layout = new QVBoxLayout ();
+ QSizePolicy policy;
// Right side
_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 ();
// --------------------------------------------------
// DisplaySettingsDialog
// --------------------------------------------------
-DisplaySettingsDialog::DisplaySettingsDialog (Settings *settings)
- : BaseSettingsDialog (settings)
+DisplaySettingsDialog::DisplaySettingsDialog (Settings *_settings)
+ : BaseSettingsDialog (_settings)
{
setWindowTitle (tr ("Display settings"));
setMinimumSize (300, 400);
QGridLayout *grid = new QGridLayout;
_showLight = new QCheckBox (tr ("Light"), this);
- _showLight->setChecked (settings ()->check (Settings::C_Light));
+ _showLight->setChecked (settings ()->check (Settings::C_ShowLight));
_showRank = new QCheckBox (tr ("Rank"), this);
- _showRank->setChecked (settings ()->check (Settings::C_Rank));
+ _showRank->setChecked (settings ()->check (Settings::C_ShowRank));
_showTime = new QCheckBox (tr ("Time"), this);
- _showTime->setChecked (settings ()->check (Settings::C_Time));
+ _showTime->setChecked (settings ()->check (Settings::C_ShowTime));
_showHint = new QCheckBox (tr ("Hint"), this);
- _showHint->setChecked (settings ()->check (Settings::C_Hint));
+ _showHint->setChecked (settings ()->check (Settings::C_ShowHint));
grid->addWidget (_showLight, 0, 0);
grid->addWidget (_showRank, 0, 1);
if (cur)
settings ()->setRegionID (cur->data (Qt::UserRole).toString ());
- settings ()->setCheck (Settings::C_Light, _showLight->isChecked ());
- settings ()->setCheck (Settings::C_Rank, _showRank->isChecked ());
- settings ()->setCheck (Settings::C_Time, _showTime->isChecked ());
- settings ()->setCheck (Settings::C_Hint, _showHint->isChecked ());
+ 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)
+UpdateSettingsDialog::UpdateSettingsDialog (Settings *_settings)
+ : BaseSettingsDialog (_settings)
{
setWindowTitle (tr ("Update settings"));
+
+ _wifiUpdate = new QCheckBox (tr ("Update on WiFi connection"), this);
+ _wifiUpdate->setChecked (settings ()->check (Settings::C_UpdateOnWiFi));
+ _gsmUpdate = new QCheckBox (tr ("Update on GSM connection"), this);
+ _gsmUpdate->setChecked (settings ()->check (Settings::C_UpdateOnGSM));
+
+ initUpdateInterval (layout ());
+
+ layout ()->addWidget (_wifiUpdate);
+ layout ()->addWidget (_gsmUpdate);
}
void UpdateSettingsDialog::saveSettings ()
{
+#ifdef Q_WS_MAEMO_5
+ QMaemo5ListPickSelector *selector = static_cast<QMaemo5ListPickSelector*> (_intervalButton->pickSelector ());
+
+ if (selector)
+ settings ()->setUpdateIntervalIndex (selector->currentIndex ());
+#endif
+ settings ()->setCheck (Settings::C_UpdateOnWiFi, _wifiUpdate->isChecked ());
+ settings ()->setCheck (Settings::C_UpdateOnGSM, _gsmUpdate->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
}
QMaemo5ValueButton *_intervalButton;
QCheckBox *_wifiUpdate, *_gsmUpdate;
+ void initUpdateInterval (QBoxLayout *layout);
+
protected:
virtual void saveSettings ();