MainWidget::MainWidget ()
: QWidget ()
{
- setMinimumSize (300, 80);
#ifdef Q_WS_MAEMO_5
setAttribute(Qt::WA_TranslucentBackground);
#endif
_light = new TrafficLight (this);
_label = new QLabel (this);
+ _label->setAlignment (Qt::AlignHCenter | Qt::AlignVCenter);
+
_traffic = new Traffic;
_regions = new RegionsTable;
_settings = new Settings;
layout->addWidget (_label);
setLayout (layout);
+ _light->setVisible (_settings->check (Settings::C_ShowLight));
+
+ updateSize ();
+
connect (_traffic, SIGNAL (updated ()), SLOT (trafficUpdated ()));
// every 5 minutes (TODO, make option)
void MainWidget::trafficUpdated ()
{
- ExtendedTrafficInfo info = _traffic->lookup_ext ("1");
+ ExtendedTrafficInfo info = _traffic->lookup_ext (_settings->regionID ());
if (info.valid ()) {
+ QString data;
+ bool first = true;
_light->setColor (info.color ());
- _label->setText (QString ("%1, %2\n%3")
- .arg (QString::number (info.level ()))
- .arg (info.localtime ())
- .arg (info.hint ()));
+
+ 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_ShowTime)) {
+ if (!first)
+ data.append (", ");
+ data.append (info.localtime ());
+ first = false;
+ }
+
+ if (_settings->check (Settings::C_ShowHint)) {
+ if (!first)
+ data.append ("\n");
+ data.append (info.hint ());
+ }
+
+ _label->setText (data);
}
- else
+ else {
_light->setColor (ExtendedTrafficInfo::Unknown);
+ _label->setText (tr ("No data"));
+ }
}
void MainWidget::settingsDialog ()
{
- SettingsDialog dlg (this, _settings);
+ SettingsDialog dlg (_settings);
dlg.exec ();
+
+ // Handle settings
+ _light->setVisible (_settings->check (Settings::C_ShowLight));
+
+ updateSize ();
+ trafficUpdated ();
+}
+
+
+void MainWidget::updateSize ()
+{
+ QSize minSize (0, 80);
+
+ if (_settings->check (Settings::C_ShowLight))
+ minSize += QSize (80, 0);
+ if (_settings->check (Settings::C_ShowHint))
+ minSize += QSize (270, 0);
+ else {
+ if (_settings->check (Settings::C_ShowTime))
+ minSize += QSize (75, 0);
+ if (_settings->check (Settings::C_ShowRank))
+ minSize += QSize (75, 0);
+ }
+
+ setFixedSize (minSize);
}