[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/devtools/kdevelop4-extra-plugins/vcsprojectintegration
From:       Aleix Pol Gonzalez <aleixpol () gmail ! com>
Date:       2011-06-04 10:17:52
Message-ID: 20110604101752.630D3AC86E () svn ! kde ! org
[Download RAW message or body]

SVN commit 1235144 by apol:

Refactor to ease KDevPlatform merge


 M  +1 -0      CMakeLists.txt  
 A             projectchangesmodel.cpp   [License: LGPL (v2)]
 A             projectchangesmodel.h   [License: LGPL (v2)]
 M  +1 -0      vcschangesview.cpp  
 M  +4 -161    vcsprojectintegrationplugin.cpp  
 M  +0 -29     vcsprojectintegrationplugin.h  


--- trunk/playground/devtools/kdevelop4-extra-plugins/vcsprojectintegration/CMakeLists.txt \
#1235143:1235144 @@ -18,6 +18,7 @@
 #add_definitions(-DKDE_DEFAULT_DEBUG_AREA=)
 
 set(vcsprojectintegration_SRCS
+    projectchangesmodel.cpp
     filechangesmodel.cpp
     vcschangesview.cpp
     
--- trunk/playground/devtools/kdevelop4-extra-plugins/vcsprojectintegration/vcschangesview.cpp \
#1235143:1235144 @@ -32,6 +32,7 @@
 #include <KActionCollection>
 #include <interfaces/idocumentcontroller.h>
 #include <vcs/vcsstatusinfo.h>
+#include "projectchangesmodel.h"
 
 using namespace KDevelop;
 
--- trunk/playground/devtools/kdevelop4-extra-plugins/vcsprojectintegration/vcsprojectintegrationplugin.cpp \
#1235143:1235144 @@ -40,6 +40,7 @@
 #include "vcschangesview.h"
 #include <KActionCollection>
 #include <KAction>
+#include "projectchangesmodel.h"
 
 K_PLUGIN_FACTORY(VcsProjectIntegrationFactory, \
registerPlugin<VcsProjectIntegrationPlugin>(); )  \
K_EXPORT_PLUGIN(VcsProjectIntegrationFactory( @@ -57,8 +58,8 @@
     {
         VcsChangesView* modif = new VcsChangesView(m_plugin, parent);
         modif->setModel(m_plugin->model());
-        QObject::connect(modif, SIGNAL(reload(QList<KDevelop::IProject*>)), \
                m_plugin, SLOT(reload(QList<KDevelop::IProject*>)));
-        QObject::connect(modif, SIGNAL(reload(QList<KUrl>)), m_plugin, \
SLOT(reload(QList<KUrl>))); +        QObject::connect(modif, \
SIGNAL(reload(QList<KDevelop::IProject*>)), m_plugin->model(), \
SLOT(reload(QList<KDevelop::IProject*>))); +        QObject::connect(modif, \
SIGNAL(reload(QList<KUrl>)), m_plugin->model(), SLOT(reload(QList<KUrl>)));  return \
modif;  }
 
@@ -90,164 +91,6 @@
     QAction* reloadaction = actionCollection()->addAction( "reload_view" );
     reloadaction->setIcon(KIcon("view-refresh"));
     reloadaction->setToolTip(i18n("Refreshes the view for all projects, in case \
                anything changed."));
-    connect(reloadaction, SIGNAL(triggered(bool)), SLOT(reloadAll()));
-    
-    foreach(IProject* p, ICore::self()->projectController()->projects())
-        m_model->addProject(p);
-    
-    connect(ICore::self()->projectController(), \
                SIGNAL(projectOpened(KDevelop::IProject*)),
-                                              m_model, \
                SLOT(addProject(KDevelop::IProject*)));
-    connect(ICore::self()->projectController(), \
                SIGNAL(projectClosing(KDevelop::IProject*)),
-                                              m_model,  \
                SLOT(removeProject(KDevelop::IProject*)));
-    connect(ICore::self()->documentController(), \
                SIGNAL(documentSaved(KDevelop::IDocument*)),
-                                                \
                SLOT(documentSaved(KDevelop::IDocument*)));
-    connect(ICore::self()->projectController()->projectModel(), \
                SIGNAL(rowsInserted(QModelIndex, int, int)),
-                                                SLOT(itemsAdded(QModelIndex, int, \
int))); +    connect(reloadaction, SIGNAL(triggered(bool)), m_model, \
SLOT(reloadAll()));  }
 
-void VcsProjectIntegrationPlugin::reload(const QList<IProject*>& projects)
-{
-    foreach(IProject* project, projects)
-        changes(project, project->folder(), \
                KDevelop::IBasicVersionControl::Recursive);
-}
-
-void VcsProjectIntegrationPlugin::reload(const QList<KUrl>& urls)
-{
-    foreach(const KUrl& url, urls) {
-        IProject* project=ICore::self()->projectController()->findProjectForUrl(url);
                
-        
-        if(project)
-            changes(project, url, KDevelop::IBasicVersionControl::NonRecursive);
-    }
-}
-
-void VcsProjectIntegrationPlugin::documentSaved(KDevelop::IDocument* document)
-{
-    reload(KUrl::List() << document->url());
-}
-
-void VcsProjectIntegrationPlugin::itemsAdded(const QModelIndex& parent, int start, \
                int end)
-{
-    ProjectModel* model=ICore::self()->projectController()->projectModel();
-    ProjectBaseItem* item=model->itemFromIndex(parent);
-
-    if(!item)
-        return;
-
-    IProject* project=item->project();
-    
-    if(!project)
-        return;
-    
-    KUrl::List urls;
-    
-    for(int i=start; i<end; i++) {
-        QModelIndex idx=parent.child(i, 0);
-        item=model->itemFromIndex(idx);
-        
-        if(item->type()==ProjectBaseItem::File || \
                item->type()==ProjectBaseItem::Folder || \
                item->type()==ProjectBaseItem::BuildFolder)
-            urls += item->url();
-    }
-        
-    if(!urls.isEmpty())
-        changes(project, urls, KDevelop::IBasicVersionControl::NonRecursive);
-}
-
-void VcsProjectIntegrationPlugin::changes(IProject* project, const KUrl::List& urls, \
                IBasicVersionControl::RecursionMode mode)
-{
-    IPlugin* vcsplugin=project->versionControlPlugin();
-    IBasicVersionControl* vcs = vcsplugin ? \
                vcsplugin->extension<IBasicVersionControl>() : 0;
-    
-    if(vcs && vcs->isVersionControlled(urls.first())) { //TODO: filter?
-        VcsJob* job=vcs->status(urls, mode);
-        connect(job, SIGNAL(finished(KJob*)), SLOT(statusReady(KJob*)));
-        
-        ICore::self()->runController()->registerJob(job);
-    }
-}
-
-void VcsProjectIntegrationPlugin::statusReady(KJob* job)
-{
-    VcsJob* status=static_cast<VcsJob*>(job);
-    
-    m_model->addStates(status->fetchResults().toList());
-}
-
-//////////////Project Changes
-ProjectChangesModel::ProjectChangesModel(QObject* parent)
-    : FileChangesModel(parent)
-{
-}
-
-void ProjectChangesModel::addProject(IProject* p)
-{
-    QStandardItem* it = new QStandardItem(p->name());
-    QStandardItem* itStatus = new QStandardItem;
-    if(p->versionControlPlugin()) {
-        IPlugin* plugin = p->versionControlPlugin();
-        
-        IBasicVersionControl* vcs = plugin->extension<IBasicVersionControl>();
-
-        KPluginInfo info = ICore::self()->pluginController()->pluginInfo(plugin);
-        
-        itStatus->setIcon(KIcon(info.icon()));
-        itStatus->setText(vcs->name());
-    } else {
-        it->setEnabled(false);
-        itStatus->setEnabled(false);
-        itStatus->setText(i18n("No Version Control support for this project."));
-    }
-    
-    appendRow(QList<QStandardItem*>() << it << itStatus);
-}
-
-void ProjectChangesModel::removeProject(IProject* p)
-{
-    QStandardItem* it=projectItem(p);
-    
-    removeRow(it->row());
-}
-
-QStandardItem* findItemChild(QStandardItem* parent, const QVariant& value, int role \
                = Qt::DisplayRole)
-{
-    for(int i=0; i<parent->rowCount(); i++) {
-        QStandardItem* curr=parent->child(i);
-        
-        if(curr->data(role) == value)
-            return curr;
-    }
-    return 0;
-}
-
-QStandardItem* ProjectChangesModel::projectItem(IProject* p) const
-{
-    return findItemChild(invisibleRootItem(), p->name());
-}
-
-void ProjectChangesModel::addStates(const QVariantList& states)
-{
-    IProjectController* projectController = ICore::self()->projectController();
-        
-    foreach(const QVariant& state, states) {
-        VcsStatusInfo st = state.value<VcsStatusInfo>();
-        
-        IProject* project = projectController->findProjectForUrl(st.url());
-        
-        if(project)
-            updateState(project, st);
-    }
-}
-
-void ProjectChangesModel::updateState(IProject* p, const KDevelop::VcsStatusInfo& \
                status)
-{
-    QStandardItem* pItem = projectItem(p);
-    Q_ASSERT(pItem);
-    
-    FileChangesModel::updateState(pItem, status);
-}
-
-void VcsProjectIntegrationPlugin::reloadAll()
-{
-    QList< IProject* > projects = ICore::self()->projectController()->projects();
-    reload(projects);
-}
--- trunk/playground/devtools/kdevelop4-extra-plugins/vcsprojectintegration/vcsprojectintegrationplugin.h \
#1235143:1235144 @@ -46,37 +46,8 @@
         VcsProjectIntegrationPlugin(QObject *parent, const QVariantList & args);
         ProjectChangesModel* model() const { return m_model; }
         
-    public slots:
-        void statusReady(KJob* status);
-        void documentSaved(KDevelop::IDocument*);
-        void itemsAdded(const QModelIndex& idx, int start, int end);
-        
-        void reload(const QList<KDevelop::IProject*>& p);
-        void reload(const QList<KUrl>& p);
-    
-        void reloadAll();
-        
     private:
-        void changes(KDevelop::IProject* project, const KUrl::List& url, \
KDevelop::IBasicVersionControl::RecursionMode mode);  ProjectChangesModel* m_model;
 };
 
-
-class ProjectChangesModel : public FileChangesModel
-{
-    Q_OBJECT
-    public:
-        ProjectChangesModel(QObject* parent);
-        
-        void addStates(const QVariantList& states);
-        void updateState(KDevelop::IProject* p, const KDevelop::VcsStatusInfo& \
                status);
-        
-        QStandardItem* projectItem(KDevelop::IProject* p) const;
-        static QStandardItem* fileItemForProject(QStandardItem* projectItem, const \
                QUrl& url);
-        
-    public slots:
-        void addProject(KDevelop::IProject* p);
-        void removeProject(KDevelop::IProject* p);
-};
-
 #endif


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic