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