summaryrefslogtreecommitdiffstats
path: root/qt-models/gpslistmodel.cpp
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2016-01-07 00:08:00 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-01-07 21:29:05 -0800
commita7f8a7574e1fa6fd2422d151a3d5e3fc94586d5b (patch)
tree034256176d0a28705e190d122d41a2aead2fc229 /qt-models/gpslistmodel.cpp
parent0f311020205563823c71cfb68a77d156b14d352a (diff)
downloadsubsurface-a7f8a7574e1fa6fd2422d151a3d5e3fc94586d5b.tar.gz
Create GpsListModel in order to be able to display GPS fixes
This will allow us to visualize the GPS fixes that are currently stored in the QML UI. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-models/gpslistmodel.cpp')
-rw-r--r--qt-models/gpslistmodel.cpp96
1 files changed, 96 insertions, 0 deletions
diff --git a/qt-models/gpslistmodel.cpp b/qt-models/gpslistmodel.cpp
new file mode 100644
index 000000000..6bd1cfdf0
--- /dev/null
+++ b/qt-models/gpslistmodel.cpp
@@ -0,0 +1,96 @@
+#include "gpslistmodel.h"
+#include "helpers.h"
+
+GpsTracker::GpsTracker()
+{
+ m_latitude = 0;
+ m_longitude = 0;
+ m_when = 0;
+ m_name = QString();
+}
+
+GpsTracker::~GpsTracker()
+{
+}
+
+uint64_t GpsTracker::when() const
+{
+ return m_when;
+}
+
+int32_t GpsTracker::latitude() const
+{
+ return m_latitude;
+}
+
+int32_t GpsTracker::longitude() const
+{
+ return m_longitude;
+}
+
+QString GpsTracker::name() const
+{
+ return m_name;
+}
+
+GpsListModel *GpsListModel::m_instance = NULL;
+
+GpsListModel::GpsListModel(QObject *parent) : QAbstractListModel(parent)
+{
+ m_instance = this;
+}
+
+void GpsListModel::addGpsFix(gpsTracker *g)
+{
+ beginInsertColumns(QModelIndex(), rowCount(), rowCount());
+ m_gpsFixes.append(GpsTracker(g));
+ endInsertRows();
+}
+
+void GpsListModel::clear()
+{
+ if (m_gpsFixes.count()) {
+ beginRemoveRows(QModelIndex(), 0, m_gpsFixes.count() - 1);
+ m_gpsFixes.clear();
+ endRemoveRows();
+ }
+}
+
+int GpsListModel::rowCount(const QModelIndex &parent) const
+{
+ return m_gpsFixes.count();
+}
+
+QVariant GpsListModel::data(const QModelIndex &index, int role) const
+{
+ if (index.row() < 0 || index.row() > m_gpsFixes.count())
+ return QVariant();
+
+ const GpsTracker &gt = m_gpsFixes[index.row()];
+
+ if (role == GpsDateRole)
+ return get_short_dive_date_string(gt.when());
+ else if (role == GpsNameRole)
+ return QString(gt.name());
+ else if (role == GpsLatitudeRole)
+ return QString::number(gt.latitude() / 1000000.0, 'f', 6);
+ else if (role == GpsLongitudeRole)
+ return QString::number(gt.longitude() / 1000000.0, 'f', 6);
+ return QVariant();
+}
+
+QHash<int, QByteArray> GpsListModel::roleNames() const
+{
+ QHash<int, QByteArray> roles;
+ roles[GpsDateRole] = "when";
+ roles[GpsNameRole] = "name";
+ roles[GpsLatitudeRole] = "latitude";
+ roles[GpsLongitudeRole] = "longitude";
+ return roles;
+}
+
+GpsListModel *GpsListModel::instance()
+{
+ return m_instance;
+}
+