aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl.cpp')
-rw-r--r--src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl.cpp836
1 files changed, 0 insertions, 836 deletions
diff --git a/src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl.cpp b/src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl.cpp
deleted file mode 100644
index 3263b73b..00000000
--- a/src/quickdialogs2/quickdialogs2quickimpl/qquickfontdialogimpl.cpp
+++ /dev/null
@@ -1,836 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2021 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt Quick Dialogs module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL3$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPLv3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or later as published by the Free
-** Software Foundation and appearing in the file LICENSE.GPL included in
-** the packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 2.0 requirements will be
-** met: http://www.gnu.org/licenses/gpl-2.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qquickfontdialogimpl_p.h"
-#include "qquickfontdialogimpl_p_p.h"
-
-#include <QtQuickTemplates2/private/qquickdialogbuttonbox_p_p.h>
-#include <private/qfontdatabase_p.h>
-
-QT_BEGIN_NAMESPACE
-
-Q_LOGGING_CATEGORY(lcAttachedProperty, "qt.quick.dialogs.quickfontdialogimpl.attachedOrWarn")
-
-QQuickFontDialogImplPrivate::QQuickFontDialogImplPrivate()
-{
-}
-
-QQuickFontDialogImplAttached *QQuickFontDialogImplPrivate::attachedOrWarn()
-{
- Q_Q(QQuickFontDialogImpl);
- QQuickFontDialogImplAttached *attached = static_cast<QQuickFontDialogImplAttached *>(
- qmlAttachedPropertiesObject<QQuickFontDialogImpl>(q));
- if (!attached) {
- qCWarning(lcAttachedProperty)
- << "Expected FontDialogImpl attached object to be present on" << this;
- }
- return attached;
-}
-
-void QQuickFontDialogImplPrivate::handleAccept() { }
-
-void QQuickFontDialogImplPrivate::handleClick(QQuickAbstractButton *button)
-{
- Q_Q(QQuickFontDialogImpl);
- if (buttonRole(button) == QPlatformDialogHelper::AcceptRole) {
- q->accept();
- QQuickDialogPrivate::handleClick(button);
- }
-}
-
-QQuickFontDialogImpl::QQuickFontDialogImpl(QObject *parent)
- : QQuickDialog(*(new QQuickFontDialogImplPrivate), parent)
-{
-}
-
-QQuickFontDialogImplAttached *QQuickFontDialogImpl::qmlAttachedProperties(QObject *object)
-{
- return new QQuickFontDialogImplAttached(object);
-}
-
-QSharedPointer<QFontDialogOptions> QQuickFontDialogImpl::options() const
-{
- Q_D(const QQuickFontDialogImpl);
-
- return d->options;
-}
-
-void QQuickFontDialogImpl::setOptions(const QSharedPointer<QFontDialogOptions> &options)
-{
- Q_D(QQuickFontDialogImpl);
-
- if (options == d->options)
- return;
-
- d->options = options;
-
- emit optionsChanged();
-}
-
-QFont QQuickFontDialogImpl::currentFont() const
-{
- Q_D(const QQuickFontDialogImpl);
- return d->currentFont;
-}
-
-void QQuickFontDialogImpl::setCurrentFont(const QFont &font)
-{
- Q_D(QQuickFontDialogImpl);
-
- if (font == d->currentFont)
- return;
-
- d->currentFont = font;
-
- emit currentFontChanged(font);
-}
-
-void QQuickFontDialogImpl::updateListViews()
-{
- Q_D(QQuickFontDialogImpl);
- QQuickFontDialogImplAttached *attached = d->attachedOrWarn();
- if (!attached)
- return;
-
- attached->updateFamilies();
-
- attached->buttonBox()->setVisible(!(options()->options() & QFontDialogOptions::NoButtons));
-}
-
-void QQuickFontDialogImpl::keyReleaseEvent(QKeyEvent *event)
-{
- Q_D(QQuickFontDialogImpl);
-
- QQuickDialog::keyReleaseEvent(event);
-
- QQuickFontDialogImplAttached *attached = d->attachedOrWarn();
- if (!attached)
- return;
-
- // The family and style text edits are read-only so that they
- // can show the current selection but also allow key input to "search".
- // This is why we handle just the release event, and don't accept it.
- if (window()->activeFocusItem() == attached->familyEdit())
- attached->searchFamily(event->text());
- else if (window()->activeFocusItem() == attached->styleEdit())
- attached->searchStyle(event->text());
-}
-
-void QQuickFontDialogImpl::focusOutEvent(QFocusEvent *event)
-{
- Q_D(QQuickFontDialogImpl);
-
- QQuickDialog::focusOutEvent(event);
-
- QQuickFontDialogImplAttached *attached = d->attachedOrWarn();
- if (!attached)
- return;
-
- attached->clearSearch();
-}
-
-QQuickFontDialogImplAttached::QQuickFontDialogImplAttached(QObject *parent)
- : QObject(*(new QQuickFontDialogImplAttachedPrivate), parent),
- m_writingSystem(QFontDatabase::Any),
- m_selectedSize(-1),
- m_smoothlyScalable(false),
- m_isUpdatingStyles(false)
-{
- if (!qobject_cast<QQuickFontDialogImpl *>(parent)) {
- qmlWarning(this) << "FontDialogImpl attached properties should only be "
- << "accessed through the root FileDialogImpl instance";
- }
-}
-
-QQuickListView *QQuickFontDialogImplAttached::familyListView() const
-{
- Q_D(const QQuickFontDialogImplAttached);
- return d->familyListView;
-}
-
-void QQuickFontDialogImplAttached::setFamilyListView(QQuickListView *familyListView)
-{
- Q_D(QQuickFontDialogImplAttached);
- if (d->familyListView == familyListView)
- return;
-
- if (d->familyListView) {
- disconnect(d->familyListView, &QQuickListView::currentIndexChanged,
- this, &QQuickFontDialogImplAttached::_q_familyChanged);
- }
-
- d->familyListView = familyListView;
-
- if (familyListView) {
- connect(d->familyListView, &QQuickListView::currentIndexChanged,
- this, &QQuickFontDialogImplAttached::_q_familyChanged);
- }
-
- emit familyListViewChanged();
-}
-
-QQuickListView *QQuickFontDialogImplAttached::styleListView() const
-{
- Q_D(const QQuickFontDialogImplAttached);
- return d->styleListView;
-}
-
-void QQuickFontDialogImplAttached::setStyleListView(QQuickListView *styleListView)
-{
- Q_D(QQuickFontDialogImplAttached);
- if (d->styleListView == styleListView)
- return;
-
- if (d->styleListView) {
- disconnect(d->styleListView, &QQuickListView::currentIndexChanged,
- this, &QQuickFontDialogImplAttached::_q_styleChanged);
- }
-
- d->styleListView = styleListView;
-
- if (styleListView) {
- connect(d->styleListView, &QQuickListView::currentIndexChanged,
- this, &QQuickFontDialogImplAttached::_q_styleChanged);
- }
-
- emit styleListViewChanged();
-}
-
-QQuickListView *QQuickFontDialogImplAttached::sizeListView() const
-{
- Q_D(const QQuickFontDialogImplAttached);
- return d->sizeListView;
-}
-
-void QQuickFontDialogImplAttached::setSizeListView(QQuickListView *sizeListView)
-{
- Q_D(QQuickFontDialogImplAttached);
- if (d->sizeListView == sizeListView)
- return;
-
- if (d->sizeListView) {
- disconnect(d->sizeListView, &QQuickListView::currentIndexChanged,
- this, &QQuickFontDialogImplAttached::_q_sizeChanged);
- }
-
- d->sizeListView = sizeListView;
-
- if (d->sizeListView) {
- connect(d->sizeListView, &QQuickListView::currentIndexChanged,
- this, &QQuickFontDialogImplAttached::_q_sizeChanged);
- }
-
- emit sizeListViewChanged();
-}
-
-QQuickTextEdit *QQuickFontDialogImplAttached::sampleEdit() const
-{
- Q_D(const QQuickFontDialogImplAttached);
- return d->sampleEdit;
-}
-
-void QQuickFontDialogImplAttached::setSampleEdit(QQuickTextEdit *sampleEdit)
-{
- Q_D(QQuickFontDialogImplAttached);
-
- if (d->sampleEdit == sampleEdit)
- return;
-
- if (d->sampleEdit) {
- QObjectPrivate::disconnect(d->sampleEdit, &QQuickTextEdit::fontChanged,
- d, &QQuickFontDialogImplAttachedPrivate::currentFontChanged);
- }
-
- d->sampleEdit = sampleEdit;
-
- if (d->sampleEdit) {
- QObjectPrivate::connect(d->sampleEdit, &QQuickTextEdit::fontChanged,
- d, &QQuickFontDialogImplAttachedPrivate::currentFontChanged);
-
- d->sampleEdit->setText(QFontDatabase::writingSystemSample(m_writingSystem));
- }
-
- emit sampleEditChanged();
-}
-
-QQuickDialogButtonBox *QQuickFontDialogImplAttached::buttonBox() const
-{
- Q_D(const QQuickFontDialogImplAttached);
- return d->buttonBox;
-}
-
-void QQuickFontDialogImplAttached::setButtonBox(QQuickDialogButtonBox *buttonBox)
-{
- Q_D(QQuickFontDialogImplAttached);
- if (buttonBox == d->buttonBox)
- return;
-
- if (d->buttonBox) {
- QQuickFontDialogImpl *fontDialogImpl = qobject_cast<QQuickFontDialogImpl *>(parent());
- if (fontDialogImpl) {
- auto dialogPrivate = QQuickDialogPrivate::get(fontDialogImpl);
- QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::accepted,
- dialogPrivate, &QQuickDialogPrivate::handleAccept);
- QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::rejected,
- dialogPrivate, &QQuickDialogPrivate::handleReject);
- QObjectPrivate::disconnect(d->buttonBox, &QQuickDialogButtonBox::clicked, dialogPrivate,
- &QQuickDialogPrivate::handleClick);
- }
- }
-
- d->buttonBox = buttonBox;
-
- if (buttonBox) {
- QQuickFontDialogImpl *fontDialogImpl = qobject_cast<QQuickFontDialogImpl *>(parent());
- if (fontDialogImpl) {
- auto dialogPrivate = QQuickDialogPrivate::get(fontDialogImpl);
- QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::accepted, dialogPrivate,
- &QQuickDialogPrivate::handleAccept);
- QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::rejected, dialogPrivate,
- &QQuickDialogPrivate::handleReject);
- QObjectPrivate::connect(d->buttonBox, &QQuickDialogButtonBox::clicked, dialogPrivate,
- &QQuickDialogPrivate::handleClick);
- }
- }
-
- emit buttonBoxChanged();
-}
-
-QQuickComboBox *QQuickFontDialogImplAttached::writingSystemComboBox() const
-{
- Q_D(const QQuickFontDialogImplAttached);
- return d->writingSystemComboBox;
-}
-
-void QQuickFontDialogImplAttached::setWritingSystemComboBox(QQuickComboBox *writingSystemComboBox)
-{
- Q_D(QQuickFontDialogImplAttached);
-
- if (d->writingSystemComboBox == writingSystemComboBox)
- return;
-
- if (d->writingSystemComboBox) {
- disconnect(d->writingSystemComboBox, &QQuickComboBox::activated,
- this, &QQuickFontDialogImplAttached::_q_writingSystemChanged);
- }
-
- d->writingSystemComboBox = writingSystemComboBox;
-
- if (d->writingSystemComboBox) {
- QStringList writingSystemModel;
- for (int i = 0; i < QFontDatabase::WritingSystemsCount; ++i) {
- QFontDatabase::WritingSystem ws = QFontDatabase::WritingSystem(i);
- QString wsName = QFontDatabase::writingSystemName(ws);
- if (wsName.isEmpty())
- break;
- writingSystemModel.append(wsName);
- }
-
- d->writingSystemComboBox->setModel(writingSystemModel);
-
- connect(d->writingSystemComboBox, &QQuickComboBox::activated,
- this, &QQuickFontDialogImplAttached::_q_writingSystemChanged);
- }
-
- emit writingSystemComboBoxChanged();
-}
-
-QQuickCheckBox *QQuickFontDialogImplAttached::underlineCheckBox() const
-{
- Q_D(const QQuickFontDialogImplAttached);
- return d->underlineCheckBox;
-}
-
-void QQuickFontDialogImplAttached::setUnderlineCheckBox(QQuickCheckBox *underlineCheckBox)
-{
- Q_D(QQuickFontDialogImplAttached);
-
- if (d->underlineCheckBox == underlineCheckBox)
- return;
-
- if (d->underlineCheckBox) {
- disconnect(d->underlineCheckBox, &QQuickCheckBox::checkStateChanged,
- this, &QQuickFontDialogImplAttached::_q_updateSample);
- }
-
- d->underlineCheckBox = underlineCheckBox;
-
- if (d->underlineCheckBox) {
- connect(d->underlineCheckBox, &QQuickCheckBox::checkStateChanged,
- this, &QQuickFontDialogImplAttached::_q_updateSample);
- }
-
- emit underlineCheckBoxChanged();
-}
-
-QQuickCheckBox *QQuickFontDialogImplAttached::strikeoutCheckBox() const
-{
- Q_D(const QQuickFontDialogImplAttached);
- return d->strikeoutCheckBox;
-}
-
-void QQuickFontDialogImplAttached::setStrikeoutCheckBox(QQuickCheckBox *strikeoutCheckBox)
-{
- Q_D(QQuickFontDialogImplAttached);
-
- if (d->strikeoutCheckBox == strikeoutCheckBox)
- return;
-
- if (d->strikeoutCheckBox) {
- disconnect(d->strikeoutCheckBox, &QQuickCheckBox::checkStateChanged,
- this, &QQuickFontDialogImplAttached::_q_updateSample);
- }
-
- d->strikeoutCheckBox = strikeoutCheckBox;
-
- if (d->strikeoutCheckBox) {
- connect(d->strikeoutCheckBox, &QQuickCheckBox::checkStateChanged,
- this, &QQuickFontDialogImplAttached::_q_updateSample);
- }
-
- emit strikeoutCheckBoxChanged();
-}
-
-QQuickTextField *QQuickFontDialogImplAttached::familyEdit() const
-{
- Q_D(const QQuickFontDialogImplAttached);
- return d->familyEdit;
-}
-
-void QQuickFontDialogImplAttached::setFamilyEdit(QQuickTextField *familyEdit)
-{
- Q_D(QQuickFontDialogImplAttached);
-
- if (d->familyEdit == familyEdit)
- return;
-
- d->familyEdit = familyEdit;
-
- emit familyEditChanged();
-}
-
-QQuickTextField *QQuickFontDialogImplAttached::styleEdit() const
-{
- Q_D(const QQuickFontDialogImplAttached);
- return d->styleEdit;
-}
-
-void QQuickFontDialogImplAttached::setStyleEdit(QQuickTextField *styleEdit)
-{
- Q_D(QQuickFontDialogImplAttached);
-
- if (d->styleEdit == styleEdit)
- return;
-
- d->styleEdit = styleEdit;
-
- emit styleEditChanged();
-}
-
-QQuickTextField *QQuickFontDialogImplAttached::sizeEdit() const
-{
- Q_D(const QQuickFontDialogImplAttached);
- return d->sizeEdit;
-}
-
-void QQuickFontDialogImplAttached::setSizeEdit(QQuickTextField *sizeEdit)
-{
- Q_D(QQuickFontDialogImplAttached);
-
- if (d->sizeEdit == sizeEdit)
- return;
-
- if (d->sizeEdit) {
- disconnect(d->sizeEdit, &QQuickTextField::textChanged,
- this, &QQuickFontDialogImplAttached::_q_sizeEdited);
- }
-
- d->sizeEdit = sizeEdit;
-
- if (d->sizeEdit) {
- connect(d->sizeEdit, &QQuickTextField::textChanged,
- this, &QQuickFontDialogImplAttached::_q_sizeEdited);
- }
-
- emit sizeEditChanged();
-}
-
-/*!
- \internal
-
- Updates the model for the family list view, and attempt
- to reselect the previously selected font family.
-
- Calls updateStyles()
- */
-void QQuickFontDialogImplAttached::updateFamilies()
-{
- enum match_t { MATCH_NONE = 0, MATCH_LAST_RESORT = 1, MATCH_APP = 2, MATCH_FAMILY = 3 };
-
- const QFontDialogOptions::FontDialogOptions scalableMask(
- QFontDialogOptions::ScalableFonts | QFontDialogOptions::NonScalableFonts);
-
- const QFontDialogOptions::FontDialogOptions spacingMask(QFontDialogOptions::ProportionalFonts
- | QFontDialogOptions::MonospacedFonts);
-
- const auto p = qobject_cast<QQuickFontDialogImpl *>(parent());
-
- const auto options = p->options()->options();
-
- QStringList familyNames;
- const auto families = QFontDatabase::families(m_writingSystem);
- for (const auto &family : families) {
- if (QFontDatabase::isPrivateFamily(family))
- continue;
-
- if ((options & scalableMask) && (options & scalableMask) != scalableMask) {
- if (bool(options & QFontDialogOptions::ScalableFonts)
- != QFontDatabase::isSmoothlyScalable(family))
- continue;
- }
-
- if ((options & spacingMask) && (options & scalableMask) != spacingMask) {
- if (bool(options & QFontDialogOptions::MonospacedFonts)
- != QFontDatabase::isFixedPitch(family))
- continue;
- }
-
- familyNames << family;
- }
-
- auto listView = familyListView();
-
- // Index will be set to -1 on empty model, and 0 for non empty models.
- // Will overwrite selectedFamily and selectedStyle
- listView->setModel(familyNames);
-
- QString foundryName1, familyName1, foundryName2, familyName2;
- int bestFamilyMatch = -1;
- match_t bestFamilyType = MATCH_NONE;
- const QFont f;
-
- QFontDatabasePrivate::parseFontName(m_selectedFamily, foundryName1, familyName1);
-
- int i = 0;
- for (auto it = familyNames.constBegin(); it != familyNames.constEnd(); ++it, ++i) {
- QFontDatabasePrivate::parseFontName(*it, foundryName2, familyName2);
-
- if (familyName1 == familyName2) {
- bestFamilyType = MATCH_FAMILY;
- if (foundryName1 == foundryName2) {
- bestFamilyMatch = i;
- break;
- }
- if (bestFamilyMatch < MATCH_FAMILY) {
- bestFamilyMatch = i;
- }
- }
-
- match_t type = MATCH_NONE;
- if (bestFamilyType <= MATCH_NONE && familyName2 == QStringLiteral("helvetica"))
- type = MATCH_LAST_RESORT;
- if (bestFamilyType <= MATCH_LAST_RESORT && familyName2 == f.families().constFirst())
- type = MATCH_APP;
- if (type != MATCH_NONE) {
- bestFamilyType = type;
- bestFamilyMatch = i;
- }
- }
-
- if (!familyNames.isEmpty() && bestFamilyType != MATCH_NONE) {
- listView->setCurrentIndex(bestFamilyMatch);
- } else {
- listView->setCurrentIndex(-1);
- }
-
- updateStyles();
-}
-
-/*!
- \internal
-
- Updates the model for the style list view, and
- attempt to reselect the style that was previously selected.
-
- Calls updateSizes()
- */
-void QQuickFontDialogImplAttached::updateStyles()
-{
- const QString family = familyListView()->currentIndex() >= 0 ? m_selectedFamily : QString();
- const QStringList styles = QFontDatabase::styles(family);
-
- auto listView = styleListView();
-
- m_isUpdatingStyles = true;
-
- listView->setModel(styles);
-
- if (styles.isEmpty()) {
- styleEdit()->clear();
- m_smoothlyScalable = false;
- } else {
- int newIndex = 0;
-
- if (!m_selectedStyle.isEmpty()) {
- bool redo = true, found = false;
- QString cstyle = m_selectedStyle;
- do {
- for (int i = 0; i < styles.count(); ++i) {
- if (cstyle.toLower() == styles.at(i).toLower()) {
- newIndex = i;
- found = true;
- break;
- }
- }
-
- if (!found && redo) {
- redo = false;
-
- if (cstyle.contains(QLatin1String("Italic"))) {
- cstyle.replace(QLatin1String("Italic"), QLatin1String("Oblique"));
- continue;
- } else if (cstyle.contains(QLatin1String("Oblique"))) {
- cstyle.replace(QLatin1String("Oblique"), QLatin1String("Italic"));
- continue;
- } else if (cstyle.contains(QLatin1String("Regular"))) {
- cstyle.replace(QLatin1String("Regular"), QLatin1String("Normal"));
- continue;
- } else if (cstyle.contains(QLatin1String("Normal"))) {
- cstyle.replace(QLatin1String("Normal"), QLatin1String("Regular"));
- continue;
- }
- }
-
- } while (!found && redo);
- }
-
- listView->setCurrentIndex(newIndex);
-
- m_selectedStyle = styles.at(newIndex);
- styleEdit()->setText(m_selectedStyle);
-
- m_smoothlyScalable = QFontDatabase::isSmoothlyScalable(m_selectedFamily, m_selectedStyle);
- }
-
- m_isUpdatingStyles = false;
-
- updateSizes();
-}
-
-/*!
- \internal
-
- Updates the model for the size list view,
- and attempts to reselect the size that was previously selected
- */
-void QQuickFontDialogImplAttached::updateSizes()
-{
- if (!m_selectedFamily.isEmpty()) {
- const QList<int> sizes = QFontDatabase::pointSizes(m_selectedFamily, m_selectedStyle);
-
- QStringList str_sizes;
-
- str_sizes.reserve(sizes.size());
-
- int idx = 0, current = -1;
- for (QList<int>::const_iterator it = sizes.constBegin(); it != sizes.constEnd(); it++) {
- str_sizes.append(QString::number(*it));
- if (current == -1 && m_selectedSize == *it) {
- current = idx;
- }
- ++idx;
- }
-
- auto listView = sizeListView();
-
- listView->setModel(str_sizes);
- if (current != -1)
- listView->setCurrentIndex(current);
-
- sizeEdit()->setText(!m_smoothlyScalable && listView->currentIndex() > 0
- ? str_sizes.at(listView->currentIndex())
- : QString::number(m_selectedSize));
- } else {
- qCWarning(lcAttachedProperty) << "Warning! selectedFamily is empty";
- sizeEdit()->clear();
- }
-
- _q_updateSample();
-}
-
-void QQuickFontDialogImplAttached::_q_updateSample()
-{
- const int pSize = sizeEdit()->text().toInt();
-
- QFont newFont = QFontDatabase::font(m_selectedFamily, m_selectedStyle, pSize);
-
- newFont.setUnderline(underlineCheckBox()->isChecked());
- newFont.setStrikeOut(strikeoutCheckBox()->isChecked());
-
- if (!m_selectedFamily.isEmpty()) {
- sampleEdit()->setFont(newFont);
- }
-}
-
-void QQuickFontDialogImplAttached::_q_writingSystemChanged(int index)
-{
- m_writingSystem = QFontDatabase::WritingSystem(index);
- sampleEdit()->setText(QFontDatabase::writingSystemSample(m_writingSystem));
-
- updateFamilies();
-}
-
-void QQuickFontDialogImplAttached::searchListView(const QString &s, QQuickListView *listView)
-{
- const QStringList model = listView->model().toStringList();
-
- bool redo = false;
-
- do {
- m_search.append(s);
-
- for (int i = 0; i < model.count(); ++i) {
- if (model.at(i).startsWith(m_search, Qt::CaseInsensitive)) {
- listView->setCurrentIndex(i);
- return;
- }
- }
-
- clearSearch();
-
- redo = !redo;
- } while (redo);
-}
-
-void QQuickFontDialogImplAttached::clearSearch()
-{
- m_search.clear();
-}
-
-void QQuickFontDialogImplAttached::_q_familyChanged()
-{
- const int index = familyListView()->currentIndex();
-
- if (index < 0) {
- familyEdit()->clear();
- return;
- }
-
- m_selectedFamily = familyListView()->model().toStringList().at(index);
- familyEdit()->setText(m_selectedFamily);
-
- updateStyles();
-}
-
-void QQuickFontDialogImplAttached::_q_styleChanged()
-{
- if (m_isUpdatingStyles)
- return;
-
- const int index = styleListView()->currentIndex();
-
- if (index < 0) {
- qCWarning(lcAttachedProperty) << "currentIndex changed to -1";
- return;
- }
-
- m_selectedStyle = styleListView()->model().toStringList().at(index);
- styleEdit()->setText(m_selectedStyle);
-
- updateSizes();
-}
-
-void QQuickFontDialogImplAttached::_q_sizeEdited()
-{
- const int size = sizeEdit()->text().toInt();
-
- if (size == m_selectedSize)
- return;
-
- m_selectedSize = size;
-
- if (sizeListView()->count()) {
- auto model = sizeListView()->model().toStringList();
-
- int i;
- for (i = 0; i < model.count() - 1; ++i) {
- if (model.at(i).toInt() >= size)
- break;
- }
-
- QSignalBlocker blocker(sizeListView());
- if (model.at(i).toInt() == size)
- sizeListView()->setCurrentIndex(i);
- else
- sizeListView()->setCurrentIndex(-1);
- }
-
- _q_updateSample();
-}
-
-void QQuickFontDialogImplAttached::_q_sizeChanged()
-{
- const int index = sizeListView()->currentIndex();
-
- if (index < 0) {
- qCWarning(lcAttachedProperty) << "currentIndex changed to -1";
- return;
- }
-
- const QString s = sizeListView()->model().toStringList().at(index);
- m_selectedSize = s.toInt();
-
- sizeEdit()->setText(s);
-
- _q_updateSample();
-}
-
-void QQuickFontDialogImplAttachedPrivate::currentFontChanged(const QFont &font)
-{
-
- auto fontDialogImpl = qobject_cast<QQuickFontDialogImpl *>(parent);
-
- if (!fontDialogImpl) {
- return;
- }
-
- fontDialogImpl->setCurrentFont(font);
-
- if (fontDialogImpl->options()->testOption(QFontDialogOptions::NoButtons))
- emit fontDialogImpl->fontSelected(font);
-}
-
-QT_END_NAMESPACE