diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2016-01-07 00:08:00 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2016-01-07 21:29:05 -0800 |
commit | a7f8a7574e1fa6fd2422d151a3d5e3fc94586d5b (patch) | |
tree | 034256176d0a28705e190d122d41a2aead2fc229 /qt-models/gpslistmodel.cpp | |
parent | 0f311020205563823c71cfb68a77d156b14d352a (diff) | |
download | subsurface-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.cpp | 96 |
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 > = 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; +} + |