File indexing completed on 2024-04-28 15:39:07
0001 // SPDX-FileCopyrightText: 2020-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 MAPWIDGET_H 0006 #define MAPWIDGET_H 0007 0008 // Local includes 0009 #include "KGeoTag.h" 0010 #include "Coordinates.h" 0011 0012 // Marble includes 0013 #include <marble/MarbleWidget.h> 0014 #include <marble/GeoDataCoordinates.h> 0015 #include <marble/GeoDataLineString.h> 0016 0017 // Qt includes 0018 #include <QHash> 0019 #include <QPen> 0020 #include <QDateTime> 0021 #include <QMenu> 0022 0023 // Local classes 0024 class SharedObjects; 0025 class Settings; 0026 class GeoDataModel; 0027 class ImagesModel; 0028 0029 // Qt classes 0030 class QDragEnterEvent; 0031 class QDropEvent; 0032 0033 class MapWidget : public Marble::MarbleWidget 0034 { 0035 Q_OBJECT 0036 0037 public: 0038 explicit MapWidget(SharedObjects *sharedObjects, QWidget *parent = nullptr); 0039 void updateSettings(); 0040 void saveSettings(); 0041 void restoreSettings(); 0042 void zoomToTrack(const QModelIndex &index); 0043 void zoomToTracks(const QVector<QString> &paths); 0044 void centerImage(const QModelIndex &index); 0045 void centerCoordinates(const Coordinates &coordinates); 0046 Coordinates currentCenter() const; 0047 0048 Q_SIGNALS: 0049 void mapMoved(const Coordinates ¢er); 0050 void imagesDropped(const QVector<QString> &paths); 0051 void requestLoadGpx(const QVector<QString> &paths); 0052 0053 protected: 0054 void dragEnterEvent(QDragEnterEvent *event) override; 0055 void dropEvent(QDropEvent *event) override; 0056 0057 private Q_SLOTS: 0058 void showContextMenu(int x, int y); 0059 void changeFloaterVisiblity(QAction *action); 0060 0061 private: // Variables 0062 Settings *m_settings; 0063 GeoDataModel *m_geoDataModel; 0064 ImagesModel *m_imagesModel; 0065 QVector<Marble::GeoDataLineString> m_tracks; 0066 QPen m_trackPen; 0067 QMenu *m_contextMenu; 0068 QVector<QAction *> m_floatersActions; 0069 0070 }; 0071 0072 #endif // MAPWIDGET_H