From a4e387a7ffda7197ef45b3fc5ee08b872a310540 Mon Sep 17 00:00:00 2001 From: Luciano Montanaro Date: Sun, 26 Jun 2011 17:48:23 +0200 Subject: [PATCH 1/1] Added periodic check feature. --- application/app.cpp | 35 ++++++++++++- application/app.h | 4 +- application/resources/i18n/quandoparte_it.qm | Bin 2078 -> 2212 bytes application/resources/i18n/quandoparte_it.ts | 35 +++++++------ application/settingsdialog.cpp | 11 ++++ application/settingsdialog.h | 2 + application/settingsdialog.ui | 72 ++++++++++++++++---------- 7 files changed, 114 insertions(+), 45 deletions(-) diff --git a/application/app.cpp b/application/app.cpp index eea9dcd..2af0366 100644 --- a/application/app.cpp +++ b/application/app.cpp @@ -32,6 +32,7 @@ Boston, MA 02110-1301, USA. #include #include #include +#include #include #include @@ -44,6 +45,7 @@ QTM_USE_NAMESPACE App::App(QObject *parent) : QObject(parent), accessManager(new QNetworkAccessManager(this)), + checkingTimer(new QTimer(this)), stationView(new StationView()), stationListModel(new StationListModel(this)), stationListView(new StationListView(stationListModel, stationView)) @@ -69,6 +71,8 @@ App::App(QObject *parent) : readSettings(); qDebug() << "found" << stationListModel->rowCount() << "stations"; + + connect(checkingTimer, SIGNAL(timeout()), SLOT(updateStation())); stationView->show(); if (recentStations.isEmpty() || !stationViewPreferred) { stationListView->show(); @@ -79,7 +83,9 @@ App::App(QObject *parent) : App::~App() { + disconnect(); delete stationView; + delete stationListView; saveSettings(); } @@ -115,6 +121,14 @@ void App::queryStation(const QString &station) #endif } +void App::updateStation() +{ + qDebug() << "updating station data"; + if (!recentStations.isEmpty() && !stationListView->isVisible()) { + queryStation(recentStations.front()); + } +} + void App::showSettingsDialog() { qDebug() << "Settings Dialog called"; @@ -152,8 +166,27 @@ void App::readSettings(void) stationView->setBaseUrl(queryBaseUrl); recentStations = settings.value("RecentStations").toString().split(","); - checkingInterval = settings.value("CheckInterval", 2000).toInt(); + qDebug() << "RecentStations:" << recentStations; + stationViewPreferred = settings.value("StationViewPreferred", false).toBool(); + qDebug() << "StationsViewPreferred:" << stationViewPreferred; + + checkingInterval = settings.value("CheckInterval", 0).toInt(); + qDebug() << "CheckInterval:" << checkingInterval; + + /* + I would use > 0 here, but people may have an old settings file with a 2 + seconds timeout which is way too short. + As a workaround I consider anything less than 30 seconds as too short + and disable the timer. + */ + if (checkingInterval > 30000) { + checkingTimer->setInterval(checkingInterval); + checkingTimer->start(); + } else { + checkingTimer->setInterval(-1); + checkingTimer->stop(); + } } void App::saveSettings(void) diff --git a/application/app.h b/application/app.h index 65f0889..35899a2 100644 --- a/application/app.h +++ b/application/app.h @@ -27,6 +27,7 @@ Boston, MA 02110-1301, USA. class QNetworkAccessManager; class QNetworkReply; +class QTimer; class StationView; class StationListView; @@ -45,6 +46,7 @@ signals: public slots: void queryStation(const QString &station); + void updateStation(); void downloadFinished(void); void showAboutDialog(void); void showSettingsDialog(void); @@ -55,11 +57,11 @@ public: private: QNetworkAccessManager *accessManager; QNetworkReply *stationQueryReply; + QTimer *checkingTimer; StationView *stationView; StationListModel *stationListModel; StationListView *stationListView; QString queryBaseUrl; - QString stationName; QStringList recentStations; int checkingInterval; bool stationViewPreferred; diff --git a/application/resources/i18n/quandoparte_it.qm b/application/resources/i18n/quandoparte_it.qm index 71f9d7ebfcf45d5f643ce9b26f2837304357d5f9..2852b6cc57074a13810dfdd48574783edab5efbd 100644 GIT binary patch delta 271 zcmbOyutaczNc{o^2G?W;2IfWvR_`Vt{hopK{BZ^bwkihqX-9zkbr70u4MXVc2@DKO z+6)cN{7}xJ!0#v8KqEkDMfq`9?WqorvP@ajkdrk-g1B){2j?bJx{yKK1iF^z| zz@GPmg@J)pkz;Cp zs(!q2(iP$Z9`gdvp! qWHTEOONSPuB$lKqxMUU=mLU9X-9y30|?Eg#}GPu0s{k+ zHbcX|uRwYoP_9aYZKGv ISIoOu02Y`nNB{r; diff --git a/application/resources/i18n/quandoparte_it.ts b/application/resources/i18n/quandoparte_it.ts index 3a9fc22..b1f1ec4 100644 --- a/application/resources/i18n/quandoparte_it.ts +++ b/application/resources/i18n/quandoparte_it.ts @@ -25,11 +25,16 @@ - + Show Last Station on Startup Mostra l'ultima stazione all'avvio + + Update Display Periodically + Aggiorna stazione periodicamente + + Station: Stazione: @@ -50,47 +55,47 @@ Elenco delle stazioni - + View Vista - + Near Vicine - + Show near stations first Mostra per prime le stazioni vicine - + ABC ABC - + Sort stations by name Ordina le stazioni per nome - + Settings Impostazioni - + About Informazioni - + Recent Recenti - + Show recently checked stations first Mostra per prime le stazioni recenti @@ -98,27 +103,27 @@ StationView - + Arrivals Arrivi - + Departures Partenze - + Settings Impostazioni - + Change Station Cambia stazione - + About Informazioni diff --git a/application/settingsdialog.cpp b/application/settingsdialog.cpp index 0d9b8b5..f427be2 100644 --- a/application/settingsdialog.cpp +++ b/application/settingsdialog.cpp @@ -43,6 +43,11 @@ SettingsDialog::SettingsDialog(QWidget *parent) : ui->showLastStationCheckBox->setChecked(showStationPreference); connect(ui->showLastStationCheckBox, SIGNAL(toggled(bool)), SLOT(showStationChanged(bool))); + + bool checkingInterval = settings.value("CheckInterval", 0).toInt(); + ui->periodicUpdateCheckBox->setChecked(checkingInterval > 30000); + connect(ui->periodicUpdateCheckBox, SIGNAL(toggled(bool)), + SLOT(periodicUpdateToggled(bool))); #if 0 #ifdef Q_WS_MAEMO_5 ui->formLayout->addWidget(updateIntervalButton); @@ -60,3 +65,9 @@ void SettingsDialog::showStationChanged(bool newValue) QSettings settings; settings.setValue("StationViewPreferred", newValue); } + +void SettingsDialog::periodicUpdateToggled(bool checked) +{ + QSettings settings; + settings.setValue("CheckInterval", checked ? 120000 : 0); +} diff --git a/application/settingsdialog.h b/application/settingsdialog.h index bfde246..cfee599 100644 --- a/application/settingsdialog.h +++ b/application/settingsdialog.h @@ -22,6 +22,8 @@ public: private slots: void showStationChanged(bool); + void periodicUpdateToggled(bool checked); + private: #ifdef Q_WS_MAEMO_5 QMaemo5ValueButton *updateIntervalButton; diff --git a/application/settingsdialog.ui b/application/settingsdialog.ui index 2c7f1db..1ecaed8 100644 --- a/application/settingsdialog.ui +++ b/application/settingsdialog.ui @@ -6,39 +6,55 @@ 0 0 - 611 - 108 + 609 + 106 Dialog - - - - - QFormLayout::ExpandingFieldsGrow - - - - - Show Last Station on Startup - - - - - - - - - Qt::Vertical - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - + + + + 461 + 6 + 142 + 94 + + + + Qt::Vertical + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + 8 + 8 + 445 + 86 + + + + + + + Show Last Station on Startup + + + + + + + Update Display Periodically + + + + + -- 1.7.9.5