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