File indexing completed on 2024-04-28 03:49:31

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_SPEAKERSMODEL_H
0007 #define MARBLE_SPEAKERSMODEL_H
0008 
0009 #include "marble_export.h"
0010 
0011 #include <QAbstractListModel>
0012 
0013 namespace Marble
0014 {
0015 
0016 class SpeakersModelPrivate;
0017 
0018 class MARBLE_EXPORT SpeakersModel : public QAbstractListModel
0019 {
0020     Q_OBJECT
0021 
0022     Q_PROPERTY(int count READ count NOTIFY countChanged)
0023 
0024 public:
0025     enum SpeakersModelRoles {
0026         Name = Qt::UserRole + 1,
0027         Path,
0028         IsLocal,
0029         IsRemote
0030     };
0031 
0032     /** Constructor */
0033     explicit SpeakersModel( QObject *parent = nullptr );
0034 
0035     /** Destructor */
0036     ~SpeakersModel() override;
0037 
0038     /** Overload of QAbstractListModel */
0039     int rowCount ( const QModelIndex &parent = QModelIndex() ) const override;
0040 
0041     /** Overload of QAbstractListModel */
0042     QVariant data ( const QModelIndex &index, int role = Qt::DisplayRole ) const override;
0043 
0044     /** Overload of QAbstractListModel */
0045     QHash<int, QByteArray> roleNames() const override;
0046 
0047     /** @todo FIXME https://bugreports.qt-project.org/browse/QTCOMPONENTS-1206 */
0048     int count() const;
0049 
0050 public Q_SLOTS:
0051     int indexOf( const QString &name );
0052 
0053     QString path( int index );
0054 
0055     void install( int index );
0056 
0057     bool isLocal( int index ) const;
0058 
0059     bool isRemote( int index ) const;
0060 
0061 Q_SIGNALS:
0062     void countChanged();
0063 
0064     void installationProgressed( int newstuffindex, qreal progress );
0065 
0066     void installationFinished( int index );
0067 
0068 private:
0069     SpeakersModelPrivate* const d;
0070     friend class SpeakersModelPrivate;
0071 
0072     Q_PRIVATE_SLOT( d, void fillModel() )
0073 
0074     Q_PRIVATE_SLOT( d, void handleInstallationProgress( int row, qreal progress ) )
0075 
0076     Q_PRIVATE_SLOT( d, void handleInstallation( int row ) )
0077 };
0078 
0079 }
0080 
0081 #endif // MARBLE_SPEAKERSMODEL_H