Flesh out UI, provide journey data model
[harbour-pedalo.git] / src / journeymodel.h
diff --git a/src/journeymodel.h b/src/journeymodel.h
new file mode 100644 (file)
index 0000000..36d4a92
--- /dev/null
@@ -0,0 +1,45 @@
+#ifndef JOURNEYMODEL_H
+#define JOURNEYMODEL_H
+
+#include <QAbstractListModel>
+#include <QStringList>
+#include <QFile>
+
+#include "journey.h"
+
+class JourneyModel : public QAbstractListModel
+{
+    Q_OBJECT
+public:
+    enum JourneyRoles {
+        StartRole = Qt::UserRole + 1,
+        DurationRole,
+        OvertookRole,
+        OvertakenByRole
+    };
+
+    QHash<int, QByteArray> roleNames() const;
+
+    JourneyModel(QObject *parent = 0);
+
+    void addJourney(const Journey &journey);
+
+    int rowCount(const QModelIndex & parent = QModelIndex()) const;
+
+    QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;
+
+    void clear();
+
+    void exportToFile(QFile & file);
+    void importFromFile(QFile & file);
+
+signals:
+    // General signals
+    void journeysChanged();
+
+private:
+    QHash<int, QByteArray> roles;
+    QList<Journey> journeys;
+};
+
+#endif // JOURNEYMODEL_H