[Libreoffice-commits] core.git: Branch 'private/Rosemary/change-tracking' - include/xmloff sw/inc sw/source xmloff/source

Rosemary Sebastian rosemaryseb8 at gmail.com
Sat Jun 25 12:28:23 UTC 2016


 include/xmloff/txtparae.hxx             |   29 +++++++++++++++++++++----
 sw/inc/redline.hxx                      |    6 ++++-
 sw/inc/redline.hxx.gch                  |binary
 sw/source/core/unocore/unoredline.cxx   |    6 +++--
 xmloff/source/text/XMLRedlineExport.cxx |   37 +++++++++++++++++---------------
 xmloff/source/text/XMLRedlineExport.hxx |    8 +++---
 xmloff/source/text/txtparae.cxx         |   13 ++++++-----
 7 files changed, 66 insertions(+), 33 deletions(-)

New commits:
commit 39816f01c52176d6a262e7684ab9535d9f0ebb61
Author: Rosemary Sebastian <rosemaryseb8 at gmail.com>
Date:   Sat Jun 25 10:55:35 2016 +0530

    Get text positions with changes applied
    
    Change-Id: I5ceaad492380d00e55c84cfcf0d66a7c3f4cf9c1

diff --git a/include/xmloff/txtparae.hxx b/include/xmloff/txtparae.hxx
index 92fae21..fd13ff1 100644
--- a/include/xmloff/txtparae.hxx
+++ b/include/xmloff/txtparae.hxx
@@ -93,6 +93,8 @@ class XMLOFF_DLLPUBLIC XMLTextParagraphExport : public XMLStyleExport
     /// may be NULL (if no redlines should be exported; e.g. in block mode)
     XMLRedlineExport            *pRedlineExport;
     sal_uInt32                  nParaIdx;
+    sal_uInt32                  nParaDelCount;
+    sal_uInt32                  nTextDelCount;
 
     bool                        bProgress;
 
@@ -249,7 +251,7 @@ public:
 
     void exportUndoTextRangeEnumeration(
         const css::uno::Reference< css::container::XEnumeration > & rRangeEnum,
-        const sal_uInt32& rParaIdx,
+        sal_uInt32 nParagraphIdx,
         bool bAutoStyles );
     void exportTextRangeEnumeration(
         const css::uno::Reference< css::container::XEnumeration > & rRangeEnum,
@@ -304,7 +306,7 @@ protected:
         TextPNS eExtensionNS = TextPNS::ODF);
     void exportUndoParagraph(
         const css::uno::Reference< css::text::XTextContent > & rTextContent,
-        const sal_uInt32& rParaIdx,
+        sal_uInt32 nParaIdx,
         bool bAutoStyles, bool bProgress,
         MultiPropertySetHelper& rPropSetHelper);
     void exportParagraph(
@@ -542,9 +544,9 @@ public:
     void exportTitleAndDescription( const css::uno::Reference< css::beans::XPropertySet > & rPropSet,
                                     const css::uno::Reference< css::beans::XPropertySetInfo > & rPropSetInfo );
 
-    void setParaIdx(sal_uInt32 rParaIdx)
+    void setParaIdx(sal_uInt32 nParagraphIdx)
     {
-        nParaIdx = rParaIdx;
+        nParaIdx = nParagraphIdx;
     }
 
     sal_uInt32 getParaIdx()
@@ -552,6 +554,25 @@ public:
         return nParaIdx;
     }
 
+    void setTextDelCount(sal_uInt32 nTextDeleteCount )
+    {
+        nTextDelCount = nTextDeleteCount;
+    }
+
+    sal_uInt32 getTextDelCount()
+    {
+        return nTextDelCount;
+    }
+
+    void setParaDelCount(sal_uInt32 nParagraphDelCount)
+    {
+        nParaDelCount = nParagraphDelCount;
+    }
+
+    sal_uInt32 getParaDelCount()
+    {
+        return nParaDelCount;
+    }
     // This method exports the given XText
     void exportTrackedChanges(
         const css::uno::Reference< css::text::XText > & rText,
diff --git a/sw/inc/redline.hxx b/sw/inc/redline.hxx
index 5588b94..2ebe5cc 100644
--- a/sw/inc/redline.hxx
+++ b/sw/inc/redline.hxx
@@ -114,6 +114,7 @@ class SW_DLLPUBLIC SwRedlineData
     DateTime aStamp;
     RedlineType_t eType;
     sal_uInt16 nAuthor, nSeqNo;
+    OUString sUndoType;
 
 public:
     SwRedlineData( RedlineType_t eT, sal_uInt16 nAut );
@@ -151,6 +152,7 @@ public:
     void SetComment( const OUString& rS )     { sComment = rS; }
     void SetUndoStart( const sal_uInt32& rUndoStart )     { nUndoStart = rUndoStart; }
     void SetUndoEnd( const sal_uInt32& rUndoEnd )     { nUndoEnd = rUndoEnd; }
+    void SetUndoType( const OUString& rUndoType )       { sUndoType = rUndoType; }
     void SetTimeStamp( const DateTime& rDT ) { aStamp = rDT; }
 
     void SetAutoFormatFlag()
@@ -166,7 +168,8 @@ public:
                         pNext->CanCombine( *rCmp.pNext ))) &&
                     (( !pExtraData && !rCmp.pExtraData ) ||
                         ( pExtraData && rCmp.pExtraData &&
-                            *pExtraData == *rCmp.pExtraData ));
+                            *pExtraData == *rCmp.pExtraData )) &&
+                            nUndoEnd == rCmp.nUndoStart - 1;
         }
 
     // ExtraData gets copied, the pointer is therefore not taken over by
@@ -247,6 +250,7 @@ public:
 
     void SetUndoStart( const sal_uInt32& rUndoStart ) { pRedlineData->SetUndoStart( rUndoStart ); }
     void SetUndoEnd( const sal_uInt32& rUndoEnd ) { pRedlineData->SetUndoEnd( rUndoEnd ); }
