[Libreoffice-commits] core.git: sw/source

Bjoern Michaelsen bjoern.michaelsen at libreoffice.org
Mon Sep 18 20:46:16 UTC 2017


 sw/source/core/unocore/unotext.cxx |   67 ++++++++++++++-----------------------
 1 file changed, 27 insertions(+), 40 deletions(-)

New commits:
commit e8f36a820c610efdc748d222609550563cd8f8e0
Author: Bjoern Michaelsen <bjoern.michaelsen at libreoffice.org>
Date:   Mon Sep 18 00:57:54 2017 +0200

    remove boilerplate, use C++11 (convertToTable)
    
    - extract constants from loop
    - warn on index mismatch
    
    Change-Id: I1e03dd65a82913c8a8de6abba56a82ed0f815db4
    Reviewed-on: https://gerrit.libreoffice.org/42402
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Björn Michaelsen <bjoern.michaelsen at libreoffice.org>

diff --git a/sw/source/core/unocore/unotext.cxx b/sw/source/core/unocore/unotext.cxx
index b0e0f051aed7..3298d00c7eea 100644
--- a/sw/source/core/unocore/unotext.cxx
+++ b/sw/source/core/unocore/unotext.cxx
@@ -1970,10 +1970,18 @@ lcl_ApplyRowProperties(
     }
 }
 
+static sal_Int32 lcl_GetLeftPos(sal_Int32 nCell, TableColumnSeparators const& rRowSeparators)
+{
+    if(!nCell)
+        return 0;
+    if (rRowSeparators.getLength() < nCell)
+        return -1;
+    return rRowSeparators[nCell - 1].Position;
+}
+
 static void
 lcl_ApplyCellProperties(
-    const sal_Int32 nCell,
-    TableColumnSeparators const& rRowSeparators,
+    const sal_Int32 nLeftPos,
     const uno::Sequence< beans::PropertyValue >& rCellProperties,
     const uno::Reference< uno::XInterface >& xCell,
     std::vector<VerticallyMergedCell> & rMergedCells)
@@ -1990,17 +1998,6 @@ lcl_ApplyCellProperties(
             // add the cell to a queue of merged cells
             bool bMerge = false;
             rValue >>= bMerge;
-            sal_Int32 nLeftPos = -1;
-            if (!nCell)
-            {
-                nLeftPos = 0;
-            }
-            else if (rRowSeparators.getLength() >= nCell)
-            {
-                const text::TableColumnSeparator* pSeparators =
-                    rRowSeparators.getConstArray();
-                nLeftPos = pSeparators[nCell - 1].Position;
-            }
             if (bMerge)
             {
                 // 'close' all the cell with the same left position
@@ -2168,53 +2165,43 @@ SwXText::convertToTable(
     try
     {
         //apply table properties
-        const beans::PropertyValue* pTableProperties =
-            rTableProperties.getConstArray();
-        for (sal_Int32 nProperty = 0; nProperty < rTableProperties.getLength();
-             ++nProperty)
+        for(const auto& rTableProperty : rTableProperties)
         {
             try
             {
-                xPrSet->setPropertyValue( pTableProperties[nProperty].Name,
-                        pTableProperties[nProperty].Value );
+                xPrSet->setPropertyValue(rTableProperty.Name, rTableProperty.Value);
             }
             catch (const uno::Exception& e)
             {
                 SAL_WARN( "sw.uno", "Exception when setting property: "
-                    + pTableProperties[nProperty].Name + ". Message: " + e.Message );
+                    + rTableProperty.Name + ". Message: " + e.Message );
             }
         }
 
         //apply row properties
-        const uno::Reference< table::XTableRows >  xRows = xRet->getRows();
-
-        const beans::PropertyValues* pRowProperties =
-            rRowProperties.getConstArray();
-        for (sal_Int32 nRow = 0; nRow < xRows->getCount(); ++nRow)
-        {
-            if( nRow >= rRowProperties.getLength())
-            {
-                break;
-            }
-            lcl_ApplyRowProperties(pRowProperties[nRow],
-                xRows->getByIndex(nRow), aRowSeparators[nRow]);
-        }
+        const auto xRows = xRet->getRows();
+        const sal_Int32 nLast = std::min(xRows->getCount(), rRowProperties.getLength());
+        SAL_WARN_IF(nLast != rRowProperties.getLength(), "sw.uno", "not enough rows for properties");
+        for(sal_Int32 nCnt = 0; nCnt < nLast; ++nCnt)
+            lcl_ApplyRowProperties(rRowProperties[nCnt], xRows->getByIndex(nCnt), aRowSeparators[nCnt]);
 
         uno::Reference<table::XCellRange> const xCR(xRet, uno::UNO_QUERY_THROW);
         //apply cell properties
-        for (sal_Int32 nRow = 0; nRow < rCellProperties.getLength(); ++nRow)
+        sal_Int32 nRow = 0;
+        for(const auto& rCellPropertiesForRow : rCellProperties)
         {
-            const uno::Sequence< beans::PropertyValues > aCurrentRow =
-                rCellProperties[nRow];
-            sal_Int32 nCells = aCurrentRow.getLength();
-            for (sal_Int32  nCell = 0; nCell < nCells; ++nCell)
+            sal_Int32 nCell = 0;
+            for(const auto& rCellProps : rCellPropertiesForRow)
             {
-                lcl_ApplyCellProperties(nCell,
-                    aRowSeparators[nRow], aCurrentRow[nCell],
+                lcl_ApplyCellProperties(lcl_GetLeftPos(nCell, aRowSeparators[nRow]),
+                    rCellProps,
                     xCR->getCellByPosition(nCell, nRow),
                     aMergedCells);
+                ++nCell;
             }
+            ++nRow;
         }
+
         // now that the cell properties are set the vertical merge values
         // have to be applied
         lcl_MergeCells(aMergedCells);


More information about the Libreoffice-commits mailing list