File indexing completed on 2024-04-28 15:39:05
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 BOOKMARKSLIST_H 0006 #define BOOKMARKSLIST_H 0007 0008 // Local includes 0009 #include "ElevationEngine.h" 0010 #include "Coordinates.h" 0011 0012 // Qt includes 0013 #include <QListWidget> 0014 0015 // Local classes 0016 class SharedObjects; 0017 class Settings; 0018 class MapWidget; 0019 0020 // Qt classes 0021 class QMenu; 0022 class QAction; 0023 class QListWidgetItem; 0024 0025 class BookmarksList : public QListWidget 0026 { 0027 Q_OBJECT 0028 0029 public: 0030 explicit BookmarksList(SharedObjects *sharedObjects, QWidget *parent = nullptr); 0031 const QHash<QString, Coordinates> *bookmarks() const; 0032 0033 Q_SIGNALS: 0034 void showInfo(const Coordinates &coordinates); 0035 void bookmarksChanged(); 0036 0037 private: // Structs 0038 struct EnteredString 0039 { 0040 QString string; 0041 bool okay; 0042 }; 0043 0044 private Q_SLOTS: 0045 void showContextMenu(const QPoint &point); 0046 void newBookmark(); 0047 void newManualBookmark(); 0048 void renameBookmark(); 0049 void editCoordinates(); 0050 void lookupElevation(); 0051 void setElevation(); 0052 void deleteBookmark(); 0053 0054 void itemHighlighted(QListWidgetItem *item, QListWidgetItem *); 0055 void elevationProcessed(ElevationEngine::Target target, const QVector<QString> &ids, 0056 const QVector<double> &elevations); 0057 void restoreAfterElevationLookup(); 0058 void centerBookmark(QListWidgetItem *item); 0059 0060 0061 private: // Functions 0062 void saveBookmark(QString label, const Coordinates &coordinates); 0063 EnteredString getString(const QString &title, const QString &label, 0064 const QString &text = QString()); 0065 void requestElevation(const QString &id); 0066 0067 private: // Variables 0068 Settings *m_settings; 0069 ElevationEngine *m_elevationEngine; 0070 MapWidget *m_mapWidget; 0071 0072 QHash<QString, Coordinates> m_bookmarks; 0073 0074 QListWidgetItem *m_contextMenuItem = nullptr; 0075 QMenu *m_contextMenu; 0076 QAction *m_renameBookmark; 0077 QAction *m_lookupElevation; 0078 QAction *m_setElevation; 0079 QAction *m_deleteBookmark; 0080 QAction *m_editCoordinates; 0081 0082 }; 0083 0084 #endif // BOOKMARKSLIST_H