File indexing completed on 2024-05-05 03:49:16
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2012 Dennis Nienhüser <nienhueser@kde.org> 0004 // 0005 0006 #ifndef MARBLE_DECLARATIVE_BOOKMARKS_H 0007 #define MARBLE_DECLARATIVE_BOOKMARKS_H 0008 0009 #include <QObject> 0010 #include <QSortFilterProxyModel> 0011 #include <GeoDataTreeModel.h> 0012 #include "Placemark.h" 0013 0014 namespace Marble { 0015 0016 class MarbleQuickItem; 0017 0018 class BookmarksModel: public QSortFilterProxyModel 0019 { 0020 Q_OBJECT 0021 Q_PROPERTY( int count READ count NOTIFY countChanged ) 0022 0023 public: 0024 explicit BookmarksModel( QObject *parent = nullptr ); 0025 0026 int count() const; 0027 0028 public Q_SLOTS: 0029 qreal longitude( int index ) const; 0030 0031 qreal latitude( int index ) const; 0032 0033 QString name( int index ) const; 0034 0035 Q_SIGNALS: 0036 void countChanged(); 0037 }; 0038 0039 class Bookmarks : public QObject 0040 { 0041 Q_OBJECT 0042 0043 Q_PROPERTY( Marble::MarbleQuickItem* map READ map WRITE setMap NOTIFY mapChanged) 0044 Q_PROPERTY( BookmarksModel* model READ model NOTIFY modelChanged ) 0045 0046 public: 0047 explicit Bookmarks( QObject* parent = nullptr ); 0048 0049 MarbleQuickItem* map(); 0050 0051 void setMap(MarbleQuickItem *widget ); 0052 0053 BookmarksModel* model(); 0054 0055 Q_INVOKABLE bool isBookmark( qreal longitude, qreal latitude ) const; 0056 0057 Q_INVOKABLE Placemark* placemark(int index); 0058 0059 public Q_SLOTS: 0060 void addBookmark(Placemark *placemark, const QString &folder ); 0061 void removeBookmark( qreal longitude, qreal latitude ); 0062 void updateBookmarkDocument(); 0063 0064 Q_SIGNALS: 0065 void mapChanged(); 0066 0067 void modelChanged(); 0068 0069 private: 0070 MarbleQuickItem* m_marbleQuickItem; 0071 BookmarksModel* m_proxyModel; 0072 GeoDataTreeModel m_treeModel; 0073 }; 0074 0075 } 0076 0077 #endif