project
projectmodel.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KDEVPROJECTMODEL_H
00023 #define KDEVPROJECTMODEL_H
00024
00025 #include <QtGui/QStandardItem>
00026 #include <QtGui/QStandardItemModel>
00027 #include "projectexport.h"
00028 #include <kurl.h>
00029 #include <ksharedconfig.h>
00030
00031 template<typename T1,typename T2> class QPair;
00032 template<typename T> class QList;
00033
00034 namespace KDevelop
00035 {
00036
00037 class IProject;
00038 class ProjectFolderItem;
00039 class ProjectBuildFolderItem;
00040 class ProjectFileItem;
00041 class ProjectTargetItem;
00042 class ProjectExecutableTargetItem;
00043 class ProjectTestTargetItem;
00044 class ProjectLibraryTargetItem;
00045
00057 class KDEVPLATFORMPROJECT_EXPORT ProjectBaseItem: public QStandardItem
00058 {
00059 public:
00060 ProjectBaseItem( IProject*, const QString &name, QStandardItem *parent = 0 );
00061 virtual ~ProjectBaseItem();
00062
00068 void add( ProjectBaseItem* item );
00069
00070 enum ProjectItemType
00071 {
00072 BuildFolder = QStandardItem::UserType ,
00073 Folder = QStandardItem::UserType+1 ,
00074 ExecutableTarget = QStandardItem::UserType+2 ,
00075 LibraryTarget = QStandardItem::UserType+3 ,
00076 TestTarget = QStandardItem::UserType+4 ,
00077 Target = QStandardItem::UserType+5 ,
00078 File = QStandardItem::UserType+6
00079 };
00080
00082 IProject* project() const;
00083
00085 virtual ProjectFolderItem *folder() const;
00086
00088 virtual ProjectTargetItem *target() const;
00089
00091 virtual ProjectFileItem *file() const;
00092
00094 void setParent( QStandardItem* parent);
00095 virtual void setIcon();
00096
00098 QList<ProjectFolderItem*> folderList() const;
00099
00101 QList<ProjectTargetItem*> targetList() const;
00102
00104 QList<ProjectTestTargetItem*> testList() const;
00105
00107 QList<ProjectFileItem*> fileList() const;
00108
00109 protected:
00110 class ProjectBaseItemPrivate* const d_ptr;
00111 ProjectBaseItem( ProjectBaseItemPrivate& dd );
00112 private:
00113 Q_DECLARE_PRIVATE(ProjectBaseItem)
00114 };
00115
00120 class ProjectFolderItemPrivate;
00121 class KDEVPLATFORMPROJECT_EXPORT ProjectFolderItem: public ProjectBaseItem
00122 {
00123 public:
00124 ProjectFolderItem( IProject*, const KUrl &dir, QStandardItem *parent = 0 );
00125
00126 virtual ~ProjectFolderItem();
00127
00128 virtual ProjectFolderItem *folder() const;
00129
00131 virtual int type() const;
00132
00134 const KUrl& url() const;
00135
00137 const QString& folderName() const;
00138
00140 void setUrl( const KUrl& );
00141
00142 virtual void setIcon();
00143
00145 bool isProjectRoot() const;
00146
00148 void setProjectRoot(bool isRoot);
00149
00151 bool hasFileOrFolder(const QString& name) const;
00152
00153 protected:
00154 ProjectFolderItem( ProjectFolderItemPrivate& );
00155 private:
00156 Q_DECLARE_PRIVATE(ProjectFolderItem)
00157 };
00158
00159
00163 class ProjectBuildFolderItemPrivate;
00164 class KDEVPLATFORMPROJECT_EXPORT ProjectBuildFolderItem: public ProjectFolderItem
00165 {
00166 public:
00167 ProjectBuildFolderItem( IProject*, const KUrl &dir, QStandardItem *parent = 0 );
00168
00170 virtual int type() const;
00171
00172 virtual void setIcon();
00173
00174 protected:
00175 ProjectBuildFolderItem( ProjectBuildFolderItemPrivate& );
00176 private:
00177 Q_DECLARE_PRIVATE(ProjectBuildFolderItem)
00178 };
00179
00185 class ProjectTargetItemPrivate;
00186 class KDEVPLATFORMPROJECT_EXPORT ProjectTargetItem: public ProjectBaseItem
00187 {
00188 public:
00189 ProjectTargetItem( IProject*, const QString &name, QStandardItem *parent = 0 );
00190
00192 virtual int type() const;
00193
00194 virtual ProjectTargetItem *target() const;
00195 virtual void setIcon();
00196 protected:
00197 ProjectTargetItem( ProjectTargetItemPrivate& );
00198 private:
00199 Q_DECLARE_PRIVATE(ProjectTargetItem)
00200 };
00201
00207 class KDEVPLATFORMPROJECT_EXPORT ProjectExecutableTargetItem: public ProjectTargetItem
00208 {
00209 public:
00210 ProjectExecutableTargetItem( IProject*, const QString &name, QStandardItem *parent = 0 );
00211
00213 virtual int type() const;
00214 };
00215
00216
00222 class KDEVPLATFORMPROJECT_EXPORT ProjectLibraryTargetItem: public ProjectTargetItem
00223 {
00224 public:
00225 ProjectLibraryTargetItem( IProject*, const QString &name, QStandardItem *parent = 0 );
00226
00228 virtual int type() const;
00229 };
00230
00231
00237 class KDEVPLATFORMPROJECT_EXPORT ProjectTestTargetItem: public ProjectExecutableTargetItem
00238 {
00239 public:
00240 ProjectTestTargetItem( IProject*, const QString &name, QStandardItem *parent = 0 );
00241
00243 virtual int type() const;
00244 };
00245
00249 class ProjectFileItemPrivate;
00250 class KDEVPLATFORMPROJECT_EXPORT ProjectFileItem: public ProjectBaseItem
00251 {
00252 public:
00253 ProjectFileItem( IProject*, const KUrl& file, QStandardItem *parent = 0 );
00254
00256 virtual int type() const;
00257
00258 virtual ProjectFileItem *file() const;
00259
00261 const KUrl& url() const;
00262
00264 const QString& fileName() const;
00265
00267 void setUrl( const KUrl& );
00268
00269 virtual void setIcon();
00270
00271 protected:
00272 ProjectFileItem( ProjectFileItemPrivate& );
00273 private:
00274 Q_DECLARE_PRIVATE(ProjectFileItem)
00275 };
00276
00282 class KDEVPLATFORMPROJECT_EXPORT ProjectModel: public QStandardItemModel
00283 {
00284 Q_OBJECT
00285 public:
00286 ProjectModel( QObject *parent = 0 );
00287 virtual ~ProjectModel();
00288
00289 using QStandardItemModel::item;
00290 ProjectBaseItem *item( const QModelIndex &index ) const;
00291
00292 void resetModel();
00293
00294 virtual void fetchMore( const QModelIndex &parent );
00295 virtual bool canFetchMore( const QModelIndex & parent ) const;
00296 private:
00297 class ProjectModelPrivate* const d;
00298 };
00299
00300 }
00301
00302 #endif // KDEVPROJECTMODEL_H