Add journey model and list
[harbour-pedalo.git] / src / journeymodel.h
1 #ifndef JOURNEYMODEL_H
2 #define JOURNEYMODEL_H
3
4 #include <QAbstractListModel>
5 #include <QStringList>
6 #include <QFile>
7
8 #include "journey.h"
9
10 class JourneyModel : public QAbstractListModel
11 {
12 Q_OBJECT
13 public:
14 enum JourneyRoles {
15 StartRole = Qt::UserRole + 1,
16 DurationRole,
17 OvertookRole,
18 OvertakenByRole
19 };
20
21 QHash<int, QByteArray> roleNames() const;
22
23 JourneyModel(QObject *parent = 0);
24
25 void addJourney(const Journey &journey);
26 Q_INVOKABLE void addJourney(QDateTime start, quint32 duration, quint32 overtook, quint32 overtakenby);
27
28 int rowCount(const QModelIndex & parent = QModelIndex()) const;
29
30 QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;
31
32 void clear();
33
34 void exportToFile(QFile & file);
35 void importFromFile(QFile & file);
36
37 Q_INVOKABLE static QDate epochToDate(quint64 epoch);
38 Q_INVOKABLE static QTime epochToTime(quint64 epoch);
39 signals:
40 // General signals
41 void journeysChanged();
42
43 private:
44 QHash<int, QByteArray> roles;
45 QList<Journey> journeys;
46 };
47
48 #endif // JOURNEYMODEL_H