*/
#include "app.h"
+#include "dataprovider.h"
#include "stationview.h"
#include "stationlistmodel.h"
#include "stationlistview.h"
App::App(QObject *parent) :
QObject(parent),
- accessManager(new QNetworkAccessManager(this)),
+ dataProvider(new DataProvider(this)),
checkingTimer(new QTimer(this)),
stationView(new StationView()),
stationListModel(new StationListModel(this)),
{
stationListModel->load("stations:stations.qpl");
+ connect(dataProvider, SIGNAL(queryStationCompleted(QByteArray)),
+ SLOT(downloadFinished(QByteArray)));
+
connect(stationListView, SIGNAL(stationSelected(const QString &)),
SLOT(queryStation(const QString &)));
if (settings->recentStations().isEmpty() || !settings->stationViewPreferred()) {
stationListView->show();
} else {
- queryStation(settings->recentStations().front());
+ updateStation();
}
}
delete stationView;
}
-void App::downloadFinished(void)
+void App::downloadFinished(const QByteArray &data)
{
- disconnect(stationQueryReply, SIGNAL(finished()),
- this, SLOT(downloadFinished()));
- stationView->updateView(stationQueryReply->readAll());
+ stationView->updateView(data);
stationListView->hide();
- stationQueryReply->deleteLater();
- stationQueryReply = 0;
#ifdef Q_WS_MAEMO_5
stationListView->setAttribute(Qt::WA_Maemo5ShowProgressIndicator, false);
#endif
void App::queryStation(const QString &station)
{
- QNetworkRequest request;
- Settings *settings = Settings::instance();
- request.setUrl(settings->queryBaseUrl());
- const QString queryString = "stazione=" + station;
- const QByteArray query(queryString.toLocal8Bit());
- stationQueryReply = accessManager->post(request, query);
- connect(stationQueryReply, SIGNAL(finished()),
- this, SLOT(downloadFinished()));
- settings->recentStations().push_front(station);
- settings->recentStations().removeDuplicates();
- if (settings->recentStations().count() > RECENT_STATIONS_MAX_COUNT) {
- settings->recentStations().pop_back();
- }
+ dataProvider->queryStation(station);
#ifdef Q_WS_MAEMO_5
stationListView->setAttribute(Qt::WA_Maemo5ShowProgressIndicator, true);
#endif
void App::updateStation()
{
- Settings *settings = Settings::instance();
-
- qDebug() << "updating station data";
- if (!settings->recentStations().isEmpty() && !stationListView->isVisible()) {
- queryStation(settings->recentStations().front());
+ if (!stationListView->isVisible()) {
+ dataProvider->updateStation();
}
}
#include <QApplication>
#include <QStringList>
-class QNetworkAccessManager;
-class QNetworkReply;
class QTimer;
+class DataProvider;
class StationView;
class StationListView;
class StationListModel;
public slots:
void queryStation(const QString &station);
void updateStation();
- void downloadFinished(void);
+ void downloadFinished(const QByteArray &data);
void showAboutDialog(void);
void showSettingsDialog(void);
void showStationSelectView(void);
void saveSettings(void);
void readSettings(void);
private:
- QNetworkAccessManager *accessManager;
- QNetworkReply *stationQueryReply;
+ DataProvider *dataProvider;
QTimer *checkingTimer;
StationView *stationView;
StationListModel *stationListModel;
const QByteArray query(queryString.toLocal8Bit());
stationQueryReply = accessManager->post(request, query);
connect(stationQueryReply, SIGNAL(finished()),
- this, SLOT(queryStationCompleted()));
+ SLOT(onQueryStationReply()));
settings->recentStations().push_front(station);
settings->recentStations().removeDuplicates();
if (settings->recentStations().count() > RECENT_STATIONS_MAX_COUNT) {
}
}
-void DataProvider::queryStationCompleted()
+void DataProvider::onQueryStationReply()
{
disconnect(stationQueryReply, SIGNAL(finished()),
this, SLOT(downloadFinished()));
// TODO implement parsing or data returning...
+ emit queryStationCompleted(stationQueryReply->readAll());
stationQueryReply->deleteLater();
stationQueryReply = 0;
}