File indexing completed on 2024-04-28 15:39:07
0001 // SPDX-FileCopyrightText: 2020-2023 Tobias Leupold <tl at stonemx dot de> 0002 // 0003 // SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 0005 #ifndef MAINWINDOW_H 0006 #define MAINWINDOW_H 0007 0008 // Local includes 0009 #include "KGeoTag.h" 0010 #include "ElevationEngine.h" 0011 #include "Coordinates.h" 0012 0013 // KDE includes 0014 #include <KXmlGuiWindow> 0015 0016 // Local classes 0017 class SharedObjects; 0018 class Settings; 0019 class GpxEngine; 0020 class PreviewWidget; 0021 class MapWidget; 0022 class FixDriftWidget; 0023 class BookmarksWidget; 0024 class ImagesModel; 0025 class ImagesListView; 0026 class AutomaticMatchingWidget; 0027 class TracksListView; 0028 class GeoDataModel; 0029 class MapCenterInfo; 0030 0031 // Qt classes 0032 class QDockWidget; 0033 class QCloseEvent; 0034 0035 class MainWindow : public KXmlGuiWindow 0036 { 0037 Q_OBJECT 0038 0039 public: 0040 explicit MainWindow(SharedObjects *sharedObjects); 0041 void addPathsFromCommandLine(QStringList &paths); 0042 0043 protected: 0044 void closeEvent(QCloseEvent *event) override; 0045 0046 private Q_SLOTS: 0047 void updateImagesListsMode(); 0048 void setDefaultDockArrangement(); 0049 0050 void addFiles(const QStringList &files); 0051 void addDirectory(const QString &path); 0052 void addGpx(const QVector<QString> &paths); 0053 void addImages(const QVector<QString> &paths); 0054 0055 void imagesDropped(const QVector<QString> &paths); 0056 void saveSelection(ImagesListView *list); 0057 void saveAllChanges(); 0058 void showSettings(); 0059 void assignTo(const QVector<QString> &paths, const Coordinates &coordinates); 0060 void failedToParseClipboard(); 0061 void checkUpdatePreview(const QVector<QString> &paths); 0062 void elevationProcessed(ElevationEngine::Target target, const QVector<QString> &paths, 0063 const QVector<double> &elevations); 0064 void elevationLookupFailed(const QString &errorMessage); 0065 void notAllElevationsPresent(int locationsCount, int elevationsCount); 0066 void triggerAutomaticMatching(ImagesListView *list, KGeoTag::SearchType searchType); 0067 void triggerCompleteAutomaticMatching(KGeoTag::SearchType searchType); 0068 void matchAutomatically(const QVector<QString> &paths, KGeoTag::SearchType searchType); 0069 void assignToMapCenter(ImagesListView *list); 0070 void assignManually(ImagesListView *list); 0071 void findClosestTrackPoint(const QString &path); 0072 void editCoordinates(ImagesListView *list); 0073 void removeCoordinates(ImagesListView *list); 0074 void removeCoordinates(const QVector<QString> &paths); 0075 void discardChanges(ImagesListView *list); 0076 void lookupElevation(ImagesListView *list); 0077 void imagesTimeZoneChanged(); 0078 void cameraDriftSettingsChanged(); 0079 void centerTrackPoint(int trackIndex, int trackPointIndex); 0080 0081 void removeImages(ImagesListView *list); 0082 void removeProcessedSavedImages(); 0083 void removeImagesLoadedTagged(); 0084 void removeAllImages(); 0085 void removeTracks(); 0086 void removeAllTracks(); 0087 void removeEverything(); 0088 0089 private: // Functions 0090 QDockWidget *createImagesDock(KGeoTag::ImagesListType type, const QString &title, 0091 const QString &dockId); 0092 QDockWidget *createDockWidget(const QString &title, QWidget *widget, const QString &objectName); 0093 void lookupElevation(const QVector<QString> &paths); 0094 QString saveFailedHeader(int processed, int allImages) const; 0095 QString skipRetryCancelText(int processed, int allImages) const; 0096 bool checkForPendingChanges(); 0097 void saveChanges(const QVector<QString> &files); 0098 0099 private: // Variables 0100 SharedObjects *m_sharedObjects; 0101 Settings *m_settings; 0102 GpxEngine *m_gpxEngine; 0103 ElevationEngine *m_elevationEngine; 0104 PreviewWidget *m_previewWidget; 0105 MapWidget *m_mapWidget; 0106 FixDriftWidget *m_fixDriftWidget; 0107 BookmarksWidget *m_bookmarksWidget; 0108 ImagesModel *m_imagesModel; 0109 GeoDataModel *m_geoDataModel; 0110 AutomaticMatchingWidget *m_automaticMatchingWidget; 0111 TracksListView *m_tracksView; 0112 MapCenterInfo *m_mapCenterInfo; 0113 0114 QDockWidget *m_previewDock; 0115 QDockWidget *m_fixDriftDock; 0116 QDockWidget *m_automaticMatchingDock; 0117 QDockWidget *m_bookmarksDock; 0118 QDockWidget *m_mapDock; 0119 QDockWidget *m_unAssignedImagesDock; 0120 QDockWidget *m_assignedOrAllImagesDock; 0121 QDockWidget *m_tracksDock; 0122 0123 }; 0124 0125 #endif // MAINWINDOW_H