summaryrefslogtreecommitdiff
path: root/src/plugins/mercurial/mercurialclient.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2009-12-04 12:58:01 +0100
committerFriedemann Kleint <Friedemann.Kleint@nokia.com>2009-12-04 12:58:01 +0100
commit5ec1c36c232b1783b5b3dd7684e05ef8378bcb90 (patch)
treec1bb8c8c8e2769d70c779b1a3567791f31291d44 /src/plugins/mercurial/mercurialclient.cpp
parentf73c6e9b04f0a3e5ceabaf411c92bf8c8cec82ba (diff)
downloadqt-creator-5ec1c36c232b1783b5b3dd7684e05ef8378bcb90.tar.gz
Mercurial: Emit version control changed() signals correctly.
Add a QVariant cookie to HgTask to be emitted on successful execution, wired to IVersionControl.
Diffstat (limited to 'src/plugins/mercurial/mercurialclient.cpp')
-rw-r--r--src/plugins/mercurial/mercurialclient.cpp35
1 files changed, 24 insertions, 11 deletions
diff --git a/src/plugins/mercurial/mercurialclient.cpp b/src/plugins/mercurial/mercurialclient.cpp
index aa54e07925..596a289525 100644
--- a/src/plugins/mercurial/mercurialclient.cpp
+++ b/src/plugins/mercurial/mercurialclient.cpp
@@ -48,9 +48,9 @@
#include <QtCore/QtDebug>
#include <QtCore/QFileInfo>
#include <QtCore/QByteArray>
+#include <QtCore/QMetaType>
-using namespace Mercurial::Internal;
-using namespace Mercurial;
+Q_DECLARE_METATYPE(QVariant)
inline Core::IEditor* locateEditor(const Core::ICore *core, const char *property, const QString &entry)
{
@@ -60,10 +60,14 @@ inline Core::IEditor* locateEditor(const Core::ICore *core, const char *property
return 0;
}
+namespace Mercurial {
+namespace Internal {
+
MercurialClient::MercurialClient() :
jobManager(0),
core(Core::ICore::instance())
{
+ qRegisterMetaType<QVariant>();
}
MercurialClient::~MercurialClient()
@@ -227,17 +231,18 @@ void MercurialClient::log(const QFileInfo &fileOrDir)
void MercurialClient::revert(const QFileInfo &fileOrDir, const QString &revision)
{
- QStringList args(QLatin1String("revert"));
+ const QString filePath = fileOrDir.absoluteFilePath();
+ const QString workingDir = fileOrDir.isDir() ? filePath : fileOrDir.absolutePath();
+ QStringList args(QLatin1String("revert"));
if (!revision.isEmpty())
args << QLatin1String("-r") << revision;
- if (!fileOrDir.isDir())
- args.append(fileOrDir.absoluteFilePath());
- else
- args.append(QLatin1String("--all"));
+ args.append(fileOrDir.isDir() ? QString(QLatin1String("--all")) : filePath);
- QSharedPointer<HgTask> job(new HgTask(fileOrDir.isDir() ? fileOrDir.absoluteFilePath() :
- fileOrDir.absolutePath(), args, false));
+ // Indicate repository change or file list
+ const QVariant cookie = fileOrDir.isDir() ? QVariant(filePath) : QVariant(QStringList(filePath));
+ QSharedPointer<HgTask> job(new HgTask(workingDir, args, false, cookie));
+ connect(job.data(), SIGNAL(succeeded(QVariant)), this, SIGNAL(changed(QVariant)), Qt::QueuedConnection);
enqueueJob(job);
}
@@ -310,7 +315,10 @@ void MercurialClient::pull(const QFileInfo &repositoryRoot, const QString &repos
if (!repository.isEmpty())
args.append(repository);
- QSharedPointer<HgTask> job(new HgTask(repositoryRoot.absoluteFilePath(), args, false));
+ const QString path = repositoryRoot.absoluteFilePath();
+
+ QSharedPointer<HgTask> job(new HgTask(path, args, false, QVariant(path)));
+ connect(job.data(), SIGNAL(succeeded(QVariant)), this, SIGNAL(changed(QVariant)), Qt::QueuedConnection);
enqueueJob(job);
}
@@ -382,7 +390,9 @@ void MercurialClient::update(const QFileInfo &repositoryRoot, const QString &rev
if (!revision.isEmpty())
args << revision;
- QSharedPointer<HgTask> job(new HgTask(repositoryRoot.absoluteFilePath(), args, false));
+ const QString path = repositoryRoot.absoluteFilePath();
+ QSharedPointer<HgTask> job(new HgTask(path, args, false, QVariant(path)));
+ connect(job.data(), SIGNAL(succeeded(QVariant)), this, SIGNAL(changed(QVariant)), Qt::QueuedConnection);
enqueueJob(job);
}
@@ -451,3 +461,6 @@ void MercurialClient::enqueueJob(const QSharedPointer<HgTask> &job)
}
jobManager->enqueueJob(job);
}
+
+} // namespace Internal
+} // namespace Mercurial