[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