File indexing completed on 2024-05-12 03:55:08
0001 /* 0002 SPDX-FileCopyrightText: 2014 David Edmundson <davidedmundson@kde.org> 0003 SPDX-FileCopyrightText: 2020 David Redondo <kde@david-redondo.de> 0004 0005 SPDX-License-Identifier: LGPL-2.1-or-later 0006 */ 0007 0008 #ifndef KEYSEQUENCEHELPER_H 0009 #define KEYSEQUENCEHELPER_H 0010 0011 #include <KKeySequenceRecorder> 0012 0013 #include <QKeySequence> 0014 #include <QQuickItem> 0015 0016 class KeySequenceHelperPrivate; 0017 class QQuickWindow; 0018 0019 class KeySequenceHelper : public KKeySequenceRecorder 0020 { 0021 Q_OBJECT 0022 0023 Q_PROPERTY( 0024 ShortcutTypes checkAgainstShortcutTypes READ checkAgainstShortcutTypes WRITE setCheckAgainstShortcutTypes NOTIFY checkAgainstShortcutTypesChanged) 0025 0026 public: 0027 enum ShortcutType { 0028 None = 0x00, //!< No checking for conflicts 0029 StandardShortcuts = 0x01, //!< Check against standard shortcuts. @see KStandardShortcut 0030 GlobalShortcuts = 0x02, //!< Check against global shortcuts. @see KGlobalAccel 0031 }; 0032 Q_DECLARE_FLAGS(ShortcutTypes, ShortcutType) 0033 Q_FLAG(ShortcutTypes) 0034 0035 /** 0036 * Constructor. 0037 */ 0038 explicit KeySequenceHelper(QObject *parent = nullptr); 0039 0040 /** 0041 * Destructs the widget. 0042 */ 0043 ~KeySequenceHelper() override; 0044 0045 Q_INVOKABLE bool isKeySequenceAvailable(const QKeySequence &keySequence) const; 0046 0047 ShortcutTypes checkAgainstShortcutTypes(); 0048 void setCheckAgainstShortcutTypes(ShortcutTypes types); 0049 0050 Q_INVOKABLE static QKeySequence fromString(const QString &str = QString()); 0051 Q_INVOKABLE static bool keySequenceIsEmpty(const QKeySequence &keySequence); 0052 Q_INVOKABLE static QString keySequenceNativeText(const QKeySequence &keySequence); 0053 Q_INVOKABLE static QWindow *renderWindow(QQuickWindow *quickWindow); 0054 0055 Q_SIGNALS: 0056 void checkAgainstShortcutTypesChanged(); 0057 0058 private: 0059 friend class KeySequenceHelperPrivate; 0060 KeySequenceHelperPrivate *const d; 0061 0062 Q_DISABLE_COPY(KeySequenceHelper) 0063 }; 0064 0065 Q_DECLARE_OPERATORS_FOR_FLAGS(KeySequenceHelper::ShortcutTypes) 0066 0067 #endif // KEYSEQUENCEHELPER_H