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 #include "SatellitesConfigLeafItem.h"
0007 
0008 #include <QVariant>
0009 
0010 namespace Marble {
0011 
0012 SatellitesConfigLeafItem::SatellitesConfigLeafItem( const QString &name, const QString &id )
0013     : SatellitesConfigAbstractItem( name ),
0014       m_id( id ),
0015       m_url( QString() ),
0016       m_isChecked( false ),
0017       m_isOrbitDisplayed( false )
0018 { 
0019 }
0020 
0021 SatellitesConfigLeafItem::~SatellitesConfigLeafItem()
0022 {
0023 }
0024 
0025 void SatellitesConfigLeafItem::loadSettings(const QHash<QString, QVariant> &settings)
0026 {
0027     const QStringList idList = settings.value(QStringLiteral("idList")).toStringList();
0028     m_isChecked = idList.contains( m_id );
0029 }
0030 
0031 QVariant SatellitesConfigLeafItem::data( int column, int role ) const
0032 {
0033     QVariant base = SatellitesConfigAbstractItem::data( column, role );
0034     if ( base.isValid() ) {
0035         return base;
0036     }
0037 
0038     switch ( role ) {
0039     case UrlListRole:
0040         if( !m_url.isNull() && !m_url.isEmpty() ) {
0041             return QVariant( QStringList() << m_url );
0042         }
0043         break;
0044     case IdListRole:
0045     case FullIdListRole:
0046         return QVariant( QStringList() << m_id );
0047     case Qt::CheckStateRole:
0048         switch ( column ) {
0049         case 0:
0050             return QVariant( m_isChecked ? Qt::Checked : Qt::Unchecked );
0051         case 1:
0052             return QVariant( m_isOrbitDisplayed ? Qt::Checked : Qt::Unchecked );
0053         }
0054     }
0055 
0056     return QVariant();
0057 }
0058 
0059 bool SatellitesConfigLeafItem::setData( int column, int role, const QVariant& data )
0060 {
0061     switch( role ) {
0062     case UrlListRole:
0063         m_url = data.toString();
0064         return true;
0065     case Qt::CheckStateRole:
0066         switch ( column ) {
0067         case 0:
0068             m_isChecked = data.toBool();
0069             return true;
0070         case 1:
0071             m_isOrbitDisplayed = data.toBool();
0072             return true;
0073         }
0074     }
0075 
0076     return false;
0077 }
0078 
0079 bool SatellitesConfigLeafItem::isLeaf() const
0080 {
0081     return true;
0082 }
0083 
0084 SatellitesConfigAbstractItem *SatellitesConfigLeafItem::childAt( int row ) const
0085 {
0086     Q_UNUSED( row )
0087     return nullptr;
0088 }
0089 
0090 int SatellitesConfigLeafItem::indexOf( const SatellitesConfigAbstractItem *child ) const
0091 {
0092     Q_UNUSED( child )
0093     return -1;
0094 }
0095 
0096 int SatellitesConfigLeafItem::childrenCount() const
0097 {
0098     return 0;
0099 }
0100 
0101 QString SatellitesConfigLeafItem::id() const
0102 {
0103     return m_id;
0104 }
0105 
0106 QString SatellitesConfigLeafItem::url() const
0107 {
0108     return m_url;
0109 }
0110 
0111 } // namespace Marble
0112