aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/coreplugin/dialogs/shortcutsettings.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/coreplugin/dialogs/shortcutsettings.h')
-rw-r--r--src/plugins/coreplugin/dialogs/shortcutsettings.h30
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: