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_EXTERNALBINPARAMSMODEL_H
0009 #define K3B_EXTERNALBINPARAMSMODEL_H
0010 
0011 #include <QAbstractItemModel>
0012 
0013 namespace K3b {
0014     
0015     class DataDoc;
0016     class ExternalProgram;
0017     class ExternalBinManager;
0018 
0019     class ExternalBinParamsModel : public QAbstractTableModel
0020     {
0021         Q_OBJECT
0022         
0023     public:
0024         enum Columns {
0025             ProgramColumn,
0026             ParametersColumn,
0027             NumColumns
0028         };
0029         
0030     public:
0031         explicit ExternalBinParamsModel( ExternalBinManager* manager, QObject* parent = 0 );
0032         ~ExternalBinParamsModel() override;
0033         
0034         /**
0035          * Reloads programs from ExternalBinManager and updates the model
0036          */
0037         void reload();
0038         
0039         /**
0040          * Saves all changes made in model to ExternalBinManager
0041          */
0042         void save();
0043         
0044         ExternalProgram* programForIndex( const QModelIndex& index ) const;
0045         QModelIndex indexForProgram( ExternalProgram* program, int column = ProgramColumn ) const;
0046         
0047         Qt::ItemFlags flags( const QModelIndex& index ) const override;
0048         QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const override;
0049         bool setData( const QModelIndex& index, const QVariant& value, int role = Qt::EditRole ) override;
0050         int columnCount( const QModelIndex& parent = QModelIndex() ) const override;
0051         int rowCount( const QModelIndex& parent = QModelIndex() ) const override;
0052         QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const override;
0053         QModelIndex buddy( const QModelIndex& index ) const override;
0054         
0055     private:
0056         class Private;
0057         Private* d;
0058     };
0059 
0060 }
0061 
0062 #endif // K3B_EXTERNALBINPARAMSMODEL_H