diff options
Diffstat (limited to 'src/plugins/coreplugin/dialogs/shortcutsettings.h')
-rw-r--r-- | src/plugins/coreplugin/dialogs/shortcutsettings.h | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.h b/src/plugins/coreplugin/dialogs/shortcutsettings.h index a49d45a615..cee7f55c0b 100644 --- a/src/plugins/coreplugin/dialogs/shortcutsettings.h +++ b/src/plugins/coreplugin/dialogs/shortcutsettings.h @@ -28,6 +28,7 @@ #include <coreplugin/actionmanager/commandmappings.h> #include <coreplugin/dialogs/ioptionspage.h> +#include <QGridLayout> #include <QKeySequence> #include <QPointer> #include <QPushButton> @@ -51,7 +52,7 @@ class ShortcutSettingsWidget; struct ShortcutItem { Command *m_cmd; - QKeySequence m_key; + QList<QKeySequence> m_keys; QTreeWidgetItem *m_item; }; @@ -80,6 +81,33 @@ private: int m_keyNum = 0; }; +class ShortcutInput : public QObject +{ + Q_OBJECT +public: + ShortcutInput(); + ~ShortcutInput(); + + void addToLayout(QGridLayout *layout, int row); + + void setKeySequence(const QKeySequence &key); + QKeySequence keySequence() const; + + using ConflictChecker = std::function<bool(QKeySequence)>; + void setConflictChecker(const ConflictChecker &fun); + +signals: + void changed(); + void showConflictsRequested(); + +private: + ConflictChecker m_conflictChecker; + QPointer<QLabel> m_shortcutLabel; + QPointer<Utils::FancyLineEdit> m_shortcutEdit; + QPointer<ShortcutButton> m_shortcutButton; + QPointer<QLabel> m_warningLabel; +}; + class ShortcutSettings final : public IOptionsPage { public: |