1 // SPDX-License-Identifier: LGPL-2.1-or-later 2 // 3 // SPDX-FileCopyrightText: 2011 Guillaume Martres <smarter@ubuntu.com> 4 // 5 6 #ifndef MARBLE_SATELLITESCONFIGABSTRACTITEM_H 7 #define MARBLE_SATELLITESCONFIGABSTRACTITEM_H 8 9 #include <QHash> 10 #include <QString> 11 12 class QVariant; 13 14 namespace Marble 15 { 16 17 class SatellitesConfigAbstractItem 18 { 19 public: 20 enum { 21 IdListRole = Qt::UserRole + 0, 22 FullIdListRole = Qt::UserRole + 1, 23 UrlListRole = Qt::UserRole + 2 24 }; 25 26 virtual ~SatellitesConfigAbstractItem(); 27 28 QString name() const; 29 30 int row() const; 31 32 SatellitesConfigAbstractItem *parent() const; 33 void setParent( SatellitesConfigAbstractItem *parent ); 34 35 virtual void loadSettings(const QHash<QString, QVariant> &settings); 36 37 virtual QVariant data( int column, int role ) const; 38 virtual bool setData( int column, int role, const QVariant &data ); 39 40 virtual bool isLeaf() const = 0; 41 virtual SatellitesConfigAbstractItem *childAt( int row ) const = 0; 42 virtual int indexOf( const SatellitesConfigAbstractItem *child ) const = 0; 43 virtual int childrenCount() const = 0; 44 45 virtual Qt::ItemFlags flags() const; 46 virtual void setFlags( Qt::ItemFlags flags ); 47 48 virtual void clear(); 49 50 protected: 51 explicit SatellitesConfigAbstractItem( const QString &name ); 52 53 private: 54 QString m_name; 55 SatellitesConfigAbstractItem *m_parent; 56 Qt::ItemFlags m_flags; 57 }; 58 59 } // namespace Marble 60 61 #endif // MARBLE_SATELLITESCONFIGABSTRACTITEM_H 62