Kaydet (Commit) c172b75b authored tarafından Markus Mohrhard's avatar Markus Mohrhard

add attribute mandated by ODF

Make sure that it does not confuse our importer by adding an attibute to
ignore it when the new elements have been added.

Change-Id: I15991be9dd993e2aeb18c440a14de3711f8001f4
üst 02bd1287
...@@ -994,6 +994,7 @@ namespace xmloff { namespace token { ...@@ -994,6 +994,7 @@ namespace xmloff { namespace token {
XML_IDEOGRAPH_ALPHA, XML_IDEOGRAPH_ALPHA,
XML_IGNORE_CASE, XML_IGNORE_CASE,
XML_IGNORE_EMPTY_ROWS, XML_IGNORE_EMPTY_ROWS,
XML_IGNORE_SELECTED_PAGE, // used for ODF compatibility
XML_ILLUSTRATION_INDEX, XML_ILLUSTRATION_INDEX,
XML_ILLUSTRATION_INDEX_ENTRY_TEMPLATE, XML_ILLUSTRATION_INDEX_ENTRY_TEMPLATE,
XML_ILLUSTRATION_INDEX_SOURCE, XML_ILLUSTRATION_INDEX_SOURCE,
......
...@@ -203,6 +203,7 @@ public: ...@@ -203,6 +203,7 @@ public:
void SetLayoutInfo(const ::com::sun::star::sheet::DataPilotFieldLayoutInfo* pNew); void SetLayoutInfo(const ::com::sun::star::sheet::DataPilotFieldLayoutInfo* pNew);
void SetCurrentPage( const OUString* pPage ); // NULL = no selection (all) void SetCurrentPage( const OUString* pPage ); // NULL = no selection (all)
OUString GetCurrentPage() const; // only for ODF compatibility
sal_uInt16 GetOrientation() const sal_uInt16 GetOrientation() const
{ return nOrientation; } { return nOrientation; }
......
...@@ -509,6 +509,19 @@ void ScDPSaveDimension::SetCurrentPage( const OUString* pPage ) ...@@ -509,6 +509,19 @@ void ScDPSaveDimension::SetCurrentPage( const OUString* pPage )
} }
} }
OUString ScDPSaveDimension::GetCurrentPage() const
{
MemberList::const_iterator it = maMemberList.begin(), itEnd = maMemberList.end();
for (; it != itEnd; ++it)
{
const ScDPSaveMember* pMem = *it;
if (pMem->GetIsVisible())
return pMem->GetName();
}
return OUString();
}
ScDPSaveMember* ScDPSaveDimension::GetExistingMemberByName(const OUString& rName) ScDPSaveMember* ScDPSaveDimension::GetExistingMemberByName(const OUString& rName)
{ {
MemberHash::const_iterator res = maMemberHash.find (rName); MemberHash::const_iterator res = maMemberHash.find (rName);
......
...@@ -690,8 +690,9 @@ void ScXMLExportDataPilot::WriteDimension(ScDPSaveDimension* pDim, const ScDPDim ...@@ -690,8 +690,9 @@ void ScXMLExportDataPilot::WriteDimension(ScDPSaveDimension* pDim, const ScDPDim
if (pDim->IsDataLayout()) if (pDim->IsDataLayout())
rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_IS_DATA_LAYOUT_FIELD, XML_TRUE); rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_IS_DATA_LAYOUT_FIELD, XML_TRUE);
OUString sValueStr; OUString sValueStr;
sheet::DataPilotFieldOrientation eOrientation = (sheet::DataPilotFieldOrientation) pDim->GetOrientation();
ScXMLConverter::GetStringFromOrientation( sValueStr, ScXMLConverter::GetStringFromOrientation( sValueStr,
(sheet::DataPilotFieldOrientation) pDim->GetOrientation() ); eOrientation);
if( !sValueStr.isEmpty() ) if( !sValueStr.isEmpty() )
rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ORIENTATION, sValueStr ); rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ORIENTATION, sValueStr );
if (pDim->GetUsedHierarchy() != 1) if (pDim->GetUsedHierarchy() != 1)
...@@ -704,6 +705,15 @@ void ScXMLExportDataPilot::WriteDimension(ScDPSaveDimension* pDim, const ScDPDim ...@@ -704,6 +705,15 @@ void ScXMLExportDataPilot::WriteDimension(ScDPSaveDimension* pDim, const ScDPDim
(sheet::GeneralFunction) pDim->GetFunction() ); (sheet::GeneralFunction) pDim->GetFunction() );
rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_FUNCTION, sValueStr); rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_FUNCTION, sValueStr);
if (eOrientation == sheet::DataPilotFieldOrientation_PAGE)
{
if (rExport.getDefaultVersion() > SvtSaveOptions::ODFVER_012)
{
rExport.AddAttribute(XML_NAMESPACE_LO_EXT, XML_IGNORE_SELECTED_PAGE, "true");
}
rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_SELECTED_PAGE, pDim->GetCurrentPage());
}
SvXMLElementExport aElemDPF(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_FIELD, true, true); SvXMLElementExport aElemDPF(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_FIELD, true, true);
WriteLevels(pDim); WriteLevels(pDim);
WriteFieldReference(pDim); WriteFieldReference(pDim);
......
...@@ -1000,6 +1000,7 @@ ScXMLDataPilotFieldContext::ScXMLDataPilotFieldContext( ScXMLImport& rImport, ...@@ -1000,6 +1000,7 @@ ScXMLDataPilotFieldContext::ScXMLDataPilotFieldContext( ScXMLImport& rImport,
{ {
bool bHasName = false; bool bHasName = false;
bool bDataLayout = false; bool bDataLayout = false;
bool bIgnoreSelectedPage = false;
OUString aDisplayName; OUString aDisplayName;
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0; sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotFieldAttrTokenMap(); const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotFieldAttrTokenMap();
...@@ -1046,6 +1047,11 @@ ScXMLDataPilotFieldContext::ScXMLDataPilotFieldContext( ScXMLImport& rImport, ...@@ -1046,6 +1047,11 @@ ScXMLDataPilotFieldContext::ScXMLDataPilotFieldContext( ScXMLImport& rImport,
bSelectedPage = true; bSelectedPage = true;
} }
break; break;
case XML_TOK_DATA_PILOT_FIELD_ATTR_IGNORE_SELECTED_PAGE:
{
bIgnoreSelectedPage = true;
}
break;
case XML_TOK_DATA_PILOT_FIELD_ATTR_USED_HIERARCHY : case XML_TOK_DATA_PILOT_FIELD_ATTR_USED_HIERARCHY :
{ {
nUsedHierarchy = sValue.toInt32(); nUsedHierarchy = sValue.toInt32();
...@@ -1053,6 +1059,11 @@ ScXMLDataPilotFieldContext::ScXMLDataPilotFieldContext( ScXMLImport& rImport, ...@@ -1053,6 +1059,11 @@ ScXMLDataPilotFieldContext::ScXMLDataPilotFieldContext( ScXMLImport& rImport,
break; break;
} }
} }
// use the new extension elements
if (bIgnoreSelectedPage)
bSelectedPage = false;
if (bHasName) if (bHasName)
{ {
pDim = new ScDPSaveDimension(sName, bDataLayout); pDim = new ScDPSaveDimension(sName, bDataLayout);
......
...@@ -1682,6 +1682,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotFieldAttrTokenMap() ...@@ -1682,6 +1682,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotFieldAttrTokenMap()
{ XML_NAMESPACE_TABLE, XML_FUNCTION, XML_TOK_DATA_PILOT_FIELD_ATTR_FUNCTION }, { XML_NAMESPACE_TABLE, XML_FUNCTION, XML_TOK_DATA_PILOT_FIELD_ATTR_FUNCTION },
{ XML_NAMESPACE_TABLE, XML_ORIENTATION, XML_TOK_DATA_PILOT_FIELD_ATTR_ORIENTATION }, { XML_NAMESPACE_TABLE, XML_ORIENTATION, XML_TOK_DATA_PILOT_FIELD_ATTR_ORIENTATION },
{ XML_NAMESPACE_TABLE, XML_SELECTED_PAGE, XML_TOK_DATA_PILOT_FIELD_ATTR_SELECTED_PAGE }, { XML_NAMESPACE_TABLE, XML_SELECTED_PAGE, XML_TOK_DATA_PILOT_FIELD_ATTR_SELECTED_PAGE },
{ XML_NAMESPACE_LO_EXT, XML_IGNORE_SELECTED_PAGE, XML_TOK_DATA_PILOT_FIELD_ATTR_IGNORE_SELECTED_PAGE },
{ XML_NAMESPACE_TABLE, XML_USED_HIERARCHY, XML_TOK_DATA_PILOT_FIELD_ATTR_USED_HIERARCHY }, { XML_NAMESPACE_TABLE, XML_USED_HIERARCHY, XML_TOK_DATA_PILOT_FIELD_ATTR_USED_HIERARCHY },
XML_TOKEN_MAP_END XML_TOKEN_MAP_END
}; };
......
...@@ -640,6 +640,7 @@ enum ScXMLDataPilotFieldAttrTokens ...@@ -640,6 +640,7 @@ enum ScXMLDataPilotFieldAttrTokens
XML_TOK_DATA_PILOT_FIELD_ATTR_FUNCTION, XML_TOK_DATA_PILOT_FIELD_ATTR_FUNCTION,
XML_TOK_DATA_PILOT_FIELD_ATTR_ORIENTATION, XML_TOK_DATA_PILOT_FIELD_ATTR_ORIENTATION,
XML_TOK_DATA_PILOT_FIELD_ATTR_SELECTED_PAGE, XML_TOK_DATA_PILOT_FIELD_ATTR_SELECTED_PAGE,
XML_TOK_DATA_PILOT_FIELD_ATTR_IGNORE_SELECTED_PAGE,
XML_TOK_DATA_PILOT_FIELD_ATTR_USED_HIERARCHY XML_TOK_DATA_PILOT_FIELD_ATTR_USED_HIERARCHY
}; };
......
...@@ -999,6 +999,7 @@ namespace xmloff { namespace token { ...@@ -999,6 +999,7 @@ namespace xmloff { namespace token {
TOKEN( "ideograph-alpha", XML_IDEOGRAPH_ALPHA ), TOKEN( "ideograph-alpha", XML_IDEOGRAPH_ALPHA ),
TOKEN( "ignore-case", XML_IGNORE_CASE ), TOKEN( "ignore-case", XML_IGNORE_CASE ),
TOKEN( "ignore-empty-rows", XML_IGNORE_EMPTY_ROWS ), TOKEN( "ignore-empty-rows", XML_IGNORE_EMPTY_ROWS ),
TOKEN( "ignore-selected-page", XML_IGNORE_SELECTED_PAGE ),
TOKEN( "illustration-index", XML_ILLUSTRATION_INDEX ), TOKEN( "illustration-index", XML_ILLUSTRATION_INDEX ),
TOKEN( "illustration-index-entry-template", XML_ILLUSTRATION_INDEX_ENTRY_TEMPLATE ), TOKEN( "illustration-index-entry-template", XML_ILLUSTRATION_INDEX_ENTRY_TEMPLATE ),
TOKEN( "illustration-index-source", XML_ILLUSTRATION_INDEX_SOURCE ), TOKEN( "illustration-index-source", XML_ILLUSTRATION_INDEX_SOURCE ),
......
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