File indexing completed on 2024-05-05 04:51:37

0001 /*
0002     SPDX-FileCopyrightText: 2010 Michal Malek <michalm@jabster.pl>
0003     SPDX-FileCopyrightText: 1998-2010 Sebastian Trueg <trueg@k3b.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef K3B_EXTERNALBINMODEL_H
0009 #define K3B_EXTERNALBINMODEL_H
0010 
0011 #include <QAbstractItemModel>
0012 
0013 namespace K3b {
0014 
0015     class DataDoc;
0016     class ExternalBin;
0017     class ExternalBinManager;
0018     class ExternalProgram;
0019 
0020     class ExternalBinModel : public QAbstractItemModel
0021     {
0022         Q_OBJECT
0023 
0024     public:
0025         enum Columns {
0026             PathColumn,
0027             VersionColumn,
0028             FeaturesColumn,
0029             NumColumns
0030         };
0031 
0032     public:
0033         explicit ExternalBinModel( ExternalBinManager* manager, QObject* parent = 0 );
0034         ~ExternalBinModel() override;
0035 
0036         /**
0037          * Reloads programs from ExternalBinManager and updates the model
0038          */
0039         void reload();
0040 
0041         /**
0042          * Saves all changes made in model to ExternalBinManager
0043          */
0044         void save();
0045 
0046         ExternalProgram* programForIndex( const QModelIndex& index ) const;
0047         QModelIndex indexForProgram( ExternalProgram* program, int column = PathColumn ) const;
0048 
0049         const ExternalBin* binForIndex( const QModelIndex& index ) const;
0050         QModelIndex indexForBin( const ExternalBin* bin, int column = PathColumn ) const;
0051 
0052         QModelIndex index( int row, int column, const QModelIndex& parent = QModelIndex() ) const override;
0053         QModelIndex parent( const QModelIndex& index ) const override;
0054         Qt::ItemFlags flags( const QModelIndex& index ) const override;
0055         QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const override;
0056         bool setData( const QModelIndex& index, const QVariant& value, int role ) override;
0057         int columnCount( const QModelIndex& parent = QModelIndex() ) const override;
0058         int rowCount( const QModelIndex& parent = QModelIndex() ) const override;
0059         QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const override;
0060         QModelIndex buddy( const QModelIndex& index ) const override;
0061 
0062     private:
0063         class Private;
0064         Private* d;
0065     };
0066 
0067 }
0068 
0069 #endif // K3B_EXTERNALBINMODEL_H