File indexing completed on 2024-05-12 17:07:18

0001 /*
0002     SPDX-FileCopyrightText: 2020 David Redondo <kde@david-redondo.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QKeySequence>
0010 #include <QObject>
0011 
0012 #include <KQuickAddons/ConfigModule>
0013 
0014 class FilteredShortcutsModel;
0015 class KGlobalAccelInterface;
0016 class GlobalAccelModel;
0017 class ShortcutsModel;
0018 class StandardShortcutsModel;
0019 
0020 class KCMKeys : public KQuickAddons::ConfigModule
0021 {
0022     Q_OBJECT
0023 
0024     Q_PROPERTY(FilteredShortcutsModel *filteredModel READ filteredModel CONSTANT)
0025     Q_PROPERTY(ShortcutsModel *shortcutsModel READ shortcutsModel CONSTANT)
0026     Q_PROPERTY(QString lastError READ lastError NOTIFY errorOccured)
0027 
0028 public:
0029     KCMKeys(QObject *parent, const KPluginMetaData &metaData, const QVariantList &args);
0030 
0031     void defaults() override;
0032     void load() override;
0033     void save() override;
0034 
0035     Q_INVOKABLE void
0036     requestKeySequence(QQuickItem *context, const QModelIndex &index, const QKeySequence &newSequence, const QKeySequence &oldSequence = QKeySequence());
0037 
0038     Q_INVOKABLE void writeScheme(const QUrl &url);
0039     Q_INVOKABLE void loadScheme(const QUrl &url);
0040     Q_INVOKABLE QVariantList defaultSchemes() const;
0041 
0042     Q_INVOKABLE void addApplication(QQuickItem *ctx);
0043     Q_INVOKABLE void addCommand(const QString &exec);
0044     Q_INVOKABLE QString editCommand(const QString &componentName, const QString &newExec);
0045     Q_INVOKABLE QString quoteUrl(const QUrl &url);
0046 
0047     Q_INVOKABLE QString keySequenceToString(const QKeySequence &keySequence) const;
0048     Q_INVOKABLE QString urlFilename(const QUrl &url);
0049 
0050     FilteredShortcutsModel *filteredModel() const;
0051     ShortcutsModel *shortcutsModel() const;
0052     QString lastError() const;
0053 
0054 Q_SIGNALS:
0055     void showComponent(int row);
0056     void errorOccured();
0057 
0058 private:
0059     void setError(const QString &errorMessage);
0060     QModelIndex conflictingIndex(const QKeySequence &keySequence);
0061 
0062     QString m_lastError;
0063     FilteredShortcutsModel *m_filteredModel;
0064     GlobalAccelModel *m_globalAccelModel;
0065     KGlobalAccelInterface *m_globalAccelInterface;
0066     ShortcutsModel *m_shortcutsModel;
0067     StandardShortcutsModel *m_standardShortcutsModel;
0068     QString m_argument;
0069 };