File indexing completed on 2026-06-14 05:21:53

0001 /*
0002     SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez <aleixpol@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <KQuickManagedConfigModule>
0010 #include <KService>
0011 #include <QAbstractListModel>
0012 
0013 class KDesktopFile;
0014 class VirtualKeyboardData;
0015 class VirtualKeyboardSettings;
0016 
0017 class VirtualKeyboardsModel : public QAbstractListModel
0018 {
0019     Q_OBJECT
0020 public:
0021     enum Roles {
0022         DesktopFileNameRole = Qt::UserRole + 1,
0023     };
0024     Q_ENUM(Roles)
0025 
0026     VirtualKeyboardsModel(QObject *parent = nullptr);
0027     QVariant data(const QModelIndex &index, int role) const override;
0028     int rowCount(const QModelIndex &parent) const override;
0029 
0030     QHash<int, QByteArray> roleNames() const override;
0031 
0032     Q_SCRIPTABLE int inputMethodIndex(const QString &desktopFile) const;
0033 
0034 private:
0035     KService::List m_services;
0036 };
0037 
0038 class KcmVirtualKeyboard : public KQuickManagedConfigModule
0039 {
0040     Q_OBJECT
0041     Q_PROPERTY(VirtualKeyboardSettings *settings READ settings CONSTANT)
0042     Q_PROPERTY(QAbstractItemModel *model READ keyboardsModel CONSTANT)
0043 
0044 public:
0045     explicit KcmVirtualKeyboard(QObject *parent, const KPluginMetaData &metaData);
0046     ~KcmVirtualKeyboard() override;
0047 
0048     VirtualKeyboardSettings *settings() const;
0049     VirtualKeyboardsModel *keyboardsModel() const
0050     {
0051         return m_model;
0052     }
0053 
0054 private:
0055     VirtualKeyboardData *m_data;
0056     VirtualKeyboardsModel *const m_model;
0057 };