vcsbase: make settings mutable inside VCSBaseClient

VCSBaseClient takes now a pointer to VCSBaseClientSettings, so settings
can be changed within the VCS client. For example diff settings can now
be loaded and saved from within the VCS client.
This impacts the Bazaar and Mercurial plugins

Change-Id: I84882b1f3355e0ca2597704f48f589dca42fd661
Merge-request: 344
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
Reviewed-on: http://codereview.qt.nokia.com/452
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
This commit is contained in:
cerf
2011-06-10 14:02:46 +00:00
committed by Tobias Hunger
parent 2f97c709de
commit eed4d1e149
10 changed files with 40 additions and 30 deletions

View File

@@ -80,19 +80,19 @@ namespace VCSBase {
class VCSBaseClientPrivate
{
public:
explicit VCSBaseClientPrivate(const VCSBaseClientSettings &settings);
explicit VCSBaseClientPrivate(VCSBaseClientSettings *settings);
VCSJobRunner *m_jobManager;
Core::ICore *m_core;
const VCSBaseClientSettings& m_clientSettings;
VCSBaseClientSettings* m_clientSettings;
};
VCSBaseClientPrivate::VCSBaseClientPrivate(const VCSBaseClientSettings &settings) :
VCSBaseClientPrivate::VCSBaseClientPrivate(VCSBaseClientSettings *settings) :
m_jobManager(0), m_core(Core::ICore::instance()), m_clientSettings(settings)
{
}
VCSBaseClient::VCSBaseClient(const VCSBaseClientSettings &settings) :
VCSBaseClient::VCSBaseClient(VCSBaseClientSettings *settings) :
d(new VCSBaseClientPrivate(settings))
{
qRegisterMetaType<QVariant>();
@@ -197,8 +197,8 @@ bool VCSBaseClient::vcsFullySynchronousExec(const QString &workingDir,
vcsProcess.setWorkingDirectory(workingDir);
VCSJobRunner::setProcessEnvironment(&vcsProcess);
const QString binary = d->m_clientSettings.binary();
const QStringList arguments = d->m_clientSettings.standardArguments() + args;
const QString binary = settings()->binary();
const QStringList arguments = settings()->standardArguments() + args;
VCSBase::VCSBaseOutputWindow *outputWindow = VCSBase::VCSBaseOutputWindow::instance();
outputWindow->appendCommand(workingDir, binary, args);
@@ -213,10 +213,10 @@ bool VCSBaseClient::vcsFullySynchronousExec(const QString &workingDir,
vcsProcess.closeWriteChannel();
QByteArray stdErr;
if (!Utils::SynchronousProcess::readDataFromProcess(vcsProcess, d->m_clientSettings.timeoutMilliSeconds(),
if (!Utils::SynchronousProcess::readDataFromProcess(vcsProcess, settings()->timeoutMilliSeconds(),
output, &stdErr, true)) {
Utils::SynchronousProcess::stopProcess(vcsProcess);
outputWindow->appendError(VCSJobRunner::msgTimeout(binary, d->m_clientSettings.timeoutSeconds()));
outputWindow->appendError(VCSJobRunner::msgTimeout(binary, settings()->timeoutSeconds()));
return false;
}
if (!stdErr.isEmpty())
@@ -231,10 +231,10 @@ Utils::SynchronousProcessResponse VCSBaseClient::vcsSynchronousExec(
unsigned flags,
QTextCodec *outputCodec)
{
const QString binary = d->m_clientSettings.binary();
const QStringList arguments = d->m_clientSettings.standardArguments() + args;
const QString binary = settings()->binary();
const QStringList arguments = settings()->standardArguments() + args;
return VCSBase::VCSBasePlugin::runVCS(workingDirectory, binary, arguments,
d->m_clientSettings.timeoutMilliSeconds(),
settings()->timeoutMilliSeconds(),
flags, outputCodec);
}
@@ -441,7 +441,7 @@ void VCSBaseClient::commit(const QString &repositoryRoot,
enqueueJob(job);
}
const VCSBaseClientSettings &VCSBaseClient::settings() const
VCSBaseClientSettings *VCSBaseClient::settings() const
{
return d->m_clientSettings;
}
@@ -449,9 +449,9 @@ const VCSBaseClientSettings &VCSBaseClient::settings() const
void VCSBaseClient::settingsChanged()
{
if (d->m_jobManager) {
d->m_jobManager->setSettings(d->m_clientSettings.binary(),
d->m_clientSettings.standardArguments(),
d->m_clientSettings.timeoutMilliSeconds());
d->m_jobManager->setSettings(settings()->binary(),
settings()->standardArguments(),
settings()->timeoutMilliSeconds());
d->m_jobManager->restart();
}
}
@@ -464,7 +464,7 @@ void VCSBaseClient::initializeDiffEditor(const QString & /* workingDir */, const
QString VCSBaseClient::vcsEditorTitle(const QString &vcsCmd, const QString &sourceId) const
{
return QFileInfo(d->m_clientSettings.binary()).baseName() +
return QFileInfo(settings()->binary()).baseName() +
QLatin1Char(' ') + vcsCmd + QLatin1Char(' ') +
QFileInfo(sourceId).fileName();
}
@@ -503,9 +503,9 @@ void VCSBaseClient::enqueueJob(const QSharedPointer<VCSJob> &job)
{
if (!d->m_jobManager) {
d->m_jobManager = new VCSJobRunner();
d->m_jobManager->setSettings(d->m_clientSettings.binary(),
d->m_clientSettings.standardArguments(),
d->m_clientSettings.timeoutMilliSeconds());
d->m_jobManager->setSettings(settings()->binary(),
settings()->standardArguments(),
settings()->timeoutMilliSeconds());
d->m_jobManager->start();
}
d->m_jobManager->enqueueJob(job);