diff options
author | Friedemann Kleint <[email protected]> | 2009-03-18 16:43:01 +0100 |
---|---|---|
committer | Friedemann Kleint <[email protected]> | 2009-03-18 16:43:01 +0100 |
commit | bccf4a1fc31980083dcf572ec4f6d5f65c2f0931 (patch) | |
tree | d53d123064db5fe1b297104c58c66e9e4bea8166 /src/plugins/cpptools/cppfilesettingspage.cpp | |
parent | 3b0305727b5885281fe308cabcf4af41814a5270 (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.cpp | 184 |
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(); + } + } +} + +} +} + |