• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • KDevelop Platform Libraries
  • Sitemap
  • Contact Us
 

project

projectmodel.h

00001 /* This file is part of KDevelop
00002     Copyright 2005 Roberto Raggi <roberto@kdevelop.org>
00003     Copyright 2007 Andreas Pakulat <apaku@gmx.de>
00004     Copyright 2007 Aleix Pol <aleixpol@gmail.com>
00005 
00006     This library is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Library General Public
00008     License as published by the Free Software Foundation; either
00009     version 2 of the License, or (at your option) any later version.
00010 
00011     This library is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     Library General Public License for more details.
00015 
00016     You should have received a copy of the GNU Library General Public License
00017     along with this library; see the file COPYING.LIB.  If not, write to
00018     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00019     Boston, MA 02110-1301, USA.
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

project

Skip menu "project"
  • Main Page
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Class Members
  • Related Pages

KDevelop Platform Libraries

Skip menu "KDevelop Platform Libraries"
  • interfaces
  • language
  •   codegen
  •   duchain
  •   editor
  • outputview
  •     interfaces
  • project
  • shell
  • sublime
  • util
  • vcs
Generated for KDevelop Platform Libraries by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal