Mercurial: Save resources, polishing.

Start the jobrunner on demand, save options only if changed,
give it the structure used elsewhere in the VCS plugins. Remove
last traces of the cmd /c hack.
This commit is contained in:
Friedemann Kleint
2009-11-06 12:32:38 +01:00
parent d570b05bec
commit b0e1fdbfc4
11 changed files with 194 additions and 133 deletions

View File

@@ -31,6 +31,7 @@
#include "mercurialsettings.h"
#include "mercurialplugin.h"
#include <coreplugin/icore.h>
#include <utils/pathchooser.h>
#include <vcsbase/vcsbaseconstants.h>
@@ -45,24 +46,26 @@ OptionsPageWidget::OptionsPageWidget(QWidget *parent) :
m_ui.commandChooser->setPromptDialogTitle(tr("Mercurial Command"));
}
void OptionsPageWidget::updateOptions()
MercurialSettings OptionsPageWidget::settings() const
{
MercurialSettings *settings = MercurialPlugin::instance()->settings();
m_ui.commandChooser->setPath(settings->application());
m_ui.defaultUsernameLineEdit->setText(settings->userName());
m_ui.defaultEmailLineEdit->setText(settings->email());
m_ui.logEntriesCount->setValue(settings->logCount());
m_ui.timeout->setValue(settings->timeoutSeconds());
m_ui.promptOnSubmitCheckBox->setChecked(settings->prompt());
MercurialSettings rc;
rc.setBinary(m_ui.commandChooser->path());
rc.setUserName(m_ui.defaultUsernameLineEdit->text().trimmed());
rc.setEmail(m_ui.defaultEmailLineEdit->text().trimmed());
rc.setLogCount(m_ui.logEntriesCount->value());
rc.setTimeoutSeconds(m_ui.timeout->value());
rc.setPrompt(m_ui.promptOnSubmitCheckBox->isChecked());
return rc;
}
void OptionsPageWidget::saveOptions()
void OptionsPageWidget::setSettings(const MercurialSettings &s)
{
MercurialSettings *settings = MercurialPlugin::instance()->settings();
settings->writeSettings(m_ui.commandChooser->path(), m_ui.defaultUsernameLineEdit->text(),
m_ui.defaultEmailLineEdit->text(), m_ui.logEntriesCount->value(),
m_ui.timeout->value(), m_ui.promptOnSubmitCheckBox->isChecked());
m_ui.commandChooser->setPath(s.binary());
m_ui.defaultUsernameLineEdit->setText(s.userName());
m_ui.defaultEmailLineEdit->setText(s.email());
m_ui.logEntriesCount->setValue(s.logCount());
m_ui.timeout->setValue(s.timeoutSeconds());
m_ui.promptOnSubmitCheckBox->setChecked(s.prompt());
}
OptionsPage::OptionsPage()
@@ -93,7 +96,7 @@ QWidget *OptionsPage::createPage(QWidget *parent)
{
if (!optionsPageWidget)
optionsPageWidget = new OptionsPageWidget(parent);
optionsPageWidget.data()->updateOptions();
optionsPageWidget->setSettings(MercurialPlugin::instance()->settings());
return optionsPageWidget;
}
@@ -101,8 +104,13 @@ void OptionsPage::apply()
{
if (!optionsPageWidget)
return;
optionsPageWidget.data()->saveOptions();
//assume success and emit signal that settings are changed;
emit settingsChanged();
MercurialPlugin *plugin = MercurialPlugin::instance();
const MercurialSettings newSettings = optionsPageWidget->settings();
if (newSettings != plugin->settings()) {
//assume success and emit signal that settings are changed;
plugin->setSettings(newSettings);
newSettings.writeSettings(Core::ICore::instance()->settings());
emit settingsChanged();
}
}