1 /* KDevPlatform Kross Support
3 * Copyright 2008 Aleix Pol <aleixpol@gmail.com>
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21 #include "krossdistributedversioncontrol.h"
27 #include <interfaces/iplugin.h>
28 #include <kross/core/action.h>
29 #include <interfaces/context.h>
30 #include <project/projectmodel.h>
31 #include "krossvcsjob.h"
32 #include "wrappers/krossvcsrevision.h"
33 #include "wrappers/krossvcslocation.h"
35 using namespace KDevelop
;
37 KrossDistributedVersionControl::KrossDistributedVersionControl(KDevelop::IPlugin
* plugin
)
38 : action(0), m_plugin(plugin
)
42 KrossDistributedVersionControl::~KrossDistributedVersionControl()
46 void KrossDistributedVersionControl::setActionDistributed(Kross::Action
* anAction
)
51 QString
KrossDistributedVersionControl::name() const
54 QVariant result
=action
->callFunction("name", args
);
55 kDebug() << "retrieving name" << result
.toString();
56 return result
.toString();
59 KDevelop::VcsImportMetadataWidget
* KrossDistributedVersionControl::createImportMetadataWidget(QWidget
*)
64 bool KrossDistributedVersionControl::isVersionControlled(const KUrl
& url
)
68 QVariant result
=action
->callFunction( "isVersionControlled", args
);
69 return result
.toBool();
72 KDevelop::VcsJob
* KrossDistributedVersionControl::add(const KUrl::List
& files
, KDevelop::IBasicVersionControl::RecursionMode mode
= IBasicVersionControl::Recursive
)
74 QVariant
param(files
);
75 QVariant
param1(mode
==Recursive
);
77 return new KrossVcsJob("add", QVariantList() << param
<< param1
, action
, m_plugin
, action
);
80 KDevelop::VcsJob
* KrossDistributedVersionControl::remove(const KUrl::List
& files
)
82 QVariant
param(files
);
84 return new KrossVcsJob("remove", QVariantList() << param
, action
, m_plugin
, action
);
87 KDevelop::VcsJob
* KrossDistributedVersionControl::copy(const KUrl
& file
, const KUrl
& newfile
)
92 return new KrossVcsJob("copy", QVariantList() << from
<< to
, action
, m_plugin
, action
);
95 KDevelop::VcsJob
* KrossDistributedVersionControl::move(const KUrl
& file
, const KUrl
& newfile
)
100 return new KrossVcsJob("move", QVariantList() << from
<< to
, action
, m_plugin
, action
);
103 KDevelop::VcsJob
* KrossDistributedVersionControl::status(const KUrl::List
& files
, KDevelop::IBasicVersionControl::RecursionMode mode
)
105 QVariant
param(files
);
106 QVariant
param1(mode
);
108 return new KrossVcsJob("status", QVariantList() << param
<< param1
, action
, m_plugin
, action
);
111 KDevelop::VcsJob
* KrossDistributedVersionControl::revert(const KUrl::List
& files
, KDevelop::IBasicVersionControl::RecursionMode mode
)
113 QVariant
param(files
);
114 QVariant
param1(mode
==Recursive
);
116 return new KrossVcsJob("revert", QVariantList() << param
<< param1
, action
, m_plugin
, action
);
119 KDevelop::VcsJob
* KrossDistributedVersionControl::update(const KUrl::List
& localLocations
, const KDevelop::VcsRevision
& rev
,
120 KDevelop::IBasicVersionControl::RecursionMode rec
)
122 QVariant revision
=Handlers::kDevelopVcsRevisionHandler(&rev
);
124 QVariantList parameters
;
125 parameters
.append(QVariant(localLocations
));
126 parameters
.append(revision
);
127 parameters
.append(QVariant(rec
));
129 return new KrossVcsJob("update", parameters
, action
, m_plugin
, action
);
133 KDevelop::VcsJob
* KrossDistributedVersionControl::commit(const QString
& msg
, const KUrl::List
& files
,
134 KDevelop::IBasicVersionControl::RecursionMode mode
)
136 QVariant
message(msg
);
137 QVariant
file(files
);
138 QVariant
recursion(mode
);
140 return new KrossVcsJob("commit", QVariantList() << message
<< file
<< mode
, action
, m_plugin
, action
);
143 KDevelop::VcsJob
* KrossDistributedVersionControl::diff(const KUrl::List
& files
, KDevelop::VcsRevision
& rev
,
144 KDevelop::IBasicVersionControl::RecursionMode mode
)
146 QVariant revision
=Handlers::kDevelopVcsRevisionHandler(&rev
);
148 return new KrossVcsJob("commit", QVariantList() << files
<< revision
<< mode
, action
, m_plugin
, action
);
151 KDevelop::VcsJob
* KrossDistributedVersionControl::repositoryLocation(const KUrl::List
& files
)
153 return new KrossVcsJob("repositoryLocation", QVariantList() << files
, action
, m_plugin
, action
);
156 KDevelop::VcsJob
* KrossDistributedVersionControl::repositoryLocation(const KUrl
& localLocation
)
158 return new KrossVcsJob("repositoryLocation", QVariantList() << localLocation
, action
, m_plugin
, action
);
161 KDevelop::VcsJob
* KrossDistributedVersionControl::diff(const KDevelop::VcsLocation
& localOrRepoLocationSrc
,
162 const KDevelop::VcsLocation
& localOrRepoLocationDst
,
163 const KDevelop::VcsRevision
& srcRevision
,
164 const KDevelop::VcsRevision
& dstRevision
,
165 KDevelop::VcsDiff::Type t
,
166 KDevelop::IBasicVersionControl::RecursionMode recursion
)
168 QVariant srcrev
=Handlers::kDevelopVcsRevisionHandler(&srcRevision
);
169 QVariant dstrev
=Handlers::kDevelopVcsRevisionHandler(&dstRevision
);
171 QVariant srcloc
=Handlers::kDevelopVcsLocationHandler(&localOrRepoLocationSrc
);
172 QVariant dstloc
=Handlers::kDevelopVcsLocationHandler(&localOrRepoLocationDst
);
174 return new KrossVcsJob("repositoryLocation",
175 QVariantList() << srcloc
<< dstloc
<< srcrev
<< dstrev
<< QVariant(t
) << QVariant(recursion
), action
, m_plugin
, action
);
179 KDevelop::VcsJob
* KrossDistributedVersionControl::log(const KUrl
& file
, const KDevelop::VcsRevision
& rev
, long unsigned int limit
)
181 QVariant revision
=Handlers::kDevelopVcsRevisionHandler(&rev
);
183 return new KrossVcsJob("log", QVariantList() << file
<< revision
<< qlonglong(limit
), action
, m_plugin
, action
);
186 VcsJob
* KrossDistributedVersionControl::log(const KUrl
& file
, const VcsRevision
& rev
, const VcsRevision
& lim
)
188 QVariant revision
=Handlers::kDevelopVcsRevisionHandler(&rev
);
189 QVariant limit
=Handlers::kDevelopVcsRevisionHandler(&lim
);
191 return new KrossVcsJob("log", QVariantList() << file
<< revision
<< limit
, action
, m_plugin
, action
);
194 VcsJob
* KrossDistributedVersionControl::annotate(const KUrl
& file
, const VcsRevision
& rev
)
196 QVariant revision
=Handlers::kDevelopVcsRevisionHandler(&rev
);
198 return new KrossVcsJob("annotate", QVariantList() << file
<< revision
, action
, m_plugin
, action
);
201 VcsJob
* KrossDistributedVersionControl::merge(const VcsLocation
& localOrRepoLocationSrc
,
202 const VcsLocation
& localOrRepoLocationDst
,
203 const VcsRevision
& srcRevision
,
204 const VcsRevision
& dstRevision
,
205 const KUrl
& localLocation
)
207 QVariant srcrev
=Handlers::kDevelopVcsRevisionHandler(&srcRevision
);
208 QVariant dstrev
=Handlers::kDevelopVcsRevisionHandler(&dstRevision
);
210 QVariant srcloc
=Handlers::kDevelopVcsLocationHandler(&localOrRepoLocationSrc
);
211 QVariant dstloc
=Handlers::kDevelopVcsLocationHandler(&localOrRepoLocationDst
);
213 return new KrossVcsJob("merge", QVariantList() << srcloc
<< dstloc
<< srcrev
<< dstrev
<< localLocation
, action
, m_plugin
, action
);
217 VcsJob
* KrossDistributedVersionControl::resolve( const KUrl::List
& localLocations
, KDevelop::IBasicVersionControl::RecursionMode recursion
)
219 return new KrossVcsJob("resolve", QVariantList() << localLocations
<< recursion
, action
, m_plugin
, action
);
222 VcsJob
* KrossDistributedVersionControl::add_dvcs(const KUrl
&repository
,
223 const KUrl::List
& localLocations
)
225 return add(localLocations
);
228 VcsJob
* KrossDistributedVersionControl::init(const KUrl
& location
)
230 return new KrossVcsJob("init", QVariantList() << location
, action
, m_plugin
, action
);
233 VcsJob
* KrossDistributedVersionControl::clone(const KDevelop::VcsLocation
& localOrRepoLocationSrc
, const KUrl
& localRepositoryLocationSrc
)
235 return new KrossVcsJob("clone", QVariantList() << localOrRepoLocationSrc
.localUrl() << localRepositoryLocationSrc
, action
, m_plugin
, action
);
238 VcsJob
* KrossDistributedVersionControl::push(const KUrl
& localRepositoryLocation
, const KDevelop::VcsLocation
& localOrRepoLocationDst
)
240 return new KrossVcsJob("push", QVariantList() << localRepositoryLocation
<< localOrRepoLocationDst
.localUrl(), action
, m_plugin
, action
);
243 VcsJob
* KrossDistributedVersionControl::pull(const KDevelop::VcsLocation
& localOrRepoLocationSrc
, const KUrl
& localRepositoryLocation
)
245 return new KrossVcsJob("pull", QVariantList() << localOrRepoLocationSrc
.localUrl() << localRepositoryLocation
, action
, m_plugin
, action
);
248 VcsJob
* KrossDistributedVersionControl::checkout(const KDevelop::VcsMapping
& mapping
)
250 //TODO empty QVarianList
251 return new KrossVcsJob("checkout", QVariantList(), action
, m_plugin
, action
);
254 VcsJob
* KrossDistributedVersionControl::reset(const KUrl
&repository
, const QStringList
&args
, const KUrl::List
&files
)
256 return new KrossVcsJob("checkout", QVariantList() << repository
<< args
<< files
, action
, m_plugin
, action
);
259 #include "krossdistributedversioncontrol.moc"