aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/texteditor/completionsettingspage.cpp
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2020-01-17 16:44:30 +0100
committerhjk <hjk@qt.io>2020-01-20 13:36:49 +0000
commit11b7074170c0e2278dd8fed60cd789b5846eee81 (patch)
tree369595690faab58b5e86646f0f81cf7992b8c3de /src/plugins/texteditor/completionsettingspage.cpp
parentf2351b06e05f5a129df1e6a38557c692687674c6 (diff)
TextEditor: Partially apply SettingsPage pattern to completion settings
Change-Id: Ieb8547bab74c6a2d6489a6bf53b7f224003e0401 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/texteditor/completionsettingspage.cpp')
-rw-r--r--src/plugins/texteditor/completionsettingspage.cpp256
1 files changed, 126 insertions, 130 deletions
diff --git a/src/plugins/texteditor/completionsettingspage.cpp b/src/plugins/texteditor/completionsettingspage.cpp
index 2f516a8977..bb8b89a131 100644
--- a/src/plugins/texteditor/completionsettingspage.cpp
+++ b/src/plugins/texteditor/completionsettingspage.cpp
@@ -35,119 +35,116 @@
#include <QTextStream>
-using namespace TextEditor;
-using namespace TextEditor::Internal;
using namespace CppTools;
-CompletionSettingsPage::CompletionSettingsPage(QObject *parent)
- : Core::IOptionsPage(parent)
+namespace TextEditor {
+namespace Internal {
+
+class CompletionSettingsPageWidget final : public Core::IOptionsPageWidget
{
- setId("P.Completion");
- setDisplayName(tr("Completion"));
- setCategory(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY);
- setDisplayCategory(QCoreApplication::translate("TextEditor", "Text Editor"));
- setCategoryIconPath(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON_PATH);
+ Q_DECLARE_TR_FUNCTIONS(TextEditor::Internal::CompletionSettingsPage)
- QSettings *s = Core::ICore::settings();
- m_completionSettings.fromSettings(s);
- m_commentsSettings.fromSettings(s);
-}
+public:
+ explicit CompletionSettingsPageWidget(CompletionSettingsPage *owner);
-CompletionSettingsPage::~CompletionSettingsPage()
-{
- delete m_page;
-}
+private:
+ void apply() final;
+
+ CaseSensitivity caseSensitivity() const;
+ CompletionTrigger completionTrigger() const;
+ void settingsFromUi(CompletionSettings &completion, CommentsSettings &comment) const;
-QWidget *CompletionSettingsPage::widget()
+ CompletionSettingsPage *m_owner = nullptr;
+ Ui::CompletionSettingsPage m_ui;
+};
+
+CompletionSettingsPageWidget::CompletionSettingsPageWidget(CompletionSettingsPage *owner)
+ : m_owner(owner)
{
- if (!m_widget) {
- m_widget = new QWidget;
- m_page = new Ui::CompletionSettingsPage;
- m_page->setupUi(m_widget);
-
- connect(m_page->completionTrigger, QOverload<int>::of(&QComboBox::currentIndexChanged),
- this, &CompletionSettingsPage::onCompletionTriggerChanged);
-
- int caseSensitivityIndex = 0;
- switch (m_completionSettings.m_caseSensitivity) {
- case TextEditor::CaseSensitive:
- caseSensitivityIndex = 0;
- break;
- case TextEditor::CaseInsensitive:
- caseSensitivityIndex = 1;
- break;
- case TextEditor::FirstLetterCaseSensitive:
- caseSensitivityIndex = 2;
- break;
- }
-
- int completionTriggerIndex = 0;
- switch (m_completionSettings.m_completionTrigger) {
- case TextEditor::ManualCompletion:
- completionTriggerIndex = 0;
- break;
- case TextEditor::TriggeredCompletion:
- completionTriggerIndex = 1;
- break;
- case TextEditor::AutomaticCompletion:
- completionTriggerIndex = 2;
- break;
- }
-
- m_page->caseSensitivity->setCurrentIndex(caseSensitivityIndex);
- m_page->completionTrigger->setCurrentIndex(completionTriggerIndex);
- m_page->automaticProposalTimeoutSpinBox
- ->setValue(m_completionSettings.m_automaticProposalTimeoutInMs);
- m_page->insertBrackets->setChecked(m_completionSettings.m_autoInsertBrackets);
- m_page->surroundBrackets->setChecked(m_completionSettings.m_surroundingAutoBrackets);
- m_page->insertQuotes->setChecked(m_completionSettings.m_autoInsertQuotes);
- m_page->surroundQuotes->setChecked(m_completionSettings.m_surroundingAutoQuotes);
- m_page->partiallyComplete->setChecked(m_completionSettings.m_partiallyComplete);
- m_page->spaceAfterFunctionName->setChecked(m_completionSettings.m_spaceAfterFunctionName);
- m_page->autoSplitStrings->setChecked(m_completionSettings.m_autoSplitStrings);
- m_page->animateAutoComplete->setChecked(m_completionSettings.m_animateAutoComplete);
- m_page->overwriteClosingChars->setChecked(m_completionSettings.m_overwriteClosingChars);
- m_page->highlightAutoComplete->setChecked(m_completionSettings.m_highlightAutoComplete);
- m_page->skipAutoComplete->setChecked(m_completionSettings.m_skipAutoCompletedText);
- m_page->removeAutoComplete->setChecked(m_completionSettings.m_autoRemove);
-
- m_page->enableDoxygenCheckBox->setChecked(m_commentsSettings.m_enableDoxygen);
- m_page->generateBriefCheckBox->setChecked(m_commentsSettings.m_generateBrief);
- m_page->leadingAsterisksCheckBox->setChecked(m_commentsSettings.m_leadingAsterisks);
-
- m_page->generateBriefCheckBox->setEnabled(m_page->enableDoxygenCheckBox->isChecked());
- m_page->skipAutoComplete->setEnabled(m_page->highlightAutoComplete->isChecked());
- m_page->removeAutoComplete->setEnabled(m_page->highlightAutoComplete->isChecked());
+ m_ui.setupUi(this);
+
+ connect(m_ui.completionTrigger, QOverload<int>::of(&QComboBox::currentIndexChanged),
+ this, [this] {
+ const bool enableTimeoutWidgets = completionTrigger() == AutomaticCompletion;
+ m_ui.automaticProposalTimeoutLabel->setEnabled(enableTimeoutWidgets);
+ m_ui.automaticProposalTimeoutSpinBox->setEnabled(enableTimeoutWidgets);
+ });
+
+ int caseSensitivityIndex = 0;
+ switch (m_owner->m_completionSettings.m_caseSensitivity) {
+ case TextEditor::CaseSensitive:
+ caseSensitivityIndex = 0;
+ break;
+ case TextEditor::CaseInsensitive:
+ caseSensitivityIndex = 1;
+ break;
+ case TextEditor::FirstLetterCaseSensitive:
+ caseSensitivityIndex = 2;
+ break;
}
- return m_widget;
+
+ int completionTriggerIndex = 0;
+ switch (m_owner->m_completionSettings.m_completionTrigger) {
+ case TextEditor::ManualCompletion:
+ completionTriggerIndex = 0;
+ break;
+ case TextEditor::TriggeredCompletion:
+ completionTriggerIndex = 1;
+ break;
+ case TextEditor::AutomaticCompletion:
+ completionTriggerIndex = 2;
+ break;
+ }
+
+ m_ui.caseSensitivity->setCurrentIndex(caseSensitivityIndex);
+ m_ui.completionTrigger->setCurrentIndex(completionTriggerIndex);
+ m_ui.automaticProposalTimeoutSpinBox
+ ->setValue(m_owner->m_completionSettings.m_automaticProposalTimeoutInMs);
+ m_ui.insertBrackets->setChecked(m_owner->m_completionSettings.m_autoInsertBrackets);
+ m_ui.surroundBrackets->setChecked(m_owner->m_completionSettings.m_surroundingAutoBrackets);
+ m_ui.insertQuotes->setChecked(m_owner->m_completionSettings.m_autoInsertQuotes);
+ m_ui.surroundQuotes->setChecked(m_owner->m_completionSettings.m_surroundingAutoQuotes);
+ m_ui.partiallyComplete->setChecked(m_owner->m_completionSettings.m_partiallyComplete);
+ m_ui.spaceAfterFunctionName->setChecked(m_owner->m_completionSettings.m_spaceAfterFunctionName);
+ m_ui.autoSplitStrings->setChecked(m_owner->m_completionSettings.m_autoSplitStrings);
+ m_ui.animateAutoComplete->setChecked(m_owner->m_completionSettings.m_animateAutoComplete);
+ m_ui.overwriteClosingChars->setChecked(m_owner->m_completionSettings.m_overwriteClosingChars);
+ m_ui.highlightAutoComplete->setChecked(m_owner->m_completionSettings.m_highlightAutoComplete);
+ m_ui.skipAutoComplete->setChecked(m_owner->m_completionSettings.m_skipAutoCompletedText);
+ m_ui.removeAutoComplete->setChecked(m_owner->m_completionSettings.m_autoRemove);
+
+ m_ui.enableDoxygenCheckBox->setChecked(m_owner->m_commentsSettings.m_enableDoxygen);
+ m_ui.generateBriefCheckBox->setChecked(m_owner->m_commentsSettings.m_generateBrief);
+ m_ui.leadingAsterisksCheckBox->setChecked(m_owner->m_commentsSettings.m_leadingAsterisks);
+
+ m_ui.generateBriefCheckBox->setEnabled(m_ui.enableDoxygenCheckBox->isChecked());
+ m_ui.skipAutoComplete->setEnabled(m_ui.highlightAutoComplete->isChecked());
+ m_ui.removeAutoComplete->setEnabled(m_ui.highlightAutoComplete->isChecked());
}
-void CompletionSettingsPage::apply()
+void CompletionSettingsPageWidget::apply()
{
- if (!m_page) // page was never shown
- return;
-
CompletionSettings completionSettings;
CommentsSettings commentsSettings;
settingsFromUi(completionSettings, commentsSettings);
- if (m_completionSettings != completionSettings) {
- m_completionSettings = completionSettings;
- m_completionSettings.toSettings(Core::ICore::settings());
- emit completionSettingsChanged(completionSettings);
+ if (m_owner->m_completionSettings != completionSettings) {
+ m_owner->m_completionSettings = completionSettings;
+ m_owner->m_completionSettings.toSettings(Core::ICore::settings());
+ emit TextEditorSettings::instance()->completionSettingsChanged(completionSettings);
}
- if (m_commentsSettings != commentsSettings) {
- m_commentsSettings = commentsSettings;
- m_commentsSettings.toSettings(Core::ICore::settings());
- emit commentsSettingsChanged(commentsSettings);
+ if (m_owner->m_commentsSettings != commentsSettings) {
+ m_owner->m_commentsSettings = commentsSettings;
+ m_owner->m_commentsSettings.toSettings(Core::ICore::settings());
+ emit TextEditorSettings::instance()->commentsSettingsChanged(commentsSettings);
}
}
-TextEditor::CaseSensitivity CompletionSettingsPage::caseSensitivity() const
+CaseSensitivity CompletionSettingsPageWidget::caseSensitivity() const
{
- switch (m_page->caseSensitivity->currentIndex()) {
+ switch (m_ui.caseSensitivity->currentIndex()) {
case 0: // Full
return TextEditor::CaseSensitive;
case 1: // None
@@ -157,9 +154,9 @@ TextEditor::CaseSensitivity CompletionSettingsPage::caseSensitivity() const
}
}
-TextEditor::CompletionTrigger CompletionSettingsPage::completionTrigger() const
+CompletionTrigger CompletionSettingsPageWidget::completionTrigger() const
{
- switch (m_page->completionTrigger->currentIndex()) {
+ switch (m_ui.completionTrigger->currentIndex()) {
case 0:
return TextEditor::ManualCompletion;
case 1:
@@ -169,47 +166,29 @@ TextEditor::CompletionTrigger CompletionSettingsPage::completionTrigger() const
}
}
-void CompletionSettingsPage::settingsFromUi(CompletionSettings &completion, CommentsSettings &comment) const
+void CompletionSettingsPageWidget::settingsFromUi(CompletionSettings &completion,
+ CommentsSettings &comment) const
{
- if (!m_page)
- return;
-
completion.m_caseSensitivity = caseSensitivity();
completion.m_completionTrigger = completionTrigger();
completion.m_automaticProposalTimeoutInMs
- = m_page->automaticProposalTimeoutSpinBox->value();
- completion.m_autoInsertBrackets = m_page->insertBrackets->isChecked();
- completion.m_surroundingAutoBrackets = m_page->surroundBrackets->isChecked();
- completion.m_autoInsertQuotes = m_page->insertQuotes->isChecked();
- completion.m_surroundingAutoQuotes = m_page->surroundQuotes->isChecked();
- completion.m_partiallyComplete = m_page->partiallyComplete->isChecked();
- completion.m_spaceAfterFunctionName = m_page->spaceAfterFunctionName->isChecked();
- completion.m_autoSplitStrings = m_page->autoSplitStrings->isChecked();
- completion.m_animateAutoComplete = m_page->animateAutoComplete->isChecked();
- completion.m_overwriteClosingChars = m_page->overwriteClosingChars->isChecked();
- completion.m_highlightAutoComplete = m_page->highlightAutoComplete->isChecked();
- completion.m_skipAutoCompletedText = m_page->skipAutoComplete->isChecked();
- completion.m_autoRemove = m_page->removeAutoComplete->isChecked();
-
- comment.m_enableDoxygen = m_page->enableDoxygenCheckBox->isChecked();
- comment.m_generateBrief = m_page->generateBriefCheckBox->isChecked();
- comment.m_leadingAsterisks = m_page->leadingAsterisksCheckBox->isChecked();
-}
-
-void CompletionSettingsPage::onCompletionTriggerChanged()
-{
- const bool enableTimeoutWidgets = completionTrigger() == TextEditor::AutomaticCompletion;
- m_page->automaticProposalTimeoutLabel->setEnabled(enableTimeoutWidgets);
- m_page->automaticProposalTimeoutSpinBox->setEnabled(enableTimeoutWidgets);
-}
-
-void CompletionSettingsPage::finish()
-{
- delete m_widget;
- if (!m_page) // page was never shown
- return;
- delete m_page;
- m_page = nullptr;
+ = m_ui.automaticProposalTimeoutSpinBox->value();
+ completion.m_autoInsertBrackets = m_ui.insertBrackets->isChecked();
+ completion.m_surroundingAutoBrackets = m_ui.surroundBrackets->isChecked();
+ completion.m_autoInsertQuotes = m_ui.insertQuotes->isChecked();
+ completion.m_surroundingAutoQuotes = m_ui.surroundQuotes->isChecked();
+ completion.m_partiallyComplete = m_ui.partiallyComplete->isChecked();
+ completion.m_spaceAfterFunctionName = m_ui.spaceAfterFunctionName->isChecked();
+ completion.m_autoSplitStrings = m_ui.autoSplitStrings->isChecked();
+ completion.m_animateAutoComplete = m_ui.animateAutoComplete->isChecked();
+ completion.m_overwriteClosingChars = m_ui.overwriteClosingChars->isChecked();
+ completion.m_highlightAutoComplete = m_ui.highlightAutoComplete->isChecked();
+ completion.m_skipAutoCompletedText = m_ui.skipAutoComplete->isChecked();
+ completion.m_autoRemove = m_ui.removeAutoComplete->isChecked();
+
+ comment.m_enableDoxygen = m_ui.enableDoxygenCheckBox->isChecked();
+ comment.m_generateBrief = m_ui.generateBriefCheckBox->isChecked();
+ comment.m_leadingAsterisks = m_ui.leadingAsterisksCheckBox->isChecked();
}
const CompletionSettings &CompletionSettingsPage::completionSettings()
@@ -221,3 +200,20 @@ const CommentsSettings &CompletionSettingsPage::commentsSettings()
{
return m_commentsSettings;
}
+
+CompletionSettingsPage::CompletionSettingsPage()
+{
+ setId("P.Completion");
+ setDisplayName(CompletionSettingsPageWidget::tr("Completion"));
+ setCategory(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY);
+ setDisplayCategory(QCoreApplication::translate("TextEditor", "Text Editor"));
+ setCategoryIconPath(TextEditor::Constants::TEXT_EDITOR_SETTINGS_CATEGORY_ICON_PATH);
+ setWidgetCreator([this] { return new CompletionSettingsPageWidget(this); });
+
+ QSettings *s = Core::ICore::settings();
+ m_completionSettings.fromSettings(s);
+ m_commentsSettings.fromSettings(s);
+}
+
+} // Internal
+} // TextEditor