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