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 IMAGESLISTVIEW_H 7 #define IMAGESLISTVIEW_H 8 9 // Local includes 10 #include "KGeoTag.h" 11 #include "Coordinates.h" 12 13 // Qt includes 14 #include <QListView> 15 16 // Local classes 17 class SharedObjects; 18 class ImagesListFilter; 19 20 // Qt classes 21 class QMenu; 22 class QAction; 23 24 class ImagesListView : public QListView 25 { 26 Q_OBJECT 27 28 public: 29 explicit ImagesListView(KGeoTag::ImagesListType type, SharedObjects *sharedObjects, 30 QWidget *parent = nullptr); 31 void setListType(KGeoTag::ImagesListType type); 32 QVector<QString> selectedPaths() const; 33 34 public slots: 35 void updateBookmarks(); 36 37 signals: 38 void imageSelected(const QModelIndex &index); 39 void centerImage(const QModelIndex &index); 40 void requestAutomaticMatching(ImagesListView *list, KGeoTag::SearchType searchType); 41 void assignToMapCenter(ImagesListView *list); 42 void assignManually(ImagesListView *list); 43 void editCoordinates(ImagesListView *list); 44 void lookupElevation(ImagesListView *list); 45 void removeCoordinates(ImagesListView *list); 46 void removeCoordinates(const QVector<QString> &paths); 47 void requestSaving(ImagesListView *list); 48 void discardChanges(ImagesListView *list); 49 void assignTo(const QVector<QString> &paths, const Coordinates &coordinates); 50 void requestAddingImages(const QVector<QString> &paths); 51 void removeImages(ImagesListView *list); 52 53 protected: 54 void mousePressEvent(QMouseEvent *event) override; 55 void mouseMoveEvent(QMouseEvent *event) override; 56 void keyPressEvent(QKeyEvent *event) override; 57 void currentChanged(const QModelIndex ¤t, const QModelIndex &) override; 58 59 private slots: 60 void showContextMenu(const QPoint &point); 61 void selectImages(bool coordinatesSet); 62 63 private: // Variables 64 KGeoTag::ImagesListType m_listType; 65 ImagesListFilter *m_listFilter; 66 const QHash<QString, Coordinates> *m_bookmarks; 67 68 bool m_dragStarted = false; 69 QPoint m_dragStartPosition; 70 71 QMenu *m_contextMenu; 72 QMenu *m_automaticMatchingMenu; 73 QMenu *m_bookmarksMenu; 74 QMenu *m_selectMenu; 75 76 QAction *m_selectAll; 77 QAction *m_assignToMapCenter; 78 QAction *m_assignManually; 79 QAction *m_editCoordinates; 80 QAction *m_lookupElevation; 81 QAction *m_removeCoordinates; 82 QAction *m_save; 83 QAction *m_discardChanges; 84 QAction *m_removeImages; 85 86 }; 87 88 #endif // IMAGESLISTVIEW_H 89