vcsbase: simplify init of the diff editor in VCSBaseClient

Bazaar and Mercurial plugins are impacted, they benefit auto load/save
of the diff settings

Change-Id: I67327b231fd80eeb61bb859879f9eabdc56739e8
Merge-request: 345
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
Reviewed-on: http://codereview.qt.nokia.com/463
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
This commit is contained in:
cerf
2011-06-10 15:27:57 +00:00
committed by Tobias Hunger
parent 21c048363e
commit 83566c3c3a
10 changed files with 205 additions and 124 deletions

View File

@@ -33,6 +33,7 @@
#include "vcsbaseclient.h"
#include "vcsjobrunner.h"
#include "vcsbaseclientsettings.h"
#include "vcsbaseeditorparameterwidget.h"
#include <QtDebug>
@@ -275,17 +276,25 @@ void VCSBaseClient::diff(const QString &workingDir, const QStringList &files,
const QStringList &extraOptions)
{
const QString vcsCmdString = vcsCommandString(DiffCommand);
QStringList args;
args << vcsCmdString << diffArguments(files, extraOptions);
const QString kind = vcsEditorKind(DiffCommand);
const QString id = VCSBase::VCSBaseEditorWidget::getTitleId(workingDir, files);
const QString title = vcsEditorTitle(vcsCmdString, id);
const QString source = VCSBase::VCSBaseEditorWidget::getSource(workingDir, files);
VCSBase::VCSBaseEditorWidget *editor = createVCSEditor(kind, title, source, true,
vcsCmdString.toLatin1().constData(), id);
editor->setRevertDiffChunkEnabled(true);
editor->setDiffBaseDirectory(workingDir);
initializeDiffEditor(workingDir, files, extraOptions, editor);
VCSBaseEditorParameterWidget *paramWidget = createDiffEditor(workingDir, files, extraOptions);
if (paramWidget != 0) {
connect(editor, SIGNAL(diffChunkReverted(VCSBase::DiffChunk)),
paramWidget, SLOT(executeCommand()));
editor->setConfigurationWidget(paramWidget);
}
QStringList args;
const QStringList paramArgs = paramWidget != 0 ? paramWidget->arguments() : QStringList();
args << vcsCmdString << diffArguments(files, extraOptions + paramArgs);
QSharedPointer<VCSJob> job(new VCSJob(workingDir, args, editor));
enqueueJob(job);
}
@@ -456,12 +465,17 @@ void VCSBaseClient::settingsChanged()
}
}
void VCSBaseClient::initializeDiffEditor(const QString & /* workingDir */, const QStringList & /* files */,
const QStringList & /* extraOptions */,
VCSBaseEditorWidget *)
VCSBaseEditorParameterWidget *VCSBaseClient::createDiffEditor(const QString &workingDir,
const QStringList &files,
const QStringList &extraOptions)
{
Q_UNUSED(workingDir);
Q_UNUSED(files);
Q_UNUSED(extraOptions);
return 0;
}
QString VCSBaseClient::vcsEditorTitle(const QString &vcsCmd, const QString &sourceId) const
{
return QFileInfo(settings()->binary()).baseName() +