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 };