File indexing completed on 2024-04-28 04:37:04
0001 /* 0002 SPDX-FileCopyrightText: 2007 Andreas Pakulat <apaku@gmx.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef KDEVPLATFORM_PROJECTBUILDSETMODEL_H 0008 #define KDEVPLATFORM_PROJECTBUILDSETMODEL_H 0009 0010 #include "projectexport.h" 0011 0012 #include <QAbstractTableModel> 0013 #include <QStringList> 0014 0015 namespace KDevelop 0016 { 0017 class ProjectBaseItem; 0018 class ICore; 0019 class IProject; 0020 class ISession; 0021 class ProjectBuildSetModelPrivate; 0022 0023 class KDEVPLATFORMPROJECT_EXPORT BuildItem 0024 { 0025 public: 0026 BuildItem(); 0027 explicit BuildItem( const QStringList& itemPath ); 0028 BuildItem( const BuildItem& rhs ); 0029 explicit BuildItem( KDevelop::ProjectBaseItem* ); 0030 ~BuildItem() = default; 0031 0032 void initializeFromItem( KDevelop::ProjectBaseItem* item ); 0033 KDevelop::ProjectBaseItem* findItem() const; 0034 BuildItem& operator=( const BuildItem& ); 0035 QString itemName() const; 0036 QStringList itemPath() const { return m_itemPath; } 0037 QString itemProject() const; 0038 private: 0039 QStringList m_itemPath; 0040 }; 0041 0042 bool operator==( const BuildItem& rhs, const BuildItem& lhs ); 0043 0044 class KDEVPLATFORMPROJECT_EXPORT ProjectBuildSetModel : public QAbstractTableModel 0045 { 0046 Q_OBJECT 0047 public: 0048 explicit ProjectBuildSetModel( QObject* parent ); 0049 ~ProjectBuildSetModel() override; 0050 QVariant data( const QModelIndex&, int role = Qt::DisplayRole ) const override; 0051 QVariant headerData( int, Qt::Orientation, int role = Qt::DisplayRole ) const override; 0052 int rowCount( const QModelIndex& = QModelIndex() ) const override; 0053 int columnCount( const QModelIndex& = QModelIndex() ) const override; 0054 0055 void loadFromSession( ISession* session ); 0056 void storeToSession( ISession* session ); 0057 0058 void addProjectItem( KDevelop::ProjectBaseItem* ); 0059 bool removeRows( int row, int count, const QModelIndex& parent = QModelIndex() ) override; 0060 void moveRowsUp( int row, int count ); 0061 void moveRowsDown( int row, int count ); 0062 void moveRowsToTop( int row, int count ); 0063 void moveRowsToBottom( int row, int count ); 0064 QList<BuildItem> items() const; 0065 public Q_SLOTS: 0066 void saveToProject( KDevelop::IProject* ) const; 0067 void loadFromProject( KDevelop::IProject* ); 0068 void projectClosed( KDevelop::IProject* ); 0069 private: 0070 int findInsertionPlace( const QStringList& itemPath ); 0071 void removeItemsWithCache( const QList<int>& itemIndices ); 0072 void insertItemWithCache( const KDevelop::BuildItem& item ); 0073 void insertItemsOverrideCache( int index, const QList<KDevelop::BuildItem>& items ); 0074 0075 private: 0076 const QScopedPointer<class ProjectBuildSetModelPrivate> d_ptr; 0077 Q_DECLARE_PRIVATE(ProjectBuildSetModel) 0078 }; 0079 0080 } 0081 0082 Q_DECLARE_TYPEINFO(KDevelop::BuildItem, Q_MOVABLE_TYPE); 0083 0084 #endif