#include "dataprovider.h"
#include "settings.h"
+#include <QtGlobal>
#include <QDebug>
+#if (QT_VERSION >= QT_VERSION_CHECK(5, 1, 0))
+#include <QtWebKitWidgets>
+#else
#include <QWebElement>
-#ifndef TARGET_PLATFORM_SAILFISH
#include <QWebFrame>
-#endif
#include <QWebPage>
+#endif
StationScheduleModel::StationScheduleModel(const QString &name, QObject *parent) :
QAbstractListModel(parent),
m_name(name),
m_error(QString())
-
{
DataProvider *provider = DataProvider::instance();
- QHash<int, QByteArray> roles;
- roles[TrainRole] = "train";
- roles[DepartureStationRole] = "departureStation";
- roles[DepartureTimeRole] = "departureTime";
- roles[ArrivalStationRole] = "arrivalStation";
- roles[ArrivalTimeRole] = "arrivalTime";
- roles[DetailsUrlRole] = "detailsUrl";
- roles[DelayRole] = "delay";
- roles[DelayClassRole] = "delayClass";
- roles[ExpectedPlatformRole] = "expectedPlatform";
- roles[ActualPlatformRole] = "actualPlatform";
- setRoleNames(roles);
-
connect(provider, SIGNAL(stationScheduleReady(QByteArray,QUrl)),
this, SLOT(parse(QByteArray,QUrl)));
connect(provider, SIGNAL(error()),
this, SLOT(onNetworkError()));
Settings *settings = Settings::instance();
m_scheduleType = settings->showArrivalsPreferred() ? ArrivalSchedule : DepartureSchedule;
+#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
+ setRoleNames(roleNames());
+#endif
}
const QString &StationScheduleModel::name()
}
}
+QHash<int, QByteArray> StationScheduleModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[TrainRole] = "train";
+ roles[DepartureStationRole] = "departureStation";
+ roles[DepartureTimeRole] = "departureTime";
+ roles[ArrivalStationRole] = "arrivalStation";
+ roles[ArrivalTimeRole] = "arrivalTime";
+ roles[DetailsUrlRole] = "detailsUrl";
+ roles[DelayRole] = "delay";
+ roles[DelayClassRole] = "delayClass";
+ roles[ExpectedPlatformRole] = "expectedPlatform";
+ roles[ActualPlatformRole] = "actualPlatform";
+
+ return roles;
+}
+
StationScheduleModel::ScheduleType StationScheduleModel::type()
{
return m_scheduleType;
item.setArrivalStation(filter.cap(2));
item.setArrivalTime(filter.cap(3));
}
- item.setDelay(filter.cap(6));
+ QString delayDescription = filter.cap(6);
+ if (delayDescription == "in orario") {
+ item.setDelay(QObject::tr("On time"));
+ } else {
+ QRegExp delayRegExp("ritardo ([0-9]+)(| minuti)");
+ int pos = delayRegExp.indexIn(delayDescription);
+ if (pos >= 0) {
+ item.setDelay(QString(QObject::tr("Delay: %1 minutes")).arg(delayRegExp.cap(1)));
+ } else {
+ // Does not match, let the user parse it
+ item.setDelay(delayDescription);
+ }
+ }
item.setExpectedPlatform(filter.cap(4));
item.setActualPlatform(filter.cap(5));
} else {