File indexing completed on 2025-04-27 04:08:16

0001 /* This file is part of the KDE project
0002  * SPDX-FileCopyrightText: 2012 Arjen Hiemstra <ahiemstra@heimr.nl>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef KEYBOARDMODEL_H
0008 #define KEYBOARDMODEL_H
0009 
0010 #include <QAbstractListModel>
0011 #include <QQmlParserStatus>
0012 
0013 class KeyboardModel : public QAbstractListModel, public QQmlParserStatus
0014 {
0015     Q_OBJECT
0016     Q_INTERFACES(QQmlParserStatus)
0017     Q_PROPERTY(KeyboardMode mode READ keyboardMode WRITE setKeyboardMode NOTIFY keyboardModeChanged)
0018     Q_PROPERTY(bool useBuiltIn READ useBuiltIn NOTIFY useBuiltInChanged)
0019 
0020 public:
0021     enum Roles {
0022         TextRole = Qt::UserRole + 1,
0023         TypeRole,
0024         WidthRole
0025     };
0026 
0027     enum KeyboardMode {
0028         NormalMode,
0029         CapitalMode,
0030         NumericMode
0031     };
0032     Q_ENUMS(KeyboardMode)
0033 
0034     enum KeyType {
0035         NormalKey,
0036         SpacerKey,
0037         ShiftKey,
0038         EnterKey,
0039         BackspaceKey,
0040         NumericModeKey,
0041         CloseKey,
0042         LeftArrowKey,
0043         RightArrowKey
0044     };
0045     Q_ENUMS(KeyType)
0046 
0047     explicit KeyboardModel(QObject *parent = nullptr);
0048     ~KeyboardModel() override;
0049 
0050     QHash<int, QByteArray> roleNames() const override;
0051 
0052     void classBegin() override;
0053     void componentComplete() override;
0054 
0055     QVariant data(const QModelIndex &index,
0056                   int role = Qt::DisplayRole) const override;
0057     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
0058 
0059     KeyboardMode keyboardMode() const;
0060     void setKeyboardMode(KeyboardModel::KeyboardMode mode);
0061 
0062     bool useBuiltIn() const;
0063 
0064 Q_SIGNALS:
0065     void keyboardModeChanged();
0066     bool useBuiltInChanged();
0067 
0068 private:
0069     class Private;
0070     Private * const d;
0071 };
0072 
0073 #endif // KEYBOARDMODEL_H