[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/work/koffice-change-tracking/libs/kotext/opendocument
From:       Ganesh Paramasivam <ganesh () crystalfab ! com>
Date:       2010-12-28 9:12:09
Message-ID: 20101228091209.D8051AC8AD () svn ! kde ! org
[Download RAW message or body]

SVN commit 1209844 by ganeshp:

Basic framework for the support of list-item splits loading and function to detect \
list-item splits

 M  +42 -0     KoTextLoader.cpp  


--- branches/work/koffice-change-tracking/libs/kotext/opendocument/KoTextLoader.cpp \
#1209843:1209844 @@ -144,6 +144,10 @@
     bool checkForDeleteMerge(QTextCursor &cursor, const QString &id, int \
startPosition);  QMap<KoDeleteChangeMarker *, QPair<int, int> > \
deleteChangeMarkerMap;  
+    // For Loading of list item splits
+    bool checkForListItemSplit(const KoXmlElement &element);
+    KoXmlNode loadListItemSplit(const KoXmlElement &element, QString \
*generatedXmlString); +
     explicit Private(KoShapeLoadingContext &context, KoShape *s)
             : context(context),
             textSharedData(0),
@@ -966,7 +970,11 @@
         //Don't do anything
     } else {
         if ((e.attributeNS(KoXmlNS::delta, "insertion-type") == \
"insert-around-content") || (e.localName() == "remove-leaving-content-start")) { +    \
if (!d->checkForListItemSplit(e)) {  _node = loadDeleteMerges(e,&generatedXmlString);
+            } else {
+                _node = d->loadListItemSplit(e, &generatedXmlString);
+            }
 
             //Parse and Load the generated xml
             QString errorMsg;
@@ -1104,6 +1112,40 @@
     kDebug(32500) << "text-style:" << \
KoTextDebug::textAttributes(cursor.blockCharFormat());  }
 
+bool KoTextLoader::Private::checkForListItemSplit(const KoXmlElement &element)
+{
+    QString endId = element.attributeNS(KoXmlNS::delta, "end-element-idref");
+    int insertedListItems = 0;
+    KoXmlElement currentElement = element;
+    bool isSplitListItem = false;
+
+    while(true) {
+        currentElement = currentElement.nextSibling().toElement();
+
+        if (currentElement.isNull()) {
+            continue;
+        }
+
+        if ((currentElement.localName() == "list-item") && 
+            (currentElement.attributeNS(KoXmlNS::delta, "insertion-type") == \
"insert-around-content")) { +            insertedListItems++;
+        }
+
+        if ((currentElement.localName() == "remove-leaving-content-end") && 
+            (currentElement.attributeNS(KoXmlNS::delta, "end-element-id") == endId)) \
{ +            break;
+        }
+    }
+
+    isSplitListItem = (insertedListItems > 1)?true:false;
+    return isSplitListItem;
+}
+
+KoXmlNode KoTextLoader::Private::loadListItemSplit(const KoXmlElement &element, \
QString *generatedXmlString) +{
+    return KoXmlNode();
+}
+
 void KoTextLoader::loadSection(const KoXmlElement &sectionElem, QTextCursor &cursor)
 {
     // Add a frame to the current layout


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic