1 /* SPDX-FileCopyrightText: 2020-2021 Tobias Leupold <tobias.leupold@gmx.de> 2 3 SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-KDE-Accepted-GPL 4 */ 5 6 #ifndef MAINWINDOW_H 7 #define MAINWINDOW_H 8 9 // Local includes 10 #include "KGeoTag.h" 11 #include "ElevationEngine.h" 12 #include "Coordinates.h" 13 14 // KDE includes 15 #include <KXmlGuiWindow> 16 17 // Local classes 18 class SharedObjects; 19 class Settings; 20 class GpxEngine; 21 class PreviewWidget; 22 class MapWidget; 23 class FixDriftWidget; 24 class BookmarksWidget; 25 class ImagesModel; 26 class ImagesListView; 27 class AutomaticMatchingWidget; 28 class TracksListView; 29 class GeoDataModel; 30 class MapCenterInfo; 31 32 // Qt classes 33 class QDockWidget; 34 class QCloseEvent; 35 36 class MainWindow : public KXmlGuiWindow 37 { 38 Q_OBJECT 39 40 public: 41 explicit MainWindow(SharedObjects *sharedObjects); 42 43 protected: 44 void closeEvent(QCloseEvent *event) override; 45 46 private slots: 47 void updateImagesListsMode(); 48 void setDefaultDockArrangement(); 49 50 void addFiles(); 51 void addDirectory(); 52 void addGpx(const QVector<QString> &paths); 53 void addImages(const QVector<QString> &paths); 54 55 void imagesDropped(const QVector<QString> &paths); 56 void saveSelection(ImagesListView *list); 57 void saveAllChanges(); 58 void showSettings(); 59 void assignTo(const QVector<QString> &paths, const Coordinates &coordinates); 60 void checkUpdatePreview(const QVector<QString> &paths); 61 void elevationProcessed(ElevationEngine::Target target, const QVector<QString> &paths, 62 const QVector<double> &elevations); 63 void elevationLookupFailed(const QString &errorMessage); 64 void notAllElevationsPresent(int locationsCount, int elevationsCount); 65 void triggerAutomaticMatching(ImagesListView *list, KGeoTag::SearchType searchType); 66 void triggerCompleteAutomaticMatching(KGeoTag::SearchType searchType); 67 void matchAutomatically(const QVector<QString> &paths, KGeoTag::SearchType searchType); 68 void assignToMapCenter(ImagesListView *list); 69 void assignManually(ImagesListView *list); 70 void editCoordinates(ImagesListView *list); 71 void removeCoordinates(ImagesListView *list); 72 void removeCoordinates(const QVector<QString> &paths); 73 void discardChanges(ImagesListView *list); 74 void lookupElevation(ImagesListView *list); 75 void imagesTimeZoneChanged(); 76 void cameraDriftSettingsChanged(); 77 void centerTrackPoint(int trackIndex, int trackPointIndex); 78 79 void removeImages(ImagesListView *list); 80 void removeProcessedSavedImages(); 81 void removeImagesLoadedTagged(); 82 void removeAllImages(); 83 void removeTracks(); 84 void removeAllTracks(); 85 void removeEverything(); 86 87 private: // Functions 88 QDockWidget *createImagesDock(KGeoTag::ImagesListType type, const QString &title, 89 const QString &dockId); 90 QDockWidget *createDockWidget(const QString &title, QWidget *widget, const QString &objectName); 91 void lookupElevation(const QVector<QString> &paths); 92 QString saveFailedHeader(int processed, int allImages) const; 93 QString skipRetryCancelText(int processed, int allImages) const; 94 bool checkForPendingChanges(); 95 void saveChanges(const QVector<QString> &files); 96 97 private: // Variables 98 SharedObjects *m_sharedObjects; 99 Settings *m_settings; 100 GpxEngine *m_gpxEngine; 101 ElevationEngine *m_elevationEngine; 102 PreviewWidget *m_previewWidget; 103 MapWidget *m_mapWidget; 104 FixDriftWidget *m_fixDriftWidget; 105 BookmarksWidget *m_bookmarksWidget; 106 ImagesModel *m_imagesModel; 107 GeoDataModel *m_geoDataModel; 108 AutomaticMatchingWidget *m_automaticMatchingWidget; 109 TracksListView *m_tracksView; 110 MapCenterInfo *m_mapCenterInfo; 111 112 QDockWidget *m_previewDock; 113 QDockWidget *m_fixDriftDock; 114 QDockWidget *m_automaticMatchingDock; 115 QDockWidget *m_bookmarksDock; 116 QDockWidget *m_mapDock; 117 QDockWidget *m_unAssignedImagesDock; 118 QDockWidget *m_assignedOrAllImagesDock; 119 QDockWidget *m_tracksDock; 120 121 }; 122 123 #endif // MAINWINDOW_H 124