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

List:       kde-commits
Subject:    [KOffice/koffice/change-tracking] 737fe11: Fix the order in the which
From:       Ganesh Paramasivam <ganesh () crystalfab ! com>
Date:       2011-01-18 11:36:47
Message-ID: 20110118113647.5E3BAA6092 () git ! kde ! org
[Download RAW message or body]

commit 737fe113a0c3d9a84debcac4b04a7c57f4789427
branch koffice/change-tracking
Author: Ganesh Paramasivam <ganesh@crystalfab.com>
Date:   Tue Jan 18 17:06:21 2011 +0530

    Fix the order in the which the change meta-data in written in the odt

diff --git a/libs/kotext/changetracker/KoChangeTracker.cpp \
b/libs/kotext/changetracker/KoChangeTracker.cpp index b92a06f..210b7c4 100644
--- a/libs/kotext/changetracker/KoChangeTracker.cpp
+++ b/libs/kotext/changetracker/KoChangeTracker.cpp
@@ -381,6 +381,17 @@ int \
KoChangeTracker::getDeletedChanges(QVector<KoChangeTrackerElement *>& delete  return \
numAppendedItems;  }
 
+int KoChangeTracker::allChangeIds(QVector<int>& changesVector)
+{
+    int numAppendedItems = 0;
+    foreach(int changeId, d->changes.keys()) {
+        changesVector << changeId;
+        numAppendedItems++;
+    }
+
+    return numAppendedItems;
+}
+
 const QColor& KoChangeTracker::getInsertionBgColor()
 {
     return d->insertionBgColor;
diff --git a/libs/kotext/changetracker/KoChangeTracker.h \
b/libs/kotext/changetracker/KoChangeTracker.h index 33b8b43..defb1f8 100644
--- a/libs/kotext/changetracker/KoChangeTracker.h
+++ b/libs/kotext/changetracker/KoChangeTracker.h
@@ -72,6 +72,8 @@ public:
     //Returns all the deleted changes
     int getDeletedChanges(QVector<KoChangeTrackerElement *>& deleteVector);
 
+    int allChangeIds(QVector<int>& changesVector);
+
     bool containsInlineChanges(const QTextFormat &format);
     int mergeableId(KoGenChange::Type type, QString &title, int existingId);
 
diff --git a/libs/kotext/opendocument/KoTextWriter.cpp \
b/libs/kotext/opendocument/KoTextWriter.cpp index ac0db64..b7a8f6f 100644
--- a/libs/kotext/opendocument/KoTextWriter.cpp
+++ b/libs/kotext/opendocument/KoTextWriter.cpp
@@ -325,7 +325,6 @@ int KoTextWriter::Private::openTagRegion(int position, \
ElementType elementType,  QStack<int> changeHistory;
     while (changeId && (changeId != changeStack.top())) {
         changeHistory.push(changeId);
-        saveChange(changeId);
         changeId = changeTracker->parent(changeId);
     }
 
@@ -565,7 +564,6 @@ void KoTextWriter::Private::saveParagraph(const QTextBlock \
                &block, int from, int
         QString splitId = QString("split") + QString::number(splitIdCounter);
         writer->addAttribute("delta:split-id", splitId);
         int changeId = \
                block.blockFormat().intProperty(KoCharacterStyle::ChangeTrackerId);
-        saveChange(changeId);
         writer->addAttribute("delta:insertion-change-idref", \
changeTransTable.value(changeId));  writer->addAttribute("delta:insertion-type", \
"split");  splitIdCounter++;
@@ -584,7 +582,6 @@ void KoTextWriter::Private::saveParagraph(const QTextBlock \
                &block, int from, int
             QTextCharFormat firstFragmentFormat = firstFragment.charFormat();
             int firstFragmentChangeId = \
firstFragmentFormat.intProperty(KoCharacterStyle::ChangeTrackerId);  if \
                (firstFragmentChangeId != changeId) {
-                saveChange(changeId);
                 QString outputXml("<delta:removed-content \
delta:removal-change-idref=\"" + changeTransTable.value(changeId) + "\"/>");  \
writer->addCompleteElement(outputXml.toUtf8());  }
@@ -612,8 +609,6 @@ void KoTextWriter::Private::saveParagraph(const QTextBlock \
&block, int from, int  else
                 identical = false;
 
-            saveChange(charFormat);
-
             const KoTextBlockData *blockData = dynamic_cast<const KoTextBlockData \
*>(block.userData());  if (blockData && (it == block.begin())) {
                 writer->addAttribute("text:id", context.subId(blockData));
@@ -753,7 +748,6 @@ void KoTextWriter::Private::saveParagraph(const QTextBlock \
                &block, int from, int
             QTextCharFormat lastFragmentFormat = lastFragment.charFormat();
             int lastFragmentChangeId = \
lastFragmentFormat.intProperty(KoCharacterStyle::ChangeTrackerId);  if \
                (lastFragmentChangeId != changeId) {
-                saveChange(changeId);
                 QString outputXml("<delta:removed-content \
delta:removal-change-idref=\"" + changeTransTable.value(changeId) + "\"/>");  \
writer->addCompleteElement(outputXml.toUtf8());  }
@@ -1164,7 +1158,6 @@ QTextBlock& KoTextWriter::Private::saveList(QTextBlock &block, \
QHash<QTextList *  
 void KoTextWriter::Private::postProcessListItemSplit(int changeId)
 {
-    saveChange(changeId);
     QString change = changeTransTable.value(changeId);
 
     QString generatedXmlString(generatedXmlArray);
@@ -2061,6 +2054,12 @@ void KoTextWriter::write(QTextDocument *document, int from, \
int to)  
     QTextBlock block = document->findBlock(from);
 
+    QVector<int> changesVector;
+    d->changeTracker->allChangeIds(changesVector);
+    foreach (int changeId, changesVector) {
+        d->saveChange(changeId);
+    }
+
     QHash<QTextList *, QString> listStyles = d->saveListStyles(block, to);
     d->writeBlocks(document, from, to, listStyles);
 }


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

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