// Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QQUICKFONTDIALOGIMPL_P_H #define QQUICKFONTDIALOGIMPL_P_H // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // #include #include #include #include #include #include #include #include "qtquickdialogs2quickimplglobal_p.h" QT_BEGIN_NAMESPACE class QQuickDialogButtonBox; class QQuickFontDialogImplAttached; class QQuickFontDialogImplAttachedPrivate; class QQuickFontDialogImplPrivate; class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFontDialogImpl : public QQuickDialog { Q_OBJECT Q_PROPERTY(QFont currentFont READ currentFont WRITE setCurrentFont NOTIFY currentFontChanged FINAL) QML_NAMED_ELEMENT(FontDialogImpl) QML_ATTACHED(QQuickFontDialogImplAttached) QML_ADDED_IN_VERSION(6, 2) public: explicit QQuickFontDialogImpl(QObject *parent = nullptr); static QQuickFontDialogImplAttached *qmlAttachedProperties(QObject *object); QSharedPointer options() const; void setOptions(const QSharedPointer &options); QFont currentFont() const; void setCurrentFont(const QFont &font, bool selectInListViews = false); void init(); Q_SIGNALS: void optionsChanged(); void currentFontChanged(const QFont &font); private: void keyReleaseEvent(QKeyEvent *event) override; void focusOutEvent(QFocusEvent *event) override; Q_DISABLE_COPY(QQuickFontDialogImpl) Q_DECLARE_PRIVATE(QQuickFontDialogImpl) }; class Q_QUICKDIALOGS2QUICKIMPL_PRIVATE_EXPORT QQuickFontDialogImplAttached : public QObject { Q_OBJECT Q_PROPERTY(QQuickListView *familyListView READ familyListView WRITE setFamilyListView NOTIFY familyListViewChanged) Q_PROPERTY(QQuickListView *styleListView READ styleListView WRITE setStyleListView NOTIFY styleListViewChanged) Q_PROPERTY(QQuickListView *sizeListView READ sizeListView WRITE setSizeListView NOTIFY sizeListViewChanged) Q_PROPERTY(QQuickTextEdit *sampleEdit READ sampleEdit WRITE setSampleEdit NOTIFY sampleEditChanged) Q_PROPERTY(QQuickDialogButtonBox *buttonBox READ buttonBox WRITE setButtonBox NOTIFY buttonBoxChanged) Q_PROPERTY(QQuickComboBox *writingSystemComboBox READ writingSystemComboBox WRITE setWritingSystemComboBox NOTIFY writingSystemComboBoxChanged) Q_PROPERTY(QQuickCheckBox *underlineCheckBox READ underlineCheckBox WRITE setUnderlineCheckBox NOTIFY underlineCheckBoxChanged) Q_PROPERTY(QQuickCheckBox *strikeoutCheckBox READ strikeoutCheckBox WRITE setStrikeoutCheckBox NOTIFY strikeoutCheckBoxChanged) Q_PROPERTY(QQuickTextField *familyEdit READ familyEdit WRITE setFamilyEdit NOTIFY familyEditChanged) Q_PROPERTY(QQuickTextField *styleEdit READ styleEdit WRITE setStyleEdit NOTIFY styleEditChanged) Q_PROPERTY(QQuickTextField *sizeEdit READ sizeEdit WRITE setSizeEdit NOTIFY sizeEditChanged) Q_MOC_INCLUDE() public: explicit QQuickFontDialogImplAttached(QObject *parent = nullptr); QQuickListView *familyListView() const; void setFamilyListView(QQuickListView *familyListView); QQuickListView *styleListView() const; void setStyleListView(QQuickListView *styleListView); QQuickListView *sizeListView() const; void setSizeListView(QQuickListView *sizeListView); QQuickTextEdit *sampleEdit() const; void setSampleEdit(QQuickTextEdit *sampleEdit); QQuickDialogButtonBox *buttonBox() const; void setButtonBox(QQuickDialogButtonBox *buttonBox); QQuickComboBox *writingSystemComboBox() const; void setWritingSystemComboBox(QQuickComboBox *writingSystemComboBox); QQuickCheckBox *underlineCheckBox() const; void setUnderlineCheckBox(QQuickCheckBox *underlineCheckBox); QQuickCheckBox *strikeoutCheckBox() const; void setStrikeoutCheckBox(QQuickCheckBox *strikethroughCheckBox); QQuickTextField *familyEdit() const; void setFamilyEdit(QQuickTextField *familyEdit); QQuickTextField *styleEdit() const; void setStyleEdit(QQuickTextField *styleEdit); QQuickTextField *sizeEdit() const; void setSizeEdit(QQuickTextField *sizeEdit); Q_SIGNALS: void buttonBoxChanged(); void familyListViewChanged(); void styleListViewChanged(); void sizeListViewChanged(); void sampleEditChanged(); void writingSystemComboBoxChanged(); void underlineCheckBoxChanged(); void strikeoutCheckBoxChanged(); void familyEditChanged(); void styleEditChanged(); void sizeEditChanged(); public: void searchFamily(const QString &s) { searchListView(s, familyListView()); } void searchStyle(const QString &s) { searchListView(s, styleListView()); } void clearSearch(); void updateFamilies(); void selectFontInListViews(const QFont &font); private: void updateStyles(); void updateSizes(); void _q_familyChanged(); void _q_styleChanged(); void _q_sizeEdited(); void _q_sizeChanged(); void _q_updateSample(); void _q_writingSystemChanged(int index); void searchListView(const QString &s, QQuickListView *listView); QFontDatabase::WritingSystem m_writingSystem; QString m_selectedFamily; QString m_selectedStyle; QString m_search; int m_selectedSize; bool m_smoothlyScalable; bool m_ignoreFamilyUpdate; bool m_ignoreStyleUpdate; Q_DISABLE_COPY(QQuickFontDialogImplAttached) Q_DECLARE_PRIVATE(QQuickFontDialogImplAttached) }; QT_END_NAMESPACE QML_DECLARE_TYPE(QQuickFontDialogImpl) #endif // QQUICKFONTDIALOGIMPL_P_H