// public QFontDatabase::WritingSystem writingSystem() const void tst_QFontComboBox::writingSystem() { QFETCH(QFontDatabase::WritingSystem, writingSystem); SubQFontComboBox box; QSignalSpy spy0(&box, SIGNAL(currentFontChanged(QFont))); QFont currentFont = box.currentFont(); box.setWritingSystem(writingSystem); QCOMPARE(box.writingSystem(), writingSystem); QFontDatabase db; QStringList list = db.families(writingSystem); int c = list.count(); for (int i = 0; i < list.count(); ++i) { if (db.isPrivateFamily(list[i])) c--; } QCOMPARE(box.model()->rowCount(), c); if (list.count() == 0) QCOMPARE(box.currentFont(), QFont()); QCOMPARE(spy0.count(), (currentFont != box.currentFont()) ? 1 : 0); }
// public QFontComboBox::FontFilters fontFilters() const void tst_QFontComboBox::fontFilters() { QFETCH(QFontComboBox::FontFilters, fontFilters); SubQFontComboBox box; QSignalSpy spy0(&box, SIGNAL(currentFontChanged(QFont))); QFont currentFont = box.currentFont(); box.setFontFilters(fontFilters); QCOMPARE(box.fontFilters(), fontFilters); QFontDatabase db; QStringList list = db.families(); int c = 0; const int scalableMask = (QFontComboBox::ScalableFonts | QFontComboBox::NonScalableFonts); const int spacingMask = (QFontComboBox::ProportionalFonts | QFontComboBox::MonospacedFonts); if((fontFilters & scalableMask) == scalableMask) fontFilters &= ~scalableMask; if((fontFilters & spacingMask) == spacingMask) fontFilters &= ~spacingMask; for (int i = 0; i < list.count(); ++i) { if (db.isPrivateFamily(list[i])) continue; if (fontFilters & QFontComboBox::ScalableFonts) { if (!db.isSmoothlyScalable(list[i])) continue; } else if (fontFilters & QFontComboBox::NonScalableFonts) { if (db.isSmoothlyScalable(list[i])) continue; } if (fontFilters & QFontComboBox::MonospacedFonts) { if (!db.isFixedPitch(list[i])) continue; } else if (fontFilters & QFontComboBox::ProportionalFonts) { if (db.isFixedPitch(list[i])) continue; } c++; } QCOMPARE(box.model()->rowCount(), c); if (c == 0) QCOMPARE(box.currentFont(), QFont()); QCOMPARE(spy0.count(), (currentFont != box.currentFont()) ? 1 : 0); }
// public QFontDatabase::WritingSystem writingSystem() const void tst_QFontComboBox::writingSystem() { QFETCH(QFontDatabase::WritingSystem, writingSystem); SubQFontComboBox box; QSignalSpy spy0(&box, SIGNAL(currentFontChanged(QFont const&))); QFont currentFont = box.currentFont(); box.setWritingSystem(writingSystem); QCOMPARE(box.writingSystem(), writingSystem); QFontDatabase db; QStringList list = db.families(writingSystem); QCOMPARE(box.model()->rowCount(), list.count()); if (list.count() == 0) QCOMPARE(box.currentFont(), QFont()); QCOMPARE(spy0.count(), (currentFont != box.currentFont()) ? 1 : 0); }
// public QFont currentFont() const void tst_QFontComboBox::currentFont() { QFETCH(QFont, currentFont); SubQFontComboBox box; QSignalSpy spy0(&box, SIGNAL(currentFontChanged(QFont const&))); QFont oldCurrentFont = box.currentFont(); box.setCurrentFont(currentFont); QString boxFontFamily = QFontInfo(box.currentFont()).family(); QRegExp foundry(" \\[.*\\]"); if (!currentFont.family().contains(foundry)) boxFontFamily.remove(foundry); QCOMPARE(boxFontFamily, currentFont.family()); if (oldCurrentFont != box.currentFont()) { //the signal may be emit twice if there is a foundry into brackets QVERIFY(spy0.count() >= 1); } }
void tst_QFontComboBox::qfontcombobox() { SubQFontComboBox box; QCOMPARE(box.currentFont(), QFont()); QCOMPARE(box.fontFilters(), QFontComboBox::AllFonts); box.setCurrentFont(QFont()); box.setFontFilters(QFontComboBox::AllFonts); box.setWritingSystem(QFontDatabase::Any); QVERIFY(box.sizeHint() != QSize()); QCOMPARE(box.writingSystem(), QFontDatabase::Any); box.call_currentFontChanged(QFont()); QEvent event(QEvent::None); QCOMPARE(box.call_event(&event), false); }