forked from qt-creator/qt-creator
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:
@@ -68,13 +68,13 @@ class BazaarDiffParameterWidget : public VcsBaseEditorParameterWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
BazaarDiffParameterWidget(BazaarSettings *settings, QWidget *parent = 0) :
|
||||
BazaarDiffParameterWidget(VcsBaseClientSettings &settings, QWidget *parent = 0) :
|
||||
VcsBaseEditorParameterWidget(parent)
|
||||
{
|
||||
mapSetting(addToggleButton(QLatin1String("-w"), tr("Ignore Whitespace")),
|
||||
settings->boolPointer(BazaarSettings::diffIgnoreWhiteSpaceKey));
|
||||
settings.boolPointer(BazaarSettings::diffIgnoreWhiteSpaceKey));
|
||||
mapSetting(addToggleButton(QLatin1String("-B"), tr("Ignore Blank Lines")),
|
||||
settings->boolPointer(BazaarSettings::diffIgnoreBlankLinesKey));
|
||||
settings.boolPointer(BazaarSettings::diffIgnoreBlankLinesKey));
|
||||
}
|
||||
|
||||
QStringList arguments() const
|
||||
@@ -95,18 +95,18 @@ class BazaarLogParameterWidget : public VcsBaseEditorParameterWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
BazaarLogParameterWidget(BazaarSettings *settings, QWidget *parent = 0) :
|
||||
BazaarLogParameterWidget(VcsBaseClientSettings &settings, QWidget *parent = 0) :
|
||||
VcsBaseEditorParameterWidget(parent)
|
||||
{
|
||||
mapSetting(addToggleButton(QLatin1String("--verbose"), tr("Verbose"),
|
||||
tr("Show files changed in each revision.")),
|
||||
settings->boolPointer(BazaarSettings::logVerboseKey));
|
||||
settings.boolPointer(BazaarSettings::logVerboseKey));
|
||||
mapSetting(addToggleButton(QLatin1String("--forward"), tr("Forward"),
|
||||
tr("Show from oldest to newest.")),
|
||||
settings->boolPointer(BazaarSettings::logForwardKey));
|
||||
settings.boolPointer(BazaarSettings::logForwardKey));
|
||||
mapSetting(addToggleButton(QLatin1String("--include-merges"), tr("Include Merges"),
|
||||
tr("Show merged revisions.")),
|
||||
settings->boolPointer(BazaarSettings::logIncludeMergesKey));
|
||||
settings.boolPointer(BazaarSettings::logIncludeMergesKey));
|
||||
|
||||
QList<ComboBoxItem> logChoices;
|
||||
logChoices << ComboBoxItem(tr("Detailed"), QLatin1String("long"))
|
||||
@@ -114,28 +114,23 @@ public:
|
||||
<< ComboBoxItem(tr("One Line"), QLatin1String("line"))
|
||||
<< ComboBoxItem(tr("GNU Change Log"), QLatin1String("gnu-changelog"));
|
||||
mapSetting(addComboBox(QStringList(QLatin1String("--log-format=%1")), logChoices),
|
||||
settings->stringPointer(BazaarSettings::logFormatKey));
|
||||
settings.stringPointer(BazaarSettings::logFormatKey));
|
||||
}
|
||||
};
|
||||
|
||||
BazaarClient::BazaarClient(BazaarSettings *settings) :
|
||||
VcsBaseClient(settings)
|
||||
BazaarClient::BazaarClient() :
|
||||
VcsBaseClient(new BazaarSettings)
|
||||
{
|
||||
setDiffParameterWidgetCreator([=] { return new BazaarDiffParameterWidget(settings); });
|
||||
setLogParameterWidgetCreator([=] { return new BazaarLogParameterWidget(settings); });
|
||||
}
|
||||
|
||||
BazaarSettings *BazaarClient::settings() const
|
||||
{
|
||||
return dynamic_cast<BazaarSettings *>(VcsBaseClient::settings());
|
||||
setDiffParameterWidgetCreator([this] { return new BazaarDiffParameterWidget(settings()); });
|
||||
setLogParameterWidgetCreator([this] { return new BazaarLogParameterWidget(settings()); });
|
||||
}
|
||||
|
||||
bool BazaarClient::synchronousSetUserId()
|
||||
{
|
||||
QStringList args;
|
||||
args << QLatin1String("whoami")
|
||||
<< (settings()->stringValue(BazaarSettings::userNameKey) + QLatin1String(" <")
|
||||
+ settings()->stringValue(BazaarSettings::userEmailKey) + QLatin1Char('>'));
|
||||
<< (settings().stringValue(BazaarSettings::userNameKey) + QLatin1String(" <")
|
||||
+ settings().stringValue(BazaarSettings::userEmailKey) + QLatin1Char('>'));
|
||||
QByteArray stdOut;
|
||||
return vcsFullySynchronousExec(QDir::currentPath(), args, &stdOut);
|
||||
}
|
||||
|
||||
@@ -44,9 +44,7 @@ class BazaarClient : public VcsBase::VcsBaseClient
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
BazaarClient(BazaarSettings *settings);
|
||||
|
||||
BazaarSettings *settings() const;
|
||||
BazaarClient();
|
||||
|
||||
bool synchronousSetUserId();
|
||||
BranchInfo synchronousBranchQuery(const QString &repositoryRoot) const;
|
||||
|
||||
@@ -71,7 +71,7 @@ bool BazaarControl::managesFile(const QString &workingDirectory, const QString &
|
||||
|
||||
bool BazaarControl::isConfigured() const
|
||||
{
|
||||
const Utils::FileName binary = m_bazaarClient->settings()->binaryPath();
|
||||
const Utils::FileName binary = m_bazaarClient->vcsBinary();
|
||||
if (binary.isEmpty())
|
||||
return false;
|
||||
QFileInfo fi = binary.toFileInfo();
|
||||
@@ -148,8 +148,3 @@ void BazaarControl::changed(const QVariant &v)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void BazaarControl::emitConfigurationChanged()
|
||||
{
|
||||
emit configurationChanged();
|
||||
}
|
||||
|
||||
@@ -69,7 +69,6 @@ public slots:
|
||||
// files changed signals according to the variant's type:
|
||||
// String -> repository, StringList -> files
|
||||
void changed(const QVariant &);
|
||||
void emitConfigurationChanged();
|
||||
|
||||
private:
|
||||
BazaarClient *m_bazaarClient;
|
||||
|
||||
@@ -165,12 +165,14 @@ bool BazaarPlugin::initialize(const QStringList &arguments, QString *errorMessag
|
||||
|
||||
Context context(Constants::BAZAAR_CONTEXT);
|
||||
|
||||
m_client = new BazaarClient(&m_bazaarSettings);
|
||||
m_client = new BazaarClient;
|
||||
auto vcsCtrl = new BazaarControl(m_client);
|
||||
initializeVcs(vcsCtrl, context);
|
||||
|
||||
addAutoReleasedObject(new OptionsPage);
|
||||
m_bazaarSettings.readSettings(ICore::settings());
|
||||
auto options = new OptionsPage;
|
||||
connect(options, &OptionsPage::settingsChanged,
|
||||
vcsCtrl, &Core::IVersionControl::configurationChanged);
|
||||
addAutoReleasedObject(options);
|
||||
|
||||
connect(m_client, &VcsBaseClient::changed, vcsCtrl, &BazaarControl::changed);
|
||||
|
||||
@@ -214,22 +216,6 @@ BazaarClient *BazaarPlugin::client() const
|
||||
return m_client;
|
||||
}
|
||||
|
||||
const BazaarSettings &BazaarPlugin::settings() const
|
||||
{
|
||||
return m_bazaarSettings;
|
||||
}
|
||||
|
||||
void BazaarPlugin::setSettings(const BazaarSettings &settings)
|
||||
{
|
||||
if (settings != m_bazaarSettings) {
|
||||
const bool userIdChanged = !m_bazaarSettings.sameUserId(settings);
|
||||
m_bazaarSettings = settings;
|
||||
if (userIdChanged)
|
||||
client()->synchronousSetUserId();
|
||||
static_cast<BazaarControl *>(versionControl())->emitConfigurationChanged();
|
||||
}
|
||||
}
|
||||
|
||||
void BazaarPlugin::createMenu(const Context &context)
|
||||
{
|
||||
// Create menu item for Bazaar
|
||||
@@ -402,7 +388,7 @@ void BazaarPlugin::logRepository()
|
||||
const VcsBasePluginState state = currentState();
|
||||
QTC_ASSERT(state.hasTopLevel(), return);
|
||||
QStringList extraOptions;
|
||||
extraOptions += QLatin1String("--limit=") + QString::number(settings().intValue(BazaarSettings::logCountKey));
|
||||
extraOptions += QLatin1String("--limit=") + QString::number(m_client->settings().intValue(BazaarSettings::logCountKey));
|
||||
m_client->log(state.topLevel(), QStringList(), extraOptions);
|
||||
}
|
||||
|
||||
@@ -606,9 +592,10 @@ void BazaarPlugin::showCommitWidget(const QList<VcsBaseClient::StatusItem> &stat
|
||||
commitEditor->document()->setPreferredDisplayName(msg);
|
||||
|
||||
const BranchInfo branch = m_client->synchronousBranchQuery(m_submitRepository);
|
||||
const VcsBaseClientSettings &s = m_client->settings();
|
||||
commitEditor->setFields(m_submitRepository, branch,
|
||||
m_bazaarSettings.stringValue(BazaarSettings::userNameKey),
|
||||
m_bazaarSettings.stringValue(BazaarSettings::userEmailKey), status);
|
||||
s.stringValue(BazaarSettings::userNameKey),
|
||||
s.stringValue(BazaarSettings::userEmailKey), status);
|
||||
}
|
||||
|
||||
void BazaarPlugin::diffFromEditorSelected(const QStringList &files)
|
||||
|
||||
@@ -70,9 +70,6 @@ public:
|
||||
static BazaarPlugin *instance();
|
||||
BazaarClient *client() const;
|
||||
|
||||
const BazaarSettings &settings() const;
|
||||
void setSettings(const BazaarSettings &settings);
|
||||
|
||||
private slots:
|
||||
// File menu action slots
|
||||
void addCurrentFile();
|
||||
|
||||
@@ -79,7 +79,7 @@ VcsCommand *CloneWizard::createCommand(Utils::FileName *checkoutDir)
|
||||
if (!cwp)
|
||||
return 0;
|
||||
|
||||
const BazaarSettings &settings = BazaarPlugin::instance()->settings();
|
||||
const VcsBaseClientSettings &settings = BazaarPlugin::instance()->client()->settings();
|
||||
*checkoutDir = Utils::FileName::fromString(cwp->path() + QLatin1Char('/') + cwp->directory());
|
||||
|
||||
const CloneOptionsPanel *panel = cwp->cloneOptionsPanel();
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
#include "optionspage.h"
|
||||
#include "bazaarclient.h"
|
||||
#include "bazaarsettings.h"
|
||||
#include "bazaarplugin.h"
|
||||
|
||||
@@ -38,6 +39,7 @@
|
||||
|
||||
using namespace Bazaar::Internal;
|
||||
using namespace Bazaar;
|
||||
using namespace VcsBase;
|
||||
|
||||
OptionsPageWidget::OptionsPageWidget(QWidget *parent)
|
||||
: QWidget(parent)
|
||||
@@ -48,9 +50,9 @@ OptionsPageWidget::OptionsPageWidget(QWidget *parent)
|
||||
m_ui.commandChooser->setHistoryCompleter(QLatin1String("Bazaar.Command.History"));
|
||||
}
|
||||
|
||||
BazaarSettings OptionsPageWidget::settings() const
|
||||
VcsBaseClientSettings OptionsPageWidget::settings() const
|
||||
{
|
||||
BazaarSettings s = BazaarPlugin::instance()->settings();
|
||||
VcsBaseClientSettings s = BazaarPlugin::instance()->client()->settings();
|
||||
s.setValue(BazaarSettings::binaryPathKey, m_ui.commandChooser->rawPath());
|
||||
s.setValue(BazaarSettings::userNameKey, m_ui.defaultUsernameLineEdit->text().trimmed());
|
||||
s.setValue(BazaarSettings::userEmailKey, m_ui.defaultEmailLineEdit->text().trimmed());
|
||||
@@ -59,7 +61,7 @@ BazaarSettings OptionsPageWidget::settings() const
|
||||
return s;
|
||||
}
|
||||
|
||||
void OptionsPageWidget::setSettings(const BazaarSettings &s)
|
||||
void OptionsPageWidget::setSettings(const VcsBaseClientSettings &s)
|
||||
{
|
||||
m_ui.commandChooser->setPath(s.stringValue(BazaarSettings::binaryPathKey));
|
||||
m_ui.defaultUsernameLineEdit->setText(s.stringValue(BazaarSettings::userNameKey));
|
||||
@@ -78,7 +80,7 @@ QWidget *OptionsPage::widget()
|
||||
{
|
||||
if (!m_optionsPageWidget)
|
||||
m_optionsPageWidget = new OptionsPageWidget;
|
||||
m_optionsPageWidget->setSettings(BazaarPlugin::instance()->settings());
|
||||
m_optionsPageWidget->setSettings(BazaarPlugin::instance()->client()->settings());
|
||||
return m_optionsPageWidget;
|
||||
}
|
||||
|
||||
@@ -87,11 +89,10 @@ void OptionsPage::apply()
|
||||
if (!m_optionsPageWidget)
|
||||
return;
|
||||
BazaarPlugin *plugin = BazaarPlugin::instance();
|
||||
const BazaarSettings newSettings = m_optionsPageWidget->settings();
|
||||
if (newSettings != plugin->settings()) {
|
||||
//assume success and emit signal that settings are changed;
|
||||
plugin->setSettings(newSettings);
|
||||
newSettings.writeSettings(Core::ICore::settings());
|
||||
const VcsBaseClientSettings newSettings = m_optionsPageWidget->settings();
|
||||
VcsBaseClientSettings &s = plugin->client()->settings();
|
||||
if (newSettings != s) {
|
||||
s = newSettings;
|
||||
emit settingsChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,11 +37,13 @@
|
||||
#include <QWidget>
|
||||
#include <QPointer>
|
||||
|
||||
namespace VcsBase {
|
||||
class VcsBaseClientSettings;
|
||||
} // namespace VcsBase
|
||||
|
||||
namespace Bazaar {
|
||||
namespace Internal {
|
||||
|
||||
class BazaarSettings;
|
||||
|
||||
class OptionsPageWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
@@ -49,8 +51,8 @@ class OptionsPageWidget : public QWidget
|
||||
public:
|
||||
explicit OptionsPageWidget(QWidget *parent = 0);
|
||||
|
||||
BazaarSettings settings() const;
|
||||
void setSettings(const BazaarSettings &s);
|
||||
VcsBase::VcsBaseClientSettings settings() const;
|
||||
void setSettings(const VcsBase::VcsBaseClientSettings &s);
|
||||
|
||||
private:
|
||||
Ui::OptionsPage m_ui;
|
||||
|
||||
Reference in New Issue
Block a user