Vcs: Move handling of settings from VcsBaseClient to VcsBaseClientImpl

... and update users of that functionality accordingly.

Unexpected plus: Now every supported VCS actually saves their setting
when requested.

Change-Id: I02db7b2ce14e5f52d26409b2a01aea290c2a294a
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Tobias Hunger
2015-03-26 12:22:29 +01:00
parent d3100774f9
commit 90ce38da39
49 changed files with 342 additions and 383 deletions

View File

@@ -79,25 +79,66 @@ static Core::IEditor *locateEditor(const char *property, const QString &entry)
namespace VcsBase {
class VcsBaseClientImplPrivate
{
public:
VcsBaseClientImplPrivate(VcsBaseClientSettings *settings);
~VcsBaseClientImplPrivate();
VcsBaseClientSettings *m_clientSettings;
};
VcsBaseClientImplPrivate::VcsBaseClientImplPrivate(VcsBaseClientSettings *settings) :
m_clientSettings(settings)
{
m_clientSettings->readSettings(Core::ICore::settings());
}
VcsBaseClientImplPrivate::~VcsBaseClientImplPrivate()
{
delete m_clientSettings;
}
VcsBaseClientImpl::VcsBaseClientImpl(VcsBaseClientSettings *settings) :
d(new VcsBaseClientImplPrivate(settings))
{
connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested,
this, &VcsBaseClientImpl::saveSettings);
}
VcsBaseClientImpl::~VcsBaseClientImpl()
{
delete d;
}
VcsBaseClientSettings &VcsBaseClientImpl::settings() const
{
return *d->m_clientSettings;
}
void VcsBaseClientImpl::saveSettings()
{
settings().writeSettings(Core::ICore::settings());
}
class VcsBaseClientPrivate
{
public:
VcsBaseClientPrivate(VcsBaseClient *client, VcsBaseClientSettings *settings);
VcsBaseClientPrivate(VcsBaseClient *client);
void bindCommandToEditor(VcsCommand *cmd, VcsBaseEditorWidget *editor);
VcsBaseEditorParameterWidget *createDiffEditor();
VcsBaseEditorParameterWidget *createLogEditor();
VcsBaseClientSettings *m_clientSettings;
QSignalMapper *m_cmdFinishedMapper;
VcsBaseClient::ParameterWidgetCreator m_diffParamWidgetCreator;
VcsBaseClient::ParameterWidgetCreator m_logParamWidgetCreator;
};
VcsBaseClientPrivate::VcsBaseClientPrivate(VcsBaseClient *client, VcsBaseClientSettings *settings) :
m_clientSettings(settings),
VcsBaseClientPrivate::VcsBaseClientPrivate(VcsBaseClient *client) :
m_cmdFinishedMapper(new QSignalMapper(client))
{ }
@@ -124,11 +165,10 @@ VcsBaseClient::StatusItem::StatusItem(const QString &s, const QString &f) :
{ }
VcsBaseClient::VcsBaseClient(VcsBaseClientSettings *settings) :
d(new VcsBaseClientPrivate(this, settings))
VcsBaseClientImpl(settings),
d(new VcsBaseClientPrivate(this))
{
qRegisterMetaType<QVariant>();
connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested,
this, &VcsBaseClient::saveSettings);
connect(d->m_cmdFinishedMapper, static_cast<void (QSignalMapper::*)(QWidget*)>(&QSignalMapper::mapped),
this, &VcsBaseClient::commandFinishedGotoLine);
}
@@ -495,11 +535,6 @@ void VcsBaseClient::commit(const QString &repositoryRoot,
enqueueJob(cmd, args);
}
VcsBaseClientSettings *VcsBaseClient::settings() const
{
return d->m_clientSettings;
}
QString VcsBaseClient::vcsEditorTitle(const QString &vcsCmd, const QString &sourceId) const
{
return vcsBinary().toFileInfo().baseName() +
@@ -577,12 +612,12 @@ void VcsBaseClient::resetCachedVcsInfo(const QString &workingDir)
Utils::FileName VcsBaseClient::vcsBinary() const
{
return d->m_clientSettings->binaryPath();
return settings().binaryPath();
}
int VcsBaseClient::vcsTimeout() const
{
return d->m_clientSettings->intValue(VcsBaseClientSettings::timeoutKey);
return settings().intValue(VcsBaseClientSettings::timeoutKey);
}
void VcsBaseClient::statusParser(const QString &text)
@@ -612,11 +647,6 @@ void VcsBaseClient::annotateRevision(const QString &workingDirectory, const QSt
annotate(workingDirectory, file, changeCopy, lineNumber);
}
void VcsBaseClient::saveSettings()
{
settings()->writeSettings(Core::ICore::settings());
}
void VcsBaseClient::commandFinishedGotoLine(QWidget *editorObject)
{
VcsBaseEditorWidget *editor = qobject_cast<VcsBaseEditorWidget *>(editorObject);