From c87566bf9eb8e699aa1400876c1e314ff62f59fe Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Thu, 7 Aug 2014 17:07:35 +0200 Subject: Introduce QFontDatabase::isPrivateFamily() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some platforms have the concept of private fonts (e.g., OS X and iOS) which are generally used as system UI fonts. Since 909d3f5c7, the platform font database has a similar but private API. [ChangeLog][QtGui][Fonts] Added QFontDatabase::isPrivateFamily() Change-Id: Ibdce9de534fadbbc3965be8a942c8012edeed209 Reviewed-by: Konstantin Ritt Reviewed-by: Tor Arne Vestbø --- src/gui/text/qfontdatabase.cpp | 18 ++++++++++++++++++ src/gui/text/qfontdatabase.h | 1 + src/widgets/dialogs/qfontdialog.cpp | 8 ++------ src/widgets/widgets/qfontcombobox.cpp | 8 +------- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index 16b0b8d76d..5a4fe2a61b 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -1935,6 +1935,24 @@ bool QFontDatabase::hasFamily(const QString &family) const } +/*! + \since 5.5 + + Returns \c true if and only if the \a family font family is private. + + This happens, for instance, on OS X and iOS, where the system UI fonts are not + accessible to the user. For completeness, QFontDatabase::families() returns all + font families, including the private ones. You should use this function if you + are developing a font selection control in order to keep private fonts hidden. + + \sa families() +*/ +bool QFontDatabase::isPrivateFamily(const QString &family) const +{ + return QGuiApplicationPrivate::platformIntegration()->fontDatabase()->isPrivateFontFamily(family); +} + + /*! Returns the names the \a writingSystem (e.g. for displaying to the user in a dialog). diff --git a/src/gui/text/qfontdatabase.h b/src/gui/text/qfontdatabase.h index 5688ce6b7a..4e1ab501ba 100644 --- a/src/gui/text/qfontdatabase.h +++ b/src/gui/text/qfontdatabase.h @@ -132,6 +132,7 @@ public: int weight(const QString &family, const QString &style) const; bool hasFamily(const QString &family) const; + bool isPrivateFamily(const QString &family) const; static QString writingSystemName(WritingSystem writingSystem); static QString writingSystemSample(WritingSystem writingSystem); diff --git a/src/widgets/dialogs/qfontdialog.cpp b/src/widgets/dialogs/qfontdialog.cpp index 5294e78bfe..a71e141890 100644 --- a/src/widgets/dialogs/qfontdialog.cpp +++ b/src/widgets/dialogs/qfontdialog.cpp @@ -57,10 +57,6 @@ #include #include -#include -#include -#include - QT_BEGIN_NAMESPACE class QFontListView : public QListView @@ -482,11 +478,11 @@ void QFontDialogPrivate::updateFamilies() const QFontDialog::FontDialogOptions spacingMask = (QFontDialog::ProportionalFonts | QFontDialog::MonospacedFonts); const QFontDialog::FontDialogOptions options = q->options(); - QPlatformFontDatabase *pfdb = QGuiApplicationPrivate::platformIntegration()->fontDatabase(); + QFontDatabase fdb; QStringList familyNames; foreach (const QString &family, fdb.families(writingSystem)) { - if (pfdb->isPrivateFontFamily(family)) + if (fdb.isPrivateFamily(family)) continue; if ((options & scalableMask) && (options & scalableMask) != scalableMask) { diff --git a/src/widgets/widgets/qfontcombobox.cpp b/src/widgets/widgets/qfontcombobox.cpp index b040d9ba0d..2247608956 100644 --- a/src/widgets/widgets/qfontcombobox.cpp +++ b/src/widgets/widgets/qfontcombobox.cpp @@ -45,10 +45,6 @@ #include #include -#include -#include -#include - QT_BEGIN_NAMESPACE static QFontDatabase::WritingSystem writingSystemFromScript(QLocale::Script script) @@ -324,10 +320,8 @@ void QFontComboBoxPrivate::_q_updateModel() int offset = 0; QFontInfo fi(currentFont); - QPlatformFontDatabase *pfdb = QGuiApplicationPrivate::platformIntegration()->fontDatabase(); - for (int i = 0; i < list.size(); ++i) { - if (pfdb->isPrivateFontFamily(list.at(i))) + if (fdb.isPrivateFamily(list.at(i))) continue; if ((filters & scalableMask) && (filters & scalableMask) != scalableMask) { -- cgit v1.2.3