+    void SetUndoType( const OUString& rUndoType ) { pRedlineData->SetUndoType( rUndoType ); }
     void SetComment( const OUString& rS ) { pRedlineData->SetComment( rS ); }
 
     /** ExtraData gets copied, the pointer is therefore not taken over by
diff --git a/sw/inc/redline.hxx.gch b/sw/inc/redline.hxx.gch
new file mode 100644
index 0000000..1fac9bb
Binary files /dev/null and b/sw/inc/redline.hxx.gch differ
diff --git a/sw/source/core/unocore/unoredline.cxx b/sw/source/core/unocore/unoredline.cxx
index f76f395..d3dd929 100644
--- a/sw/source/core/unocore/unoredline.cxx
+++ b/sw/source/core/unocore/unoredline.cxx
@@ -311,11 +311,13 @@ uno::Any  SwXRedlinePortion::GetPropertyValue( const OUString& rPropertyName, co
     }
     else if (rPropertyName == UNO_NAME_REDLINE_UNDO_TYPE)
     {
+        OUString sType;
         if( rRedline.GetUndoEnd() == COMPLETE_STRING || rRedline.GetUndoStart() == rRedline.GetUndoEnd()
             || rRedline.GetUndoEnd() == 0 )
-            aRet <<= OUString("paragraph");
+            sType = "paragraph";
         else
-            aRet <<= OUString("text");
+            sType = "text";
+        aRet <<= sType;
     }
     else if (rPropertyName == UNO_NAME_REDLINE_UNDO_START)
     {
diff --git a/xmloff/source/text/XMLRedlineExport.cxx b/xmloff/source/text/XMLRedlineExport.cxx
index 1013281..731260c 100644
--- a/xmloff/source/text/XMLRedlineExport.cxx
+++ b/xmloff/source/text/XMLRedlineExport.cxx
@@ -104,12 +104,12 @@ XMLRedlineExport::~XMLRedlineExport()
 
 void XMLRedlineExport::ExportUndoChange(
     const Reference<XPropertySet> & rPropSet,
-    const sal_uInt32& rParaIdx,
+    sal_uInt32 nParaIdx,
     bool bAutoStyle)
 {
     if (!bAutoStyle)
     {
-        ExportUndoChangeInfo(rPropSet, rParaIdx);
+        ExportUndoChangeInfo(rPropSet, nParaIdx);
     }
 }
 
@@ -141,39 +141,42 @@ void XMLRedlineExport::SetCurrentXText()
     pCurrentChangesList = nullptr;
 }
 
-void XMLRedlineExport::ExportUndoChangeInline(
-    const Reference<XPropertySet> & rPropSet, const sal_uInt32& rParaIdx)
+void XMLRedlineExport::ExportUndoChangedRegion(
+    const Reference<XPropertySet> & rPropSet, sal_uInt32 nParaIdx)
 {
     {
         Any aAny = rPropSet->getPropertyValue(sRedlineType);
         OUString sType;
         aAny >>= sType;
 
-        sal_uInt32 nParagraphIdx = rParaIdx, nCharStart, nCharEnd;
+        sal_uInt32 nCharStart, nCharEnd;
+        sal_uInt32 nTextDelCount = rExport.GetTextParagraphExport()->getTextDelCount();
         rPropSet->getPropertyValue(sRedlineUndoStart) >>= nCharStart;
         rPropSet->getPropertyValue(sRedlineUndoEnd) >>= nCharEnd;
+        nCharStart -= nTextDelCount;
+        nCharEnd -= nTextDelCount;
 
-        XMLTokenEnum eUndoType = XML_TEXT;
         OUString sUndoType;
         aAny = rPropSet->getPropertyValue(sRedlineUndoType);
         aAny >>= sUndoType;
 
         if( sUndoType == "paragraph" )
         {
-            eUndoType = XML_PARAGRAPH;
-            nParagraphIdx++;
-        }
-        if(eUndoType == XML_PARAGRAPH)
-        {
-            rExport.AddAttribute(XML_NAMESPACE_C, XML_START, "/" + rtl::OUString::number(nParagraphIdx));
+            nParaIdx++;
+            rExport.AddAttribute(XML_NAMESPACE_C, XML_START, "/" + rtl::OUString::number(nParaIdx));
             rExport.AddAttribute(XML_NAMESPACE_DC, XML_TYPE, XML_PARAGRAPH);
         }
         else
         {
-            rExport.AddAttribute(XML_NAMESPACE_C, XML_START, "/" + rtl::OUString::number(nParagraphIdx) + "/" + rtl::OUString::number(nCharStart));
+            rExport.AddAttribute(XML_NAMESPACE_C, XML_START, "/" + rtl::OUString::number(nParaIdx) + "/" + rtl::OUString::number(nCharStart));
             if( sType == sInsert || sType == sFormat )
-                rExport.AddAttribute(XML_NAMESPACE_C, XML_END, "/" + rtl::OUString::number(nParagraphIdx) + "/" + rtl::OUString::number(nCharEnd));
-            rExport.AddAttribute(XML_NAMESPACE_DC, XML_TYPE, eUndoType);
+                rExport.AddAttribute(XML_NAMESPACE_C, XML_END, "/" + rtl::OUString::number(nParaIdx) + "/" + rtl::OUString::number(nCharEnd));
+            else
+                rExport.GetTextParagraphExport()->setTextDelCount( rExport.GetTextParagraphExport()->getTextDelCount() + nCharEnd - nCharStart + 1 );
+            if( sType == sFormat )
+                rExport.AddAttribute(XML_NAMESPACE_DC, XML_TYPE, XML_FORMAT_CHANGE);
+            else
+                rExport.AddAttribute(XML_NAMESPACE_DC, XML_TYPE, XML_TEXT);
         }
         SvXMLElementExport aChange(rExport, XML_NAMESPACE_TEXT,
                                 ConvertTypeName(sType), true, true);
@@ -213,7 +216,7 @@ const OUString XMLRedlineExport::ConvertTypeName(
 }
 
 void XMLRedlineExport::ExportUndoChangeInfo(
-    const Reference<XPropertySet> & rPropSet, const sal_uInt32& rParaIdx)
+    const Reference<XPropertySet> & rPropSet, sal_uInt32 nParaIdx)
 {
     Any aAny = rPropSet->getPropertyValue(sIsCollapsed);
     bool bCollapsed = *static_cast<sal_Bool const *>(aAny.getValue());
@@ -238,7 +241,7 @@ void XMLRedlineExport::ExportUndoChangeInfo(
 
         SvXMLElementExport aChange(rExport, XML_NAMESPACE_OFFICE,
                                     XML_CHANGE, true, true);
-        ExportUndoChangeInline(rPropSet, rParaIdx);
+        ExportUndoChangedRegion(rPropSet, nParaIdx);
     }
 }
 
diff --git a/xmloff/source/text/XMLRedlineExport.hxx b/xmloff/source/text/XMLRedlineExport.hxx
index bc86667..40e66b3 100644
--- a/xmloff/source/text/XMLRedlineExport.hxx
+++ b/xmloff/source/text/XMLRedlineExport.hxx
@@ -106,7 +106,7 @@ public:
     void ExportUndoChange(
         /// PropertySet of RedlinePortion
         const css::uno::Reference<css::beans::XPropertySet> & rPropSet,
-        const sal_uInt32& rParaIdx,
+        sal_uInt32 nParaIdx,
         bool bAutoStyle);
 
     /// set the current XText for which changes should be recorded.
@@ -139,13 +139,13 @@ public:
 
 private:
     /// export the change mark contained in the text body
-    void ExportUndoChangeInline(
+    void ExportUndoChangedRegion(
         /// PropertySet of RedlinePortion
-        const css::uno::Reference<css::beans::XPropertySet> & rPropSet, const sal_uInt32& rParaIdx);
+        const css::uno::Reference<css::beans::XPropertySet> & rPropSet, sal_uInt32 nParaIdx);
 
     /// export an change-info element (from a PropertySet)
     void ExportUndoChangeInfo(
-        const css::uno::Reference<css::beans::XPropertySet> & rPropSet, const sal_uInt32& rParaIdx);
+        const css::uno::Reference<css::beans::XPropertySet> & rPropSet, sal_uInt32 nParaIdx);
 
     /// convert the change type from API to XML names
     const OUString ConvertTypeName(const OUString& sApiName);
diff --git a/xmloff/source/text/txtparae.cxx b/xmloff/source/text/txtparae.cxx
index c51bd8e..9abbcbf 100644
--- a/xmloff/source/text/txtparae.cxx
+++ b/xmloff/source/text/txtparae.cxx
@@ -1163,6 +1163,8 @@ XMLTextParagraphExport::XMLTextParagraphExport(
     pIndexMarkExport( nullptr ),
     pRedlineExport( nullptr ),
     nParaIdx(0),
+    nParaDelCount(0),
+    nTextDelCount(0),
     bProgress( false ),
     bBlock( false ),
     bOpenRuby( false ),
@@ -1816,6 +1818,7 @@ bool XMLTextParagraphExport::exportUndoTextContentEnumeration(
             {
                 setParaIdx(getParaIdx() + 1);
                 exportUndoParagraph( xTxtCntnt, getParaIdx(), bAutoStyles, bIsProgress, aPropSetHelper );
+                setTextDelCount(0);
             }
         }
         bHasMoreElements = rContEnum->hasMoreElements();
@@ -1992,7 +1995,7 @@ bool XMLTextParagraphExport::exportTextContentEnumeration(
 }
 
 void XMLTextParagraphExport::exportUndoParagraph(
-        const Reference < XTextContent > & rTextContent, const sal_uInt32& rParaIdx,
+        const Reference < XTextContent > & rTextContent, sal_uInt32 nParaIdx,
         bool bAutoStyles, bool bIsProgress,
         MultiPropertySetHelper& rPropSetHelper)
 {
@@ -2052,10 +2055,10 @@ void XMLTextParagraphExport::exportUndoParagraph(
                                     xContentEnum, bAutoStyles, xSection,
                                     bIsProgress );
         if ( bHasPortions )
-            exportUndoTextRangeEnumeration( xTextEnum, rParaIdx, bAutoStyles );
+            exportUndoTextRangeEnumeration( xTextEnum, nParaIdx, bAutoStyles );
     }
     else
-        exportUndoTextRangeEnumeration( xTextEnum, rParaIdx, bAutoStyles );
+        exportUndoTextRangeEnumeration( xTextEnum, nParaIdx, bAutoStyles );
 }
 
 void XMLTextParagraphExport::exportParagraph(
@@ -2320,7 +2323,7 @@ void XMLTextParagraphExport::exportParagraph(
 
 void XMLTextParagraphExport::exportUndoTextRangeEnumeration(
         const Reference < XEnumeration > & rTextEnum,
-        const sal_uInt32& rParaIdx,
+        sal_uInt32 nParagraphIdx,
         bool bAutoStyles )
 {
     while( rTextEnum->hasMoreElements() )
@@ -2337,7 +2340,7 @@ void XMLTextParagraphExport::exportUndoTextRangeEnumeration(
             if (sType.equals(sRedline))
             {
                 if (nullptr != pRedlineExport)
-                    pRedlineExport->ExportUndoChange(xPropSet, rParaIdx, bAutoStyles);
+                    pRedlineExport->ExportUndoChange(xPropSet, nParaIdx, bAutoStyles);
             }
         }
     }


More information about the Libreoffice-commits mailing list