void TestStyleManager::testAddRemoveListStyle()
{
    // Add list style.
    KoListStyle listStyle;
    listStyle.setName("Test List Style");
    QSignalSpy addSignalSpy(m_styleManager, SIGNAL(styleAdded(KoListStyle*)));
    m_styleManager->beginEdit();
    m_styleManager->add(&listStyle);
    m_styleManager->endEdit();
    QVERIFY(listStyle.styleId() > 0);
    QCOMPARE(m_styleManager->listStyles().count(&listStyle), 1);
    QCOMPARE(m_styleManager->listStyle(listStyle.styleId()), &listStyle);
    QCOMPARE(m_styleManager->listStyle("Test List Style"), &listStyle);
    QCOMPARE(addSignalSpy.count(), 1);
    QCOMPARE(addSignalSpy.at(0).at(0).value<KoListStyle *>(), &listStyle);

    // Remove list style.
    QSignalSpy removeSignalSpy(m_styleManager, SIGNAL(styleRemoved(KoListStyle*)));
    m_styleManager->beginEdit();
    m_styleManager->remove(&listStyle);
    m_styleManager->endEdit();
    QVERIFY(!m_styleManager->listStyles().contains(&listStyle));
    QVERIFY(!m_styleManager->listStyle(listStyle.styleId()));
    QVERIFY(!m_styleManager->listStyle("Test List Style"));
    QCOMPARE(removeSignalSpy.count(), 1);
    QCOMPARE(removeSignalSpy.at(0).at(0).value<KoListStyle *>(), &listStyle);
}
Example #2
0
QHash<QTextList *, QString> KoTextWriter::saveListStyles(QTextBlock block, int to)
{
    QHash<KoList *, QString> generatedLists;
    QHash<QTextList *, QString> listStyles;
    KoTextDocument document(block.document());

    for (;block.isValid() && ((to == -1) || (block.position() < to)); block = block.next()) {
        QTextList *textList = block.textList();
        if (!textList)
            continue;
        if (KoList *list = document.list(block)) {
            if (generatedLists.contains(list)) {
                if (!listStyles.contains(textList))
                    listStyles.insert(textList, generatedLists.value(list));
                continue;
            }
            KoListStyle *listStyle = list->style();
            bool automatic = listStyle->styleId() == 0;
            KoGenStyle style(automatic ? KoGenStyle::StyleListAuto : KoGenStyle::StyleList);
            listStyle->saveOdf(style);
            QString generatedName = d->context.mainStyles().lookup(style, listStyle->name(), KoGenStyles::AllowDuplicates);
            listStyles[textList] = generatedName;
            generatedLists.insert(list, generatedName);
        } else {
            if (listStyles.contains(textList))
                continue;
            KoListLevelProperties llp = KoListLevelProperties::fromTextList(textList);
            KoGenStyle style(KoGenStyle::StyleListAuto);
            KoListStyle listStyle;
            listStyle.setLevelProperties(llp);
            listStyle.saveOdf(style);
            QString generatedName = d->context.mainStyles().lookup(style, listStyle.name());
            listStyles[textList] = generatedName;
        }
    }
    return listStyles;
}