summaryrefslogtreecommitdiff
path: root/sc/source/ui/view/dbfunc3.cxx
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2020-08-09 11:59:18 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-08-12 09:58:12 +0200
commitdf37937018fe8e87dad5dd97689632044ba56de3 (patch)
treeca34574e8bc18c8d54bbe589afeacfdc95aa00be /sc/source/ui/view/dbfunc3.cxx
parent3c8b3451c94aa6134752d110df58e93e6412cf02 (diff)
loplugin:flatten in sc/ui/view
Change-Id: I0ea33fc076a280e5f4559eea8420b1b7fa442361 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100400 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sc/source/ui/view/dbfunc3.cxx')
-rw-r--r--sc/source/ui/view/dbfunc3.cxx336
1 files changed, 168 insertions, 168 deletions
diff --git a/sc/source/ui/view/dbfunc3.cxx b/sc/source/ui/view/dbfunc3.cxx
index 429725af03dd..5f19e0f7af59 100644
--- a/sc/source/ui/view/dbfunc3.cxx
+++ b/sc/source/ui/view/dbfunc3.cxx
@@ -475,128 +475,128 @@ void ScDBFunc::DoSubTotals( const ScSubTotalParam& rParam, bool bRecord,
}
}
- if (bOk)
- {
- ScDocShellModificator aModificator( *pDocSh );
-
- ScSubTotalParam aNewParam( rParam ); // change end of range
- ScDocumentUniquePtr pUndoDoc;
- std::unique_ptr<ScOutlineTable> pUndoTab;
- std::unique_ptr<ScRangeName> pUndoRange;
- std::unique_ptr<ScDBCollection> pUndoDB;
-
- if (bRecord) // record old data
- {
- bool bOldFilter = bDo && rParam.bDoSort;
- SCTAB nTabCount = rDoc.GetTableCount();
- pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
- ScOutlineTable* pTable = rDoc.GetOutlineTable( nTab );
- if (pTable)
- {
- pUndoTab.reset(new ScOutlineTable( *pTable ));
-
- SCCOLROW nOutStartCol; // row/column status
- SCCOLROW nOutStartRow;
- SCCOLROW nOutEndCol;
- SCCOLROW nOutEndRow;
- pTable->GetColArray().GetRange( nOutStartCol, nOutEndCol );
- pTable->GetRowArray().GetRange( nOutStartRow, nOutEndRow );
-
- pUndoDoc->InitUndo( &rDoc, nTab, nTab, true, true );
- rDoc.CopyToDocument( static_cast<SCCOL>(nOutStartCol), 0, nTab, static_cast<SCCOL>(nOutEndCol), rDoc.MaxRow(), nTab, InsertDeleteFlags::NONE, false, *pUndoDoc );
- rDoc.CopyToDocument( 0, nOutStartRow, nTab, rDoc.MaxCol(), nOutEndRow, nTab, InsertDeleteFlags::NONE, false, *pUndoDoc );
- }
- else
- pUndoDoc->InitUndo( &rDoc, nTab, nTab, false, bOldFilter );
+ if (!bOk)
+ return;
- // record data range - including filter results
- rDoc.CopyToDocument( 0,rParam.nRow1+1,nTab, rDoc.MaxCol(),rParam.nRow2,nTab,
- InsertDeleteFlags::ALL, false, *pUndoDoc );
+ ScDocShellModificator aModificator( *pDocSh );
- // all formulas for reference
- rDoc.CopyToDocument( 0,0,0, rDoc.MaxCol(),rDoc.MaxRow(),nTabCount-1,
- InsertDeleteFlags::FORMULA, false, *pUndoDoc );
+ ScSubTotalParam aNewParam( rParam ); // change end of range
+ ScDocumentUniquePtr pUndoDoc;
+ std::unique_ptr<ScOutlineTable> pUndoTab;
+ std::unique_ptr<ScRangeName> pUndoRange;
+ std::unique_ptr<ScDBCollection> pUndoDB;
- // database and other ranges
- ScRangeName* pDocRange = rDoc.GetRangeName();
- if (!pDocRange->empty())
- pUndoRange.reset(new ScRangeName( *pDocRange ));
- ScDBCollection* pDocDB = rDoc.GetDBCollection();
- if (!pDocDB->empty())
- pUndoDB.reset(new ScDBCollection( *pDocDB ));
+ if (bRecord) // record old data
+ {
+ bool bOldFilter = bDo && rParam.bDoSort;
+ SCTAB nTabCount = rDoc.GetTableCount();
+ pUndoDoc.reset(new ScDocument( SCDOCMODE_UNDO ));
+ ScOutlineTable* pTable = rDoc.GetOutlineTable( nTab );
+ if (pTable)
+ {
+ pUndoTab.reset(new ScOutlineTable( *pTable ));
+
+ SCCOLROW nOutStartCol; // row/column status
+ SCCOLROW nOutStartRow;
+ SCCOLROW nOutEndCol;
+ SCCOLROW nOutEndRow;
+ pTable->GetColArray().GetRange( nOutStartCol, nOutEndCol );
+ pTable->GetRowArray().GetRange( nOutStartRow, nOutEndRow );
+
+ pUndoDoc->InitUndo( &rDoc, nTab, nTab, true, true );
+ rDoc.CopyToDocument( static_cast<SCCOL>(nOutStartCol), 0, nTab, static_cast<SCCOL>(nOutEndCol), rDoc.MaxRow(), nTab, InsertDeleteFlags::NONE, false, *pUndoDoc );
+ rDoc.CopyToDocument( 0, nOutStartRow, nTab, rDoc.MaxCol(), nOutEndRow, nTab, InsertDeleteFlags::NONE, false, *pUndoDoc );
}
+ else
+ pUndoDoc->InitUndo( &rDoc, nTab, nTab, false, bOldFilter );
+
+ // record data range - including filter results
+ rDoc.CopyToDocument( 0,rParam.nRow1+1,nTab, rDoc.MaxCol(),rParam.nRow2,nTab,
+ InsertDeleteFlags::ALL, false, *pUndoDoc );
+
+ // all formulas for reference
+ rDoc.CopyToDocument( 0,0,0, rDoc.MaxCol(),rDoc.MaxRow(),nTabCount-1,
+ InsertDeleteFlags::FORMULA, false, *pUndoDoc );
+
+ // database and other ranges
+ ScRangeName* pDocRange = rDoc.GetRangeName();
+ if (!pDocRange->empty())
+ pUndoRange.reset(new ScRangeName( *pDocRange ));
+ ScDBCollection* pDocDB = rDoc.GetDBCollection();
+ if (!pDocDB->empty())
+ pUndoDB.reset(new ScDBCollection( *pDocDB ));
+ }
- ScOutlineTable* pOut = rDoc.GetOutlineTable( nTab );
- if (pOut)
+ ScOutlineTable* pOut = rDoc.GetOutlineTable( nTab );
+ if (pOut)
+ {
+ // Remove all existing outlines in the specified range.
+ ScOutlineArray& rRowArray = pOut->GetRowArray();
+ sal_uInt16 nDepth = rRowArray.GetDepth();
+ for (sal_uInt16 i = 0; i < nDepth; ++i)
{
- // Remove all existing outlines in the specified range.
- ScOutlineArray& rRowArray = pOut->GetRowArray();
- sal_uInt16 nDepth = rRowArray.GetDepth();
- for (sal_uInt16 i = 0; i < nDepth; ++i)
- {
- bool bSize;
- rRowArray.Remove(aNewParam.nRow1, aNewParam.nRow2, bSize);
- }
+ bool bSize;
+ rRowArray.Remove(aNewParam.nRow1, aNewParam.nRow2, bSize);
}
+ }
- if (rParam.bReplace)
- rDoc.RemoveSubTotals( nTab, aNewParam );
- bool bSuccess = true;
- if (bDo)
+ if (rParam.bReplace)
+ rDoc.RemoveSubTotals( nTab, aNewParam );
+ bool bSuccess = true;
+ if (bDo)
+ {
+ // Sort
+ if ( rParam.bDoSort || pForceNewSort )
{
- // Sort
- if ( rParam.bDoSort || pForceNewSort )
- {
- pDBData->SetArea( nTab, aNewParam.nCol1,aNewParam.nRow1, aNewParam.nCol2,aNewParam.nRow2 );
+ pDBData->SetArea( nTab, aNewParam.nCol1,aNewParam.nRow1, aNewParam.nCol2,aNewParam.nRow2 );
- // set subtotal fields before sorting
- // (duplicate values are dropped, so that they can be called again)
+ // set subtotal fields before sorting
+ // (duplicate values are dropped, so that they can be called again)
- ScSortParam aOldSort;
- pDBData->GetSortParam( aOldSort );
- ScSortParam aSortParam( aNewParam, pForceNewSort ? *pForceNewSort : aOldSort );
- Sort( aSortParam, false, false );
- }
-
- bSuccess = rDoc.DoSubTotals( nTab, aNewParam );
+ ScSortParam aOldSort;
+ pDBData->GetSortParam( aOldSort );
+ ScSortParam aSortParam( aNewParam, pForceNewSort ? *pForceNewSort : aOldSort );
+ Sort( aSortParam, false, false );
}
- ScRange aDirtyRange( aNewParam.nCol1, aNewParam.nRow1, nTab,
- aNewParam.nCol2, aNewParam.nRow2, nTab );
- rDoc.SetDirty( aDirtyRange, true );
- if (bRecord)
- {
- pDocSh->GetUndoManager()->AddUndoAction(
- std::make_unique<ScUndoSubTotals>( pDocSh, nTab,
- rParam, aNewParam.nRow2,
- std::move(pUndoDoc), std::move(pUndoTab), // pUndoDBData,
- std::move(pUndoRange), std::move(pUndoDB) ) );
- }
+ bSuccess = rDoc.DoSubTotals( nTab, aNewParam );
+ }
+ ScRange aDirtyRange( aNewParam.nCol1, aNewParam.nRow1, nTab,
+ aNewParam.nCol2, aNewParam.nRow2, nTab );
+ rDoc.SetDirty( aDirtyRange, true );
- if (!bSuccess)
- {
- // "Can not insert any rows"
- ErrorMessage(STR_MSSG_DOSUBTOTALS_2);
- }
+ if (bRecord)
+ {
+ pDocSh->GetUndoManager()->AddUndoAction(
+ std::make_unique<ScUndoSubTotals>( pDocSh, nTab,
+ rParam, aNewParam.nRow2,
+ std::move(pUndoDoc), std::move(pUndoTab), // pUndoDBData,
+ std::move(pUndoRange), std::move(pUndoDB) ) );
+ }
- // store
- pDBData->SetSubTotalParam( aNewParam );
- pDBData->SetArea( nTab, aNewParam.nCol1,aNewParam.nRow1, aNewParam.nCol2,aNewParam.nRow2 );
- rDoc.CompileDBFormula();
+ if (!bSuccess)
+ {
+ // "Can not insert any rows"
+ ErrorMessage(STR_MSSG_DOSUBTOTALS_2);
+ }
- DoneBlockMode();
- InitOwnBlockMode();
- rMark.SetMarkArea( ScRange( aNewParam.nCol1,aNewParam.nRow1,nTab,
- aNewParam.nCol2,aNewParam.nRow2,nTab ) );
- MarkDataChanged();
+ // store
+ pDBData->SetSubTotalParam( aNewParam );
+ pDBData->SetArea( nTab, aNewParam.nCol1,aNewParam.nRow1, aNewParam.nCol2,aNewParam.nRow2 );
+ rDoc.CompileDBFormula();
- pDocSh->PostPaint(ScRange(0, 0, nTab, rDoc.MaxCol(), rDoc.MaxRow(), nTab),
- PaintPartFlags::Grid | PaintPartFlags::Left | PaintPartFlags::Top | PaintPartFlags::Size);
+ DoneBlockMode();
+ InitOwnBlockMode();
+ rMark.SetMarkArea( ScRange( aNewParam.nCol1,aNewParam.nRow1,nTab,
+ aNewParam.nCol2,aNewParam.nRow2,nTab ) );
+ MarkDataChanged();
- aModificator.SetDocumentModified();
+ pDocSh->PostPaint(ScRange(0, 0, nTab, rDoc.MaxCol(), rDoc.MaxRow(), nTab),
+ PaintPartFlags::Grid | PaintPartFlags::Left | PaintPartFlags::Top | PaintPartFlags::Size);
- SelectionChanged();
- }
+ aModificator.SetDocumentModified();
+
+ SelectionChanged();
}
// consolidate
@@ -1945,86 +1945,86 @@ void ScDBFunc::SetDataPilotDetails(bool bShow, const OUString* pNewDimensionName
{
ScDPObject* pDPObj = GetViewData().GetDocument()->GetDPAtCursor( GetViewData().GetCurX(),
GetViewData().GetCurY(), GetViewData().GetTabNo() );
- if ( pDPObj )
- {
- ScDPUniqueStringSet aEntries;
- long nSelectDimension = -1;
- GetSelectedMemberList( aEntries, nSelectDimension );
+ if ( !pDPObj )
+ return;
- if (!aEntries.empty())
- {
- bool bIsDataLayout;
- OUString aDimName = pDPObj->GetDimName( nSelectDimension, bIsDataLayout );
- if ( !bIsDataLayout )
- {
- ScDPSaveData aData( *pDPObj->GetSaveData() );
- ScDPSaveDimension* pDim = aData.GetDimensionByName( aDimName );
+ ScDPUniqueStringSet aEntries;
+ long nSelectDimension = -1;
+ GetSelectedMemberList( aEntries, nSelectDimension );
- if ( bShow && pNewDimensionName )
- {
- // add the new dimension with the same orientation, at the end
+ if (aEntries.empty())
+ return;
- ScDPSaveDimension* pNewDim = aData.GetDimensionByName( *pNewDimensionName );
- ScDPSaveDimension* pDuplicated = nullptr;
- if ( pNewDim->GetOrientation() == sheet::DataPilotFieldOrientation_DATA )
- {
- // Need to duplicate the dimension, create column/row in addition to data:
- // The duplicated dimension inherits the existing settings, pNewDim is modified below.
- pDuplicated = aData.DuplicateDimension( *pNewDimensionName );
- }
+ bool bIsDataLayout;
+ OUString aDimName = pDPObj->GetDimName( nSelectDimension, bIsDataLayout );
+ if ( bIsDataLayout )
+ return;
- css::sheet::DataPilotFieldOrientation nOrientation = pDim->GetOrientation();
- pNewDim->SetOrientation( nOrientation );
+ ScDPSaveData aData( *pDPObj->GetSaveData() );
+ ScDPSaveDimension* pDim = aData.GetDimensionByName( aDimName );
- long nPosition = LONG_MAX;
- aData.SetPosition( pNewDim, nPosition );
+ if ( bShow && pNewDimensionName )
+ {
+ // add the new dimension with the same orientation, at the end
- ScDPSaveDimension* pDataLayout = aData.GetDataLayoutDimension();
- if ( pDataLayout->GetOrientation() == nOrientation &&
- aData.GetDataDimensionCount() <= 1 )
- {
- // If there is only one data dimension, the data layout dimension
- // must still be the last one in its orientation.
- aData.SetPosition( pDataLayout, nPosition );
- }
+ ScDPSaveDimension* pNewDim = aData.GetDimensionByName( *pNewDimensionName );
+ ScDPSaveDimension* pDuplicated = nullptr;
+ if ( pNewDim->GetOrientation() == sheet::DataPilotFieldOrientation_DATA )
+ {
+ // Need to duplicate the dimension, create column/row in addition to data:
+ // The duplicated dimension inherits the existing settings, pNewDim is modified below.
+ pDuplicated = aData.DuplicateDimension( *pNewDimensionName );
+ }
- if ( pDuplicated )
- {
- // The duplicated (data) dimension needs to be behind the original dimension
- aData.SetPosition( pDuplicated, nPosition );
- }
+ css::sheet::DataPilotFieldOrientation nOrientation = pDim->GetOrientation();
+ pNewDim->SetOrientation( nOrientation );
- // Hide details for all visible members (selected are changed below).
- //! Use all members from source level instead (including non-visible)?
+ long nPosition = LONG_MAX;
+ aData.SetPosition( pNewDim, nPosition );
- ScDPUniqueStringSet aVisibleEntries;
- pDPObj->GetMemberResultNames( aVisibleEntries, nSelectDimension );
+ ScDPSaveDimension* pDataLayout = aData.GetDataLayoutDimension();
+ if ( pDataLayout->GetOrientation() == nOrientation &&
+ aData.GetDataDimensionCount() <= 1 )
+ {
+ // If there is only one data dimension, the data layout dimension
+ // must still be the last one in its orientation.
+ aData.SetPosition( pDataLayout, nPosition );
+ }
- for (const OUString& aVisName : aVisibleEntries)
- {
- ScDPSaveMember* pMember = pDim->GetMemberByName( aVisName );
- pMember->SetShowDetails( false );
- }
- }
+ if ( pDuplicated )
+ {
+ // The duplicated (data) dimension needs to be behind the original dimension
+ aData.SetPosition( pDuplicated, nPosition );
+ }
- for (const auto& rEntry : aEntries)
- {
- ScDPSaveMember* pMember = pDim->GetMemberByName(rEntry);
- pMember->SetShowDetails( bShow );
- }
+ // Hide details for all visible members (selected are changed below).
+ //! Use all members from source level instead (including non-visible)?
- // apply changes
- ScDBDocFunc aFunc( *GetViewData().GetDocShell() );
- std::unique_ptr<ScDPObject> pNewObj(new ScDPObject( *pDPObj ));
- pNewObj->SetSaveData( aData );
- aFunc.DataPilotUpdate( pDPObj, pNewObj.get(), true, false );
- pNewObj.reset();
+ ScDPUniqueStringSet aVisibleEntries;
+ pDPObj->GetMemberResultNames( aVisibleEntries, nSelectDimension );
- // unmark cell selection
- Unmark();
- }
+ for (const OUString& aVisName : aVisibleEntries)
+ {
+ ScDPSaveMember* pMember = pDim->GetMemberByName( aVisName );
+ pMember->SetShowDetails( false );
}
}
+
+ for (const auto& rEntry : aEntries)
+ {
+ ScDPSaveMember* pMember = pDim->GetMemberByName(rEntry);
+ pMember->SetShowDetails( bShow );
+ }
+
+ // apply changes
+ ScDBDocFunc aFunc( *GetViewData().GetDocShell() );
+ std::unique_ptr<ScDPObject> pNewObj(new ScDPObject( *pDPObj ));
+ pNewObj->SetSaveData( aData );
+ aFunc.DataPilotUpdate( pDPObj, pNewObj.get(), true, false );
+ pNewObj.reset();
+
+ // unmark cell selection
+ Unmark();
}
void ScDBFunc::ShowDataPilotSourceData( ScDPObject& rDPObj, const Sequence<sheet::DataPilotFieldFilter>& rFilters )