summaryrefslogtreecommitdiff
path: root/src/plugins/bazaar/optionspage.cpp
diff options
context:
space:
mode:
authorcerf <delorme.hugues@gmail.com>2011-02-28 13:40:06 +0100
committerTobias Hunger <tobias.hunger@nokia.com>2011-02-28 16:08:38 +0100
commitf9bb4c59dc75c32e4162d02141eaf1602fbda4c8 (patch)
tree0d92ab58088bec3dc01f1a2cbd6b63e4c48c10b7 /src/plugins/bazaar/optionspage.cpp
parent6c1dd96f121568773814190cf260ed01f5a88c88 (diff)
downloadqt-creator-f9bb4c59dc75c32e4162d02141eaf1602fbda4c8.tar.gz
Added new Bazaar plugin
Merge-request: 229 Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
Diffstat (limited to 'src/plugins/bazaar/optionspage.cpp')
-rw-r--r--src/plugins/bazaar/optionspage.cpp139
1 files changed, 139 insertions, 0 deletions
diff --git a/src/plugins/bazaar/optionspage.cpp b/src/plugins/bazaar/optionspage.cpp
new file mode 100644
index 0000000000..538210221d
--- /dev/null
+++ b/src/plugins/bazaar/optionspage.cpp
@@ -0,0 +1,139 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2010 Hugues Delorme
+**
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** No Commercial Usage
+**
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+**
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**************************************************************************/
+
+#include "optionspage.h"
+#include "constants.h"
+#include "bazaarsettings.h"
+#include "bazaarplugin.h"
+
+#include <coreplugin/icore.h>
+#include <utils/pathchooser.h>
+#include <vcsbase/vcsbaseconstants.h>
+
+#include <QtCore/QTextStream>
+
+using namespace Bazaar::Internal;
+using namespace Bazaar;
+
+OptionsPageWidget::OptionsPageWidget(QWidget *parent) :
+ QWidget(parent)
+{
+ m_ui.setupUi(this);
+ m_ui.commandChooser->setExpectedKind(Utils::PathChooser::ExistingCommand);
+ m_ui.commandChooser->setPromptDialogTitle(tr("Bazaar Command"));
+}
+
+BazaarSettings OptionsPageWidget::settings() const
+{
+ BazaarSettings 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::setSettings(const BazaarSettings &s)
+{
+ 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());
+}
+
+QString OptionsPageWidget::searchKeywords() const
+{
+ QString rc;
+ QLatin1Char sep(' ');
+ QTextStream(&rc)
+ << sep << m_ui.configGroupBox->title()
+ << sep << m_ui.mercurialCommandLabel->text()
+ << sep << m_ui.userGroupBox->title()
+ << sep << m_ui.defaultUsernameLabel->text()
+ << sep << m_ui.defaultEmailLabel->text()
+ << sep << m_ui.miscGroupBox->title()
+ << sep << m_ui.showLogEntriesLabel->text()
+ << sep << m_ui.timeoutSecondsLabel->text()
+ << sep << m_ui.promptOnSubmitCheckBox->text()
+ ;
+ rc.remove(QLatin1Char('&'));
+ return rc;
+}
+
+OptionsPage::OptionsPage()
+{
+}
+
+QString OptionsPage::id() const
+{
+ return QLatin1String(VCSBase::Constants::VCS_ID_BAZAAR);
+}
+
+QString OptionsPage::displayName() const
+{
+ return tr("Bazaar");
+}
+
+QWidget *OptionsPage::createPage(QWidget *parent)
+{
+ if (!m_optionsPageWidget)
+ m_optionsPageWidget = new OptionsPageWidget(parent);
+ m_optionsPageWidget->setSettings(BazaarPlugin::instance()->settings());
+ if (m_searchKeywords.isEmpty())
+ m_searchKeywords = m_optionsPageWidget->searchKeywords();
+ return m_optionsPageWidget;
+}
+
+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::instance()->settings(),
+ Constants::BAZAAR);
+ emit settingsChanged();
+ }
+}
+
+bool OptionsPage::matches(const QString &s) const
+{
+ return m_searchKeywords.contains(s, Qt::CaseInsensitive);
+}