File indexing completed on 2024-05-12 05:35:51

0001 /*
0002     SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez <aleixpol@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <KQuickManagedConfigModule>
0010 
0011 #include <KSharedConfig>
0012 #include <QKeySequence>
0013 
0014 #include "devicesmodel.h"
0015 
0016 class TabletSettings;
0017 class TabletData;
0018 
0019 class Tablet : public KQuickManagedConfigModule
0020 {
0021     Q_OBJECT
0022     Q_PROPERTY(DevicesModel *toolsModel READ toolsModel CONSTANT)
0023     Q_PROPERTY(DevicesModel *padsModel READ padsModel CONSTANT)
0024 
0025 public:
0026     explicit Tablet(QObject *parent, const KPluginMetaData &metaData);
0027     ~Tablet() override;
0028 
0029     void load() override;
0030     void save() override;
0031     void defaults() override;
0032     bool isSaveNeeded() const override;
0033     bool isDefaults() const override;
0034 
0035     DevicesModel *toolsModel() const;
0036     DevicesModel *padsModel() const;
0037 
0038     Q_SCRIPTABLE void assignPadButtonMapping(const QString &deviceName, uint button, const QKeySequence &keySequence);
0039     Q_SCRIPTABLE void assignToolButtonMapping(const QString &deviceName, uint button, const QKeySequence &keySequence);
0040     Q_SCRIPTABLE QKeySequence padButtonMapping(const QString &deviceName, uint button) const;
0041     Q_SCRIPTABLE QKeySequence toolButtonMapping(const QString &deviceName, uint button) const;
0042 
0043 Q_SIGNALS:
0044     void settingsRestored();
0045 
0046 private:
0047     void refreshNeedsSave();
0048 
0049     DevicesModel *const m_toolsModel;
0050     DevicesModel *const m_padsModel;
0051     QHash<QString, QHash<QString, QHash<uint, QKeySequence>>> m_unsavedMappings;
0052 };