[Libreoffice-commits] core.git: sc/source
Jochen Nitschke
j.nitschke+logerrit at ok.de
Sun Jan 15 23:51:32 UTC 2017
sc/source/filter/inc/addressconverter.hxx | 6 ++++++
sc/source/filter/oox/addressconverter.cxx | 14 ++++++++++++++
sc/source/filter/oox/worksheetsettings.cxx | 16 ++++------------
3 files changed, 24 insertions(+), 12 deletions(-)
New commits:
commit 5c6b81622530e708b2bb7901bcc531212a6ef72e
Author: Jochen Nitschke <j.nitschke+logerrit at ok.de>
Date: Thu Jan 12 20:25:31 2017 +0100
tdf#48140 replace ApiCellRangeList in xlsx import (1)
Change-Id: I61c2890db1190f2552e16bc26968bec31c5dc6d3
Reviewed-on: https://gerrit.libreoffice.org/33091
Reviewed-by: Jochen Nitschke <j.nitschke+logerrit at ok.de>
Tested-by: Jenkins <ci at libreoffice.org>
diff --git a/sc/source/filter/inc/addressconverter.hxx b/sc/source/filter/inc/addressconverter.hxx
index e8ed5c5..9884294 100644
--- a/sc/source/filter/inc/addressconverter.hxx
+++ b/sc/source/filter/inc/addressconverter.hxx
@@ -22,6 +22,7 @@
#include <vector>
#include <com/sun/star/table/CellRangeAddress.hpp>
+#include <rangelst.hxx>
#include "workbookhelper.hxx"
namespace oox {
@@ -528,6 +529,11 @@ public:
const OUString& rString,
sal_Int16 nSheet,
bool bTrackOverflow );
+ void convertToCellRangeList(
+ ScRangeList& orRanges,
+ const OUString& rString,
+ sal_Int16 nSheet,
+ bool bTrackOverflow );
/** Tries to convert the passed range list to a cell range list.
diff --git a/sc/source/filter/oox/addressconverter.cxx b/sc/source/filter/oox/addressconverter.cxx
index a36a4e8..ecb4a6b 100644
--- a/sc/source/filter/oox/addressconverter.cxx
+++ b/sc/source/filter/oox/addressconverter.cxx
@@ -509,6 +509,20 @@ void AddressConverter::convertToCellRangeList( ApiCellRangeList& orRanges,
}
}
+void AddressConverter::convertToCellRangeList( ScRangeList& orRanges,
+ const OUString& rString, sal_Int16 nSheet, bool bTrackOverflow )
+{
+ sal_Int32 nPos = 0;
+ sal_Int32 nLen = rString.getLength();
+ ScRange aRange;
+ while( (0 <= nPos) && (nPos < nLen) )
+ {
+ OUString aToken = rString.getToken( 0, ' ', nPos );
+ if( !aToken.isEmpty() && convertToCellRange( aRange, aToken, nSheet, true, bTrackOverflow ) )
+ orRanges.Append(aRange);
+ }
+}
+
void AddressConverter::convertToCellRangeList( ApiCellRangeList& orRanges,
const BinRangeList& rBinRanges, sal_Int16 nSheet, bool bTrackOverflow )
{
diff --git a/sc/source/filter/oox/worksheetsettings.cxx b/sc/source/filter/oox/worksheetsettings.cxx
index 1bbc7a8..12d047d 100644
--- a/sc/source/filter/oox/worksheetsettings.cxx
+++ b/sc/source/filter/oox/worksheetsettings.cxx
@@ -30,7 +30,6 @@
#include "workbooksettings.hxx"
#include "tabprotection.hxx"
#include "document.hxx"
-#include "convuno.hxx"
namespace oox {
namespace xls {
@@ -155,18 +154,11 @@ void WorksheetSettings::importProtectedRange( const AttributeList& rAttribs )
OUString aRefs( rAttribs.getString( XML_sqref, OUString()));
if (!aRefs.isEmpty())
{
- ApiCellRangeList aRangeList;
- getAddressConverter().convertToCellRangeList( aRangeList, aRefs, getSheetIndex(), true );
- if (!aRangeList.empty())
+ std::unique_ptr<ScRangeList> xRangeList(new ScRangeList());
+ getAddressConverter().convertToCellRangeList( *xRangeList, aRefs, getSheetIndex(), true );
+ if (!xRangeList->empty())
{
- aProt.maRangeList = new ScRangeList;
- ScRangeList* pRangeList = aProt.maRangeList.get();
- for (::std::vector< css::table::CellRangeAddress >::const_iterator itr( aRangeList.begin()), end( aRangeList.end()); itr != end; ++itr)
- {
- ScRange aRange;
- ScUnoConversion::FillScRange( aRange, *itr);
- pRangeList->Append( aRange);
- }
+ aProt.maRangeList = xRangeList.release();
}
}
maSheetProt.maEnhancedProtections.push_back( aProt);
More information about the Libreoffice-commits
mailing list