File indexing completed on 2024-06-16 04:24:39
0001 /* 0002 SPDX-FileCopyrightText: 2014 Sergey Kalinichev <kalinichev.so.0@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #ifndef COMPILERSMODEL_H 0008 #define COMPILERSMODEL_H 0009 0010 #include <QAbstractItemModel> 0011 #include <QItemSelection> 0012 0013 #include "../compilerprovider/icompiler.h" 0014 0015 class TreeItem; 0016 0017 class CompilersModel : public QAbstractItemModel 0018 { 0019 Q_OBJECT 0020 0021 public: 0022 enum SpecialRole { 0023 CompilerDataRole = Qt::UserRole + 1 0024 }; 0025 0026 explicit CompilersModel( QObject* parent = nullptr ); 0027 ~CompilersModel() override; 0028 0029 void setCompilers( const QVector<CompilerPointer>& compilers ); 0030 QVector<CompilerPointer> compilers() const; 0031 QModelIndex addCompiler(const CompilerPointer& compiler); 0032 void updateCompiler(const QItemSelection& compiler); 0033 0034 Q_SIGNALS: 0035 /// emitted whenever new compiler added or existing one modified/deleted. 0036 void compilerChanged(); 0037 0038 public: 0039 QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const override; 0040 int rowCount( const QModelIndex& parent = QModelIndex() ) const override; 0041 Qt::ItemFlags flags( const QModelIndex& index ) const override; 0042 int columnCount( const QModelIndex& parent = QModelIndex() ) const override; 0043 QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const override; 0044 QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const override; 0045 QModelIndex parent(const QModelIndex& child) const override; 0046 bool removeRows(int row, int count, const QModelIndex& parent = QModelIndex()) override; 0047 0048 private: 0049 TreeItem* m_rootItem; 0050 }; 0051 0052 #endif // COMPILERMODEL_H