Kaydet (Commit) a9588bac authored tarafından Mohammed Abdul Azeem's avatar Mohammed Abdul Azeem

Moving legacy contexts to FastContexts:

ScXMLTableShapesContext
ScXMLTableSourceContext
ScXMLTableColContext
ScXMLTableColsContext
ScXMLConditionalFormatsContext
ScXMLTableProtectionContext

Change-Id: I36704c7f51cd5d13b3c0ebf9bc07b172c1576f3e
Reviewed-on: https://gerrit.libreoffice.org/40246Reviewed-by: 's avatarMichael Meeks <michael.meeks@collabora.com>
Tested-by: 's avatarJenkins <ci@libreoffice.org>
üst e0bafa78
......@@ -25,10 +25,9 @@
using namespace com::sun::star;
ScXMLTableShapesContext::ScXMLTableShapesContext( ScXMLImport& rImport,
sal_uInt16 nPrfx,
const OUString& rLName,
const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ ) :
ScXMLImportContext( rImport, nPrfx, rLName )
sal_Int32 /*nElement*/,
const css::uno::Reference<css::xml::sax::XFastAttributeList>& /* xAttrList */ ) :
ScXMLImportContext( rImport )
{
// here are no attributes
}
......@@ -59,8 +58,4 @@ SvXMLImportContext *ScXMLTableShapesContext::CreateChildContext( sal_uInt16 nPre
return pContext;
}
void ScXMLTableShapesContext::EndElement()
{
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -27,17 +27,14 @@
class ScXMLTableShapesContext : public ScXMLImportContext
{
public:
ScXMLTableShapesContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
const OUString& rLName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList);
ScXMLTableShapesContext( ScXMLImport& rImport, sal_Int32 nElement,
const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList);
virtual ~ScXMLTableShapesContext() override;
virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLocalName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
virtual void EndElement() override;
};
#endif
......
......@@ -32,10 +32,9 @@ using namespace com::sun::star;
using namespace xmloff::token;
ScXMLTableSourceContext::ScXMLTableSourceContext( ScXMLImport& rImport,
sal_uInt16 nPrfx,
const OUString& rLName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList) :
ScXMLImportContext( rImport, nPrfx, rLName ),
sal_Int32 /*nElement*/,
const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList) :
ScXMLImportContext( rImport ),
sLink(),
sTableName(),
sFilterName(),
......@@ -43,37 +42,36 @@ ScXMLTableSourceContext::ScXMLTableSourceContext( ScXMLImport& rImport,
nRefresh(0),
nMode(sheet::SheetLinkMode_NORMAL)
{
sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0);
for( sal_Int16 i=0; i < nAttrCount; ++i )
if ( xAttrList.is() )
{
const OUString& sAttrName(xAttrList->getNameByIndex( i ));
OUString aLocalName;
sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName(
sAttrName, &aLocalName ));
const OUString& sValue(xAttrList->getValueByIndex( i ));
if(nPrefix == XML_NAMESPACE_XLINK)
{
if (IsXMLToken(aLocalName, XML_HREF))
sLink = GetScImport().GetAbsoluteReference(sValue);
}
else if (nPrefix == XML_NAMESPACE_TABLE)
sax_fastparser::FastAttributeList *pAttribList =
sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
for (auto &aIter : *pAttribList)
{
if (IsXMLToken(aLocalName, XML_TABLE_NAME))
sTableName = sValue;
else if (IsXMLToken(aLocalName, XML_FILTER_NAME))
sFilterName = sValue;
else if (IsXMLToken(aLocalName, XML_FILTER_OPTIONS))
sFilterOptions = sValue;
else if (IsXMLToken(aLocalName, XML_MODE))
switch (aIter.getToken())
{
if (IsXMLToken(sValue, XML_COPY_RESULTS_ONLY))
case XML_ELEMENT( XLINK, XML_HREF ):
sLink = GetScImport().GetAbsoluteReference(aIter.toString());
break;
case XML_ELEMENT( TABLE, XML_TABLE_NAME ):
sTableName = aIter.toString();
break;
case XML_ELEMENT( TABLE, XML_FILTER_NAME):
sFilterName = aIter.toString();
break;
case XML_ELEMENT( TABLE, XML_FILTER_OPTIONS ):
sFilterOptions = aIter.toString();
break;
case XML_ELEMENT( TABLE, XML_MODE ):
if (IsXMLToken(aIter, XML_COPY_RESULTS_ONLY))
nMode = sheet::SheetLinkMode_VALUE;
}
else if (IsXMLToken(aLocalName, XML_REFRESH_DELAY))
{
break;
case XML_ELEMENT( TABLE, XML_REFRESH_DELAY ):
double fTime;
if (::sax::Converter::convertDuration( fTime, sValue ))
if (::sax::Converter::convertDuration( fTime, aIter.toString() ))
nRefresh = std::max( (sal_Int32)(fTime * 86400.0), (sal_Int32)0 );
break;
}
}
}
......@@ -83,14 +81,13 @@ ScXMLTableSourceContext::~ScXMLTableSourceContext()
{
}
SvXMLImportContext *ScXMLTableSourceContext::CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLName,
const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLTableSourceContext::createFastChildContext(
sal_Int32 /*nElement*/, const uno::Reference< xml::sax::XFastAttributeList >& /*xAttrList*/ )
{
return new SvXMLImportContext( GetImport(), nPrefix, rLName );
return new SvXMLImportContext( GetImport() );
}
void ScXMLTableSourceContext::EndElement()
void SAL_CALL ScXMLTableSourceContext::endFastElement( sal_Int32 /*nElement*/ )
{
if (!sLink.isEmpty())
{
......
......@@ -35,17 +35,15 @@ class ScXMLTableSourceContext : public ScXMLImportContext
css::sheet::SheetLinkMode nMode;
public:
ScXMLTableSourceContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
const OUString& rLName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList);
ScXMLTableSourceContext( ScXMLImport& rImport, sal_Int32 nElement,
const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList);
virtual ~ScXMLTableSourceContext() override;
virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLocalName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
virtual void EndElement() override;
virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
};
#endif
......
......@@ -40,47 +40,43 @@ using namespace com::sun::star;
using namespace xmloff::token;
ScXMLTableColContext::ScXMLTableColContext( ScXMLImport& rImport,
sal_uInt16 nPrfx,
const OUString& rLName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) :
ScXMLImportContext( rImport, nPrfx, rLName ),
sal_Int32 /*nElement*/,
const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList ) :
ScXMLImportContext( rImport ),
sVisibility(GetXMLToken(XML_VISIBLE))
{
nColCount = 1;
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetTableColAttrTokenMap();
for( sal_Int16 i=0; i < nAttrCount; ++i )
if ( xAttrList.is() )
{
const OUString& sAttrName(xAttrList->getNameByIndex( i ));
OUString aLocalName;
sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
sAttrName, &aLocalName );
const OUString& sValue(xAttrList->getValueByIndex( i ));
sax_fastparser::FastAttributeList *pAttribList =
sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
for (auto &aIter : *pAttribList)
{
case XML_TOK_TABLE_COL_ATTR_REPEATED:
switch (aIter.getToken())
{
case XML_ELEMENT( TABLE, XML_NUMBER_COLUMNS_REPEATED ):
{
nColCount = std::max<sal_Int32>(sValue.toInt32(), 1);
nColCount = std::max<sal_Int32>(aIter.toInt32(), 1);
nColCount = std::min<sal_Int32>(nColCount, MAXCOLCOUNT);
}
break;
case XML_TOK_TABLE_COL_ATTR_STYLE_NAME:
case XML_ELEMENT( TABLE, XML_STYLE_NAME ):
{
sStyleName = sValue;
sStyleName = aIter.toString();
}
break;
case XML_TOK_TABLE_COL_ATTR_VISIBILITY:
case XML_ELEMENT( TABLE, XML_VISIBILITY ):
{
sVisibility = sValue;
sVisibility = aIter.toString();
}
break;
case XML_TOK_TABLE_COL_ATTR_DEFAULT_CELL_STYLE_NAME:
case XML_ELEMENT( TABLE, XML_DEFAULT_CELL_STYLE_NAME ):
{
sCellStyleName = sValue;
sCellStyleName = aIter.toString();
}
break;
}
}
}
}
......@@ -89,14 +85,13 @@ ScXMLTableColContext::~ScXMLTableColContext()
{
}
SvXMLImportContext *ScXMLTableColContext::CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLName,
const css::uno::Reference<css::xml::sax::XAttributeList>& /* xAttrList */ )
uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLTableColContext::createFastChildContext(
sal_Int32 /*nElement*/, const uno::Reference< xml::sax::XFastAttributeList >& /*xAttrList*/ )
{
return new SvXMLImportContext( GetImport(), nPrefix, rLName );
return new SvXMLImportContext( GetImport() );
}
void ScXMLTableColContext::EndElement()
void SAL_CALL ScXMLTableColContext::endFastElement( sal_Int32 /*nElement*/ )
{
ScXMLImport& rXMLImport = GetScImport();
SCTAB nSheet = rXMLImport.GetTables().GetCurrentSheet();
......@@ -152,11 +147,10 @@ void ScXMLTableColContext::EndElement()
}
ScXMLTableColsContext::ScXMLTableColsContext( ScXMLImport& rImport,
sal_uInt16 nPrfx,
const OUString& rLName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
sal_Int32 /*nElement*/,
const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
const bool bTempHeader, const bool bTempGroup) :
ScXMLImportContext( rImport, nPrfx, rLName ),
ScXMLImportContext( rImport ),
nHeaderStartCol(0),
nHeaderEndCol(0),
nGroupStartCol(0),
......@@ -171,20 +165,14 @@ ScXMLTableColsContext::ScXMLTableColsContext( ScXMLImport& rImport,
else if (bGroup)
{
nGroupStartCol = rImport.GetTables().GetCurrentColCount();
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
for( sal_Int16 i=0; i < nAttrCount; ++i )
if ( xAttrList.is() )
{
const OUString& sAttrName(xAttrList->getNameByIndex( i ));
OUString aLocalName;
sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
sAttrName, &aLocalName );
const OUString& sValue(xAttrList->getValueByIndex( i ));
sax_fastparser::FastAttributeList *pAttribList =
sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
if (nPrefix == XML_NAMESPACE_TABLE && IsXMLToken(aLocalName, XML_DISPLAY))
{
if (IsXMLToken(sValue, XML_FALSE))
bGroupDisplay = false;
}
auto &aIter( pAttribList->find( XML_ELEMENT( TABLE, XML_DISPLAY ) ) );
if ( aIter != pAttribList->end() && IsXMLToken(aIter, XML_FALSE) )
bGroupDisplay = false;
}
}
}
......@@ -193,45 +181,39 @@ ScXMLTableColsContext::~ScXMLTableColsContext()
{
}
SvXMLImportContext *ScXMLTableColsContext::CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLTableColsContext::createFastChildContext(
sal_Int32 nElement, const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
{
SvXMLImportContext *pContext = nullptr;
const SvXMLTokenMap& rTokenMap = GetScImport().GetTableColsElemTokenMap();
switch( rTokenMap.Get( nPrefix, rLName ) )
switch (nElement)
{
case XML_TOK_TABLE_COLS_COL_GROUP:
pContext = new ScXMLTableColsContext( GetScImport(), nPrefix,
rLName, xAttrList,
case XML_ELEMENT( TABLE, XML_TABLE_COLUMN_GROUP ):
pContext = new ScXMLTableColsContext( GetScImport(), nElement, xAttrList,
false, true );
break;
case XML_TOK_TABLE_COLS_HEADER_COLS:
pContext = new ScXMLTableColsContext( GetScImport(), nPrefix,
rLName, xAttrList,
case XML_ELEMENT( TABLE, XML_TABLE_HEADER_COLUMNS ):
pContext = new ScXMLTableColsContext( GetScImport(), nElement, xAttrList,
true, false );
break;
case XML_TOK_TABLE_COLS_COLS:
pContext = new ScXMLTableColsContext( GetScImport(), nPrefix,
rLName, xAttrList,
case XML_ELEMENT( TABLE, XML_TABLE_COLUMNS ):
pContext = new ScXMLTableColsContext( GetScImport(), nElement, xAttrList,
false, false );
break;
case XML_TOK_TABLE_COLS_COL:
pContext = new ScXMLTableColContext( GetScImport(), nPrefix,
rLName, xAttrList//,
case XML_ELEMENT( TABLE, XML_TABLE_COLUMN ):
pContext = new ScXMLTableColContext( GetScImport(), nElement, xAttrList//,
//this
);
break;
}
if( !pContext )
pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
pContext = new SvXMLImportContext( GetImport() );
return pContext;
}
void ScXMLTableColsContext::EndElement()
void SAL_CALL ScXMLTableColsContext::endFastElement( sal_Int32 /*nElement*/ )
{
ScXMLImport& rXMLImport = GetScImport();
if (bHeader)
......
......@@ -33,17 +33,15 @@ class ScXMLTableColContext : public ScXMLImportContext
public:
ScXMLTableColContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
const OUString& rLName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList );
ScXMLTableColContext( ScXMLImport& rImport, sal_Int32 nElement,
const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList );
virtual ~ScXMLTableColContext() override;
virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLocalName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
virtual void EndElement() override;
virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
};
class ScXMLTableColsContext : public ScXMLImportContext
......@@ -58,18 +56,16 @@ class ScXMLTableColsContext : public ScXMLImportContext
public:
ScXMLTableColsContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
const OUString& rLName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList,
ScXMLTableColsContext( ScXMLImport& rImport, sal_Int32 nElement,
const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList,
const bool bHeader, const bool bGroup);
virtual ~ScXMLTableColsContext() override;
virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLocalName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
virtual void EndElement() override;
virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
};
#endif
......
......@@ -21,9 +21,8 @@
#include "XMLConverter.hxx"
#include "stylehelper.hxx"
ScXMLConditionalFormatsContext::ScXMLConditionalFormatsContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
const OUString& rLName):
ScXMLImportContext( rImport, nPrfx, rLName )
ScXMLConditionalFormatsContext::ScXMLConditionalFormatsContext( ScXMLImport& rImport, sal_Int32 /*nElement*/ ):
ScXMLImportContext( rImport )
{
GetScImport().SetNewCondFormatData();
GetScImport().GetDocument()->SetCondFormList(new ScConditionalFormatList(), GetScImport().GetTables().GetCurrentSheet());
......@@ -46,7 +45,7 @@ SvXMLImportContext* ScXMLConditionalFormatsContext::CreateChildContext( sal_uInt
return pContext;
}
void ScXMLConditionalFormatsContext::EndElement()
void SAL_CALL ScXMLConditionalFormatsContext::endFastElement( sal_Int32 /*nElement*/ )
{
ScDocument* pDoc = GetScImport().GetDocument();
......
......@@ -26,14 +26,13 @@ struct ScIconSetFormatData;
class ScXMLConditionalFormatsContext : public ScXMLImportContext
{
public:
ScXMLConditionalFormatsContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
const OUString& rLName );
ScXMLConditionalFormatsContext( ScXMLImport& rImport, sal_Int32 nElement );
virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLocalName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
virtual void EndElement() override;
virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
};
class ScXMLConditionalFormatContext : public ScXMLImportContext
......
......@@ -21,6 +21,7 @@
#include <xmloff/nmspmap.hxx>
#include <xmloff/xmltoken.hxx>
#include "xmlimprt.hxx"
#include <xmloff/xmlnmspe.hxx>
#include <o3tl/make_unique.hxx>
......@@ -41,55 +42,49 @@ ScXMLLabelRangesContext::~ScXMLLabelRangesContext()
GetScImport().UnlockSolarMutex();
}
SvXMLImportContext* ScXMLLabelRangesContext::CreateChildContext(
sal_uInt16 nPrefix,
const OUString& rLName,
const uno::Reference< xml::sax::XAttributeList >& xAttrList )
uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLLabelRangesContext::createFastChildContext(
sal_Int32 nElement, const uno::Reference< xml::sax::XFastAttributeList >& xAttrList )
{
SvXMLImportContext* pContext(nullptr);
const SvXMLTokenMap& rTokenMap(GetScImport().GetLabelRangesElemTokenMap());
switch( rTokenMap.Get( nPrefix, rLName ) )
switch (nElement)
{
case XML_TOK_LABEL_RANGE_ELEM:
pContext = new ScXMLLabelRangeContext( GetScImport(), nPrefix, rLName, xAttrList );
case XML_ELEMENT( TABLE, XML_LABEL_RANGE ):
pContext = new ScXMLLabelRangeContext( GetScImport(), nElement, xAttrList );
break;
}
if( !pContext )
pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
pContext = new SvXMLImportContext( GetImport() );
return pContext;
}
ScXMLLabelRangeContext::ScXMLLabelRangeContext(
ScXMLImport& rImport,
sal_uInt16 nPrfx,
const OUString& rLName,
const uno::Reference< xml::sax::XAttributeList >& xAttrList ) :
ScXMLImportContext( rImport, nPrfx, rLName ),
sal_Int32 /*nElement*/,
const uno::Reference< xml::sax::XFastAttributeList >& xAttrList ) :
ScXMLImportContext( rImport ),
bColumnOrientation( false )
{
sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0);
const SvXMLTokenMap& rAttrTokenMap(GetScImport().GetLabelRangeAttrTokenMap());
for( sal_Int16 nIndex = 0; nIndex < nAttrCount; ++nIndex )
if ( xAttrList.is() )
{
const OUString& sAttrName (xAttrList->getNameByIndex( nIndex ));
const OUString& sValue (xAttrList->getValueByIndex( nIndex ));
OUString aLocalName;
sal_uInt16 nPrefix (GetScImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName ));
sax_fastparser::FastAttributeList *pAttribList =
sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
for (auto &aIter : *pAttribList)
{
case XML_TOK_LABEL_RANGE_ATTR_LABEL_RANGE:
sLabelRangeStr = sValue;
break;
case XML_TOK_LABEL_RANGE_ATTR_DATA_RANGE:
sDataRangeStr = sValue;
break;
case XML_TOK_LABEL_RANGE_ATTR_ORIENTATION:
bColumnOrientation = IsXMLToken(sValue, XML_COLUMN );
break;
switch (aIter.getToken())
{
case XML_ELEMENT( TABLE, XML_LABEL_CELL_RANGE_ADDRESS ):
sLabelRangeStr = aIter.toString();
break;
case XML_ELEMENT( TABLE, XML_DATA_CELL_RANGE_ADDRESS ):
sDataRangeStr = aIter.toString();
break;
case XML_ELEMENT( TABLE, XML_ORIENTATION ):
bColumnOrientation = IsXMLToken(aIter, XML_COLUMN );
break;
}
}
}
}
......@@ -98,15 +93,13 @@ ScXMLLabelRangeContext::~ScXMLLabelRangeContext()
{
}
SvXMLImportContext* ScXMLLabelRangeContext::CreateChildContext(
sal_uInt16 nPrefix,
const OUString& rLName,
const uno::Reference< xml::sax::XAttributeList >& /* xAttrList */ )
uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLLabelRangeContext::createFastChildContext(
sal_Int32 /*nElement*/, const uno::Reference< xml::sax::XFastAttributeList >& /*xAttrList*/ )
{
return new SvXMLImportContext( GetImport(), nPrefix, rLName );
return new SvXMLImportContext( GetImport() );
}
void ScXMLLabelRangeContext::EndElement()
void SAL_CALL ScXMLLabelRangeContext::endFastElement( sal_Int32 /*nElement*/ )
{
// Label ranges must be stored as strings until all sheets are loaded
// (like named expressions).
......
......@@ -33,10 +33,10 @@ public:
);
virtual ~ScXMLLabelRangesContext() override;
virtual SvXMLImportContext* CreateChildContext(
sal_uInt16 nPrefix,
const OUString& rLocalName,
const css::uno::Reference< css::xml::sax::XAttributeList>& xAttrList
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL
createFastChildContext(
sal_Int32 nElement,
const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList
) override;
};
......@@ -50,18 +50,17 @@ private:
public:
ScXMLLabelRangeContext(
ScXMLImport& rImport,
sal_uInt16 nPrefix,
const OUString& rLName,
const css::uno::Reference< css::xml::sax::XAttributeList>& xAttrList
sal_Int32 nElement,
const css::uno::Reference< css::xml::sax::XFastAttributeList>& xAttrList
);
virtual ~ScXMLLabelRangeContext() override;
virtual SvXMLImportContext* CreateChildContext(
sal_uInt16 nPrefix,
const OUString& rLocalName,
const css::uno::Reference< css::xml::sax::XAttributeList>& xAttrList
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL
createFastChildContext(
sal_Int32 nElement,
const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList
) override;
virtual void EndElement() override;
virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
};
#endif
......
......@@ -28,6 +28,7 @@
#include <xmloff/xmltkmap.hxx>
#include <xmloff/nmspmap.hxx>
#include <xmloff/xmltoken.hxx>
#include <xmloff/xmlnmspe.hxx>
#include <sax/tools/converter.hxx>
......@@ -36,10 +37,9 @@ using namespace xmloff::token;
ScXMLTableScenarioContext::ScXMLTableScenarioContext(
ScXMLImport& rImport,
sal_uInt16 nPrfx,
const OUString& rLName,
const uno::Reference< xml::sax::XAttributeList >& xAttrList ):
ScXMLImportContext( rImport, nPrfx, rLName ),
sal_Int32 /*nElement*/,
const uno::Reference< xml::sax::XFastAttributeList >& xAttrList ):
ScXMLImportContext( rImport ),
aBorderColor( COL_BLACK ),
bDisplayBorder( true ),
bCopyBack( true ),
......@@ -49,66 +49,49 @@ ScXMLTableScenarioContext::ScXMLTableScenarioContext(
bProtected( false )
{
rImport.LockSolarMutex();
sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0);
const SvXMLTokenMap& rAttrTokenMap(GetScImport().GetTableScenarioAttrTokenMap());
for( sal_Int16 i = 0; i < nAttrCount; ++i )
if ( xAttrList.is() )
{
const OUString& sAttrName(xAttrList->getNameByIndex( i ));
OUString aLocalName;
sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName(
sAttrName, &aLocalName ));
const OUString& sValue(xAttrList->getValueByIndex( i ));
sax_fastparser::FastAttributeList *pAttribList =
sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
switch( rAttrTokenMap.Get( nPrefix, aLocalName ) )
for (auto &aIter : *pAttribList)
{
case XML_TOK_TABLE_SCENARIO_ATTR_DISPLAY_BORDER:
{
bDisplayBorder = IsXMLToken(sValue, XML_TRUE);
}
break;
case XML_TOK_TABLE_SCENARIO_ATTR_BORDER_COLOR:
{
sal_Int32 nColor(0);
::sax::Converter::convertColor(nColor, sValue);
aBorderColor.SetColor(nColor);
}
break;
case XML_TOK_TABLE_SCENARIO_ATTR_COPY_BACK:
{
bCopyBack = IsXMLToken(sValue, XML_TRUE);
}
break;
case XML_TOK_TABLE_SCENARIO_ATTR_COPY_STYLES:
{
bCopyStyles = IsXMLToken(sValue, XML_TRUE);
}
break;
case XML_TOK_TABLE_SCENARIO_ATTR_COPY_FORMULAS:
{
bCopyFormulas = IsXMLToken(sValue, XML_TRUE);
}
break;
case XML_TOK_TABLE_SCENARIO_ATTR_IS_ACTIVE:
{
bIsActive = IsXMLToken(sValue, XML_TRUE);
}
break;
case XML_TOK_TABLE_SCENARIO_ATTR_SCENARIO_RANGES:
switch (aIter.getToken())
{
case XML_ELEMENT( TABLE, XML_DISPLAY_BORDER ):
bDisplayBorder = IsXMLToken(aIter, XML_TRUE);
break;
case XML_ELEMENT( TABLE, XML_BORDER_COLOR ):
{
sal_Int32 nColor(0);
::sax::Converter::convertColor(nColor, aIter.toString());
aBorderColor.SetColor(nColor);
}
break;
case XML_ELEMENT( TABLE, XML_COPY_BACK ):
bCopyBack = IsXMLToken(aIter, XML_TRUE);
break;
case XML_ELEMENT( TABLE, XML_COPY_STYLES ):
bCopyStyles = IsXMLToken(aIter, XML_TRUE);
break;
case XML_ELEMENT( TABLE, XML_COPY_FORMULAS ):
bCopyFormulas = IsXMLToken(aIter, XML_TRUE);
break;
case XML_ELEMENT( TABLE, XML_IS_ACTIVE ):
bIsActive = IsXMLToken(aIter, XML_TRUE);
break;
case XML_ELEMENT( TABLE, XML_SCENARIO_RANGES ):
ScRangeStringConverter::GetRangeListFromString(
aScenarioRanges, sValue, GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO );
}
break;
case XML_TOK_TABLE_SCENARIO_ATTR_COMMENT:
{
sComment = sValue;
}
break;
case XML_TOK_TABLE_SCENARIO_ATTR_PROTECTED:
{
bProtected = IsXMLToken(sValue, XML_TRUE);
aScenarioRanges, aIter.toString(), GetScImport().GetDocument(), ::formula::FormulaGrammar::CONV_OOO );
break;
case XML_ELEMENT( TABLE, XML_COMMENT ):
sComment = aIter.toString();
break;
case XML_ELEMENT( TABLE, XML_PROTECTED ):
bProtected = IsXMLToken(aIter, XML_TRUE);
break;
}
break;
}
}
}
......@@ -118,15 +101,13 @@ ScXMLTableScenarioContext::~ScXMLTableScenarioContext()
GetScImport().UnlockSolarMutex();
}
SvXMLImportContext *ScXMLTableScenarioContext::CreateChildContext(
sal_uInt16 nPrefix,
const OUString& rLName,
const uno::Reference< xml::sax::XAttributeList >& /* xAttrList */ )
uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLTableScenarioContext::createFastChildContext(
sal_Int32 /*nElement*/, const uno::Reference< xml::sax::XFastAttributeList >& /*xAttrList*/ )
{
return new SvXMLImportContext( GetImport(), nPrefix, rLName );
return new SvXMLImportContext( GetImport() );
}
void ScXMLTableScenarioContext::EndElement()
void SAL_CALL ScXMLTableScenarioContext::endFastElement( sal_Int32 /*nElement*/ )
{
SCTAB nCurrTable( GetScImport().GetTables().GetCurrentSheet() );
ScDocument* pDoc(GetScImport().GetDocument());
......
......@@ -42,17 +42,15 @@ private:
public:
ScXMLTableScenarioContext( ScXMLImport& rImport, sal_uInt16 nPrfx,
const OUString& rLName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList );
ScXMLTableScenarioContext( ScXMLImport& rImport, sal_Int32 nElement,
const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList );
virtual ~ScXMLTableScenarioContext() override;
virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLocalName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
virtual void EndElement() override;
virtual void SAL_CALL endFastElement( sal_Int32 nElement ) override;
};
#endif
......
......@@ -215,7 +215,7 @@ ScXMLTableContext::~ScXMLTableContext()
SvXMLImportContext *ScXMLTableContext::CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList )
const css::uno::Reference<css::xml::sax::XAttributeList>& /*xAttrList*/ )
{
const SvXMLTokenMap& rTokenMap(GetScImport().GetTableElemTokenMap());
sal_uInt16 nToken = rTokenMap.Get(nPrefix, rLName);
......@@ -228,38 +228,6 @@ SvXMLImportContext *ScXMLTableContext::CreateChildContext( sal_uInt16 nPrefix,
switch (nToken)
{
case XML_TOK_TABLE_COL_GROUP:
pContext = new ScXMLTableColsContext( GetScImport(), nPrefix,
rLName, xAttrList,
false, true );
break;
case XML_TOK_TABLE_HEADER_COLS:
pContext = new ScXMLTableColsContext( GetScImport(), nPrefix,
rLName, xAttrList,
true, false );
break;
case XML_TOK_TABLE_COLS:
pContext = new ScXMLTableColsContext( GetScImport(), nPrefix,
rLName, xAttrList,
false, false );
break;
case XML_TOK_TABLE_COL:
pContext = new ScXMLTableColContext( GetScImport(), nPrefix,
rLName, xAttrList );
break;
case XML_TOK_TABLE_PROTECTION:
case XML_TOK_TABLE_PROTECTION_EXT:
pContext = new ScXMLTableProtectionContext( GetScImport(), nPrefix, rLName, xAttrList );
break;
case XML_TOK_TABLE_SOURCE:
pContext = new ScXMLTableSourceContext( GetScImport(), nPrefix, rLName, xAttrList);
break;
case XML_TOK_TABLE_SCENARIO:
pContext = new ScXMLTableScenarioContext( GetScImport(), nPrefix, rLName, xAttrList);
break;
case XML_TOK_TABLE_SHAPES:
pContext = new ScXMLTableShapesContext( GetScImport(), nPrefix, rLName, xAttrList);
break;
case XML_TOK_TABLE_FORMS:
{
GetScImport().GetFormImport()->startPage(GetScImport().GetTables().GetCurrentXDrawPage());
......@@ -275,9 +243,6 @@ SvXMLImportContext *ScXMLTableContext::CreateChildContext( sal_uInt16 nPrefix,
pContext = new XMLEventsImportContext( GetImport(), nPrefix, rLName, xSupplier );
}
break;
case XML_TOK_TABLE_CONDFORMATS:
pContext = new ScXMLConditionalFormatsContext( GetScImport(), nPrefix, rLName );
break;
default:
;
}
......@@ -328,6 +293,26 @@ uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
new ScXMLNamedExpressionsContext::SheetLocalInserter(GetScImport(), nTab));
}
break;
case XML_ELEMENT( TABLE, XML_TABLE_COLUMN_GROUP ):
pContext = new ScXMLTableColsContext( GetScImport(), nElement, xAttrList,
false, true );
break;
case XML_ELEMENT( TABLE, XML_TABLE_HEADER_COLUMNS ):
pContext = new ScXMLTableColsContext( GetScImport(), nElement, xAttrList,
true, false );
break;
case XML_ELEMENT( TABLE, XML_TABLE_COLUMNS ):
pContext = new ScXMLTableColsContext( GetScImport(), nElement, xAttrList,
false, false );
break;
case XML_ELEMENT( TABLE, XML_TABLE_COLUMN ):
pContext = new ScXMLTableColContext( GetScImport(), nElement, xAttrList );
break;
case XML_ELEMENT( TABLE, XML_TABLE_PROTECTION ):
case XML_ELEMENT( LO_EXT, XML_TABLE_PROTECTION ):
case XML_ELEMENT( OFFICE_EXT, XML_TABLE_PROTECTION ):
pContext = new ScXMLTableProtectionContext( GetScImport(), nElement, xAttrList );
break;
case XML_ELEMENT( TABLE, XML_TABLE_ROW_GROUP ):
pContext = new ScXMLTableRowsContext( GetScImport(), xAttrList,
false, true );
......@@ -343,6 +328,18 @@ uno::Reference< xml::sax::XFastContextHandler > SAL_CALL
case XML_ELEMENT( TABLE, XML_TABLE_ROW ):
pContext = new ScXMLTableRowContext( GetScImport(),xAttrList );
break;
case XML_ELEMENT( TABLE, XML_TABLE_SOURCE ):
pContext = new ScXMLTableSourceContext( GetScImport(), nElement, xAttrList);
break;
case XML_ELEMENT( TABLE, XML_SCENARIO ):
pContext = new ScXMLTableScenarioContext( GetScImport(), nElement, xAttrList);
break;
case XML_ELEMENT( TABLE, XML_SHAPES ):
pContext = new ScXMLTableShapesContext( GetScImport(), nElement, xAttrList);
break;
case XML_ELEMENT( CALC_EXT, XML_CONDITIONAL_FORMATS ):
pContext = new ScXMLConditionalFormatsContext( GetScImport(), nElement );
break;
default:
pContext = new SvXMLImportContext( GetImport() );
}
......@@ -432,11 +429,10 @@ void SAL_CALL ScXMLTableContext::endFastElement(sal_Int32 /*nElement*/)
}
ScXMLTableProtectionContext::ScXMLTableProtectionContext(
ScXMLImport& rImport, sal_uInt16 nPrefix, const OUString& rLName,
const Reference<XAttributeList>& xAttrList ) :
ScXMLImportContext( rImport, nPrefix, rLName )
ScXMLImport& rImport, sal_Int32 /*nElement*/,
const Reference< xml::sax::XFastAttributeList>& xAttrList ) :
ScXMLImportContext( rImport )
{
const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetTableProtectionAttrTokenMap();
bool bSelectProtectedCells = false;
bool bSelectUnprotectedCells = false;
bool bInsertColumns = false;
......@@ -444,41 +440,42 @@ ScXMLTableProtectionContext::ScXMLTableProtectionContext(
bool bDeleteColumns = false;
bool bDeleteRows = false;
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
for (sal_Int16 i = 0; i < nAttrCount; ++i)
if ( xAttrList.is() )
{
const OUString& aAttrName = xAttrList->getNameByIndex(i);
const OUString aValue = xAttrList->getValueByIndex(i);
OUString aLocalName;
sal_uInt16 nLocalPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName(
aAttrName, &aLocalName);
sax_fastparser::FastAttributeList *pAttribList =
sax_fastparser::FastAttributeList::castToFastAttributeList( xAttrList );
switch (rAttrTokenMap.Get(nLocalPrefix, aLocalName))
for (auto &aIter : *pAttribList)
{
case XML_TOK_TABLE_SELECT_PROTECTED_CELLS:
case XML_TOK_TABLE_SELECT_PROTECTED_CELLS_EXT:
bSelectProtectedCells = IsXMLToken(aValue, XML_TRUE);
sal_Int32 nToken = aIter.getToken();
switch (nToken)
{
case XML_ELEMENT( TABLE, XML_SELECT_PROTECTED_CELLS ):
case XML_ELEMENT( OFFICE_EXT, XML_SELECT_PROTECTED_CELLS ):
case XML_ELEMENT( LO_EXT, XML_SELECT_PROTECTED_CELLS ):
bSelectProtectedCells = IsXMLToken(aIter, XML_TRUE);
break;
case XML_TOK_TABLE_SELECT_UNPROTECTED_CELLS:
case XML_TOK_TABLE_SELECT_UNPROTECTED_CELLS_EXT:
bSelectUnprotectedCells = IsXMLToken(aValue, XML_TRUE);
case XML_ELEMENT( TABLE, XML_SELECT_UNPROTECTED_CELLS ):
case XML_ELEMENT( OFFICE_EXT, XML_SELECT_UNPROTECTED_CELLS ):
case XML_ELEMENT( LO_EXT, XML_SELECT_UNPROTECTED_CELLS ):
bSelectUnprotectedCells = IsXMLToken(aIter, XML_TRUE);
break;
case XML_TOK_TABLE_INSERT_COLUMNS_EXT:
bInsertColumns = IsXMLToken(aValue, XML_TRUE);
case XML_ELEMENT( LO_EXT, XML_INSERT_COLUMNS ):
bInsertColumns = IsXMLToken(aIter, XML_TRUE);
break;
case XML_TOK_TABLE_INSERT_ROWS_EXT:
bInsertRows = IsXMLToken(aValue, XML_TRUE);
case XML_ELEMENT( LO_EXT, XML_INSERT_ROWS ):
bInsertRows = IsXMLToken(aIter, XML_TRUE);
break;
case XML_TOK_TABLE_DELETE_COLUMNS_EXT:
bDeleteColumns = IsXMLToken(aValue, XML_TRUE);
case XML_ELEMENT( LO_EXT, XML_DELETE_COLUMNS ):
bDeleteColumns = IsXMLToken(aIter, XML_TRUE);
break;
case XML_TOK_TABLE_DELETE_ROWS_EXT:
bDeleteRows = IsXMLToken(aValue, XML_TRUE);
case XML_ELEMENT( LO_EXT, XML_DELETE_ROWS ):
bDeleteRows = IsXMLToken(aIter, XML_TRUE);
break;
default:
SAL_WARN("sc", "unknown attribute: " << aAttrName);
SAL_WARN("sc", "unknown attribute: " << nToken);
}
}
}
......@@ -495,14 +492,10 @@ ScXMLTableProtectionContext::~ScXMLTableProtectionContext()
{
}
SvXMLImportContext* ScXMLTableProtectionContext::CreateChildContext(
sal_uInt16 /*nPrefix*/, const OUString& /*rLocalName*/, const Reference<XAttributeList>& /*xAttrList*/ )
uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLTableProtectionContext::createFastChildContext(
sal_Int32 /*nElement*/, const uno::Reference< xml::sax::XFastAttributeList >& /*xAttrList*/ )
{
return nullptr;
}
void ScXMLTableProtectionContext::EndElement()
{
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -67,17 +67,13 @@ public:
class ScXMLTableProtectionContext : public ScXMLImportContext
{
public:
ScXMLTableProtectionContext( ScXMLImport& rImport, sal_uInt16 nPrefix,
const OUString& rLName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList );
ScXMLTableProtectionContext( ScXMLImport& rImport, sal_Int32 nElement,
const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList );
virtual ~ScXMLTableProtectionContext() override;
virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
const OUString& rLocalName,
const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override;
virtual void EndElement() override;
virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) override;
};
#endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment