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