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 {
XML_IDEOGRAPH_ALPHA,
XML_IGNORE_CASE,
XML_IGNORE_EMPTY_ROWS,
XML_IGNORE_SELECTED_PAGE, // used for ODF compatibility
XML_ILLUSTRATION_INDEX,
XML_ILLUSTRATION_INDEX_ENTRY_TEMPLATE,
XML_ILLUSTRATION_INDEX_SOURCE,
......
......@@ -203,6 +203,7 @@ public:
void SetLayoutInfo(const ::com::sun::star::sheet::DataPilotFieldLayoutInfo* pNew);
void SetCurrentPage( const OUString* pPage ); // NULL = no selection (all)
OUString GetCurrentPage() const; // only for ODF compatibility
sal_uInt16 GetOrientation() const
{ return nOrientation; }
......
......@@ -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)
{
MemberHash::const_iterator res = maMemberHash.find (rName);
......
......@@ -690,8 +690,9 @@ void ScXMLExportDataPilot::WriteDimension(ScDPSaveDimension* pDim, const ScDPDim
if (pDim->IsDataLayout())
rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_IS_DATA_LAYOUT_FIELD, XML_TRUE);
OUString sValueStr;
sheet::DataPilotFieldOrientation eOrientation = (sheet::DataPilotFieldOrientation) pDim->GetOrientation();
ScXMLConverter::GetStringFromOrientation( sValueStr,
(sheet::DataPilotFieldOrientation) pDim->GetOrientation() );
eOrientation);
if( !sValueStr.isEmpty() )
rExport.AddAttribute(XML_NAMESPACE_TABLE, XML_ORIENTATION, sValueStr );
if (pDim->GetUsedHierarchy() != 1)
......@@ -704,6 +705,15 @@ void ScXMLExportDataPilot::WriteDimension(ScDPSaveDimension* pDim, const ScDPDim
(sheet::GeneralFunction) pDim->GetFunction() );
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);
WriteLevels(pDim);
WriteFieldReference(pDim);
......
......@@ -1000,6 +1000,7 @@ ScXMLDataPilotFieldContext::ScXMLDataPilotFieldContext( ScXMLImport& rImport,
{
bool bHasName = false;
bool bDataLayout = false;
bool bIgnoreSelectedPage = false;
OUString aDisplayName;
sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
const SvXMLTokenMap& rAttrTokenMap = GetScImport().GetDataPilotFieldAttrTokenMap();
......@@ -1046,6 +1047,11 @@ ScXMLDataPilotFieldContext::ScXMLDataPilotFieldContext( ScXMLImport& rImport,
bSelectedPage = true;
}
break;
case XML_TOK_DATA_PILOT_FIELD_ATTR_IGNORE_SELECTED_PAGE:
{
bIgnoreSelectedPage = true;
}
break;
case XML_TOK_DATA_PILOT_FIELD_ATTR_USED_HIERARCHY :
{
nUsedHierarchy = sValue.toInt32();
......@@ -1053,6 +1059,11 @@ ScXMLDataPilotFieldContext::ScXMLDataPilotFieldContext( ScXMLImport& rImport,
break;
}
}
// use the new extension elements
if (bIgnoreSelectedPage)
bSelectedPage = false;
if (bHasName)
{
pDim = new ScDPSaveDimension(sName, bDataLayout);
......
......@@ -1682,6 +1682,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotFieldAttrTokenMap()
{ 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_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_TOKEN_MAP_END
};
......
......@@ -640,6 +640,7 @@ enum ScXMLDataPilotFieldAttrTokens
XML_TOK_DATA_PILOT_FIELD_ATTR_FUNCTION,
XML_TOK_DATA_PILOT_FIELD_ATTR_ORIENTATION,
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
};
......
......@@ -999,6 +999,7 @@ namespace xmloff { namespace token {
TOKEN( "ideograph-alpha", XML_IDEOGRAPH_ALPHA ),
TOKEN( "ignore-case", XML_IGNORE_CASE ),
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-entry-template", XML_ILLUSTRATION_INDEX_ENTRY_TEMPLATE ),
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