X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=mainwidget.cpp;h=1cbb934a620e83443a358382fabbd0f74d8b02b9;hb=4532dbdbf761173ac30ae7dede777b607df9dddd;hp=5e14ef9065e331f945f46af22568459801da9135;hpb=1927073b788c45ddbbe2bba9be7795912a94d25a;p=yandex-traffic diff --git a/mainwidget.cpp b/mainwidget.cpp index 5e14ef9..1cbb934 100644 --- a/mainwidget.cpp +++ b/mainwidget.cpp @@ -1,7 +1,7 @@ #include #include "mainwidget.hpp" - +#include "settingsDialog.hpp" // -------------------------------------------------- @@ -11,33 +11,135 @@ MainWidget::MainWidget () : QWidget () { #ifdef Q_WS_MAEMO_5 - setAttribute(Qt::WA_TranslucentBackground); + setAttribute(Qt::WA_TranslucentBackground); #endif - _light = new TrafficLight (this); - _label = new QLabel (this); + _light = new TrafficLight (this); + _label = new QLabel (this); + + _label->setAlignment (Qt::AlignHCenter | Qt::AlignVCenter); + + _traffic = new Traffic; + _regions = new RegionsTable; + _settings = new Settings; + + QHBoxLayout *layout = new QHBoxLayout; + layout->addWidget (_light); + layout->addWidget (_label); + setLayout (layout); + + _light->setVisible (_settings->check (Settings::C_Light)); - QHBoxLayout *layout = new QHBoxLayout; - layout->addWidget (_light); - layout->addWidget (_label); - setLayout (layout); + updateSize (); - _label->setText ("Bla-bla"); + connect (_traffic, SIGNAL (updated ()), SLOT (trafficUpdated ())); + + // every 5 minutes (TODO, make option) + startTimer (5*60*1000); + + updateData (); } -QSize MainWidget::sizeHint() const +MainWidget::~MainWidget () { - return QWidget::sizeHint () + QSize (20, 0); + delete _traffic; + delete _regions; + delete _settings; + + delete _light; + delete _label; } void MainWidget::paintEvent(QPaintEvent *event) { QPainter p(this); - p.setBrush(QColor(0, 0, 0, 128)); - p.setPen(Qt::NoPen); - p.drawRoundedRect(rect(), 10, 10); - p.end(); + p.setBrush (QColor(0, 0, 0, 128)); + p.setPen (Qt::NoPen); + p.drawRoundedRect (rect(), 10, 10); + p.end (); + + QWidget::paintEvent (event); +} + + +void MainWidget::timerEvent (QTimerEvent *) +{ + updateData (); +} + + + +void MainWidget::trafficUpdated () +{ + ExtendedTrafficInfo info = _traffic->lookup_ext ("1"); + + if (info.valid ()) { + QString data; + bool first = true; + _light->setColor (info.color ()); + + if (_settings->check (Settings::C_Rank)) { + data.append (QString::number (info.level ())); + data.append (info.level () > 1 ? tr (" points") : tr (" point")); + first = false; + } + + if (_settings->check (Settings::C_Time)) { + if (!first) + data.append (", "); + data.append (info.localtime ()); + first = false; + } + + if (_settings->check (Settings::C_Hint)) { + if (!first) + data.append ("\n"); + data.append (info.hint ()); + } + + _label->setText (data); + } + else + _light->setColor (ExtendedTrafficInfo::Unknown); +} + + +void MainWidget::updateData () +{ + // Here we need to check for internet connection + _traffic->update (); +} + + +void MainWidget::settingsDialog () +{ + SettingsDialog dlg (_settings); + + dlg.exec (); + + // Handle settings + _light->setVisible (_settings->check (Settings::C_Light)); + + updateSize (); + trafficUpdated (); +} + + +void MainWidget::updateSize () +{ + QSize minSize (0, 80); + + if (_settings->check (Settings::C_Light)) + minSize += QSize (80, 0); + if (_settings->check (Settings::C_Hint)) + minSize += QSize (270, 0); + else { + if (_settings->check (Settings::C_Time)) + minSize += QSize (75, 0); + if (_settings->check (Settings::C_Rank)) + minSize += QSize (75, 0); + } - QWidget::paintEvent(event); + setFixedSize (minSize); }