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