File indexing completed on 2024-04-28 15:39:05
0001 // SPDX-FileCopyrightText: 2021-2022 Tobias Leupold <tl at stonemx dot de> 0002 // 0003 // SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 0005 #ifndef GEODATAMODEL_H 0006 #define GEODATAMODEL_H 0007 0008 // Local includes 0009 #include "Coordinates.h" 0010 0011 // Marble includes 0012 #include <marble/GeoDataLineString.h> 0013 #include <marble/GeoDataLatLonAltBox.h> 0014 0015 // Qt includes 0016 #include <QAbstractListModel> 0017 #include <QHash> 0018 #include <QDateTime> 0019 0020 class GeoDataModel : public QAbstractListModel 0021 { 0022 Q_OBJECT 0023 0024 public: 0025 explicit GeoDataModel(QObject *parent); 0026 0027 int rowCount(const QModelIndex & = QModelIndex()) const override; 0028 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0029 Qt::DropActions supportedDropActions() const override; 0030 Qt::ItemFlags flags(const QModelIndex &index) const override; 0031 bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int, int, 0032 const QModelIndex &) const override; 0033 bool dropMimeData(const QMimeData *data, Qt::DropAction action, int, int, 0034 const QModelIndex &) override; 0035 0036 bool contains(const QString &path); 0037 void addTrack(const QString &path, const QVector<QVector<QDateTime>> ×, 0038 const QVector<QVector<Coordinates>> &segments); 0039 void removeTrack(int row); 0040 void removeAllTracks(); 0041 Marble::GeoDataLatLonAltBox trackBox(const QString &path) const; 0042 Marble::GeoDataLatLonAltBox trackBox(const QModelIndex &index) const; 0043 Coordinates trackBoxCenter(const QString &path) const; 0044 0045 const QVector<QVector<Marble::GeoDataLineString>> &marbleTracks() const; 0046 const QVector<QVector<QDateTime>> &dateTimes() const; 0047 const QVector<QHash<QDateTime, Coordinates>> &trackPoints() const; 0048 0049 Q_SIGNALS: 0050 void requestAddFiles(const QVector<QString> &paths); 0051 0052 private: // Functions 0053 QString canonicalPath(const QString &path) const; 0054 0055 private: // Variables 0056 QVector<QString> m_loadedFiles; 0057 QVector<QString> m_displayFileNames; 0058 0059 QVector<QVector<Marble::GeoDataLineString>> m_marbleTracks; 0060 QVector<Marble::GeoDataLatLonAltBox> m_marbleTrackBoxes; 0061 0062 QVector<QVector<QDateTime>> m_dateTimes; 0063 QVector<QHash<QDateTime, Coordinates>> m_trackPoints; 0064 0065 }; 0066 0067 #endif // GEODATAMODEL_H