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 &center);
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