[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/plugins/textshape
From: Thomas Zander <zander () kde ! org>
Date: 2010-12-23 15:57:37
Message-ID: 20101223155737.DAEE43E1F3 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1208887 by zander:
Make displaying styles in a table not look buggy for more levels.
M +4 -3 dialogs/StylesModel.cpp
M +41 -0 tests/TestStylesModel.cpp
--- trunk/koffice/plugins/textshape/dialogs/StylesModel.cpp #1208886:1208887
@@ -61,18 +61,19 @@
treeRoot << m_styleManager->defaultParagraphStyle()->styleId();
paragraphStyles << treeRoot[0];
foreach (KoParagraphStyle *style, m_styleManager->paragraphStyles()) {
- KoParagraphStyle *root = style;
- while (root->parentStyle()) {
+ KoParagraphStyle *root;
+ for (root = style; root->parentStyle(); root = root->parentStyle()) {
const int key = root->parentStyle()->styleId();
// the multiHash has the nasty habit or returning an inverted list, so \
lets 'sort in' by inserting them again QList<int> prevValues = \
m_relations.values(key); + if (prevValues.contains(root->styleId()))
+ continue;
m_relations.remove(key);
m_relations.insert(key, root->styleId());
while (!prevValues.isEmpty())
m_relations.insert(key, prevValues.takeLast());
characterStyles << root->characterStyle()->styleId();
- root = root->parentStyle();
}
Q_ASSERT(root);
Q_ASSERT(root->characterStyle());
--- trunk/koffice/plugins/textshape/tests/TestStylesModel.cpp #1208886:1208887
@@ -18,6 +18,7 @@
private slots:
void testPrecalcCache();
void testSetManager();
+ void testNestedStyles();
private:
void fillManager();
@@ -94,14 +95,49 @@
QCOMPARE(model.rootStyleIds().count(), 5);
}
+void TestStylesModel::testNestedStyles()
+{
+ // have a 3 level deep style hierarchy and make sure it shows correctly.
+ fillManager();
+ KoParagraphStyle *headers = manager->paragraphStyle("headers");
+ QVERIFY(headers);
+
+ // the fillManager adds headers root and H1, H2, H3. Add new root above to get
+ // to 3 levels.
+ KoParagraphStyle *root = new KoParagraphStyle();
+ root->setName("Root Style");
+ manager->add(root);
+ headers->setParentStyle(root);
+
+ MockModel model(manager);
+ QCOMPARE(model.rootStyleIds().count(), 5); // default, root, code, altered and \
red. +
+ KoParagraphStyle *s = manager->paragraphStyle(model.rootStyleIds().at(0));
+ QVERIFY(s);
+ QCOMPARE(s->name(), QString("Default"));
+
+ s = manager->paragraphStyle(model.rootStyleIds().at(1));
+ QCOMPARE(s, root);
+ QList<int> headerId = model.relations().values(root->styleId());
+ QCOMPARE(headerId.count(), 1);
+ s = manager->paragraphStyle(headerId.at(0));
+ QVERIFY(s);
+ QCOMPARE(s->name(), QString("headers"));
+
+ QList<int> children = model.relations().values(headerId.at(0));
+ QCOMPARE(children.count(), 3); // Head 1, 2, 3
+}
+
void TestStylesModel::fillManager()
{
KoParagraphStyle *ps = new KoParagraphStyle();
ps->setName("code");
manager->add(ps);
+ // qDebug() << "code:" << ps->styleId();
ps = new KoParagraphStyle();
ps->setName("altered");
manager->add(ps);
+ // qDebug() << "altered:" << ps->styleId();
ps = new KoParagraphStyle();
ps->setName("headers");
@@ -109,19 +145,24 @@
head->setParentStyle(ps);
head->setName("Head 1");
manager->add(head);
+ // qDebug() << "head1:" << head->styleId();
head = new KoParagraphStyle();
head->setParentStyle(ps);
head->setName("Head 2");
manager->add(head);
+ // qDebug() << "head2:" << head->styleId();
manager->add(ps);
+ // qDebug() << "headers:" << ps->styleId();
head = new KoParagraphStyle();
head->setParentStyle(ps);
head->setName("Head 3");
manager->add(head);
+ // qDebug() << "head3:" << head->styleId();
KoCharacterStyle *style = new KoCharacterStyle();
style->setName("red");
manager->add(style);
+ // qDebug() << "red:" << style->styleId();
}
QTEST_MAIN(TestStylesModel)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic