File indexing completed on 2024-04-28 03:50:23

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2011 Guillaume Martres <smarter@ubuntu.com>
0004 //
0005 
0006 #ifndef MARBLE_SATELLITESCONFIGABSTRACTITEM_H
0007 #define MARBLE_SATELLITESCONFIGABSTRACTITEM_H
0008 
0009 #include <QHash>
0010 #include <QString>
0011 
0012 class QVariant;
0013 
0014 namespace Marble
0015 {
0016 
0017 class SatellitesConfigAbstractItem
0018 {
0019 public:
0020     enum {
0021         IdListRole      = Qt::UserRole + 0,
0022         FullIdListRole  = Qt::UserRole + 1,
0023         UrlListRole     = Qt::UserRole + 2
0024     };
0025 
0026     virtual ~SatellitesConfigAbstractItem();
0027 
0028     QString name() const;
0029 
0030     int row() const;
0031 
0032     SatellitesConfigAbstractItem *parent() const;
0033     void setParent( SatellitesConfigAbstractItem *parent );
0034 
0035     virtual void loadSettings(const QHash<QString, QVariant> &settings);
0036 
0037     virtual QVariant data( int column, int role ) const;
0038     virtual bool setData( int column, int role, const QVariant &data );
0039     
0040     virtual bool isLeaf() const = 0;
0041     virtual SatellitesConfigAbstractItem *childAt( int row ) const = 0;
0042     virtual int indexOf( const SatellitesConfigAbstractItem *child ) const = 0;
0043     virtual int childrenCount() const = 0;
0044 
0045     virtual Qt::ItemFlags flags() const;
0046     virtual void setFlags( Qt::ItemFlags flags );
0047 
0048     virtual void clear();
0049 
0050 protected:
0051     explicit SatellitesConfigAbstractItem( const QString &name );
0052 
0053 private:
0054     QString m_name;
0055     SatellitesConfigAbstractItem *m_parent;
0056     Qt::ItemFlags m_flags;
0057 };
0058 
0059 } // namespace Marble
0060 
0061 #endif // MARBLE_SATELLITESCONFIGABSTRACTITEM_H