1 | /* |
2 | This file is part of the KDE libraries |
3 | SPDX-FileCopyrightText: 2007 Andreas Hartmetz <ahartmetz@gmail.com> |
4 | |
5 | SPDX-License-Identifier: LGPL-2.0-or-later |
6 | */ |
7 | #ifndef KSHORTCUTWIDGET_H |
8 | #define KSHORTCUTWIDGET_H |
9 | |
10 | #include <kxmlgui_export.h> |
11 | |
12 | #include <QKeySequence> |
13 | #include <QList> |
14 | #include <QWidget> |
15 | #include <memory> |
16 | |
17 | class KActionCollection; |
18 | class KShortcutWidgetPrivate; |
19 | |
20 | /** |
21 | * @class KShortcutWidget kshortcutwidget.h KShortcutWidget |
22 | * |
23 | * \image html kshortcutwidget.png "KShortcutWidget" |
24 | */ |
25 | class KXMLGUI_EXPORT KShortcutWidget : public QWidget |
26 | { |
27 | Q_OBJECT |
28 | Q_PROPERTY(bool modifierlessAllowed READ isModifierlessAllowed WRITE setModifierlessAllowed) |
29 | public: |
30 | explicit KShortcutWidget(QWidget *parent = nullptr); |
31 | ~KShortcutWidget() override; |
32 | |
33 | void setModifierlessAllowed(bool allow); |
34 | bool isModifierlessAllowed(); |
35 | |
36 | void setClearButtonsShown(bool show); |
37 | |
38 | QList<QKeySequence> shortcut() const; |
39 | |
40 | /** |
41 | * Set a list of action collections to check against for conflictuous shortcut. |
42 | * |
43 | * If there is a conflictuous shortcut with a QAction, and that his shortcut can be configured |
44 | * (KActionCollection::isShortcutConfigurable() returns true) the user will be prompted for eventually steal |
45 | * the shortcut from this action |
46 | * |
47 | * Global shortcuts are automatically checked for conflicts |
48 | * |
49 | * Don't forget to call applyStealShortcut to actually steal the shortcut. |
50 | * |
51 | * @since 4.1 |
52 | */ |
53 | void setCheckActionCollections(const QList<KActionCollection *> &actionCollections); |
54 | |
55 | Q_SIGNALS: |
56 | void shortcutChanged(const QList<QKeySequence> &cut); |
57 | |
58 | public Q_SLOTS: |
59 | void setShortcut(const QList<QKeySequence> &cut); |
60 | void clearShortcut(); |
61 | |
62 | /** |
63 | * Actually remove the shortcut that the user wanted to steal, from the |
64 | * action that was using it. |
65 | * |
66 | * To be called before you apply your changes. |
67 | * No shortcuts are stolen until this function is called. |
68 | */ |
69 | void applyStealShortcut(); |
70 | |
71 | private: |
72 | friend class KShortcutWidgetPrivate; |
73 | std::unique_ptr<KShortcutWidgetPrivate> const d; |
74 | }; |
75 | |
76 | #endif // KSHORTCUTWIDGET_H |
77 | |