| Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/widgets/widgets/qfontcombobox.cpp |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||||||||||||||
| 2 | - | |||||||||||||||||||||||||
| 3 | - | |||||||||||||||||||||||||
| 4 | - | |||||||||||||||||||||||||
| 5 | - | |||||||||||||||||||||||||
| 6 | - | |||||||||||||||||||||||||
| 7 | static QFontDatabase::WritingSystem writingSystemFromScript(QLocale::Script script) | - | ||||||||||||||||||||||||
| 8 | { | - | ||||||||||||||||||||||||
| 9 | switch (script) { | - | ||||||||||||||||||||||||
| 10 | case never executed: QLocale::ArabicScript:case QLocale::ArabicScript:never executed: case QLocale::ArabicScript: | 0 | ||||||||||||||||||||||||
| 11 | return never executed: QFontDatabase::Arabic;return QFontDatabase::Arabic;never executed: return QFontDatabase::Arabic; | 0 | ||||||||||||||||||||||||
| 12 | case never executed: QLocale::CyrillicScript:case QLocale::CyrillicScript:never executed: case QLocale::CyrillicScript: | 0 | ||||||||||||||||||||||||
| 13 | return never executed: QFontDatabase::Cyrillic;return QFontDatabase::Cyrillic;never executed: return QFontDatabase::Cyrillic; | 0 | ||||||||||||||||||||||||
| 14 | case never executed: QLocale::GurmukhiScript:case QLocale::GurmukhiScript:never executed: case QLocale::GurmukhiScript: | 0 | ||||||||||||||||||||||||
| 15 | return never executed: QFontDatabase::Gurmukhi;return QFontDatabase::Gurmukhi;never executed: return QFontDatabase::Gurmukhi; | 0 | ||||||||||||||||||||||||
| 16 | case never executed: QLocale::SimplifiedHanScript:case QLocale::SimplifiedHanScript:never executed: case QLocale::SimplifiedHanScript: | 0 | ||||||||||||||||||||||||
| 17 | return never executed: QFontDatabase::SimplifiedChinese;return QFontDatabase::SimplifiedChinese;never executed: return QFontDatabase::SimplifiedChinese; | 0 | ||||||||||||||||||||||||
| 18 | case never executed: QLocale::TraditionalHanScript:case QLocale::TraditionalHanScript:never executed: case QLocale::TraditionalHanScript: | 0 | ||||||||||||||||||||||||
| 19 | return never executed: QFontDatabase::TraditionalChinese;return QFontDatabase::TraditionalChinese;never executed: return QFontDatabase::TraditionalChinese; | 0 | ||||||||||||||||||||||||
| 20 | case never executed: QLocale::LatinScript:case QLocale::LatinScript:never executed: case QLocale::LatinScript: | 0 | ||||||||||||||||||||||||
| 21 | return never executed: QFontDatabase::Latin;return QFontDatabase::Latin;never executed: return QFontDatabase::Latin; | 0 | ||||||||||||||||||||||||
| 22 | case never executed: QLocale::ArmenianScript:case QLocale::ArmenianScript:never executed: case QLocale::ArmenianScript: | 0 | ||||||||||||||||||||||||
| 23 | return never executed: QFontDatabase::Armenian;return QFontDatabase::Armenian;never executed: return QFontDatabase::Armenian; | 0 | ||||||||||||||||||||||||
| 24 | case never executed: QLocale::BengaliScript:case QLocale::BengaliScript:never executed: case QLocale::BengaliScript: | 0 | ||||||||||||||||||||||||
| 25 | return never executed: QFontDatabase::Bengali;return QFontDatabase::Bengali;never executed: return QFontDatabase::Bengali; | 0 | ||||||||||||||||||||||||
| 26 | case never executed: QLocale::DevanagariScript:case QLocale::DevanagariScript:never executed: case QLocale::DevanagariScript: | 0 | ||||||||||||||||||||||||
| 27 | return never executed: QFontDatabase::Devanagari;return QFontDatabase::Devanagari;never executed: return QFontDatabase::Devanagari; | 0 | ||||||||||||||||||||||||
| 28 | case never executed: QLocale::GeorgianScript:case QLocale::GeorgianScript:never executed: case QLocale::GeorgianScript: | 0 | ||||||||||||||||||||||||
| 29 | return never executed: QFontDatabase::Georgian;return QFontDatabase::Georgian;never executed: return QFontDatabase::Georgian; | 0 | ||||||||||||||||||||||||
| 30 | case never executed: QLocale::GreekScript:case QLocale::GreekScript:never executed: case QLocale::GreekScript: | 0 | ||||||||||||||||||||||||
| 31 | return never executed: QFontDatabase::Greek;return QFontDatabase::Greek;never executed: return QFontDatabase::Greek; | 0 | ||||||||||||||||||||||||
| 32 | case never executed: QLocale::GujaratiScript:case QLocale::GujaratiScript:never executed: case QLocale::GujaratiScript: | 0 | ||||||||||||||||||||||||
| 33 | return never executed: QFontDatabase::Gujarati;return QFontDatabase::Gujarati;never executed: return QFontDatabase::Gujarati; | 0 | ||||||||||||||||||||||||
| 34 | case never executed: QLocale::HebrewScript:case QLocale::HebrewScript:never executed: case QLocale::HebrewScript: | 0 | ||||||||||||||||||||||||
| 35 | return never executed: QFontDatabase::Hebrew;return QFontDatabase::Hebrew;never executed: return QFontDatabase::Hebrew; | 0 | ||||||||||||||||||||||||
| 36 | case never executed: QLocale::JapaneseScript:case QLocale::JapaneseScript:never executed: case QLocale::JapaneseScript: | 0 | ||||||||||||||||||||||||
| 37 | return never executed: QFontDatabase::Japanese;return QFontDatabase::Japanese;never executed: return QFontDatabase::Japanese; | 0 | ||||||||||||||||||||||||
| 38 | case never executed: QLocale::KhmerScript:case QLocale::KhmerScript:never executed: case QLocale::KhmerScript: | 0 | ||||||||||||||||||||||||
| 39 | return never executed: QFontDatabase::Khmer;return QFontDatabase::Khmer;never executed: return QFontDatabase::Khmer; | 0 | ||||||||||||||||||||||||
| 40 | case never executed: QLocale::KannadaScript:case QLocale::KannadaScript:never executed: case QLocale::KannadaScript: | 0 | ||||||||||||||||||||||||
| 41 | return never executed: QFontDatabase::Kannada;return QFontDatabase::Kannada;never executed: return QFontDatabase::Kannada; | 0 | ||||||||||||||||||||||||
| 42 | case never executed: QLocale::KoreanScript:case QLocale::KoreanScript:never executed: case QLocale::KoreanScript: | 0 | ||||||||||||||||||||||||
| 43 | return never executed: QFontDatabase::Korean;return QFontDatabase::Korean;never executed: return QFontDatabase::Korean; | 0 | ||||||||||||||||||||||||
| 44 | case never executed: QLocale::LaoScript:case QLocale::LaoScript:never executed: case QLocale::LaoScript: | 0 | ||||||||||||||||||||||||
| 45 | return never executed: QFontDatabase::Lao;return QFontDatabase::Lao;never executed: return QFontDatabase::Lao; | 0 | ||||||||||||||||||||||||
| 46 | case never executed: QLocale::MalayalamScript:case QLocale::MalayalamScript:never executed: case QLocale::MalayalamScript: | 0 | ||||||||||||||||||||||||
| 47 | return never executed: QFontDatabase::Malayalam;return QFontDatabase::Malayalam;never executed: return QFontDatabase::Malayalam; | 0 | ||||||||||||||||||||||||
| 48 | case never executed: QLocale::MyanmarScript:case QLocale::MyanmarScript:never executed: case QLocale::MyanmarScript: | 0 | ||||||||||||||||||||||||
| 49 | return never executed: QFontDatabase::Myanmar;return QFontDatabase::Myanmar;never executed: return QFontDatabase::Myanmar; | 0 | ||||||||||||||||||||||||
| 50 | case never executed: QLocale::TamilScript:case QLocale::TamilScript:never executed: case QLocale::TamilScript: | 0 | ||||||||||||||||||||||||
| 51 | return never executed: QFontDatabase::Tamil;return QFontDatabase::Tamil;never executed: return QFontDatabase::Tamil; | 0 | ||||||||||||||||||||||||
| 52 | case never executed: QLocale::TeluguScript:case QLocale::TeluguScript:never executed: case QLocale::TeluguScript: | 0 | ||||||||||||||||||||||||
| 53 | return never executed: QFontDatabase::Telugu;return QFontDatabase::Telugu;never executed: return QFontDatabase::Telugu; | 0 | ||||||||||||||||||||||||
| 54 | case never executed: QLocale::ThaanaScript:case QLocale::ThaanaScript:never executed: case QLocale::ThaanaScript: | 0 | ||||||||||||||||||||||||
| 55 | return never executed: QFontDatabase::Thaana;return QFontDatabase::Thaana;never executed: return QFontDatabase::Thaana; | 0 | ||||||||||||||||||||||||
| 56 | case never executed: QLocale::ThaiScript:case QLocale::ThaiScript:never executed: case QLocale::ThaiScript: | 0 | ||||||||||||||||||||||||
| 57 | return never executed: QFontDatabase::Thai;return QFontDatabase::Thai;never executed: return QFontDatabase::Thai; | 0 | ||||||||||||||||||||||||
| 58 | case never executed: QLocale::TibetanScript:case QLocale::TibetanScript:never executed: case QLocale::TibetanScript: | 0 | ||||||||||||||||||||||||
| 59 | return never executed: QFontDatabase::Tibetan;return QFontDatabase::Tibetan;never executed: return QFontDatabase::Tibetan; | 0 | ||||||||||||||||||||||||
| 60 | case never executed: QLocale::SinhalaScript:case QLocale::SinhalaScript:never executed: case QLocale::SinhalaScript: | 0 | ||||||||||||||||||||||||
| 61 | return never executed: QFontDatabase::Sinhala;return QFontDatabase::Sinhala;never executed: return QFontDatabase::Sinhala; | 0 | ||||||||||||||||||||||||
| 62 | case never executed: QLocale::SyriacScript:case QLocale::SyriacScript:never executed: case QLocale::SyriacScript: | 0 | ||||||||||||||||||||||||
| 63 | return never executed: QFontDatabase::Syriac;return QFontDatabase::Syriac;never executed: return QFontDatabase::Syriac; | 0 | ||||||||||||||||||||||||
| 64 | case never executed: QLocale::OriyaScript:case QLocale::OriyaScript:never executed: case QLocale::OriyaScript: | 0 | ||||||||||||||||||||||||
| 65 | return never executed: QFontDatabase::Oriya;return QFontDatabase::Oriya;never executed: return QFontDatabase::Oriya; | 0 | ||||||||||||||||||||||||
| 66 | case never executed: QLocale::OghamScript:case QLocale::OghamScript:never executed: case QLocale::OghamScript: | 0 | ||||||||||||||||||||||||
| 67 | return never executed: QFontDatabase::Ogham;return QFontDatabase::Ogham;never executed: return QFontDatabase::Ogham; | 0 | ||||||||||||||||||||||||
| 68 | case never executed: QLocale::RunicScript:case QLocale::RunicScript:never executed: case QLocale::RunicScript: | 0 | ||||||||||||||||||||||||
| 69 | return never executed: QFontDatabase::Runic;return QFontDatabase::Runic;never executed: return QFontDatabase::Runic; | 0 | ||||||||||||||||||||||||
| 70 | case never executed: QLocale::NkoScript:case QLocale::NkoScript:never executed: case QLocale::NkoScript: | 0 | ||||||||||||||||||||||||
| 71 | return never executed: QFontDatabase::Nko;return QFontDatabase::Nko;never executed: return QFontDatabase::Nko; | 0 | ||||||||||||||||||||||||
| 72 | default never executed: :default:never executed: default: | 0 | ||||||||||||||||||||||||
| 73 | return never executed: QFontDatabase::Any;return QFontDatabase::Any;never executed: return QFontDatabase::Any; | 0 | ||||||||||||||||||||||||
| 74 | } | - | ||||||||||||||||||||||||
| 75 | } | - | ||||||||||||||||||||||||
| 76 | - | |||||||||||||||||||||||||
| 77 | static QFontDatabase::WritingSystem writingSystemFromLocale() | - | ||||||||||||||||||||||||
| 78 | { | - | ||||||||||||||||||||||||
| 79 | QStringList uiLanguages = QLocale::system().uiLanguages(); | - | ||||||||||||||||||||||||
| 80 | QLocale::Script script; | - | ||||||||||||||||||||||||
| 81 | if (!uiLanguages.isEmpty()
| 0 | ||||||||||||||||||||||||
| 82 | script = QLocale(uiLanguages.at(0)).script(); never executed: script = QLocale(uiLanguages.at(0)).script(); | 0 | ||||||||||||||||||||||||
| 83 | else | - | ||||||||||||||||||||||||
| 84 | script = QLocale::system().script(); never executed: script = QLocale::system().script(); | 0 | ||||||||||||||||||||||||
| 85 | - | |||||||||||||||||||||||||
| 86 | return never executed: writingSystemFromScript(script);return writingSystemFromScript(script);never executed: return writingSystemFromScript(script); | 0 | ||||||||||||||||||||||||
| 87 | } | - | ||||||||||||||||||||||||
| 88 | - | |||||||||||||||||||||||||
| 89 | static QFontDatabase::WritingSystem writingSystemForFont(const QFont &font, bool *hasLatin) | - | ||||||||||||||||||||||||
| 90 | { | - | ||||||||||||||||||||||||
| 91 | QList<QFontDatabase::WritingSystem> writingSystems = QFontDatabase().writingSystems(font.family()); | - | ||||||||||||||||||||||||
| 92 | - | |||||||||||||||||||||||||
| 93 | - | |||||||||||||||||||||||||
| 94 | - | |||||||||||||||||||||||||
| 95 | writingSystems.removeOne(QFontDatabase::Vietnamese); | - | ||||||||||||||||||||||||
| 96 | *hasLatin = writingSystems.removeOne(QFontDatabase::Latin); | - | ||||||||||||||||||||||||
| 97 | - | |||||||||||||||||||||||||
| 98 | if (writingSystems.isEmpty()
| 0 | ||||||||||||||||||||||||
| 99 | return never executed: QFontDatabase::Any;return QFontDatabase::Any;never executed: return QFontDatabase::Any; | 0 | ||||||||||||||||||||||||
| 100 | - | |||||||||||||||||||||||||
| 101 | QFontDatabase::WritingSystem system = writingSystemFromLocale(); | - | ||||||||||||||||||||||||
| 102 | - | |||||||||||||||||||||||||
| 103 | if (writingSystems.contains(system)
| 0 | ||||||||||||||||||||||||
| 104 | return never executed: system;return system;never executed: return system; | 0 | ||||||||||||||||||||||||
| 105 | - | |||||||||||||||||||||||||
| 106 | if (system == QFontDatabase::TraditionalChinese
| 0 | ||||||||||||||||||||||||
| 107 | && writingSystems.contains(QFontDatabase::SimplifiedChinese)
| 0 | ||||||||||||||||||||||||
| 108 | return never executed: QFontDatabase::SimplifiedChinese;return QFontDatabase::SimplifiedChinese;never executed: return QFontDatabase::SimplifiedChinese; | 0 | ||||||||||||||||||||||||
| 109 | } | - | ||||||||||||||||||||||||
| 110 | - | |||||||||||||||||||||||||
| 111 | if (system == QFontDatabase::SimplifiedChinese
| 0 | ||||||||||||||||||||||||
| 112 | && writingSystems.contains(QFontDatabase::TraditionalChinese)
| 0 | ||||||||||||||||||||||||
| 113 | return never executed: QFontDatabase::TraditionalChinese;return QFontDatabase::TraditionalChinese;never executed: return QFontDatabase::TraditionalChinese; | 0 | ||||||||||||||||||||||||
| 114 | } | - | ||||||||||||||||||||||||
| 115 | - | |||||||||||||||||||||||||
| 116 | system = writingSystems.constLast(); | - | ||||||||||||||||||||||||
| 117 | - | |||||||||||||||||||||||||
| 118 | if (!*hasLatin
| 0 | ||||||||||||||||||||||||
| 119 | - | |||||||||||||||||||||||||
| 120 | return never executed: system;return system;never executed: return system; | 0 | ||||||||||||||||||||||||
| 121 | } | - | ||||||||||||||||||||||||
| 122 | - | |||||||||||||||||||||||||
| 123 | if (writingSystems.count() == 1
| 0 | ||||||||||||||||||||||||
| 124 | return never executed: system;return system;never executed: return system; | 0 | ||||||||||||||||||||||||
| 125 | - | |||||||||||||||||||||||||
| 126 | if (writingSystems.count() <= 2
| 0 | ||||||||||||||||||||||||
| 127 | return never executed: system;return system;never executed: return system; | 0 | ||||||||||||||||||||||||
| 128 | - | |||||||||||||||||||||||||
| 129 | if (writingSystems.count() <= 5
| 0 | ||||||||||||||||||||||||
| 130 | return never executed: system;return system;never executed: return system; | 0 | ||||||||||||||||||||||||
| 131 | - | |||||||||||||||||||||||||
| 132 | return never executed: QFontDatabase::Any;return QFontDatabase::Any;never executed: return QFontDatabase::Any; | 0 | ||||||||||||||||||||||||
| 133 | } | - | ||||||||||||||||||||||||
| 134 | - | |||||||||||||||||||||||||
| 135 | class QFontFamilyDelegate : public QAbstractItemDelegate | - | ||||||||||||||||||||||||
| 136 | { | - | ||||||||||||||||||||||||
| 137 | public: template <typename ThisObject> inline void qt_check_for_QOBJECT_macro(const ThisObject &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i + 1; } | - | ||||||||||||||||||||||||
| 138 | #pragma GCC diagnostic push | - | ||||||||||||||||||||||||
| 139 | static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); virtual int qt_metacall(QMetaObject::Call, int, void **); static inline QString tr(const char *s, const char *c = nullptr, int n = -1) { return staticMetaObject.tr(s, c, n); } __attribute__ ((__deprecated__)) static inline QString trUtf8(const char *s, const char *c = nullptr, int n = -1) { return staticMetaObject.tr(s, c, n); } private: __attribute__((visibility("hidden"))) static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **); | - | ||||||||||||||||||||||||
| 140 | #pragma GCC diagnostic pop | - | ||||||||||||||||||||||||
| 141 | struct QPrivateSignal {}; | - | ||||||||||||||||||||||||
| 142 | public: | - | ||||||||||||||||||||||||
| 143 | explicit QFontFamilyDelegate(QObject *parent); | - | ||||||||||||||||||||||||
| 144 | - | |||||||||||||||||||||||||
| 145 | - | |||||||||||||||||||||||||
| 146 | void paint(QPainter *painter, | - | ||||||||||||||||||||||||
| 147 | const QStyleOptionViewItem &option, | - | ||||||||||||||||||||||||
| 148 | const QModelIndex &index) const override; | - | ||||||||||||||||||||||||
| 149 | - | |||||||||||||||||||||||||
| 150 | QSize sizeHint(const QStyleOptionViewItem &option, | - | ||||||||||||||||||||||||
| 151 | const QModelIndex &index) const override; | - | ||||||||||||||||||||||||
| 152 | - | |||||||||||||||||||||||||
| 153 | const QIcon truetype; | - | ||||||||||||||||||||||||
| 154 | const QIcon bitmap; | - | ||||||||||||||||||||||||
| 155 | QFontDatabase::WritingSystem writingSystem; | - | ||||||||||||||||||||||||
| 156 | }; | - | ||||||||||||||||||||||||
| 157 | - | |||||||||||||||||||||||||
| 158 | QFontFamilyDelegate::QFontFamilyDelegate(QObject *parent) | - | ||||||||||||||||||||||||
| 159 | : QAbstractItemDelegate(parent), | - | ||||||||||||||||||||||||
| 160 | truetype(([]() -> QString { enum { Size = sizeof(u"" ":/qt-project.org/styles/commonstyle/images/fonttruetype-16.png")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" ":/qt-project.org/styles/commonstyle/images/fonttruetype-16.png" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }())), | - | ||||||||||||||||||||||||
| 161 | bitmap(([]() -> QString { enum { Size = sizeof(u"" ":/qt-project.org/styles/commonstyle/images/fontbitmap-16.png")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" ":/qt-project.org/styles/commonstyle/images/fontbitmap-16.png" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return qstring_literal_temp; }())), | - | ||||||||||||||||||||||||
| 162 | writingSystem(QFontDatabase::Any) | - | ||||||||||||||||||||||||
| 163 | { | - | ||||||||||||||||||||||||
| 164 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 165 | - | |||||||||||||||||||||||||
| 166 | void QFontFamilyDelegate::paint(QPainter *painter, | - | ||||||||||||||||||||||||
| 167 | const QStyleOptionViewItem &option, | - | ||||||||||||||||||||||||
| 168 | const QModelIndex &index) const | - | ||||||||||||||||||||||||
| 169 | { | - | ||||||||||||||||||||||||
| 170 | QString text = index.data(Qt::DisplayRole).toString(); | - | ||||||||||||||||||||||||
| 171 | QFont font(option.font); | - | ||||||||||||||||||||||||
| 172 | font.setPointSize(QFontInfo(font).pointSize() * 3 / 2); | - | ||||||||||||||||||||||||
| 173 | QFont font2 = font; | - | ||||||||||||||||||||||||
| 174 | font2.setFamily(text); | - | ||||||||||||||||||||||||
| 175 | - | |||||||||||||||||||||||||
| 176 | bool hasLatin; | - | ||||||||||||||||||||||||
| 177 | QFontDatabase::WritingSystem system = writingSystemForFont(font2, &hasLatin); | - | ||||||||||||||||||||||||
| 178 | if (hasLatin
| 0 | ||||||||||||||||||||||||
| 179 | font = font2; never executed: font = font2; | 0 | ||||||||||||||||||||||||
| 180 | - | |||||||||||||||||||||||||
| 181 | QRect r = option.rect; | - | ||||||||||||||||||||||||
| 182 | - | |||||||||||||||||||||||||
| 183 | if (option.state & QStyle::State_Selected
| 0 | ||||||||||||||||||||||||
| 184 | painter->save(); | - | ||||||||||||||||||||||||
| 185 | painter->setBrush(option.palette.highlight()); | - | ||||||||||||||||||||||||
| 186 | painter->setPen(Qt::NoPen); | - | ||||||||||||||||||||||||
| 187 | painter->drawRect(option.rect); | - | ||||||||||||||||||||||||
| 188 | painter->setPen(QPen(option.palette.highlightedText(), 0)); | - | ||||||||||||||||||||||||
| 189 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 190 | - | |||||||||||||||||||||||||
| 191 | const QIcon *icon = &bitmap; | - | ||||||||||||||||||||||||
| 192 | if (QFontDatabase().isSmoothlyScalable(text)
| 0 | ||||||||||||||||||||||||
| 193 | icon = &truetype; | - | ||||||||||||||||||||||||
| 194 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 195 | QSize actualSize = icon->actualSize(r.size()); | - | ||||||||||||||||||||||||
| 196 | - | |||||||||||||||||||||||||
| 197 | icon->paint(painter, r, Qt::AlignLeft|Qt::AlignVCenter); | - | ||||||||||||||||||||||||
| 198 | if (option.direction == Qt::RightToLeft
| 0 | ||||||||||||||||||||||||
| 199 | r.setRight(r.right() - actualSize.width() - 4); never executed: r.setRight(r.right() - actualSize.width() - 4); | 0 | ||||||||||||||||||||||||
| 200 | else | - | ||||||||||||||||||||||||
| 201 | r.setLeft(r.left() + actualSize.width() + 4); never executed: r.setLeft(r.left() + actualSize.width() + 4); | 0 | ||||||||||||||||||||||||
| 202 | - | |||||||||||||||||||||||||
| 203 | QFont old = painter->font(); | - | ||||||||||||||||||||||||
| 204 | painter->setFont(font); | - | ||||||||||||||||||||||||
| 205 | - | |||||||||||||||||||||||||
| 206 | - | |||||||||||||||||||||||||
| 207 | - | |||||||||||||||||||||||||
| 208 | - | |||||||||||||||||||||||||
| 209 | - | |||||||||||||||||||||||||
| 210 | QFontMetricsF fontMetrics(font); | - | ||||||||||||||||||||||||
| 211 | if (fontMetrics.ascent() > r.height()
| 0 | ||||||||||||||||||||||||
| 212 | QRectF tbr = fontMetrics.tightBoundingRect(text); | - | ||||||||||||||||||||||||
| 213 | painter->drawText(r.x(), r.y() + (r.height() + tbr.height()) / 2.0, text); | - | ||||||||||||||||||||||||
| 214 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
| 215 | painter->drawText(r, Qt::AlignVCenter|Qt::AlignLeading|Qt::TextSingleLine, text); | - | ||||||||||||||||||||||||
| 216 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 217 | - | |||||||||||||||||||||||||
| 218 | if (writingSystem != QFontDatabase::Any
| 0 | ||||||||||||||||||||||||
| 219 | system = writingSystem; never executed: system = writingSystem; | 0 | ||||||||||||||||||||||||
| 220 | - | |||||||||||||||||||||||||
| 221 | if (system != QFontDatabase::Any
| 0 | ||||||||||||||||||||||||
| 222 | int w = painter->fontMetrics().width(text + QLatin1String(" ")); | - | ||||||||||||||||||||||||
| 223 | painter->setFont(font2); | - | ||||||||||||||||||||||||
| 224 | QString sample = QFontDatabase().writingSystemSample(system); | - | ||||||||||||||||||||||||
| 225 | if (option.direction == Qt::RightToLeft
| 0 | ||||||||||||||||||||||||
| 226 | r.setRight(r.right() - w); never executed: r.setRight(r.right() - w); | 0 | ||||||||||||||||||||||||
| 227 | else | - | ||||||||||||||||||||||||
| 228 | r.setLeft(r.left() + w); never executed: r.setLeft(r.left() + w); | 0 | ||||||||||||||||||||||||
| 229 | painter->drawText(r, Qt::AlignVCenter|Qt::AlignLeading|Qt::TextSingleLine, sample); | - | ||||||||||||||||||||||||
| 230 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 231 | painter->setFont(old); | - | ||||||||||||||||||||||||
| 232 | - | |||||||||||||||||||||||||
| 233 | if (option.state & QStyle::State_Selected
| 0 | ||||||||||||||||||||||||
| 234 | painter->restore(); never executed: painter->restore(); | 0 | ||||||||||||||||||||||||
| 235 | - | |||||||||||||||||||||||||
| 236 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 237 | - | |||||||||||||||||||||||||
| 238 | QSize QFontFamilyDelegate::sizeHint(const QStyleOptionViewItem &option, | - | ||||||||||||||||||||||||
| 239 | const QModelIndex &index) const | - | ||||||||||||||||||||||||
| 240 | { | - | ||||||||||||||||||||||||
| 241 | QString text = index.data(Qt::DisplayRole).toString(); | - | ||||||||||||||||||||||||
| 242 | QFont font(option.font); | - | ||||||||||||||||||||||||
| 243 | - | |||||||||||||||||||||||||
| 244 | font.setPointSize(QFontInfo(font).pointSize() * 3/2); | - | ||||||||||||||||||||||||
| 245 | QFontMetrics fontMetrics(font); | - | ||||||||||||||||||||||||
| 246 | return never executed: QSize(fontMetrics.width(text), fontMetrics.height());return QSize(fontMetrics.width(text), fontMetrics.height());never executed: return QSize(fontMetrics.width(text), fontMetrics.height()); | 0 | ||||||||||||||||||||||||
| 247 | } | - | ||||||||||||||||||||||||
| 248 | - | |||||||||||||||||||||||||
| 249 | - | |||||||||||||||||||||||||
| 250 | class QFontComboBoxPrivate : public QComboBoxPrivate | - | ||||||||||||||||||||||||
| 251 | { | - | ||||||||||||||||||||||||
| 252 | public: | - | ||||||||||||||||||||||||
| 253 | inline QFontComboBoxPrivate() { filters = QFontComboBox::AllFonts; } never executed: end of block | 0 | ||||||||||||||||||||||||
| 254 | - | |||||||||||||||||||||||||
| 255 | QFontComboBox::FontFilters filters; | - | ||||||||||||||||||||||||
| 256 | QFont currentFont; | - | ||||||||||||||||||||||||
| 257 | - | |||||||||||||||||||||||||
| 258 | void _q_updateModel(); | - | ||||||||||||||||||||||||
| 259 | void _q_currentChanged(const QString &); | - | ||||||||||||||||||||||||
| 260 | - | |||||||||||||||||||||||||
| 261 | inline QFontComboBox* q_func() { return static_cast<QFontComboBox *>(q_ptr); } inline const QFontComboBox* q_func() const { return static_cast<const QFontComboBox *>(q_ptr); } friend class QFontComboBox; | - | ||||||||||||||||||||||||
| 262 | }; | - | ||||||||||||||||||||||||
| 263 | - | |||||||||||||||||||||||||
| 264 | - | |||||||||||||||||||||||||
| 265 | void QFontComboBoxPrivate::_q_updateModel() | - | ||||||||||||||||||||||||
| 266 | { | - | ||||||||||||||||||||||||
| 267 | QFontComboBox * const q = q_func(); | - | ||||||||||||||||||||||||
| 268 | const int scalableMask = (QFontComboBox::ScalableFonts | QFontComboBox::NonScalableFonts); | - | ||||||||||||||||||||||||
| 269 | const int spacingMask = (QFontComboBox::ProportionalFonts | QFontComboBox::MonospacedFonts); | - | ||||||||||||||||||||||||
| 270 | - | |||||||||||||||||||||||||
| 271 | QStringListModel *m = qobject_cast<QStringListModel *>(q->model()); | - | ||||||||||||||||||||||||
| 272 | if (!m
| 0 | ||||||||||||||||||||||||
| 273 | return; never executed: return; | 0 | ||||||||||||||||||||||||
| 274 | QFontFamilyDelegate *delegate = qobject_cast<QFontFamilyDelegate *>(q->view()->itemDelegate()); | - | ||||||||||||||||||||||||
| 275 | QFontDatabase::WritingSystem system = delegate
| 0 | ||||||||||||||||||||||||
| 276 | - | |||||||||||||||||||||||||
| 277 | QFontDatabase fdb; | - | ||||||||||||||||||||||||
| 278 | QStringList list = fdb.families(system); | - | ||||||||||||||||||||||||
| 279 | QStringList result; | - | ||||||||||||||||||||||||
| 280 | - | |||||||||||||||||||||||||
| 281 | int offset = 0; | - | ||||||||||||||||||||||||
| 282 | QFontInfo fi(currentFont); | - | ||||||||||||||||||||||||
| 283 | - | |||||||||||||||||||||||||
| 284 | for (int i = 0; i < list.size()
| 0 | ||||||||||||||||||||||||
| 285 | if (fdb.isPrivateFamily(list.at(i))
| 0 | ||||||||||||||||||||||||
| 286 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
| 287 | - | |||||||||||||||||||||||||
| 288 | if ((
| 0 | ||||||||||||||||||||||||
| 289 | if (bool(filters & QFontComboBox::ScalableFonts) != fdb.isSmoothlyScalable(list.at(i))
| 0 | ||||||||||||||||||||||||
| 290 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
| 291 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 292 | if ((
| 0 | ||||||||||||||||||||||||
| 293 | if (bool(filters & QFontComboBox::MonospacedFonts) != fdb.isFixedPitch(list.at(i))
| 0 | ||||||||||||||||||||||||
| 294 | continue; never executed: continue; | 0 | ||||||||||||||||||||||||
| 295 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 296 | result += list.at(i); | - | ||||||||||||||||||||||||
| 297 | if (list.at(i) == fi.family()
| 0 | ||||||||||||||||||||||||
| 298 | offset = result.count() - 1; never executed: offset = result.count() - 1; | 0 | ||||||||||||||||||||||||
| 299 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 300 | list = result; | - | ||||||||||||||||||||||||
| 301 | - | |||||||||||||||||||||||||
| 302 | - | |||||||||||||||||||||||||
| 303 | - | |||||||||||||||||||||||||
| 304 | - | |||||||||||||||||||||||||
| 305 | - | |||||||||||||||||||||||||
| 306 | { | - | ||||||||||||||||||||||||
| 307 | const QSignalBlocker blocker(m); | - | ||||||||||||||||||||||||
| 308 | m->setStringList(list); | - | ||||||||||||||||||||||||
| 309 | } | - | ||||||||||||||||||||||||
| 310 | - | |||||||||||||||||||||||||
| 311 | if (list.isEmpty()
| 0 | ||||||||||||||||||||||||
| 312 | if (currentFont != QFont()
| 0 | ||||||||||||||||||||||||
| 313 | currentFont = QFont(); | - | ||||||||||||||||||||||||
| 314 | q->currentFontChanged(currentFont); | - | ||||||||||||||||||||||||
| 315 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 316 | } never executed: else {end of block | 0 | ||||||||||||||||||||||||
| 317 | q->setCurrentIndex(offset); | - | ||||||||||||||||||||||||
| 318 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 319 | } | - | ||||||||||||||||||||||||
| 320 | - | |||||||||||||||||||||||||
| 321 | - | |||||||||||||||||||||||||
| 322 | void QFontComboBoxPrivate::_q_currentChanged(const QString &text) | - | ||||||||||||||||||||||||
| 323 | { | - | ||||||||||||||||||||||||
| 324 | QFontComboBox * const q = q_func(); | - | ||||||||||||||||||||||||
| 325 | if (currentFont.family() != text
| 0 | ||||||||||||||||||||||||
| 326 | currentFont.setFamily(text); | - | ||||||||||||||||||||||||
| 327 | q->currentFontChanged(currentFont); | - | ||||||||||||||||||||||||
| 328 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 329 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 330 | QFontComboBox::QFontComboBox(QWidget *parent) | - | ||||||||||||||||||||||||
| 331 | : QComboBox(*new QFontComboBoxPrivate, parent) | - | ||||||||||||||||||||||||
| 332 | { | - | ||||||||||||||||||||||||
| 333 | QFontComboBoxPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 334 | d->currentFont = font(); | - | ||||||||||||||||||||||||
| 335 | setEditable(true); | - | ||||||||||||||||||||||||
| 336 | - | |||||||||||||||||||||||||
| 337 | QStringListModel *m = new QStringListModel(this); | - | ||||||||||||||||||||||||
| 338 | setModel(m); | - | ||||||||||||||||||||||||
| 339 | setItemDelegate(new QFontFamilyDelegate(this)); | - | ||||||||||||||||||||||||
| 340 | QListView *lview = qobject_cast<QListView*>(view()); | - | ||||||||||||||||||||||||
| 341 | if (lview
| 0 | ||||||||||||||||||||||||
| 342 | lview->setUniformItemSizes(true); never executed: lview->setUniformItemSizes(true); | 0 | ||||||||||||||||||||||||
| 343 | setWritingSystem(QFontDatabase::Any); | - | ||||||||||||||||||||||||
| 344 | - | |||||||||||||||||||||||||
| 345 | connect(this, qFlagLocation("2""currentIndexChanged(QString)" "\0" __FILE__ ":" "427"), | - | ||||||||||||||||||||||||
| 346 | this, qFlagLocation("1""_q_currentChanged(QString)" "\0" __FILE__ ":" "428")); | - | ||||||||||||||||||||||||
| 347 | - | |||||||||||||||||||||||||
| 348 | connect((static_cast<QApplication *>(QCoreApplication::instance())), qFlagLocation("2""fontDatabaseChanged()" "\0" __FILE__ ":" "430"), | - | ||||||||||||||||||||||||
| 349 | this, qFlagLocation("1""_q_updateModel()" "\0" __FILE__ ":" "431")); | - | ||||||||||||||||||||||||
| 350 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 351 | - | |||||||||||||||||||||||||
| 352 | - | |||||||||||||||||||||||||
| 353 | - | |||||||||||||||||||||||||
| 354 | - | |||||||||||||||||||||||||
| 355 | - | |||||||||||||||||||||||||
| 356 | QFontComboBox::~QFontComboBox() | - | ||||||||||||||||||||||||
| 357 | { | - | ||||||||||||||||||||||||
| 358 | } | - | ||||||||||||||||||||||||
| 359 | void QFontComboBox::setWritingSystem(QFontDatabase::WritingSystem script) | - | ||||||||||||||||||||||||
| 360 | { | - | ||||||||||||||||||||||||
| 361 | QFontComboBoxPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 362 | QFontFamilyDelegate *delegate = qobject_cast<QFontFamilyDelegate *>(view()->itemDelegate()); | - | ||||||||||||||||||||||||
| 363 | if (delegate
| 0 | ||||||||||||||||||||||||
| 364 | delegate-> never executed: writingSystem = script;delegate->writingSystem = script;never executed: delegate->writingSystem = script; | 0 | ||||||||||||||||||||||||
| 365 | d->_q_updateModel(); | - | ||||||||||||||||||||||||
| 366 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 367 | - | |||||||||||||||||||||||||
| 368 | QFontDatabase::WritingSystem QFontComboBox::writingSystem() const | - | ||||||||||||||||||||||||
| 369 | { | - | ||||||||||||||||||||||||
| 370 | QFontFamilyDelegate *delegate = qobject_cast<QFontFamilyDelegate *>(view()->itemDelegate()); | - | ||||||||||||||||||||||||
| 371 | if (delegate
| 0 | ||||||||||||||||||||||||
| 372 | return never executed: delegate->writingSystem;return delegate->writingSystem;never executed: return delegate->writingSystem; | 0 | ||||||||||||||||||||||||
| 373 | return never executed: QFontDatabase::Any;return QFontDatabase::Any;never executed: return QFontDatabase::Any; | 0 | ||||||||||||||||||||||||
| 374 | } | - | ||||||||||||||||||||||||
| 375 | void QFontComboBox::setFontFilters(FontFilters filters) | - | ||||||||||||||||||||||||
| 376 | { | - | ||||||||||||||||||||||||
| 377 | QFontComboBoxPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 378 | d->filters = filters; | - | ||||||||||||||||||||||||
| 379 | d->_q_updateModel(); | - | ||||||||||||||||||||||||
| 380 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 381 | - | |||||||||||||||||||||||||
| 382 | QFontComboBox::FontFilters QFontComboBox::fontFilters() const | - | ||||||||||||||||||||||||
| 383 | { | - | ||||||||||||||||||||||||
| 384 | const QFontComboBoxPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 385 | return never executed: d->filters;return d->filters;never executed: return d->filters; | 0 | ||||||||||||||||||||||||
| 386 | } | - | ||||||||||||||||||||||||
| 387 | - | |||||||||||||||||||||||||
| 388 | - | |||||||||||||||||||||||||
| 389 | - | |||||||||||||||||||||||||
| 390 | - | |||||||||||||||||||||||||
| 391 | - | |||||||||||||||||||||||||
| 392 | - | |||||||||||||||||||||||||
| 393 | - | |||||||||||||||||||||||||
| 394 | QFont QFontComboBox::currentFont() const | - | ||||||||||||||||||||||||
| 395 | { | - | ||||||||||||||||||||||||
| 396 | const QFontComboBoxPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 397 | return never executed: d->currentFont;return d->currentFont;never executed: return d->currentFont; | 0 | ||||||||||||||||||||||||
| 398 | } | - | ||||||||||||||||||||||||
| 399 | - | |||||||||||||||||||||||||
| 400 | void QFontComboBox::setCurrentFont(const QFont &font) | - | ||||||||||||||||||||||||
| 401 | { | - | ||||||||||||||||||||||||
| 402 | QFontComboBoxPrivate * const d = d_func(); | - | ||||||||||||||||||||||||
| 403 | if (font != d->currentFont
| 0 | ||||||||||||||||||||||||
| 404 | d->currentFont = font; | - | ||||||||||||||||||||||||
| 405 | d->_q_updateModel(); | - | ||||||||||||||||||||||||
| 406 | if (d->currentFont == font
| 0 | ||||||||||||||||||||||||
| 407 | currentFontChanged(d->currentFont); | - | ||||||||||||||||||||||||
| 408 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 409 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 410 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 411 | bool QFontComboBox::event(QEvent *e) | - | ||||||||||||||||||||||||
| 412 | { | - | ||||||||||||||||||||||||
| 413 | if (e->type() == QEvent::Resize
| 0 | ||||||||||||||||||||||||
| 414 | QListView *lview = qobject_cast<QListView*>(view()); | - | ||||||||||||||||||||||||
| 415 | if (lview
| 0 | ||||||||||||||||||||||||
| 416 | lview->window()->setFixedWidth(qMin(width() * 5 / 3, | - | ||||||||||||||||||||||||
| 417 | QApplication::desktop()->availableGeometry(lview).width())); | - | ||||||||||||||||||||||||
| 418 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 419 | } never executed: end of block | 0 | ||||||||||||||||||||||||
| 420 | return never executed: QComboBox::event(e);return QComboBox::event(e);never executed: return QComboBox::event(e); | 0 | ||||||||||||||||||||||||
| 421 | } | - | ||||||||||||||||||||||||
| 422 | - | |||||||||||||||||||||||||
| 423 | - | |||||||||||||||||||||||||
| 424 | - | |||||||||||||||||||||||||
| 425 | - | |||||||||||||||||||||||||
| 426 | QSize QFontComboBox::sizeHint() const | - | ||||||||||||||||||||||||
| 427 | { | - | ||||||||||||||||||||||||
| 428 | QSize sz = QComboBox::sizeHint(); | - | ||||||||||||||||||||||||
| 429 | QFontMetrics fm(font()); | - | ||||||||||||||||||||||||
| 430 | sz.setWidth(fm.width(QLatin1Char('m'))*14); | - | ||||||||||||||||||||||||
| 431 | return never executed: sz;return sz;never executed: return sz; | 0 | ||||||||||||||||||||||||
| 432 | } | - | ||||||||||||||||||||||||
| 433 | - | |||||||||||||||||||||||||
| 434 | - | |||||||||||||||||||||||||
| 435 | - | |||||||||||||||||||||||||
| Switch to Source code | Preprocessed file |