File indexing completed on 2024-04-28 15:39:06
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 IMAGESLISTVIEW_H 0006 #define IMAGESLISTVIEW_H 0007 0008 // Local includes 0009 #include "KGeoTag.h" 0010 #include "Coordinates.h" 0011 0012 // Qt includes 0013 #include <QListView> 0014 0015 // Local classes 0016 class SharedObjects; 0017 class ImagesListFilter; 0018 0019 // Qt classes 0020 class QMenu; 0021 class QAction; 0022 0023 class ImagesListView : public QListView 0024 { 0025 Q_OBJECT 0026 0027 public: 0028 explicit ImagesListView(KGeoTag::ImagesListType type, SharedObjects *sharedObjects, 0029 QWidget *parent = nullptr); 0030 void setListType(KGeoTag::ImagesListType type); 0031 QVector<QString> selectedPaths() const; 0032 void highlightImage(const QModelIndex &index); 0033 0034 public Q_SLOTS: 0035 void updateBookmarks(); 0036 0037 Q_SIGNALS: 0038 void imageSelected(const QModelIndex &index); 0039 void centerImage(const QModelIndex &index); 0040 void requestAutomaticMatching(ImagesListView *list, KGeoTag::SearchType searchType); 0041 void assignToMapCenter(ImagesListView *list); 0042 void assignManually(ImagesListView *list); 0043 void editCoordinates(ImagesListView *list); 0044 void lookupElevation(ImagesListView *list); 0045 void removeCoordinates(ImagesListView *list); 0046 void removeCoordinates(const QVector<QString> &paths); 0047 void requestSaving(ImagesListView *list); 0048 void discardChanges(ImagesListView *list); 0049 void assignTo(const QVector<QString> &paths, const Coordinates &coordinates); 0050 void requestAddingImages(const QVector<QString> &paths); 0051 void removeImages(ImagesListView *list); 0052 void failedToParseClipboard(); 0053 void findClosestTrackPoint(const QString &path); 0054 0055 protected: 0056 void mousePressEvent(QMouseEvent *event) override; 0057 void mouseMoveEvent(QMouseEvent *event) override; 0058 void keyPressEvent(QKeyEvent *event) override; 0059 void currentChanged(const QModelIndex ¤t, const QModelIndex &) override; 0060 0061 private Q_SLOTS: 0062 void showContextMenu(const QPoint &point); 0063 void selectImages(bool coordinatesSet); 0064 void openExternally(); 0065 void assignToClipboard(); 0066 0067 private: // Variables 0068 KGeoTag::ImagesListType m_listType; 0069 ImagesListFilter *m_listFilter; 0070 const QHash<QString, Coordinates> *m_bookmarks; 0071 0072 bool m_dragStarted = false; 0073 QPoint m_dragStartPosition; 0074 0075 QMenu *m_contextMenu; 0076 QMenu *m_automaticMatchingMenu; 0077 QMenu *m_bookmarksMenu; 0078 QMenu *m_selectMenu; 0079 0080 QAction *m_selectAll; 0081 QAction *m_assignToMapCenter; 0082 QAction *m_assignToClipboard; 0083 QAction *m_assignManually; 0084 QAction *m_findClosestTrackPoint; 0085 QAction *m_editCoordinates; 0086 QAction *m_lookupElevation; 0087 QAction *m_removeCoordinates; 0088 QAction *m_save; 0089 QAction *m_discardChanges; 0090 QAction *m_removeImages; 0091 QAction *m_openExternally; 0092 0093 }; 0094 0095 #endif // IMAGESLISTVIEW_H