summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2023-04-20 10:51:29 +0200
committerhjk <hjk@qt.io>2023-05-03 13:31:13 +0000
commit3face235d958b6601288f7d4675c39dbcf7559f7 (patch)
tree8afc0b13d731e3d12fcbd825a89e0e710a396d5d
parenta3a5b8f806a4dc6515e2fe5cdf9be0f0dead7008 (diff)
downloadqt-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.h2
-rw-r--r--src/plugins/coreplugin/dialogs/shortcutsettings.cpp56
-rw-r--r--src/plugins/coreplugin/dialogs/shortcutsettings.h13
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