#include <QNetworkReply>
#include <QNetworkRequest>
#include <QSharedPointer>
+#if 0
#include <QWebElement>
#include <QWebFrame>
#include <QWebPage>
+#endif
// Constants
static const int RECENT_STATIONS_MAX_COUNT = 10;
DataProvider::DataProvider(QObject *parent) :
QObject(parent),
- accessManager(new QNetworkAccessManager(this))
+ accessManager(new QNetworkAccessManager(this)),
+ stationQueryReply(0)
{
}
-void DataProvider::fetchStationSchedule(const QString &station)
+void DataProvider::fetchStationSchedule(const QString &station,
+ const QString &stationCode)
{
QNetworkRequest request;
Settings *settings = Settings::instance();
request.setUrl(settings->queryBaseUrl() + "stazione");
-
- qDebug() << "fetching schedule for station" << station;
- const QString queryString = "stazione=" + station;
+ qDebug() << "fetching schedule for station:" << station << "code:" << stationCode;
+ const QString queryString =
+ stationCode.isEmpty() ? "stazione=" + station :
+ "codiceStazione=" + stationCode;
const QByteArray query(queryString.toLocal8Bit());
stationQueryReply = accessManager->post(request, query);
+ connect(stationQueryReply, SIGNAL(metaDataChanged()),
+ SLOT(onStationQueryMetadataChanged()));
connect(stationQueryReply, SIGNAL(finished()),
SLOT(onStationScheduleFetched()));
+ connect(stationQueryReply, SIGNAL(error(QNetworkReply::NetworkError)),
+ SLOT(onNetworkError(QNetworkReply::NetworkError)));
QStringList recentStations = settings->recentStations();
recentStations.push_front(station);
recentStations.removeDuplicates();
void DataProvider::onStationScheduleFetched()
{
- disconnect(stationQueryReply, SIGNAL(finished()),
- this, SLOT(onStationScheduleFetched()));
-
- QString name = Settings::instance()->recentStations().front();
+ disconnect(stationQueryReply);
+ QVariant httpStatus = stationQueryReply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
+ if (httpStatus.isValid()) {
+ qDebug() << "Metadata changed, Http status is:" << httpStatus.toInt();
+ }
emit stationScheduleReady(stationQueryReply->readAll(), stationQueryReply->url());
stationQueryReply->deleteLater();
stationQueryReply = 0;
}
+
+void DataProvider::onStationQueryMetadataChanged(void)
+{
+}
+
+void DataProvider::onNetworkError(QNetworkReply::NetworkError errorCode)
+{
+ switch (errorCode) {
+ case QNetworkReply::NoError:
+ qDebug() << "No Network error" << errorCode;
+ break;
+ default:
+ qDebug() << "Network error" << errorCode;
+ emit error();
+ break;
+ }
+}