diff options
Diffstat (limited to 'src/plugins/texteditor/completionsettingspage.cpp')
-rw-r--r-- | src/plugins/texteditor/completionsettingspage.cpp | 256 |
1 files changed, 126 insertions, 130 deletions
diff --git a/src/plugins/texteditor/completionsettingspage.cpp b/src/plugins/texteditor/completionsettingspage.cpp index 2f516a8977c..bb8b89a1313 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 |