Kaydet (Commit) f697d7aa authored tarafından Kohei Yoshida's avatar Kohei Yoshida

Fix the UNO API for creating a new group dimension.

üst 859f601e
......@@ -422,6 +422,7 @@ protected:
::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >
GetMembers() const;
ScDocShell* GetDocShell() const;
protected:
ScDataPilotDescriptorBase& mrParent;
ScFieldIdentifier maFieldId;
......
......@@ -1193,7 +1193,7 @@ void ScDataPilotTableObj::SetDPObject( ScDPObject* pDPObject )
if ( pDPObj && pDocSh )
{
ScDBDocFunc aFunc(*pDocSh);
aFunc.DataPilotUpdate( pDPObj, pDPObject, sal_True, sal_True );
aFunc.DataPilotUpdate( pDPObj, pDPObject, true, true );
}
}
......@@ -1565,6 +1565,11 @@ Reference< XNameAccess > ScDataPilotChildObjBase::GetMembers() const
return xMembersNA;
}
ScDocShell* ScDataPilotChildObjBase::GetDocShell() const
{
return mrParent.GetDocShell();
}
// ============================================================================
ScDataPilotFieldsObj::ScDataPilotFieldsObj( ScDataPilotDescriptorBase& rParent ) :
......@@ -2569,13 +2574,13 @@ Reference< XDataPilotField > SAL_CALL ScDataPilotFieldObj::createNameGroup( cons
ScDPObject* pDPObj = 0;
if( ScDPSaveDimension* pDim = GetDPDimension( &pDPObj ) )
{
String aDimName = pDim->GetName();
rtl::OUString aDimName = pDim->GetName();
ScDPSaveData aSaveData = *pDPObj->GetSaveData();
ScDPDimensionSaveData* pDimData = aSaveData.GetDimensionData(); // created if not there
// find original base
String aBaseDimName( aDimName );
rtl::OUString aBaseDimName( aDimName );
const ScDPSaveGroupDimension* pBaseGroupDim = pDimData->GetNamedGroupDim( aDimName );
if ( pBaseGroupDim )
{
......@@ -2595,7 +2600,7 @@ Reference< XDataPilotField > SAL_CALL ScDataPilotFieldObj::createNameGroup( cons
{
for (nEntry=0; nEntry<nEntryCount; nEntry++)
{
String aEntryName(rItems[nEntry]);
const rtl::OUString& aEntryName = rItems[nEntry];
if ( pBaseGroupDim )
{
// for each selected (intermediate) group, remove all its items
......@@ -2615,9 +2620,8 @@ Reference< XDataPilotField > SAL_CALL ScDataPilotFieldObj::createNameGroup( cons
if ( !pGroupDimension )
{
// create a new group dimension
String aGroupDimName = pDimData->CreateGroupDimName( aBaseDimName, *pDPObj, false, NULL );
pNewGroupDim = new ScDPSaveGroupDimension( aBaseDimName, aGroupDimName );
sNewDim = aGroupDimName;
sNewDim = pDimData->CreateGroupDimName( aBaseDimName, *pDPObj, false, NULL );
pNewGroupDim = new ScDPSaveGroupDimension( aBaseDimName, sNewDim );
pGroupDimension = pNewGroupDim; // make changes to the new dim if none existed
......@@ -2645,10 +2649,10 @@ Reference< XDataPilotField > SAL_CALL ScDataPilotFieldObj::createNameGroup( cons
}
}
}
String aGroupDimName = pGroupDimension->GetGroupDimName();
rtl::OUString aGroupDimName = pGroupDimension->GetGroupDimName();
//! localized prefix string
String aGroupName = pGroupDimension->CreateGroupName( String( RTL_CONSTASCII_USTRINGPARAM( "Group" ) ) );
rtl::OUString aGroupName = pGroupDimension->CreateGroupName( String( RTL_CONSTASCII_USTRINGPARAM( "Group" ) ) );
ScDPSaveGroupItem aGroup( aGroupName );
Reference< XNameAccess > xMembers = GetMembers();
if (!xMembers.is())
......@@ -2702,7 +2706,7 @@ Reference< XDataPilotField > SAL_CALL ScDataPilotFieldObj::createNameGroup( cons
// apply changes
pDPObj->SetSaveData( aSaveData );
SetDPObject( pDPObj );
ScDBDocFunc(*GetDocShell()).RefreshPivotTableGroups(pDPObj);
}
// if new grouping field has been created (on first group), return it
......
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