diff options
author | hjk <hjk@qt.io> | 2020-02-04 16:24:37 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2020-02-05 12:42:42 +0000 |
commit | ea6da69e8b210aee63b79e0041dae948eab546fe (patch) | |
tree | 25ff32edae89a2212502bbd2e38358b583e8544c /src/plugins/cpptools/cppfilesettingspage.cpp | |
parent | 674d342aa934c0816cfb64dafb26bb934f1ee620 (diff) | |
download | qt-creator-ea6da69e8b210aee63b79e0041dae948eab546fe.tar.gz |
CppTools: Move CppFilesSettingsPage closer to new setup
Including some drive-by cosmetics.
Change-Id: Id9cdba68545907b099a70944c83fe17ad3c0b2a0
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/cpptools/cppfilesettingspage.cpp')
-rw-r--r-- | src/plugins/cpptools/cppfilesettingspage.cpp | 143 |
1 files changed, 70 insertions, 73 deletions
diff --git a/src/plugins/cpptools/cppfilesettingspage.cpp b/src/plugins/cpptools/cppfilesettingspage.cpp index b6f7fb5720..c706076291 100644 --- a/src/plugins/cpptools/cppfilesettingspage.cpp +++ b/src/plugins/cpptools/cppfilesettingspage.cpp @@ -50,14 +50,17 @@ #include <QTextStream> #include <QFileDialog> -static const char headerPrefixesKeyC[] = "HeaderPrefixes"; -static const char sourcePrefixesKeyC[] = "SourcePrefixes"; -static const char headerSuffixKeyC[] = "HeaderSuffix"; -static const char sourceSuffixKeyC[] = "SourceSuffix"; -static const char headerSearchPathsKeyC[] = "HeaderSearchPaths"; -static const char sourceSearchPathsKeyC[] = "SourceSearchPaths"; -static const char headerPragmaOnceC[] = "HeaderPragmaOnce"; -static const char licenseTemplatePathKeyC[] = "LicenseTemplate"; +namespace CppTools { +namespace Internal { + +const char headerPrefixesKeyC[] = "HeaderPrefixes"; +const char sourcePrefixesKeyC[] = "SourcePrefixes"; +const char headerSuffixKeyC[] = "HeaderSuffix"; +const char sourceSuffixKeyC[] = "SourceSuffix"; +const char headerSearchPathsKeyC[] = "HeaderSearchPaths"; +const char sourceSearchPathsKeyC[] = "SourceSearchPaths"; +const char headerPragmaOnceC[] = "HeaderPragmaOnce"; +const char licenseTemplatePathKeyC[] = "LicenseTemplate"; const char *licenseTemplateTemplate = QT_TRANSLATE_NOOP("CppTools::Internal::CppFileSettingsWidget", "/**************************************************************************\n" @@ -67,9 +70,6 @@ const char *licenseTemplateTemplate = QT_TRANSLATE_NOOP("CppTools::Internal::Cpp "** To protect a percent sign, use '%%'.\n" "**************************************************************************/\n"); -namespace CppTools { -namespace Internal { - void CppFileSettings::toSettings(QSettings *s) const { s->beginGroup(QLatin1String(Constants::CPPTOOLS_SETTINGSGROUP)); @@ -252,40 +252,57 @@ QString CppFileSettings::licenseTemplate() // ------------------ CppFileSettingsWidget -CppFileSettingsWidget::CppFileSettingsWidget() : - m_ui(new Internal::Ui::CppFileSettingsPage) +class CppFileSettingsWidget final : public Core::IOptionsPageWidget +{ + Q_DECLARE_TR_FUNCTIONS(CppTools::Internal::CppFileSettingsWidget) + +public: + explicit CppFileSettingsWidget(CppFileSettings *settings); + + void apply() final; + + void setSettings(const CppFileSettings &s); + +private: + void slotEdit(); + QString licenseTemplatePath() const; + void setLicenseTemplatePath(const QString &); + + Ui::CppFileSettingsPage m_ui; + CppFileSettings *m_settings = nullptr; +}; + +CppFileSettingsWidget::CppFileSettingsWidget(CppFileSettings *settings) + : m_settings(settings) { - m_ui->setupUi(this); + m_ui.setupUi(this); // populate suffix combos const Utils::MimeType sourceMt = Utils::mimeTypeForName(QLatin1String(CppTools::Constants::CPP_SOURCE_MIMETYPE)); if (sourceMt.isValid()) { foreach (const QString &suffix, sourceMt.suffixes()) - m_ui->sourceSuffixComboBox->addItem(suffix); + m_ui.sourceSuffixComboBox->addItem(suffix); } const Utils::MimeType headerMt = Utils::mimeTypeForName(QLatin1String(CppTools::Constants::CPP_HEADER_MIMETYPE)); if (headerMt.isValid()) { foreach (const QString &suffix, headerMt.suffixes()) - m_ui->headerSuffixComboBox->addItem(suffix); + m_ui.headerSuffixComboBox->addItem(suffix); } - m_ui->licenseTemplatePathChooser->setExpectedKind(Utils::PathChooser::File); - m_ui->licenseTemplatePathChooser->setHistoryCompleter(QLatin1String("Cpp.LicenseTemplate.History")); - m_ui->licenseTemplatePathChooser->addButton(tr("Edit..."), this, [this] { slotEdit(); }); -} + m_ui.licenseTemplatePathChooser->setExpectedKind(Utils::PathChooser::File); + m_ui.licenseTemplatePathChooser->setHistoryCompleter(QLatin1String("Cpp.LicenseTemplate.History")); + m_ui.licenseTemplatePathChooser->addButton(tr("Edit..."), this, [this] { slotEdit(); }); -CppFileSettingsWidget::~CppFileSettingsWidget() -{ - delete m_ui; + setSettings(*m_settings); } QString CppFileSettingsWidget::licenseTemplatePath() const { - return m_ui->licenseTemplatePathChooser->path(); + return m_ui.licenseTemplatePathChooser->path(); } void CppFileSettingsWidget::setLicenseTemplatePath(const QString &lp) { - m_ui->licenseTemplatePathChooser->setPath(lp); + m_ui.licenseTemplatePathChooser->setPath(lp); } static QStringList trimmedPaths(const QString &paths) @@ -296,19 +313,25 @@ static QStringList trimmedPaths(const QString &paths) return res; } -CppFileSettings CppFileSettingsWidget::settings() const +void CppFileSettingsWidget::apply() { CppFileSettings rc; - rc.lowerCaseFiles = m_ui->lowerCaseFileNamesCheckBox->isChecked(); - rc.headerPragmaOnce = m_ui->headerPragmaOnceCheckBox->isChecked(); - rc.headerPrefixes = trimmedPaths(m_ui->headerPrefixesEdit->text()); - rc.sourcePrefixes = trimmedPaths(m_ui->sourcePrefixesEdit->text()); - rc.headerSuffix = m_ui->headerSuffixComboBox->currentText(); - rc.sourceSuffix = m_ui->sourceSuffixComboBox->currentText(); - rc.headerSearchPaths = trimmedPaths(m_ui->headerSearchPathsEdit->text()); - rc.sourceSearchPaths = trimmedPaths(m_ui->sourceSearchPathsEdit->text()); - rc.licenseTemplatePath = licenseTemplatePath(); - return rc; + rc.lowerCaseFiles = m_ui.lowerCaseFileNamesCheckBox->isChecked(); + rc.headerPragmaOnce = m_ui.headerPragmaOnceCheckBox->isChecked(); + rc.headerPrefixes = trimmedPaths(m_ui.headerPrefixesEdit->text()); + rc.sourcePrefixes = trimmedPaths(m_ui.sourcePrefixesEdit->text()); + rc.headerSuffix = m_ui.headerSuffixComboBox->currentText(); + rc.sourceSuffix = m_ui.sourceSuffixComboBox->currentText(); + rc.headerSearchPaths = trimmedPaths(m_ui.headerSearchPathsEdit->text()); + rc.sourceSearchPaths = trimmedPaths(m_ui.sourceSearchPathsEdit->text()); + + if (rc == *m_settings) + return; + + *m_settings = rc; + m_settings->toSettings(Core::ICore::settings()); + m_settings->applySuffixesToMimeDB(); + CppToolsPlugin::clearHeaderSourceCache(); } static inline void setComboText(QComboBox *cb, const QString &text, int defaultIndex = 0) @@ -320,14 +343,14 @@ static inline void setComboText(QComboBox *cb, const QString &text, int defaultI void CppFileSettingsWidget::setSettings(const CppFileSettings &s) { const QChar comma = QLatin1Char(','); - m_ui->lowerCaseFileNamesCheckBox->setChecked(s.lowerCaseFiles); - m_ui->headerPragmaOnceCheckBox->setChecked(s.headerPragmaOnce); - m_ui->headerPrefixesEdit->setText(s.headerPrefixes.join(comma)); - m_ui->sourcePrefixesEdit->setText(s.sourcePrefixes.join(comma)); - setComboText(m_ui->headerSuffixComboBox, s.headerSuffix); - setComboText(m_ui->sourceSuffixComboBox, s.sourceSuffix); - m_ui->headerSearchPathsEdit->setText(s.headerSearchPaths.join(comma)); - m_ui->sourceSearchPathsEdit->setText(s.sourceSearchPaths.join(comma)); + m_ui.lowerCaseFileNamesCheckBox->setChecked(s.lowerCaseFiles); + m_ui.headerPragmaOnceCheckBox->setChecked(s.headerPragmaOnce); + m_ui.headerPrefixesEdit->setText(s.headerPrefixes.join(comma)); + m_ui.sourcePrefixesEdit->setText(s.sourcePrefixes.join(comma)); + setComboText(m_ui.headerSuffixComboBox, s.headerSuffix); + setComboText(m_ui.sourceSuffixComboBox, s.sourceSuffix); + m_ui.headerSearchPathsEdit->setText(s.headerSearchPaths.join(comma)); + m_ui.sourceSearchPathsEdit->setText(s.sourceSearchPaths.join(comma)); setLicenseTemplatePath(s.licenseTemplatePath); } @@ -350,39 +373,13 @@ void CppFileSettingsWidget::slotEdit() } // --------------- CppFileSettingsPage -CppFileSettingsPage::CppFileSettingsPage(QSharedPointer<CppFileSettings> &settings) : - m_settings(settings) + +CppFileSettingsPage::CppFileSettingsPage(CppFileSettings *settings) { setId(Constants::CPP_FILE_SETTINGS_ID); setDisplayName(QCoreApplication::translate("CppTools", Constants::CPP_FILE_SETTINGS_NAME)); setCategory(Constants::CPP_SETTINGS_CATEGORY); -} - -QWidget *CppFileSettingsPage::widget() -{ - if (!m_widget) { - m_widget = new CppFileSettingsWidget; - 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::settings()); - m_settings->applySuffixesToMimeDB(); - CppToolsPlugin::clearHeaderSourceCache(); - } - } -} - -void CppFileSettingsPage::finish() -{ - delete m_widget; + setWidgetCreator([settings] { return new CppFileSettingsWidget(settings); }); } } // namespace Internal |