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