1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2016 The Qt Company Ltd. 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of the Qt Virtual Keyboard module of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:GPL$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see https://www.qt.io/terms-conditions. For further 15 ** information use the contact form at https://www.qt.io/contact-us. 16 ** 17 ** GNU General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU 19 ** General Public License version 3 or (at your option) any later version 20 ** approved by the KDE Free Qt Foundation. The licenses are as published by 21 ** the Free Software Foundation and appearing in the file LICENSE.GPL3 22 ** included in the packaging of this file. Please review the following 23 ** information to ensure the GNU General Public License requirements will 24 ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 25 ** 26 ** $QT_END_LICENSE$ 27 ** 28 ****************************************************************************/ 29 30 #ifndef SELECTIONLISTMODEL_H 31 #define SELECTIONLISTMODEL_H 32 33 #include <QAbstractListModel> 34 #include "dwkeyboard_global.h" 35 36 namespace QtVirtualKeyboard { 37 38 class AbstractInputMethod; 39 class InputEngine; 40 class SelectionListModelPrivate; 41 42 class DWKEYBOARDSHARED_EXPORT SelectionListModel : public QAbstractListModel 43 { 44 Q_OBJECT 45 Q_ENUMS(Type) 46 Q_ENUMS(Role) 47 Q_DECLARE_PRIVATE(SelectionListModel) 48 49 explicit SelectionListModel(QObject *parent = 0); 50 51 public: 52 enum Type 53 { 54 WordCandidateList = 0 55 }; 56 enum Role 57 { 58 DisplayRole = Qt::DisplayRole, 59 WordCompletionLengthRole = Qt::UserRole + 1 60 }; 61 62 ~SelectionListModel(); 63 void setDataSource(AbstractInputMethod *dataSource, Type type); 64 AbstractInputMethod *dataSource() const; 65 int rowCount(const QModelIndex &parent = QModelIndex()) const; 66 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; 67 QHash<int,QByteArray> roleNames() const; 68 69 Q_INVOKABLE void selectItem(int index); 70 Q_INVOKABLE QVariant dataAt(int index, int role = Qt::DisplayRole) const; 71 72 signals: 73 void activeItemChanged(int index); 74 void itemSelected(int index); 75 76 protected slots: 77 void selectionListChanged(int type); 78 void selectionListActiveItemChanged(int type, int index); 79 80 private: 81 friend class InputEngine; 82 }; 83 84 } // namespace QtVirtualKeyboard 85 86 Q_DECLARE_METATYPE(QtVirtualKeyboard::SelectionListModel::Type) 87 Q_DECLARE_METATYPE(QtVirtualKeyboard::SelectionListModel::Role) 88 89 #endif // SELECTIONLISTMODEL_H 90