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 Quick Dialogs module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
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 Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or (at your option) the GNU General
28** Public license version 3 or any later version approved by the KDE Free
29** Qt Foundation. The licenses are as published by the Free Software
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31** included in the packaging of this file. Please review the following
32** information to ensure the GNU General Public License requirements will
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34** https://www.gnu.org/licenses/gpl-3.0.html.
35**
36** $QT_END_LICENSE$
37**
38****************************************************************************/
39
40#ifndef QQUICKFONTLISTMODEL_P_H
41#define QQUICKFONTLISTMODEL_P_H
42
43#include <QtCore/qstringlist.h>
44#include <QtCore/QAbstractListModel>
45#include <QtGui/qpa/qplatformdialoghelper.h>
46#include <QtQml/qqmlparserstatus.h>
47#include <QtQml/qjsvalue.h>
48
49QT_BEGIN_NAMESPACE
50
51class QModelIndex;
52
53class QQuickFontListModelPrivate;
54
55class QQuickFontListModel : public QAbstractListModel, public QQmlParserStatus
56{
57 Q_OBJECT
58 Q_INTERFACES(QQmlParserStatus)
59 Q_PROPERTY(QString writingSystem READ writingSystem WRITE setWritingSystem NOTIFY writingSystemChanged)
60
61 Q_PROPERTY(bool scalableFonts READ scalableFonts WRITE setScalableFonts NOTIFY scalableFontsChanged)
62 Q_PROPERTY(bool nonScalableFonts READ nonScalableFonts WRITE setNonScalableFonts NOTIFY nonScalableFontsChanged)
63 Q_PROPERTY(bool monospacedFonts READ monospacedFonts WRITE setMonospacedFonts NOTIFY monospacedFontsChanged)
64 Q_PROPERTY(bool proportionalFonts READ proportionalFonts WRITE setProportionalFonts NOTIFY proportionalFontsChanged)
65
66 Q_PROPERTY(int count READ count NOTIFY rowCountChanged)
67
68public:
69 QQuickFontListModel(QObject *parent = 0);
70 ~QQuickFontListModel();
71
72 enum Roles {
73 FontFamilyRole = Qt::UserRole + 1
74 };
75
76 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
77 QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
78 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
79 QHash<int, QByteArray> roleNames() const override;
80
81 int count() const { return rowCount(parent: QModelIndex()); }
82
83 QString writingSystem() const;
84 void setWritingSystem(const QString& writingSystem);
85
86 bool scalableFonts() const;
87 bool nonScalableFonts() const;
88 bool monospacedFonts() const;
89 bool proportionalFonts() const;
90
91 Q_INVOKABLE QJSValue get(int index) const;
92 Q_INVOKABLE QJSValue pointSizes();
93
94 void classBegin() override;
95 void componentComplete() override;
96
97public Q_SLOTS:
98 void setScalableFonts(bool arg);
99 void setNonScalableFonts(bool arg);
100 void setMonospacedFonts(bool arg);
101 void setProportionalFonts(bool arg);
102
103Q_SIGNALS:
104 void scalableFontsChanged();
105 void nonScalableFontsChanged();
106 void monospacedFontsChanged();
107 void proportionalFontsChanged();
108 void writingSystemChanged();
109 void rowCountChanged() const;
110
111protected:
112 void updateFamilies();
113
114private:
115 Q_DISABLE_COPY(QQuickFontListModel)
116 Q_DECLARE_PRIVATE(QQuickFontListModel)
117 QScopedPointer<QQuickFontListModelPrivate> d_ptr;
118
119};
120
121QT_END_NAMESPACE
122
123#endif // QQUICKFONTLISTMODEL_P_H
124

source code of qtquickcontrols/src/dialogs/Private/qquickfontlistmodel_p.h