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