diff options
author | Jochen Nitschke <j.nitschke+logerrit@ok.de> | 2017-01-12 22:04:49 +0100 |
---|---|---|
committer | Jochen Nitschke <j.nitschke+logerrit@ok.de> | 2017-01-15 23:52:45 +0000 |
commit | ff08e8d5618f84366439c6f48bd7c5f3062905a3 (patch) | |
tree | b5b2c1e7eb7069b6fa5303adc956ebffdb1aabce /sc | |
parent | 5c6b81622530e708b2bb7901bcc531212a6ef72e (diff) |
tdf#48140 replace ApiCellRangeList in xlsx import (2)
Change-Id: I3e609c54f7b21c300944362d27248d92ab69b886
Reviewed-on: https://gerrit.libreoffice.org/33092
Reviewed-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
Tested-by: Jochen Nitschke <j.nitschke+logerrit@ok.de>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/filter/inc/addressconverter.hxx | 5 | ||||
-rw-r--r-- | sc/source/filter/inc/condformatbuffer.hxx | 4 | ||||
-rw-r--r-- | sc/source/filter/inc/viewsettings.hxx | 2 | ||||
-rw-r--r-- | sc/source/filter/oox/addressconverter.cxx | 9 | ||||
-rw-r--r-- | sc/source/filter/oox/condformatbuffer.cxx | 24 | ||||
-rw-r--r-- | sc/source/filter/oox/viewsettings.cxx | 4 |
6 files changed, 26 insertions, 22 deletions
diff --git a/sc/source/filter/inc/addressconverter.hxx b/sc/source/filter/inc/addressconverter.hxx index 9884294a3021..7c0497196cdd 100644 --- a/sc/source/filter/inc/addressconverter.hxx +++ b/sc/source/filter/inc/addressconverter.hxx @@ -554,6 +554,11 @@ public: const BinRangeList& rBinRanges, sal_Int16 nSheet, bool bTrackOverflow ); + void convertToCellRangeList( + ScRangeList& orRanges, + const BinRangeList& rBinRanges, + sal_Int16 nSheet, + bool bTrackOverflow ); private: void initializeMaxPos( diff --git a/sc/source/filter/inc/condformatbuffer.hxx b/sc/source/filter/inc/condformatbuffer.hxx index 3ff9ad359b98..a0c7aec5193b 100644 --- a/sc/source/filter/inc/condformatbuffer.hxx +++ b/sc/source/filter/inc/condformatbuffer.hxx @@ -184,7 +184,7 @@ typedef std::shared_ptr< CondFormatRule > CondFormatRuleRef; /** Model for a conditional formatting object. */ struct CondFormatModel { - ApiCellRangeList maRanges; /// Cell ranges for this conditional format. + ScRangeList maRanges; /// Cell ranges for this conditional format. bool mbPivot; /// Conditional formatting belongs to pivot table. explicit CondFormatModel(); @@ -210,7 +210,7 @@ public: void finalizeImport(); /** Returns the cell ranges this conditional formatting belongs to. */ - inline const ApiCellRangeList& getRanges() const { return maModel.maRanges; } + inline const ScRangeList& getRanges() const { return maModel.maRanges; } void setReadyForFinalize() { mbReadyForFinalize = true; } private: diff --git a/sc/source/filter/inc/viewsettings.hxx b/sc/source/filter/inc/viewsettings.hxx index 1ba44d1a497b..2537fa857625 100644 --- a/sc/source/filter/inc/viewsettings.hxx +++ b/sc/source/filter/inc/viewsettings.hxx @@ -31,7 +31,7 @@ namespace xls { struct PaneSelectionModel { ScAddress maActiveCell; /// Position of active cell (cursor). - ApiCellRangeList maSelection; /// Selected cell ranges. + ScRangeList maSelection; /// Selected cell ranges. sal_Int32 mnActiveCellId; /// Index of active cell in selection list. explicit PaneSelectionModel(); diff --git a/sc/source/filter/oox/addressconverter.cxx b/sc/source/filter/oox/addressconverter.cxx index ecb4a6b7f76a..0a2bd3eed89b 100644 --- a/sc/source/filter/oox/addressconverter.cxx +++ b/sc/source/filter/oox/addressconverter.cxx @@ -532,6 +532,15 @@ void AddressConverter::convertToCellRangeList( ApiCellRangeList& orRanges, orRanges.push_back( aRange ); } +void AddressConverter::convertToCellRangeList( ScRangeList& orRanges, + const BinRangeList& rBinRanges, sal_Int16 nSheet, bool bTrackOverflow ) +{ + ScRange aRange; + for( ::std::vector< BinRange >::const_iterator aIt = rBinRanges.begin(), aEnd = rBinRanges.end(); aIt != aEnd; ++aIt ) + if( convertToCellRange( aRange, *aIt, nSheet, true, bTrackOverflow ) ) + orRanges.Append( aRange ); +} + // private -------------------------------------------------------------------- void AddressConverter::ControlCharacters::set( diff --git a/sc/source/filter/oox/condformatbuffer.cxx b/sc/source/filter/oox/condformatbuffer.cxx index 2779e6851773..ede0d46c7da3 100644 --- a/sc/source/filter/oox/condformatbuffer.cxx +++ b/sc/source/filter/oox/condformatbuffer.cxx @@ -20,7 +20,6 @@ #include "condformatbuffer.hxx" #include <com/sun/star/sheet/ConditionOperator2.hpp> -#include <com/sun/star/table/CellRangeAddress.hpp> #include <rtl/ustrbuf.hxx> #include <osl/diagnose.h> #include <svl/intitem.hxx> @@ -39,7 +38,6 @@ #include "colorscale.hxx" #include "conditio.hxx" #include "document.hxx" -#include "convuno.hxx" #include "docfunc.hxx" #include "tokenarray.hxx" #include "tokenuno.hxx" @@ -49,7 +47,6 @@ namespace xls { using namespace ::com::sun::star::sheet; using namespace ::com::sun::star::style; -using namespace ::com::sun::star::table; using namespace ::com::sun::star::uno; namespace { @@ -473,7 +470,7 @@ void CondFormatRule::importCfRule( const AttributeList& rAttribs ) void CondFormatRule::appendFormula( const OUString& rFormula ) { - ScAddress aBaseAddr = mrCondFormat.getRanges().getBaseAddress(); + ScAddress aBaseAddr = mrCondFormat.getRanges().GetTopLeftCorner(); ApiTokenSequence aTokens = getFormulaParser().importFormula( aBaseAddr, rFormula ); maModel.maFormulas.push_back( aTokens ); } @@ -504,7 +501,7 @@ void CondFormatRule::importCfRule( SequenceInputStream& rStrm ) SAL_WARN_IF( !( (nFmla1Size > 0) == (rStrm.getRemaining() >= 8) ), "sc.filter", "CondFormatRule::importCfRule - formula size mismatch" ); if( rStrm.getRemaining() >= 8 ) { - ScAddress aBaseAddr = mrCondFormat.getRanges().getBaseAddress(); + ScAddress aBaseAddr = mrCondFormat.getRanges().GetTopLeftCorner(); ApiTokenSequence aTokens = getFormulaParser().importFormula( aBaseAddr, FORMULATYPE_CONDFORMAT, rStrm ); maModel.maFormulas.push_back( aTokens ); @@ -832,7 +829,7 @@ void CondFormatRule::finalizeImport() { case 'B': // current base address if( aAddress.isEmpty() ) - aAddress = FormulaProcessorBase::generateAddress2dString( mrCondFormat.getRanges().getBaseAddress(), false ); + aAddress = FormulaProcessorBase::generateAddress2dString( mrCondFormat.getRanges().GetTopLeftCorner(), false ); aReplaceFormula = aReplaceFormula.replaceAt( nStrPos, 2, aAddress ); break; default: @@ -846,7 +843,7 @@ void CondFormatRule::finalizeImport() eOperator = SC_COND_DIRECT; } - ScAddress aPos = mrCondFormat.getRanges().getBaseAddress(); + ScAddress aPos = mrCondFormat.getRanges().GetTopLeftCorner(); if( eOperator == SC_COND_ERROR || eOperator == SC_COND_NOERROR ) { @@ -1060,18 +1057,11 @@ void CondFormat::finalizeImport() return; ScDocument& rDoc = getScDocument(); maRules.forEachMem( &CondFormatRule::finalizeImport ); - SCTAB nTab = maModel.maRanges.getBaseAddress().Tab(); + SCTAB nTab = maModel.maRanges.GetTopLeftCorner().Tab(); sal_Int32 nIndex = getScDocument().AddCondFormat(mpFormat, nTab); - ScRangeList aList; - for( ::std::vector< CellRangeAddress >::const_iterator itr = maModel.maRanges.begin(); itr != maModel.maRanges.end(); ++itr) - { - ScRange aRange; - ScUnoConversion::FillScRange(aRange, *itr); - aList.Append(aRange); - } - rDoc.AddCondFormatData( aList, nTab, nIndex ); - mpFormat->SetRange(aList); + rDoc.AddCondFormatData( maModel.maRanges, nTab, nIndex ); + mpFormat->SetRange(maModel.maRanges); } CondFormatRuleRef CondFormat::createRule() diff --git a/sc/source/filter/oox/viewsettings.cxx b/sc/source/filter/oox/viewsettings.cxx index 26d99f5ec6f9..4048674ac25a 100644 --- a/sc/source/filter/oox/viewsettings.cxx +++ b/sc/source/filter/oox/viewsettings.cxx @@ -224,7 +224,7 @@ void SheetViewSettings::importSelection( const AttributeList& rAttribs ) rSelData.maActiveCell = getAddressConverter().createValidCellAddress( rAttribs.getString( XML_activeCell, OUString() ), getSheetIndex(), false ); rSelData.mnActiveCellId = rAttribs.getInteger( XML_activeCellId, 0 ); // selection - rSelData.maSelection.clear(); + rSelData.maSelection.RemoveAll(); getAddressConverter().convertToCellRangeList( rSelData.maSelection, rAttribs.getString( XML_sqref, OUString() ), getSheetIndex(), false ); } } @@ -305,7 +305,7 @@ void SheetViewSettings::importSelection( SequenceInputStream& rStrm ) // selection BinRangeList aSelection; rStrm >> aSelection; - rPaneSel.maSelection.clear(); + rPaneSel.maSelection.RemoveAll(); getAddressConverter().convertToCellRangeList( rPaneSel.maSelection, aSelection, getSheetIndex(), false ); } } |