diff options
author | Bjoern Michaelsen <bjoern.michaelsen@libreoffice.org> | 2017-09-18 00:57:54 +0200 |
---|---|---|
committer | Björn Michaelsen <bjoern.michaelsen@libreoffice.org> | 2017-09-18 22:45:45 +0200 |
commit | e8f36a820c610efdc748d222609550563cd8f8e0 (patch) | |
tree | 72aff1d1383a19b3ecccb337adf14560f7589e59 /sw | |
parent | e6b7ad06c6c99ff9bc3f814cfe9a5d44714a4ac1 (diff) |
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@libreoffice.org>
Reviewed-by: Björn Michaelsen <bjoern.michaelsen@libreoffice.org>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/unocore/unotext.cxx | 67 |
1 files changed, 27 insertions, 40 deletions
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); |