Kaydet (Commit) 885c328b authored tarafından Eike Rathke's avatar Eike Rathke

dr78: #i116044# correct handling of DataPilot grand total name

# HG changeset patch
# User Niklas Nebel <nn@openoffice.org>
# Date 1292000347 -3600
# Node ID 984bd7503f69a7ecc5d9e916b45b15c5f95c4a5b
# Parent  3462fe872c2af31b7276ef28a7b011f40369e2eb
üst 6341603c
...@@ -735,7 +735,7 @@ void ScXMLExportDataPilot::WriteGrandTotal(::xmloff::token::XMLTokenEnum eOrient ...@@ -735,7 +735,7 @@ void ScXMLExportDataPilot::WriteGrandTotal(::xmloff::token::XMLTokenEnum eOrient
if (pGrandTotal) if (pGrandTotal)
rExport.AddAttribute(XML_NAMESPACE_TABLE_EXT, XML_DISPLAY_NAME, *pGrandTotal); rExport.AddAttribute(XML_NAMESPACE_TABLE_EXT, XML_DISPLAY_NAME, *pGrandTotal);
SvXMLElementExport aElemGrandTotal(rExport, XML_NAMESPACE_TABLE, XML_DATA_PILOT_GRAND_TOTAL, true, true); SvXMLElementExport aElemGrandTotal(rExport, XML_NAMESPACE_TABLE_EXT, XML_DATA_PILOT_GRAND_TOTAL, true, true);
} }
void ScXMLExportDataPilot::WriteDataPilots(const uno::Reference <sheet::XSpreadsheetDocument>& /* xSpreadDoc */) void ScXMLExportDataPilot::WriteDataPilots(const uno::Reference <sheet::XSpreadsheetDocument>& /* xSpreadDoc */)
......
...@@ -273,6 +273,7 @@ SvXMLImportContext *ScXMLDataPilotTableContext::CreateChildContext( sal_uInt16 n ...@@ -273,6 +273,7 @@ SvXMLImportContext *ScXMLDataPilotTableContext::CreateChildContext( sal_uInt16 n
} }
break; break;
case XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL: case XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL:
case XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL_EXT:
{ {
pContext = new ScXMLDataPilotGrandTotalContext(GetScImport(), nPrefix, rLName, xAttrList, this); pContext = new ScXMLDataPilotGrandTotalContext(GetScImport(), nPrefix, rLName, xAttrList, this);
} }
...@@ -806,9 +807,9 @@ ScXMLDataPilotGrandTotalContext::~ScXMLDataPilotGrandTotalContext() ...@@ -806,9 +807,9 @@ ScXMLDataPilotGrandTotalContext::~ScXMLDataPilotGrandTotalContext()
} }
SvXMLImportContext* ScXMLDataPilotGrandTotalContext::CreateChildContext( SvXMLImportContext* ScXMLDataPilotGrandTotalContext::CreateChildContext(
sal_uInt16 /*nPrefix*/, const ::rtl::OUString& /*rLocalName*/, const Reference<XAttributeList>& /*xAttrList*/ ) sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, const Reference<XAttributeList>& /*xAttrList*/ )
{ {
return NULL; return new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
} }
void ScXMLDataPilotGrandTotalContext::EndElement() void ScXMLDataPilotGrandTotalContext::EndElement()
......
...@@ -1407,6 +1407,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotTableElemTokenMap() ...@@ -1407,6 +1407,7 @@ const SvXMLTokenMap& ScXMLImport::GetDataPilotTableElemTokenMap()
{ XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_SQL, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SQL }, { XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_SQL, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SQL },
{ XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_TABLE, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_TABLE }, { XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_TABLE, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_TABLE },
{ XML_NAMESPACE_TABLE, XML_DATA_PILOT_GRAND_TOTAL, XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL }, { XML_NAMESPACE_TABLE, XML_DATA_PILOT_GRAND_TOTAL, XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL },
{ XML_NAMESPACE_TABLE_EXT, XML_DATA_PILOT_GRAND_TOTAL, XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL_EXT },
{ XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_QUERY, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_QUERY }, { XML_NAMESPACE_TABLE, XML_DATABASE_SOURCE_QUERY, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_QUERY },
{ XML_NAMESPACE_TABLE, XML_SOURCE_SERVICE, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SERVICE }, { XML_NAMESPACE_TABLE, XML_SOURCE_SERVICE, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SERVICE },
{ XML_NAMESPACE_TABLE, XML_SOURCE_CELL_RANGE, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_CELL_RANGE }, { XML_NAMESPACE_TABLE, XML_SOURCE_CELL_RANGE, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_CELL_RANGE },
......
...@@ -513,6 +513,7 @@ enum ScXMLDataPilotTableElemTokens ...@@ -513,6 +513,7 @@ enum ScXMLDataPilotTableElemTokens
XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SQL, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SQL,
XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_TABLE, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_TABLE,
XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL, XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL,
XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL_EXT,
XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_QUERY, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_QUERY,
XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SERVICE, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SERVICE,
XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_CELL_RANGE, XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_CELL_RANGE,
......
...@@ -1856,6 +1856,14 @@ IMPL_LINK( ScDPLayoutDlg, OkHdl, OKButton *, EMPTYARG ) ...@@ -1856,6 +1856,14 @@ IMPL_LINK( ScDPLayoutDlg, OkHdl, OKButton *, EMPTYARG )
} }
} }
// also transfer grand total name
if (pOldSaveData)
{
const OUString* pGrandTotalName = pOldSaveData->GetGrandTotalName();
if (pGrandTotalName)
aSaveData.SetGrandTotalName(*pGrandTotalName);
}
sal_uInt16 nWhichPivot = SC_MOD()->GetPool().GetWhich( SID_PIVOT_TABLE ); sal_uInt16 nWhichPivot = SC_MOD()->GetPool().GetWhich( SID_PIVOT_TABLE );
ScPivotItem aOutItem( nWhichPivot, &aSaveData, &aOutRange, bToNewTable ); ScPivotItem aOutItem( nWhichPivot, &aSaveData, &aOutRange, bToNewTable );
......
...@@ -107,6 +107,7 @@ const SfxItemPropertyMapEntry* lcl_GetDataPilotDescriptorBaseMap() ...@@ -107,6 +107,7 @@ const SfxItemPropertyMapEntry* lcl_GetDataPilotDescriptorBaseMap()
{ {
{MAP_CHAR_LEN(SC_UNO_COLGRAND), 0, &getBooleanCppuType(), 0, 0 }, {MAP_CHAR_LEN(SC_UNO_COLGRAND), 0, &getBooleanCppuType(), 0, 0 },
{MAP_CHAR_LEN(SC_UNO_DRILLDOWN), 0, &getBooleanCppuType(), 0, 0 }, {MAP_CHAR_LEN(SC_UNO_DRILLDOWN), 0, &getBooleanCppuType(), 0, 0 },
{MAP_CHAR_LEN(SC_UNO_GRANDTOTAL_NAME),0,&getCppuType((rtl::OUString*)0), beans::PropertyAttribute::MAYBEVOID, 0 },
{MAP_CHAR_LEN(SC_UNO_IGNEMPROWS), 0, &getBooleanCppuType(), 0, 0 }, {MAP_CHAR_LEN(SC_UNO_IGNEMPROWS), 0, &getBooleanCppuType(), 0, 0 },
{MAP_CHAR_LEN(SC_UNO_IMPORTDESC), 0, &getCppuType((uno::Sequence<beans::PropertyValue>*)0), 0, 0 }, {MAP_CHAR_LEN(SC_UNO_IMPORTDESC), 0, &getCppuType((uno::Sequence<beans::PropertyValue>*)0), 0, 0 },
{MAP_CHAR_LEN(SC_UNO_RPTEMPTY), 0, &getBooleanCppuType(), 0, 0 }, {MAP_CHAR_LEN(SC_UNO_RPTEMPTY), 0, &getBooleanCppuType(), 0, 0 },
...@@ -342,8 +343,6 @@ ScDataPilotTableObj* ScDataPilotTablesObj::GetObjectByIndex_Impl( sal_Int32 nInd ...@@ -342,8 +343,6 @@ ScDataPilotTableObj* ScDataPilotTablesObj::GetObjectByIndex_Impl( sal_Int32 nInd
if ( pColl ) if ( pColl )
{ {
// count tables on this sheet // count tables on this sheet
// api only handles sheet data at this time
//! allow all data sources!!!
sal_Int32 nFound = 0; sal_Int32 nFound = 0;
size_t nCount = pColl->GetCount(); size_t nCount = pColl->GetCount();
for (size_t i=0; i<nCount; ++i) for (size_t i=0; i<nCount; ++i)
...@@ -493,8 +492,6 @@ sal_Int32 SAL_CALL ScDataPilotTablesObj::getCount() throw(RuntimeException) ...@@ -493,8 +492,6 @@ sal_Int32 SAL_CALL ScDataPilotTablesObj::getCount() throw(RuntimeException)
if ( pColl ) if ( pColl )
{ {
// count tables on this sheet // count tables on this sheet
// api only handles sheet data at this time
//! allow all data sources!!!
sal_uInt16 nFound = 0; sal_uInt16 nFound = 0;
size_t nCount = pColl->GetCount(); size_t nCount = pColl->GetCount();
...@@ -556,8 +553,6 @@ Sequence<OUString> SAL_CALL ScDataPilotTablesObj::getElementNames() ...@@ -556,8 +553,6 @@ Sequence<OUString> SAL_CALL ScDataPilotTablesObj::getElementNames()
if ( pColl ) if ( pColl )
{ {
// count tables on this sheet // count tables on this sheet
// api only handles sheet data at this time
//! allow all data sources!!!
sal_uInt16 nFound = 0; sal_uInt16 nFound = 0;
size_t nCount = pColl->GetCount(); size_t nCount = pColl->GetCount();
...@@ -598,9 +593,6 @@ sal_Bool SAL_CALL ScDataPilotTablesObj::hasByName( const OUString& aName ) ...@@ -598,9 +593,6 @@ sal_Bool SAL_CALL ScDataPilotTablesObj::hasByName( const OUString& aName )
size_t nCount = pColl->GetCount(); size_t nCount = pColl->GetCount();
for (size_t i=0; i<nCount; ++i) for (size_t i=0; i<nCount; ++i)
{ {
// api only handles sheet data at this time
//! allow all data sources!!!
ScDPObject* pDPObj = (*pColl)[i]; ScDPObject* pDPObj = (*pColl)[i];
if ( pDPObj->GetOutRange().aStart.Tab() == nTab && if ( pDPObj->GetOutRange().aStart.Tab() == nTab &&
pDPObj->GetName() == aName ) pDPObj->GetName() == aName )
...@@ -824,6 +816,12 @@ void SAL_CALL ScDataPilotDescriptorBase::setPropertyValue( const OUString& aProp ...@@ -824,6 +816,12 @@ void SAL_CALL ScDataPilotDescriptorBase::setPropertyValue( const OUString& aProp
{ {
aNewData.SetDrillDown(::cppu::any2bool( aValue )); aNewData.SetDrillDown(::cppu::any2bool( aValue ));
} }
else if ( aNameString.EqualsAscii( SC_UNO_GRANDTOTAL_NAME ) )
{
rtl::OUString aStrVal;
if ( aValue >>= aStrVal )
aNewData.SetGrandTotalName(aStrVal);
}
else if ( aNameString.EqualsAscii( SC_UNO_IMPORTDESC ) ) else if ( aNameString.EqualsAscii( SC_UNO_IMPORTDESC ) )
{ {
uno::Sequence<beans::PropertyValue> aArgSeq; uno::Sequence<beans::PropertyValue> aArgSeq;
...@@ -967,6 +965,12 @@ Any SAL_CALL ScDataPilotDescriptorBase::getPropertyValue( const OUString& aPrope ...@@ -967,6 +965,12 @@ Any SAL_CALL ScDataPilotDescriptorBase::getPropertyValue( const OUString& aPrope
{ {
aRet = ::cppu::bool2any( aNewData.GetDrillDown() ); aRet = ::cppu::bool2any( aNewData.GetDrillDown() );
} }
else if ( aNameString.EqualsAscii( SC_UNO_GRANDTOTAL_NAME ) )
{
const rtl::OUString* pGrandTotalName = aNewData.GetGrandTotalName();
if (pGrandTotalName)
aRet <<= *pGrandTotalName; // same behavior as in ScDPSource
}
else if ( aNameString.EqualsAscii( SC_UNO_IMPORTDESC ) ) else if ( aNameString.EqualsAscii( SC_UNO_IMPORTDESC ) )
{ {
const ScImportSourceDesc* pImportDesc = pDPObject->GetImportSourceDesc(); const ScImportSourceDesc* pImportDesc = pDPObject->GetImportSourceDesc();
......
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