QVector<QTextFormat> QTextDocumentProto::allFormats() const { QTextDocument *item = qscriptvalue_cast<QTextDocument*>(thisObject()); if (item) return item->allFormats(); return QVector<QTextFormat>(); }
void tst_QTextFormat::resolveFont() { QTextDocument doc; QTextCharFormat fmt; fmt.setProperty(QTextFormat::ForegroundBrush, QColor(Qt::blue)); QCOMPARE(fmt.property(QTextFormat::ForegroundBrush).userType(), qMetaTypeId<QColor>()); QCOMPARE(fmt.property(QTextFormat::ForegroundBrush).value<QColor>(), QColor(Qt::blue)); fmt.setProperty(QTextFormat::FontItalic, true); QTextCursor(&doc).insertText("Test", fmt); QVector<QTextFormat> formats = doc.allFormats(); QCOMPARE(formats.count(), 3); QVERIFY(formats.at(2).type() == QTextFormat::CharFormat); fmt = formats.at(2).toCharFormat(); QVERIFY(!fmt.font().underline()); QVERIFY(fmt.hasProperty(QTextFormat::ForegroundBrush)); QFont f; f.setUnderline(true); doc.setDefaultFont(f); formats = doc.allFormats(); fmt = formats.at(2).toCharFormat(); QVERIFY(fmt.font().underline()); QVERIFY(!fmt.hasProperty(QTextFormat::FontUnderline)); // verify that deleting a non-existent property does not affect the font resolving QVERIFY(!fmt.hasProperty(QTextFormat::BackgroundBrush)); fmt.clearProperty(QTextFormat::BackgroundBrush); QVERIFY(!fmt.hasProperty(QTextFormat::BackgroundBrush)); QVERIFY(!fmt.hasProperty(QTextFormat::FontUnderline)); QVERIFY(fmt.font().underline()); // verify that deleting an existent but font _unrelated_ property does not affect the font resolving QVERIFY(fmt.hasProperty(QTextFormat::ForegroundBrush)); fmt.clearProperty(QTextFormat::ForegroundBrush); QVERIFY(!fmt.hasProperty(QTextFormat::ForegroundBrush)); QVERIFY(!fmt.hasProperty(QTextFormat::FontUnderline)); QVERIFY(fmt.font().underline()); // verify that removing a font property _does_ clear the resolving QVERIFY(fmt.hasProperty(QTextFormat::FontItalic)); fmt.clearProperty(QTextFormat::FontItalic); QVERIFY(!fmt.hasProperty(QTextFormat::FontItalic)); QVERIFY(!fmt.hasProperty(QTextFormat::FontUnderline)); QVERIFY(!fmt.font().underline()); QVERIFY(!fmt.font().italic()); // reset fmt = formats.at(2).toCharFormat(); QVERIFY(fmt.font().underline()); QVERIFY(!fmt.hasProperty(QTextFormat::FontUnderline)); // verify that _setting_ an unrelated property does _not_ affect the resolving QVERIFY(!fmt.hasProperty(QTextFormat::IsAnchor)); fmt.setProperty(QTextFormat::IsAnchor, true); QVERIFY(fmt.hasProperty(QTextFormat::IsAnchor)); QVERIFY(fmt.font().underline()); QVERIFY(!fmt.hasProperty(QTextFormat::FontUnderline)); // verify that setting a _related_ font property does affect the resolving // QVERIFY(!fmt.hasProperty(QTextFormat::FontStrikeOut)); fmt.setProperty(QTextFormat::FontStrikeOut, true); QVERIFY(fmt.hasProperty(QTextFormat::FontStrikeOut)); QVERIFY(!fmt.font().underline()); QVERIFY(!fmt.hasProperty(QTextFormat::FontUnderline)); QVERIFY(fmt.font().strikeOut()); }