aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cpptools/cppfilesettingspage.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <[email protected]>2009-03-18 16:43:01 +0100
committerFriedemann Kleint <[email protected]>2009-03-18 16:43:01 +0100
commitbccf4a1fc31980083dcf572ec4f6d5f65c2f0931 (patch)
treed53d123064db5fe1b297104c58c66e9e4bea8166 /src/plugins/cpptools/cppfilesettingspage.cpp
parent3b0305727b5885281fe308cabcf4af41814a5270 (diff)
Fixes: Introduce a cpp settingspage containing file naming conventions (lower case and suffixes). Reorder VCS settings pages.
Task: 241959, 248085 RevBy: Optics/Naming checked by con Details: Give IOptionPage an id() to differentiate from trName(). Make showOptionsDialog return a bool (applied) and give it an optional parent. Change Cpp and form class wizards, give them a Configure... button to change those settings.
Diffstat (limited to 'src/plugins/cpptools/cppfilesettingspage.cpp')
-rw-r--r--src/plugins/cpptools/cppfilesettingspage.cpp184
1 files changed, 184 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppfilesettingspage.cpp b/src/plugins/cpptools/cppfilesettingspage.cpp
new file mode 100644
index 00000000000..a5bd11ac5dc
--- /dev/null
+++ b/src/plugins/cpptools/cppfilesettingspage.cpp
@@ -0,0 +1,184 @@
+/**************************************************************************
+**
+** This file is part of Qt Creator
+**
+** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Contact: Qt Software Information ([email protected])
+**
+** Commercial Usage
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** 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.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at [email protected].
+**
+**************************************************************************/
+
+#include "cppfilesettingspage.h"
+#include "cpptoolsconstants.h"
+#include "ui_cppfilesettingspage.h"
+
+#include <coreplugin/icore.h>
+#include <coreplugin/mimedatabase.h>
+#include <extensionsystem/pluginmanager.h>
+
+#include <QtCore/QSettings>
+#include <QtCore/QDebug>
+#include <QtCore/QCoreApplication>
+
+static const char *headerSuffixKeyC = "HeaderSuffix";
+static const char *sourceSuffixKeyC = "SourceSuffix";
+
+namespace CppTools {
+namespace Internal {
+
+CppFileSettings::CppFileSettings() :
+ lowerCaseFiles(false)
+{
+}
+
+void CppFileSettings::toSettings(QSettings *s) const
+{
+ s->beginGroup(QLatin1String(Constants::CPPTOOLS_SETTINGSGROUP));
+ s->setValue(QLatin1String(headerSuffixKeyC), headerSuffix);
+ s->setValue(QLatin1String(sourceSuffixKeyC), sourceSuffix);
+ s->setValue(QLatin1String(Constants::LOWERCASE_CPPFILES_KEY), lowerCaseFiles);
+ s->endGroup();
+}
+
+void CppFileSettings::fromSettings(QSettings *s)
+{
+ s->beginGroup(QLatin1String(Constants::CPPTOOLS_SETTINGSGROUP));
+ headerSuffix= s->value(QLatin1String(headerSuffixKeyC), QLatin1String("h")).toString();
+ sourceSuffix = s->value(QLatin1String(sourceSuffixKeyC), QLatin1String("cpp")).toString();
+ lowerCaseFiles = s->value(QLatin1String(Constants::LOWERCASE_CPPFILES_KEY), QVariant(true)).toBool();
+ s->endGroup();
+}
+
+void CppFileSettings::applySuffixesToMimeDB()
+{
+ Core::MimeDatabase *mdb = Core::ICore::instance()->mimeDatabase();
+ mdb->setPreferredSuffix(QLatin1String(CppTools::Constants::CPP_SOURCE_MIMETYPE), sourceSuffix);
+ mdb->setPreferredSuffix(QLatin1String(CppTools::Constants::CPP_HEADER_MIMETYPE), headerSuffix);
+}
+
+bool CppFileSettings::equals(const CppFileSettings &rhs) const
+{
+ return lowerCaseFiles == rhs.lowerCaseFiles
+ && headerSuffix == rhs.headerSuffix
+ && sourceSuffix == rhs.sourceSuffix;
+}
+
+// ------------------ CppFileSettingsWidget
+
+CppFileSettingsWidget::CppFileSettingsWidget(QWidget *parent) :
+ QWidget(parent),
+ m_ui(new Ui::CppFileSettingsPage)
+{
+ m_ui->setupUi(this);
+ const Core::MimeDatabase *mdb = Core::ICore::instance()->mimeDatabase();
+ // populate suffix combos
+ if (const Core::MimeType sourceMt = mdb->findByType(QLatin1String(CppTools::Constants::CPP_SOURCE_MIMETYPE)))
+ foreach (const QString &suffix, sourceMt.suffixes())
+ m_ui->sourceSuffixComboBox->addItem(suffix);
+
+ if (const Core::MimeType headerMt = mdb->findByType(QLatin1String(CppTools::Constants::CPP_HEADER_MIMETYPE)))
+ foreach (const QString &suffix, headerMt.suffixes())
+ m_ui->headerSuffixComboBox->addItem(suffix);
+}
+
+CppFileSettingsWidget::~CppFileSettingsWidget()
+{
+ delete m_ui;
+}
+
+CppFileSettings CppFileSettingsWidget::settings() const
+{
+ CppFileSettings rc;
+ rc.lowerCaseFiles = m_ui->lowerCaseFileNamesCheckBox->isChecked();
+ rc.headerSuffix = m_ui->headerSuffixComboBox->currentText();
+ rc.sourceSuffix = m_ui->sourceSuffixComboBox->currentText();
+ return rc;
+}
+
+static inline void setComboText(QComboBox *cb, const QString &text, int defaultIndex = 0)
+{
+ const int index = cb->findText(text);
+ cb->setCurrentIndex(index == -1 ? defaultIndex: index);
+}
+
+void CppFileSettingsWidget::setSettings(const CppFileSettings &s)
+{
+ m_ui->lowerCaseFileNamesCheckBox->setChecked(s.lowerCaseFiles);
+ setComboText(m_ui->headerSuffixComboBox, s.headerSuffix);
+ setComboText(m_ui->sourceSuffixComboBox, s.sourceSuffix);
+}
+
+// --------------- CppFileSettingsPage
+CppFileSettingsPage::CppFileSettingsPage(QObject *parent) :
+ Core::IOptionsPage(parent)
+{
+ m_settings.fromSettings(Core::ICore::instance()->settings());
+ m_settings.applySuffixesToMimeDB();
+}
+
+CppFileSettingsPage::~CppFileSettingsPage()
+{
+}
+
+QString CppFileSettingsPage::id() const
+{
+ return QLatin1String(Constants::CPP_SETTINGS_ID);
+}
+
+QString CppFileSettingsPage::trName() const
+{
+ return QCoreApplication::translate("CppTools", Constants::CPP_SETTINGS_ID);
+}
+
+QString CppFileSettingsPage::category() const
+{
+ return QLatin1String(Constants::CPP_SETTINGS_CATEGORY);
+}
+
+QString CppFileSettingsPage::trCategory() const
+{
+ return QCoreApplication::translate("CppTools", Constants::CPP_SETTINGS_CATEGORY);
+}
+
+QWidget *CppFileSettingsPage::createPage(QWidget *parent)
+{
+
+ m_widget = new CppFileSettingsWidget(parent);
+ m_widget->setSettings(m_settings);
+ return m_widget;
+}
+
+void CppFileSettingsPage::apply()
+{
+ if (m_widget) {
+ const CppFileSettings newSettings = m_widget->settings();
+ if (newSettings != m_settings) {
+ m_settings = newSettings;
+ m_settings.toSettings(Core::ICore::instance()->settings());
+ m_settings.applySuffixesToMimeDB();
+ }
+ }
+}
+
+}
+}
+