diff options
author | hjk <hjk@qt.io> | 2023-04-20 10:51:29 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2023-05-03 13:31:13 +0000 |
commit | 3face235d958b6601288f7d4675c39dbcf7559f7 (patch) | |
tree | 8afc0b13d731e3d12fcbd825a89e0e710a396d5d | |
parent | a3a5b8f806a4dc6515e2fe5cdf9be0f0dead7008 (diff) | |
download | qt-creator-3face235d958b6601288f7d4675c39dbcf7559f7.tar.gz |
Core: Use IOptionPage::setWidgetCreator for shortcut settings
Less boilerplate for the implementation add user code access to
IOptionPage::{apply,finish} is planned to be removed.
Change-Id: Ie160e5bdc330dd6f257521c804a23a9ec453e780
Reviewed-by: David Schulz <david.schulz@qt.io>
-rw-r--r-- | src/plugins/coreplugin/actionmanager/commandmappings.h | 2 | ||||
-rw-r--r-- | src/plugins/coreplugin/dialogs/shortcutsettings.cpp | 56 | ||||
-rw-r--r-- | src/plugins/coreplugin/dialogs/shortcutsettings.h | 13 |
3 files changed, 29 insertions, 42 deletions
diff --git a/src/plugins/coreplugin/actionmanager/commandmappings.h b/src/plugins/coreplugin/actionmanager/commandmappings.h index 67c864a0bf..a672526550 100644 --- a/src/plugins/coreplugin/actionmanager/commandmappings.h +++ b/src/plugins/coreplugin/actionmanager/commandmappings.h @@ -12,8 +12,6 @@ class QTreeWidget; class QTreeWidgetItem; QT_END_NAMESPACE -namespace Utils { class FancyLineEdit; } - namespace Core { namespace Internal { class CommandMappingsPrivate; } diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp index 598cf92d99..16c9c07203 100644 --- a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp +++ b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp @@ -268,10 +268,8 @@ ShortcutSettingsWidget::ShortcutSettingsWidget() this, &ShortcutSettingsWidget::initialize); connect(this, &ShortcutSettingsWidget::currentCommandChanged, this, &ShortcutSettingsWidget::handleCurrentCommandChanged); - connect(this, - &ShortcutSettingsWidget::resetRequested, - this, - &ShortcutSettingsWidget::resetToDefault); + connect(this, &ShortcutSettingsWidget::resetRequested, + this, &ShortcutSettingsWidget::resetToDefault); m_shortcutBox = new QGroupBox(Tr::tr("Shortcut"), this); m_shortcutBox->setEnabled(false); @@ -287,37 +285,12 @@ ShortcutSettingsWidget::~ShortcutSettingsWidget() qDeleteAll(m_scitems); } -ShortcutSettings::ShortcutSettings() -{ - setId(Constants::SETTINGS_ID_SHORTCUTS); - setDisplayName(Tr::tr("Keyboard")); - setCategory(Constants::SETTINGS_CATEGORY_CORE); -} - -QWidget *ShortcutSettings::widget() -{ - if (!m_widget) - m_widget = new ShortcutSettingsWidget(); - return m_widget; -} - void ShortcutSettingsWidget::apply() { for (const ShortcutItem *item : std::as_const(m_scitems)) item->m_cmd->setKeySequences(item->m_keys); } -void ShortcutSettings::apply() -{ - QTC_ASSERT(m_widget, return); - m_widget->apply(); -} - -void ShortcutSettings::finish() -{ - delete m_widget; -} - ShortcutItem *shortcutItem(QTreeWidgetItem *treeItem) { if (!treeItem) @@ -706,5 +679,30 @@ void ShortcutInput::setConflictChecker(const ShortcutInput::ConflictChecker &fun m_conflictChecker = fun; } +// ShortcutSettingsPageWidget + +class ShortcutSettingsPageWidget : public IOptionsPageWidget +{ +public: + ShortcutSettingsPageWidget() + { + auto inner = new ShortcutSettingsWidget; + auto vbox = new QVBoxLayout(this); + vbox->addWidget(inner); + + setOnApply([inner] { inner->apply(); }); + } +}; + +// ShortcutSettings + +ShortcutSettings::ShortcutSettings() +{ + setId(Constants::SETTINGS_ID_SHORTCUTS); + setDisplayName(Tr::tr("Keyboard")); + setCategory(Constants::SETTINGS_CATEGORY_CORE); + setWidgetCreator([] { return new ShortcutSettingsPageWidget; }); +} + } // namespace Internal } // namespace Core diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.h b/src/plugins/coreplugin/dialogs/shortcutsettings.h index d7edfcad29..49297b3d50 100644 --- a/src/plugins/coreplugin/dialogs/shortcutsettings.h +++ b/src/plugins/coreplugin/dialogs/shortcutsettings.h @@ -14,19 +14,17 @@ #include <array> QT_BEGIN_NAMESPACE -class QGroupBox; class QLabel; QT_END_NAMESPACE +namespace Utils { class FancyLineEdit; } + namespace Core { class Command; namespace Internal { -class ActionManagerPrivate; -class ShortcutSettingsWidget; - struct ShortcutItem { Command *m_cmd; @@ -90,13 +88,6 @@ class ShortcutSettings final : public IOptionsPage { public: ShortcutSettings(); - - QWidget *widget() override; - void apply() override; - void finish() override; - -private: - QPointer<ShortcutSettingsWidget> m_widget; }; } // namespace Internal |