void TestDocumentLayout::testInvalidateLists() { initForNewTest("Base\nListItem1\nListItem2"); //KoParagraphStyle style; KoListStyle listStyle; KoListLevelProperties llp; llp.setStyle(KoListStyle::DecimalItem); listStyle.setLevelProperties(llp); //style.setListStyle(&listStyle); QTextBlock block = m_doc->begin().next(); QVERIFY(block.isValid()); listStyle.applyStyle(block); block = block.next(); QVERIFY(block.isValid()); listStyle.applyStyle(block); m_layout->layout(); // check the list items were done (semi) properly block = m_doc->begin().next(); QVERIFY(block.textList()); KoTextBlockData *data = dynamic_cast<KoTextBlockData *>(block.userData()); QVERIFY(data); QVERIFY(data->hasCounterData()); QTextCursor cursor(m_doc); cursor.setPosition(10); // list item1 cursor.insertText("x"); QCOMPARE(data->hasCounterData(), true); // nothing changed cursor.setPosition(22); // list item2 cursor.insertText("x"); QCOMPARE(data->hasCounterData(), true); // nothing changed cursor.deleteChar(); QCOMPARE(data->hasCounterData(), true); // nothing changed cursor.setPosition(25); // end of doc cursor.insertBlock(); block = cursor.block(); QVERIFY(block.textList()); QVERIFY(block.userData() == 0); QCOMPARE(data->hasCounterData(), false); // inserting a new block on this list made the list be invalidated }
// static bool ListItemsHelper::needsRecalc(QTextList *textList) { Q_ASSERT(textList); QTextBlock tb = textList->item(0); KoTextBlockData *data = dynamic_cast<KoTextBlockData*>(tb.userData()); if (data == 0) return true; return !data->hasCounterData(); }
void TestDocumentLayout::testMultiLevel() { initForNewTest("ListItem1\n"); KoListStyle listStyle; KoListLevelProperties llp; llp.setStyle(KoListStyle::DecimalItem); llp.setLevel(3); llp.setDisplayLevel(4); // we won't show a .0 at the end so this is truncated to 3 listStyle.setLevelProperties(llp); QTextBlock block = m_doc->begin(); QVERIFY(block.isValid()); listStyle.applyStyle(block); QVERIFY(block.textList()); m_layout->layout(); KoTextBlockData *data = dynamic_cast<KoTextBlockData *>(block.userData()); QVERIFY(data); QVERIFY(data->hasCounterData()); QCOMPARE(data->counterText(), QString("1.1.1")); }