diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2012-03-31 18:33:21 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2012-03-31 18:33:21 +0200 |
commit | 1c78b6dc0d10eb5873c45d6185576633470a593d (patch) | |
tree | 9d0b8a31009d826e071fa3c4a81ed033e8a6710d /sc/source/ui | |
parent | 3d86e4e7223b15d561d1efdac736e932ea41e6a0 (diff) |
revert "remove limitation to 3 sort entries in calc part1"
Diffstat (limited to 'sc/source/ui')
-rw-r--r-- | sc/source/ui/dbgui/tpsort.cxx | 343 | ||||
-rw-r--r-- | sc/source/ui/docshell/dbdocfun.cxx | 6 | ||||
-rw-r--r-- | sc/source/ui/inc/tpsort.hxx | 18 | ||||
-rw-r--r-- | sc/source/ui/src/sortdlg.src | 6 | ||||
-rw-r--r-- | sc/source/ui/unoobj/cellsuno.cxx | 16 | ||||
-rw-r--r-- | sc/source/ui/unoobj/datauno.cxx | 52 | ||||
-rw-r--r-- | sc/source/ui/vba/vbarange.cxx | 18 | ||||
-rw-r--r-- | sc/source/ui/view/cellsh2.cxx | 62 | ||||
-rw-r--r-- | sc/source/ui/view/dbfunc3.cxx | 2 |
9 files changed, 266 insertions, 257 deletions
diff --git a/sc/source/ui/dbgui/tpsort.cxx b/sc/source/ui/dbgui/tpsort.cxx index a964391cd5cd..f2cc430b38e8 100644 --- a/sc/source/ui/dbgui/tpsort.cxx +++ b/sc/source/ui/dbgui/tpsort.cxx @@ -114,10 +114,7 @@ ScTabPageSortFields::ScTabPageSortFields( Window* pParent, rSortData ( ((const ScSortItem&) rArgSet.Get( nWhichSort )). GetSortData() ), - aNewSortData ( rSortData ), nFieldCount ( 0 ), - nSortKeyCount ( DEFSORT ), - nCurrentOffset ( 0 ), bHasHeader ( false ), bSortByRows ( false ) { @@ -131,6 +128,7 @@ ScTabPageSortFields::ScTabPageSortFields( Window* pParent, ScTabPageSortFields::~ScTabPageSortFields() { } + // ----------------------------------------------------------------------- void ScTabPageSortFields::Init() @@ -142,19 +140,7 @@ void ScTabPageSortFields::Init() OSL_ENSURE( pViewData, "ViewData not found!" ); - // Create local copy of ScParam - aNewSortData = rSortData; - - if (pDlg) - { - const SfxItemSet* pExample = pDlg->GetExampleSet(); - const SfxPoolItem* pItem; - if ( pExample && pExample->GetItemState( nWhichSort, sal_True, &pItem ) == SFX_ITEM_SET ) - aNewSortData = static_cast<const ScSortItem*>(pItem)->GetSortData(); - } - - // Connect handlers and widgets - nFieldArr.push_back( 0 ); + nFieldArr[0] = 0; nFirstCol = 0; nFirstRow = 0; @@ -165,10 +151,18 @@ void ScTabPageSortFields::Init() aLbSort2.Clear(); aLbSort3.Clear(); - aLbSortArr = { &aLbSort1, &aLbSort2, &aLbSort3 }; - aBtnUp = { &aBtnUp1, &aBtnUp2, &aBtnUp3 }; - aBtnDown = { &aBtnDown1, &aBtnDown2, &aBtnDown3 }; - aFlArr = { &aFlSort1, &aFlSort2, &aFlSort3 }; + aSortLbArr[0] = &aLbSort1; + aSortLbArr[1] = &aLbSort2; + aSortLbArr[2] = &aLbSort3; + aDirBtnArr[0][0] = &aBtnUp1; + aDirBtnArr[0][1] = &aBtnDown1; + aDirBtnArr[1][0] = &aBtnUp2; + aDirBtnArr[1][1] = &aBtnDown2; + aDirBtnArr[2][0] = &aBtnUp3; + aDirBtnArr[2][1] = &aBtnDown3; + aFlArr[0] = &aFlSort1; + aFlArr[1] = &aFlSort2; + aFlArr[2] = &aFlSort3; } // ----------------------------------------------------------------------- @@ -183,63 +177,61 @@ SfxTabPage* ScTabPageSortFields::Create( Window* pParent, void ScTabPageSortFields::Reset( const SfxItemSet& /* rArgSet */ ) { - bSortByRows = aNewSortData.bByRow; - bHasHeader = aNewSortData.bHasHeader; + bSortByRows = rSortData.bByRow; + bHasHeader = rSortData.bHasHeader; if ( aLbSort1.GetEntryCount() == 0 ) - FillFieldLists(0); + FillFieldLists(); // ListBox selection: - if ( aNewSortData.maKeyState[0].bDoSort ) + + if ( rSortData.bDoSort[0] ) { - for ( sal_uInt16 i=0; i<nSortKeyCount; i++ ) + for ( sal_uInt16 i=0; i<3; i++ ) { - if ( aNewSortData.maKeyState[i].bDoSort ) + if ( rSortData.bDoSort[i] ) { - aLbSortArr[i]->SelectEntryPos( GetFieldSelPos( - aNewSortData.maKeyState[i].nField ) ); + aSortLbArr[i]->SelectEntryPos( + GetFieldSelPos( rSortData.nField[i] ) ); - (aNewSortData.maKeyState[i].bAscending) - ? aBtnUp[i]->Check() - : aBtnDown[i]->Check(); + (rSortData.bAscending[i]) + ? aDirBtnArr[i][0]->Check() // Up + : aDirBtnArr[i][1]->Check(); // Down } else { - aLbSortArr[i]->SelectEntryPos( 0 ); // Select none - aBtnUp[i]->Check(); + aSortLbArr[i]->SelectEntryPos( 0 ); // Select none + aDirBtnArr[i][0]->Check(); // Up } } - // Enable or disable field depending on preceding Listbox selection - EnableField( 0 ); - for ( sal_uInt16 i=1; i<nSortKeyCount; i++ ) - if ( aLbSortArr[i - 1] -> GetSelectEntryPos() == 0 ) - DisableField( i ); - else - EnableField( i ); + EnableField( 1 ); + EnableField( 2 ); + EnableField( 3 ); + if ( aLbSort1.GetSelectEntryPos() == 0 ) + DisableField( 2 ); + if ( aLbSort2.GetSelectEntryPos() == 0 ) + DisableField( 3 ); } else { SCCOL nCol = pViewData->GetCurX(); - if( nCol < aNewSortData.nCol1 ) - nCol = aNewSortData.nCol1; - else if( nCol > aNewSortData.nCol2 ) - nCol = aNewSortData.nCol2; - - sal_uInt16 nSort1Pos = nCol - aNewSortData.nCol1+1; - - aLbSortArr[0] -> SelectEntryPos( nSort1Pos ); - for ( sal_uInt16 i=1; i<nSortKeyCount; i++ ) - aLbSortArr[i] -> SelectEntryPos( 0 ); - - for ( sal_uInt16 i=0; i<nSortKeyCount; i++ ) - aBtnUp[i] -> Check(); - - EnableField ( 0 ); + if( nCol < rSortData.nCol1 ) + nCol = rSortData.nCol1; + else if( nCol > rSortData.nCol2 ) + nCol = rSortData.nCol2; + + sal_uInt16 nSort1Pos = nCol - rSortData.nCol1+1; + aLbSort1.SelectEntryPos( nSort1Pos ); + aLbSort2.SelectEntryPos( 0 ); + aLbSort3.SelectEntryPos( 0 ); + aBtnUp1.Check(); + aBtnUp2.Check(); + aBtnUp3.Check(); EnableField ( 1 ); - for ( sal_uInt16 i=2; i<nSortKeyCount; i++ ) - DisableField( i ); + EnableField ( 2 ); + DisableField( 3 ); } if ( pDlg ) @@ -253,48 +245,65 @@ void ScTabPageSortFields::Reset( const SfxItemSet& /* rArgSet */ ) sal_Bool ScTabPageSortFields::FillItemSet( SfxItemSet& rArgSet ) { - std::vector<sal_uInt16> nSortPos; - - for ( sal_uInt16 i=0; i<nSortKeyCount; i++ ) + ScSortParam theSortData = rSortData; + if (pDlg) { - nSortPos.push_back( aLbSortArr[i] -> GetSelectEntryPos() ); - - if ( nSortPos[i] == LISTBOX_ENTRY_NOTFOUND ) nSortPos[i] = 0; + const SfxItemSet* pExample = pDlg->GetExampleSet(); + const SfxPoolItem* pItem; + if ( pExample && pExample->GetItemState( nWhichSort, sal_True, &pItem ) == SFX_ITEM_SET ) + theSortData = ((const ScSortItem*)pItem)->GetSortData(); } - if ( nSortPos[0] > 0 ) + sal_uInt16 nSort1Pos = aLbSort1.GetSelectEntryPos(); + sal_uInt16 nSort2Pos = aLbSort2.GetSelectEntryPos(); + sal_uInt16 nSort3Pos = aLbSort3.GetSelectEntryPos(); + + OSL_ENSURE( (nSort1Pos <= SC_MAXFIELDS) + && (nSort2Pos <= SC_MAXFIELDS) + && (nSort3Pos <= SC_MAXFIELDS), + "Array range error!" ); + + if ( nSort1Pos == LISTBOX_ENTRY_NOTFOUND ) nSort1Pos = 0; + if ( nSort2Pos == LISTBOX_ENTRY_NOTFOUND ) nSort2Pos = 0; + if ( nSort3Pos == LISTBOX_ENTRY_NOTFOUND ) nSort3Pos = 0; + + if ( nSort1Pos > 0 ) { - for ( sal_uInt16 i=0; i<nSortKeyCount; i++ ) - aNewSortData.maKeyState[i].bDoSort = (nSortPos[i] > 0); + theSortData.bDoSort[0] = (nSort1Pos > 0); + theSortData.bDoSort[1] = (nSort2Pos > 0); + theSortData.bDoSort[2] = (nSort3Pos > 0); // If the "OK" was selected on the Options page while the sort // direction was changed, then the first field (i.e. nFieldArr[0]) // of the respective direction is chosen as the sorting criterion: if ( bSortByRows != pDlg->GetByRows() ) { - for ( sal_uInt16 i=0; i<nSortKeyCount; i++ ) - aNewSortData.maKeyState[i].nField = ( bSortByRows ? - static_cast<SCCOLROW>(nFirstRow) : - static_cast<SCCOLROW>(nFirstCol) ); + theSortData.nField[0] = + theSortData.nField[1] = + theSortData.nField[2] = ( bSortByRows ? + static_cast<SCCOLROW>(nFirstRow) : + static_cast<SCCOLROW>(nFirstCol) ); } else { - for ( sal_uInt16 i=0; i<nSortKeyCount; i++ ) - aNewSortData.maKeyState[i].nField = nFieldArr[nSortPos[i]]; + theSortData.nField[0] = nFieldArr[nSort1Pos]; + theSortData.nField[1] = nFieldArr[nSort2Pos]; + theSortData.nField[2] = nFieldArr[nSort3Pos]; } - for ( sal_uInt16 i=0; i<nSortKeyCount; i++ ) - aNewSortData.maKeyState[i].bAscending = aBtnUp[i] -> IsChecked(); - + theSortData.bAscending[0] = aBtnUp1.IsChecked(); + theSortData.bAscending[1] = aBtnUp2.IsChecked(); + theSortData.bAscending[2] = aBtnUp3.IsChecked(); // bHasHeader is in ScTabPageSortOptions::FillItemSet, where it belongs } else { - for ( sal_uInt16 i=0; i<nSortKeyCount; i++ ) - aNewSortData.maKeyState[i].bDoSort = false; + theSortData.bDoSort[0] = + theSortData.bDoSort[1] = + theSortData.bDoSort[2] = false; } - rArgSet.Put( ScSortItem( SCITEM_SORTDATA, NULL, &aNewSortData ) ); + rArgSet.Put( ScSortItem( SCITEM_SORTDATA, NULL, &theSortData ) ); return sal_True; } @@ -306,19 +315,19 @@ void ScTabPageSortFields::ActivatePage() { if ( pDlg ) { - if ( bHasHeader != pDlg->GetHeaders() - || bSortByRows != pDlg->GetByRows() ) + if ( bHasHeader != pDlg->GetHeaders() + || bSortByRows != pDlg->GetByRows() ) { - std::vector<sal_uInt16> nCurSel; - for ( sal_uInt16 i=0; i<nSortKeyCount; i++ ) - nCurSel.push_back( aLbSortArr[i] -> GetSelectEntryPos() ); + sal_uInt16 nCurSel1 = aLbSort1.GetSelectEntryPos(); + sal_uInt16 nCurSel2 = aLbSort2.GetSelectEntryPos(); + sal_uInt16 nCurSel3 = aLbSort3.GetSelectEntryPos(); bHasHeader = pDlg->GetHeaders(); bSortByRows = pDlg->GetByRows(); - FillFieldLists(0); - - for ( sal_uInt16 i=0; i<nSortKeyCount; i++ ) - aLbSortArr[i] -> SelectEntryPos( nCurSel[i] ); + FillFieldLists(); + aLbSort1.SelectEntryPos( nCurSel1 ); + aLbSort2.SelectEntryPos( nCurSel2 ); + aLbSort3.SelectEntryPos( nCurSel3 ); } } } @@ -346,12 +355,14 @@ int ScTabPageSortFields::DeactivatePage( SfxItemSet* pSetP ) void ScTabPageSortFields::DisableField( sal_uInt16 nField ) { - if ( nField<nSortKeyCount ) + nField--; + + if ( nField<=2 ) { - aLbSortArr[nField] -> Disable(); - aBtnUp[nField] -> Disable(); - aBtnDown[nField] -> Disable(); - aFlArr[nField] -> Disable(); + aSortLbArr[nField] ->Disable(); + aDirBtnArr[nField][0]->Disable(); + aDirBtnArr[nField][1]->Disable(); + aFlArr[nField] ->Disable(); } } @@ -359,18 +370,20 @@ void ScTabPageSortFields::DisableField( sal_uInt16 nField ) void ScTabPageSortFields::EnableField( sal_uInt16 nField ) { - if ( nField<nSortKeyCount ) + nField--; + + if ( nField<=2 ) { - aLbSortArr[nField] -> Enable(); - aBtnUp[nField] -> Enable(); - aBtnDown[nField] -> Enable(); - aFlArr[nField] -> Enable(); + aSortLbArr[nField] ->Enable(); + aDirBtnArr[nField][0]->Enable(); + aDirBtnArr[nField][1]->Enable(); + aFlArr[nField] ->Enable(); } } // ----------------------------------------------------------------------- -void ScTabPageSortFields::FillFieldLists( sal_uInt16 nStartField ) +void ScTabPageSortFields::FillFieldLists() { if ( pViewData ) { @@ -378,11 +391,12 @@ void ScTabPageSortFields::FillFieldLists( sal_uInt16 nStartField ) if ( pDoc ) { - for ( sal_uInt16 i=nStartField; i<nSortKeyCount; i++ ) - { - aLbSortArr[i] -> Clear(); - aLbSortArr[i] -> InsertEntry( aStrUndefined, 0 ); - } + aLbSort1.Clear(); + aLbSort2.Clear(); + aLbSort3.Clear(); + aLbSort1.InsertEntry( aStrUndefined, 0 ); + aLbSort2.InsertEntry( aStrUndefined, 0 ); + aLbSort3.InsertEntry( aStrUndefined, 0 ); SCCOL nFirstSortCol = rSortData.nCol1; SCROW nFirstSortRow = rSortData.nRow1; @@ -404,11 +418,10 @@ void ScTabPageSortFields::FillFieldLists( sal_uInt16 nStartField ) aFieldName += ' '; aFieldName += ScColToAlpha( col ); } - nFieldArr.push_back( col ); - - for ( sal_uInt16 j=nStartField; j<nSortKeyCount; j++ ) - aLbSortArr[j] -> InsertEntry( aFieldName, i ); - + nFieldArr[i] = col; + aLbSort1.InsertEntry( aFieldName, i ); + aLbSort2.InsertEntry( aFieldName, i ); + aLbSort3.InsertEntry( aFieldName, i ); i++; } } @@ -427,11 +440,10 @@ void ScTabPageSortFields::FillFieldLists( sal_uInt16 nStartField ) aFieldName += ' '; aFieldName += String::CreateFromInt32( row+1 ); } - nFieldArr.push_back( row ); - - for ( sal_uInt16 j=nStartField; j<nSortKeyCount; j++ ) - aLbSortArr[j] -> InsertEntry( aFieldName, i ); - + nFieldArr[i] = row; + aLbSort1.InsertEntry( aFieldName, i ); + aLbSort2.InsertEntry( aFieldName, i ); + aLbSort3.InsertEntry( aFieldName, i ); i++; } } @@ -466,30 +478,38 @@ sal_uInt16 ScTabPageSortFields::GetFieldSelPos( SCCOLROW nField ) IMPL_LINK( ScTabPageSortFields, SelectHdl, ListBox *, pLb ) { String aSelEntry = pLb->GetSelectEntry(); - sal_uInt16 nPos = 0; - - // Find selected listbox - while ( pLb != aLbSortArr[nPos] ) - ++nPos; - // If not selecting the last Listbox modify the succeeding ones - ++nPos; - if ( nPos < nSortKeyCount ) + if ( pLb == &aLbSort1 ) { if ( aSelEntry == aStrUndefined ) { - for ( sal_uInt16 i=nPos; i<nSortKeyCount; i++ ) - { - aLbSortArr[i] -> SelectEntryPos( 0 ); + aLbSort2.SelectEntryPos( 0 ); + aLbSort3.SelectEntryPos( 0 ); - if ( aFlArr[i] -> IsEnabled() ) - DisableField( i ); - } + if ( aFlSort2.IsEnabled() ) + DisableField( 2 ); + + if ( aFlSort3.IsEnabled() ) + DisableField( 3 ); + } + else + { + if ( !aFlSort2.IsEnabled() ) + EnableField( 2 ); + } + } + else if ( pLb == &aLbSort2 ) + { + if ( aSelEntry == aStrUndefined ) + { + aLbSort3.SelectEntryPos( 0 ); + if ( aFlSort3.IsEnabled() ) + DisableField( 3 ); } else { - if ( !aFlArr[nPos] -> IsEnabled() ) - EnableField( nPos ); + if ( !aFlSort3.IsEnabled() ) + EnableField( 3 ); } } return 0; @@ -530,7 +550,6 @@ ScTabPageSortOptions::ScTabPageSortOptions( Window* pParent, nWhichSort ( rArgSet.GetPool()->GetWhich( SID_SORT ) ), rSortData ( ((const ScSortItem&) rArgSet.Get( nWhichSort )).GetSortData() ), - aNewSortData ( rSortData ), pViewData ( NULL ), pDoc ( NULL ), pDlg ( (ScSortDlg*)(GetParent() ? GetParent()->GetParent() : 0 ) ), @@ -587,23 +606,12 @@ void ScTabPageSortOptions::Init() OSL_ENSURE( pViewData, "ViewData not found! :-/" ); - // Create local copy of ScParam - aNewSortData = rSortData; - - if (pDlg) - { - const SfxItemSet* pExample = pDlg->GetExampleSet(); - const SfxPoolItem* pItem; - if ( pExample && pExample->GetItemState( nWhichSort, sal_True, &pItem ) == SFX_ITEM_SET ) - aNewSortData = static_cast<const ScSortItem*>(pItem)->GetSortData(); - } - if ( pViewData && pDoc ) { String theArea; ScDBCollection* pDBColl = pDoc->GetDBCollection(); String theDbArea; - const SCTAB nCurTab = pViewData->GetTabNo(); + const SCTAB nCurTab = pViewData->GetTabNo(); String theDbName = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(STR_DB_LOCAL_NONAME)); const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention(); @@ -628,17 +636,17 @@ void ScTabPageSortOptions::Init() // Check whether the field that is passed on is a database field: - ScAddress aScAddress( aNewSortData.nCol1, aNewSortData.nRow1, nCurTab ); + ScAddress aScAddress( rSortData.nCol1, rSortData.nRow1, nCurTab ); ScRange( aScAddress, - ScAddress( aNewSortData.nCol2, aNewSortData.nRow2, nCurTab ) + ScAddress( rSortData.nCol2, rSortData.nRow2, nCurTab ) ).Format( theArea, SCR_ABS, pDoc, eConv ); if ( pDBColl ) { ScDBData* pDBData = pDBColl->GetDBAtArea( nCurTab, - aNewSortData.nCol1, aNewSortData.nRow1, - aNewSortData.nCol2, aNewSortData.nRow2 ); + rSortData.nCol1, rSortData.nRow1, + rSortData.nCol2, rSortData.nRow2 ); if ( pDBData ) { theDbName = pDBData->GetName(); @@ -744,37 +752,46 @@ void ScTabPageSortOptions::Reset( const SfxItemSet& /* rArgSet */ ) sal_Bool ScTabPageSortOptions::FillItemSet( SfxItemSet& rArgSet ) { - aNewSortData.bByRow = aBtnTopDown.IsChecked(); - aNewSortData.bHasHeader = aBtnHeader.IsChecked(); - aNewSortData.bCaseSens = aBtnCase.IsChecked(); - aNewSortData.bNaturalSort = aBtnNaturalSort.IsChecked(); - aNewSortData.bIncludePattern = aBtnFormats.IsChecked(); - aNewSortData.bInplace = !aBtnCopyResult.IsChecked(); - aNewSortData.nDestCol = theOutPos.Col(); - aNewSortData.nDestRow = theOutPos.Row(); - aNewSortData.nDestTab = theOutPos.Tab(); - aNewSortData.bUserDef = aBtnSortUser.IsChecked(); - aNewSortData.nUserIndex = (aBtnSortUser.IsChecked()) - ? aLbSortUser.GetSelectEntryPos() - : 0; + ScSortParam theSortData = rSortData; + if (pDlg) + { + const SfxItemSet* pExample = pDlg->GetExampleSet(); + const SfxPoolItem* pItem; + if ( pExample && pExample->GetItemState( nWhichSort, sal_True, &pItem ) == SFX_ITEM_SET ) + theSortData = ((const ScSortItem*)pItem)->GetSortData(); + } + + theSortData.bByRow = aBtnTopDown.IsChecked(); + theSortData.bHasHeader = aBtnHeader.IsChecked(); + theSortData.bCaseSens = aBtnCase.IsChecked(); + theSortData.bNaturalSort = aBtnNaturalSort.IsChecked(); + theSortData.bIncludePattern = aBtnFormats.IsChecked(); + theSortData.bInplace = !aBtnCopyResult.IsChecked(); + theSortData.nDestCol = theOutPos.Col(); + theSortData.nDestRow = theOutPos.Row(); + theSortData.nDestTab = theOutPos.Tab(); + theSortData.bUserDef = aBtnSortUser.IsChecked(); + theSortData.nUserIndex = (aBtnSortUser.IsChecked()) + ? aLbSortUser.GetSelectEntryPos() + : 0; // get locale LanguageType eLang = aLbLanguage.GetSelectLanguage(); - aNewSortData.aCollatorLocale = MsLangId::convertLanguageToLocale( eLang, false ); + theSortData.aCollatorLocale = MsLangId::convertLanguageToLocale( eLang, false ); // get algorithm String sAlg; if ( eLang != LANGUAGE_SYSTEM ) { uno::Sequence<rtl::OUString> aAlgos = pColWrap->listCollatorAlgorithms( - aNewSortData.aCollatorLocale ); + theSortData.aCollatorLocale ); sal_uInt16 nSel = aLbAlgorithm.GetSelectEntryPos(); if ( nSel < aAlgos.getLength() ) sAlg = aAlgos[nSel]; } - aNewSortData.aCollatorAlgorithm = sAlg; + theSortData.aCollatorAlgorithm = sAlg; - rArgSet.Put( ScSortItem( SCITEM_SORTDATA, &aNewSortData ) ); + rArgSet.Put( ScSortItem( SCITEM_SORTDATA, &theSortData ) ); return sal_True; } diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx index a54f906c1829..13b484ac0e5f 100644 --- a/sc/source/ui/docshell/dbdocfun.cxx +++ b/sc/source/ui/docshell/dbdocfun.cxx @@ -282,7 +282,7 @@ bool ScDBDocFunc::RepeatDB( const ::rtl::OUString& rDBName, bool bRecord, bool b ScSortParam aSortParam; pDBData->GetSortParam( aSortParam ); - sal_Bool bSort = aSortParam.maKeyState[0].bDoSort; + sal_Bool bSort = aSortParam.bDoSort[0]; ScSubTotalParam aSubTotalParam; pDBData->GetSubTotalParam( aSubTotalParam ); @@ -585,7 +585,7 @@ sal_Bool ScDBDocFunc::Sort( SCTAB nTab, const ScSortParam& rSortParam, } // don't call ScDocument::Sort with an empty SortParam (may be empty here if bCopy is set) - if ( aLocalParam.maKeyState[0].bDoSort ) + if ( aLocalParam.bDoSort[0] ) pDoc->Sort( nTab, aLocalParam, bRepeatQuery ); sal_Bool bSave = sal_True; @@ -593,7 +593,7 @@ sal_Bool ScDBDocFunc::Sort( SCTAB nTab, const ScSortParam& rSortParam, { ScSortParam aOldSortParam; pDBData->GetSortParam( aOldSortParam ); - if ( aOldSortParam.maKeyState[0].bDoSort && aOldSortParam.bInplace ) // Inplace-Sortierung gemerkt? + if ( aOldSortParam.bDoSort[0] && aOldSortParam.bInplace ) // Inplace-Sortierung gemerkt? { bSave = false; aOldSortParam.nDestCol = rSortParam.nDestCol; diff --git a/sc/source/ui/inc/tpsort.hxx b/sc/source/ui/inc/tpsort.hxx index 2a447cb3d67d..8b87726cc75b 100644 --- a/sc/source/ui/inc/tpsort.hxx +++ b/sc/source/ui/inc/tpsort.hxx @@ -29,7 +29,6 @@ #ifndef SC_TPSORT_HXX #define SC_TPSORT_HXX -#include <vector> #include <sfx2/tabdlg.hxx> #include <vcl/edit.hxx> @@ -41,7 +40,6 @@ #include "global.hxx" #include "address.hxx" -#include "sortparam.hxx" //------------------------------------------------------------------------ @@ -99,28 +97,23 @@ private: ScSortDlg* pDlg; ScViewData* pViewData; const ScSortParam& rSortData; - ScSortParam aNewSortData; - std::vector<SCCOLROW> nFieldArr; + SCCOLROW nFieldArr[SC_MAXFIELDS]; sal_uInt16 nFieldCount; - sal_uInt16 nSortKeyCount; - sal_uInt16 nCurrentOffset; - SCCOL nFirstCol; SCROW nFirstRow; sal_Bool bHasHeader; sal_Bool bSortByRows; - std::vector<ListBox*> aLbSortArr; - std::vector<RadioButton*> aBtnUp; - std::vector<RadioButton*> aBtnDown; - std::vector<FixedLine*> aFlArr; + ListBox* aSortLbArr[3]; + RadioButton* aDirBtnArr[3][2]; + FixedLine* aFlArr[3]; #ifdef _TPSORT_CXX private: void Init (); void DisableField ( sal_uInt16 nField ); void EnableField ( sal_uInt16 nField ); - void FillFieldLists ( sal_uInt16 nStartField ); + void FillFieldLists (); sal_uInt16 GetFieldSelPos ( SCCOLROW nField ); // Handler ------------------------ @@ -188,7 +181,6 @@ private: const sal_uInt16 nWhichSort; const ScSortParam& rSortData; - ScSortParam aNewSortData; ScViewData* pViewData; ScDocument* pDoc; ScSortDlg* pDlg; diff --git a/sc/source/ui/src/sortdlg.src b/sc/source/ui/src/sortdlg.src index 466ab7a5d990..a4296f45d2db 100644 --- a/sc/source/ui/src/sortdlg.src +++ b/sc/source/ui/src/sortdlg.src @@ -61,7 +61,7 @@ TabPage RID_SCPAGE_SORT_FIELDS { Pos = MAP_APPFONT ( 6 , 3 ) ; Size = MAP_APPFONT ( 248 , 8 ) ; - Text [ en-US ] = "Sort ~key 1" ; + Text [ en-US ] = "Sort ~by" ; }; ListBox LB_SORT2 { @@ -92,7 +92,7 @@ TabPage RID_SCPAGE_SORT_FIELDS { Pos = MAP_APPFONT ( 6 , 44 ) ; Size = MAP_APPFONT ( 248 , 8 ) ; - Text [ en-US ] = "Sort ~key 2" ; + Text [ en-US ] = "Then b~y" ; }; ListBox LB_SORT3 { @@ -123,7 +123,7 @@ TabPage RID_SCPAGE_SORT_FIELDS { Pos = MAP_APPFONT ( 6 , 85 ) ; Size = MAP_APPFONT ( 248 , 8 ) ; - Text [ en-US ] = "Sort ~key 3" ; + Text [ en-US ] = "T~hen by" ; }; }; diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx index 750822cc8892..c82e56afe8f6 100644 --- a/sc/source/ui/unoobj/cellsuno.cxx +++ b/sc/source/ui/unoobj/cellsuno.cxx @@ -5625,9 +5625,9 @@ uno::Sequence<beans::PropertyValue> SAL_CALL ScCellRangeObj::createSortDescripto SCCOLROW nFieldStart = aParam.bByRow ? static_cast<SCCOLROW>(aDBRange.aStart.Col()) : static_cast<SCCOLROW>(aDBRange.aStart.Row()); - for (sal_uInt16 i=0; i<aParam.GetSortKeyCount(); i++) - if ( aParam.maKeyState[i].bDoSort && aParam.maKeyState[i].nField >= nFieldStart ) - aParam.maKeyState[i].nField -= nFieldStart; + for (sal_uInt16 i=0; i<MAXSORT; i++) + if ( aParam.bDoSort[i] && aParam.nField[i] >= nFieldStart ) + aParam.nField[i] -= nFieldStart; } } @@ -5653,9 +5653,9 @@ void SAL_CALL ScCellRangeObj::sort( const uno::Sequence<beans::PropertyValue>& a SCCOLROW nOldStart = aParam.bByRow ? static_cast<SCCOLROW>(aRange.aStart.Col()) : static_cast<SCCOLROW>(aRange.aStart.Row()); - for (i=0; i<aParam.GetSortKeyCount(); i++) - if ( aParam.maKeyState[i].bDoSort && aParam.maKeyState[i].nField >= nOldStart ) - aParam.maKeyState[i].nField -= nOldStart; + for (i=0; i<MAXSORT; i++) + if ( aParam.bDoSort[i] && aParam.nField[i] >= nOldStart ) + aParam.nField[i] -= nOldStart; } ScSortDescriptor::FillSortParam( aParam, aDescriptor ); @@ -5665,8 +5665,8 @@ void SAL_CALL ScCellRangeObj::sort( const uno::Sequence<beans::PropertyValue>& a SCCOLROW nFieldStart = aParam.bByRow ? static_cast<SCCOLROW>(aRange.aStart.Col()) : static_cast<SCCOLROW>(aRange.aStart.Row()); - for (i=0; i<aParam.GetSortKeyCount(); i++) - aParam.maKeyState[i].nField += nFieldStart; + for (i=0; i<MAXSORT; i++) + aParam.nField[i] += nFieldStart; SCTAB nTab = aRange.aStart.Tab(); aParam.nCol1 = aRange.aStart.Col(); diff --git a/sc/source/ui/unoobj/datauno.cxx b/sc/source/ui/unoobj/datauno.cxx index 8380c0b99bce..125ac54ad5ed 100644 --- a/sc/source/ui/unoobj/datauno.cxx +++ b/sc/source/ui/unoobj/datauno.cxx @@ -334,7 +334,7 @@ void ScSortDescriptor::FillProperties( uno::Sequence<beans::PropertyValue>& rSeq aOutPos.Row = rParam.nDestRow; sal_uInt16 nSortCount = 0; - while ( nSortCount < rParam.GetSortKeyCount() && rParam.maKeyState[nSortCount].bDoSort ) + while ( nSortCount < MAXSORT && rParam.bDoSort[nSortCount] ) ++nSortCount; uno::Sequence<table::TableSortField> aFields(nSortCount); @@ -343,8 +343,8 @@ void ScSortDescriptor::FillProperties( uno::Sequence<beans::PropertyValue>& rSeq table::TableSortField* pFieldArray = aFields.getArray(); for (sal_uInt16 i=0; i<nSortCount; i++) { - pFieldArray[i].Field = rParam.maKeyState[i].nField; - pFieldArray[i].IsAscending = rParam.maKeyState[i].bAscending; + pFieldArray[i].Field = rParam.nField[i]; + pFieldArray[i].IsAscending = rParam.bAscending[i]; pFieldArray[i].FieldType = table::TableSortFieldType_AUTOMATIC; // immer Automatic pFieldArray[i].IsCaseSensitive = rParam.bCaseSens; pFieldArray[i].CollatorLocale = rParam.aCollatorLocale; @@ -361,7 +361,7 @@ void ScSortDescriptor::FillProperties( uno::Sequence<beans::PropertyValue>& rSeq ScUnoHelpFunctions::SetBoolInAny( pArray[1].Value, rParam.bHasHeader ); pArray[2].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_MAXFLD )); - pArray[2].Value <<= static_cast<sal_Int32>( rParam.GetSortKeyCount() ); + pArray[2].Value <<= (sal_Int32) MAXSORT; pArray[3].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_SORTFLD )); pArray[3].Value <<= aFields; @@ -379,15 +379,13 @@ void ScSortDescriptor::FillProperties( uno::Sequence<beans::PropertyValue>& rSeq ScUnoHelpFunctions::SetBoolInAny( pArray[7].Value, rParam.bUserDef ); pArray[8].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_UINDEX )); - pArray[8].Value <<= static_cast<sal_Int32>( rParam.nUserIndex ); + pArray[8].Value <<= (sal_Int32) rParam.nUserIndex; } void ScSortDescriptor::FillSortParam( ScSortParam& rParam, const uno::Sequence<beans::PropertyValue>& rSeq ) { const beans::PropertyValue* pPropArray = rSeq.getConstArray(); long nPropCount = rSeq.getLength(); - sal_Int16 nSortSize = rParam.GetSortKeyCount(); - for (long nProp = 0; nProp < nPropCount; nProp++) { const beans::PropertyValue& rProp = pPropArray[nProp]; @@ -409,7 +407,7 @@ void ScSortDescriptor::FillSortParam( ScSortParam& rParam, const uno::Sequence<b else if (aPropName.EqualsAscii( SC_UNONAME_MAXFLD )) { sal_Int32 nVal; - if ( (rProp.Value >>= nVal) && nVal > nSortSize ) + if ( (rProp.Value >>= nVal) && nVal > MAXSORT ) { //! specify exceptions //! throw lang::IllegalArgumentException(); @@ -423,37 +421,37 @@ void ScSortDescriptor::FillSortParam( ScSortParam& rParam, const uno::Sequence<b { sal_Int32 nCount = aSeq.getLength(); sal_Int32 i; - if ( nCount > static_cast<sal_Int32>( rParam.GetSortKeyCount() ) ) + if ( nCount > MAXSORT ) { - nCount = nSortSize; - rParam.maKeyState.resize(nCount); + OSL_FAIL("Zu viele Sortierfelder"); + nCount = MAXSORT; } const util::SortField* pFieldArray = aSeq.getConstArray(); for (i=0; i<nCount; i++) { - rParam.maKeyState[i].nField = static_cast<SCCOLROW>( pFieldArray[i].Field ); - rParam.maKeyState[i].bAscending = pFieldArray[i].SortAscending; + rParam.nField[i] = (SCCOLROW)pFieldArray[i].Field; + rParam.bAscending[i] = pFieldArray[i].SortAscending; // FieldType wird ignoriert - rParam.maKeyState[i].bDoSort = true; + rParam.bDoSort[i] = sal_True; } - for (i=nCount; i<nSortSize; i++) - rParam.maKeyState[i].bDoSort = false; + for (i=nCount; i<MAXSORT; i++) + rParam.bDoSort[i] = false; } else if ( rProp.Value >>= aNewSeq ) { sal_Int32 nCount = aNewSeq.getLength(); sal_Int32 i; - if ( nCount > nSortSize ) + if ( nCount > MAXSORT ) { - nCount = nSortSize; - rParam.maKeyState.resize(nCount); + OSL_FAIL("Zu viele Sortierfelder"); + nCount = MAXSORT; } const table::TableSortField* pFieldArray = aNewSeq.getConstArray(); for (i=0; i<nCount; i++) { - rParam.maKeyState[i].nField = static_cast<SCCOLROW>( pFieldArray[i].Field ); - rParam.maKeyState[i].bAscending = pFieldArray[i].IsAscending; + rParam.nField[i] = (SCCOLROW)pFieldArray[i].Field; + rParam.bAscending[i] = pFieldArray[i].IsAscending; // only one is possible, sometime we should make it possible to have different for every entry rParam.bCaseSens = pFieldArray[i].IsCaseSensitive; @@ -461,10 +459,10 @@ void ScSortDescriptor::FillSortParam( ScSortParam& rParam, const uno::Sequence<b rParam.aCollatorAlgorithm = pFieldArray[i].CollatorAlgorithm; // FieldType wird ignoriert - rParam.maKeyState[i].bDoSort = true; + rParam.bDoSort[i] = sal_True; } - for (i=nCount; i<nSortSize; i++) - rParam.maKeyState[i].bDoSort = false; + for (i=nCount; i<MAXSORT; i++) + rParam.bDoSort[i] = false; } } else if (aPropName.EqualsAscii( SC_UNONAME_ISCASE )) @@ -1820,9 +1818,9 @@ uno::Sequence<beans::PropertyValue> SAL_CALL ScDatabaseRangeObj::getSortDescript ScRange aDBRange; pData->GetArea(aDBRange); SCCOLROW nFieldStart = aParam.bByRow ? static_cast<SCCOLROW>(aDBRange.aStart.Col()) : static_cast<SCCOLROW>(aDBRange.aStart.Row()); - for (sal_uInt16 i=0; i<aParam.GetSortKeyCount(); i++) - if ( aParam.maKeyState[i].bDoSort && aParam.maKeyState[i].nField >= nFieldStart ) - aParam.maKeyState[i].nField -= nFieldStart; + for (sal_uInt16 i=0; i<MAXSORT; i++) + if ( aParam.bDoSort[i] && aParam.nField[i] >= nFieldStart ) + aParam.nField[i] -= nFieldStart; } uno::Sequence<beans::PropertyValue> aSeq( ScSortDescriptor::GetPropertyCount() ); diff --git a/sc/source/ui/vba/vbarange.cxx b/sc/source/ui/vba/vbarange.cxx index 6b8fa9e67e2b..2ec55b3378d4 100644 --- a/sc/source/ui/vba/vbarange.cxx +++ b/sc/source/ui/vba/vbarange.cxx @@ -3539,9 +3539,9 @@ ScVbaRange::Sort( const uno::Any& Key1, const uno::Any& Order1, const uno::Any& // set up defaults - sal_Int16 nOrder1 = aSortParam.maKeyState[1].bAscending ? excel::XlSortOrder::xlAscending : excel::XlSortOrder::xlDescending; - sal_Int16 nOrder2 = aSortParam.maKeyState[2].bAscending ? excel::XlSortOrder::xlAscending : excel::XlSortOrder::xlDescending; - sal_Int16 nOrder3 = aSortParam.maKeyState[3].bAscending ? excel::XlSortOrder::xlAscending : excel::XlSortOrder::xlDescending; + sal_Int16 nOrder1 = aSortParam.bAscending[0] ? excel::XlSortOrder::xlAscending : excel::XlSortOrder::xlDescending; + sal_Int16 nOrder2 = aSortParam.bAscending[1] ? excel::XlSortOrder::xlAscending : excel::XlSortOrder::xlDescending; + sal_Int16 nOrder3 = aSortParam.bAscending[2] ? excel::XlSortOrder::xlAscending : excel::XlSortOrder::xlDescending; sal_Int16 nCustom = aSortParam.nUserIndex; sal_Int16 nSortMethod = excel::XlSortMethod::xlPinYin; @@ -3620,26 +3620,26 @@ ScVbaRange::Sort( const uno::Any& Key1, const uno::Any& Order1, const uno::Any& { nOrder1 = ::comphelper::getINT16(Order1); if ( nOrder1 == excel::XlSortOrder::xlAscending ) - aSortParam.maKeyState[0].bAscending = true; + aSortParam.bAscending[0] = true; else - aSortParam.maKeyState[0].bAscending = false; + aSortParam.bAscending[0] = false; } if ( Order2.hasValue() ) { nOrder2 = ::comphelper::getINT16(Order2); if ( nOrder2 == excel::XlSortOrder::xlAscending ) - aSortParam.maKeyState[1].bAscending = true; + aSortParam.bAscending[1] = true; else - aSortParam.maKeyState[1].bAscending = false; + aSortParam.bAscending[1] = false; } if ( Order3.hasValue() ) { nOrder3 = ::comphelper::getINT16(Order3); if ( nOrder3 == excel::XlSortOrder::xlAscending ) - aSortParam.maKeyState[2].bAscending = true; + aSortParam.bAscending[2] = true; else - aSortParam.maKeyState[2].bAscending = false; + aSortParam.bAscending[2] = false; } uno::Reference< table::XCellRange > xKey1; diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx index cc2958766429..77121b7dd46a 100644 --- a/sc/source/ui/view/cellsh2.cxx +++ b/sc/source/ui/view/cellsh2.cxx @@ -376,10 +376,12 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq ) aSortParam.bNaturalSort = false; aSortParam.bIncludePattern = true; aSortParam.bInplace = true; - aSortParam.maKeyState[0] = { true, nCol, nSlotId == SID_SORT_ASCENDING }; + aSortParam.bDoSort[0] = true; + aSortParam.nField[0] = nCol; + aSortParam.bAscending[0] = (nSlotId == SID_SORT_ASCENDING); - for ( sal_uInt16 i=1; i<aSortParam.GetSortKeyCount(); i++ ) - aSortParam.maKeyState[i].bDoSort = false; + for ( sal_uInt16 i=1; i<MAXSORT; i++ ) + aSortParam.bDoSort[i] = false; aArgSet.Put( ScSortItem( SCITEM_SORTDATA, GetViewData(), &aSortParam ) ); @@ -418,18 +420,18 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq ) const SfxPoolItem* pItem; if ( pArgs->GetItemState( SID_SORT_BYROW, sal_True, &pItem ) == SFX_ITEM_SET ) - aSortParam.bByRow = static_cast<const SfxBoolItem*>(pItem)->GetValue(); + aSortParam.bByRow = ((const SfxBoolItem*)pItem)->GetValue(); if ( pArgs->GetItemState( SID_SORT_HASHEADER, sal_True, &pItem ) == SFX_ITEM_SET ) - aSortParam.bHasHeader = static_cast<const SfxBoolItem*>(pItem)->GetValue(); + aSortParam.bHasHeader = ((const SfxBoolItem*)pItem)->GetValue(); if ( pArgs->GetItemState( SID_SORT_CASESENS, sal_True, &pItem ) == SFX_ITEM_SET ) - aSortParam.bCaseSens = static_cast<const SfxBoolItem*>(pItem)->GetValue(); + aSortParam.bCaseSens = ((const SfxBoolItem*)pItem)->GetValue(); if ( pArgs->GetItemState( SID_SORT_NATURALSORT, true, &pItem ) == SFX_ITEM_SET ) - aSortParam.bNaturalSort = static_cast<const SfxBoolItem*>(pItem)->GetValue(); + aSortParam.bNaturalSort = ((const SfxBoolItem*)pItem)->GetValue(); if ( pArgs->GetItemState( SID_SORT_ATTRIBS, true, &pItem ) == SFX_ITEM_SET ) - aSortParam.bIncludePattern = static_cast<const SfxBoolItem*>(pItem)->GetValue(); + aSortParam.bIncludePattern = ((const SfxBoolItem*)pItem)->GetValue(); if ( pArgs->GetItemState( SID_SORT_USERDEF, sal_True, &pItem ) == SFX_ITEM_SET ) { - sal_uInt16 nUserIndex = static_cast<const SfxUInt16Item*>(pItem)->GetValue(); + sal_uInt16 nUserIndex = ((const SfxUInt16Item*)pItem)->GetValue(); aSortParam.bUserDef = ( nUserIndex != 0 ); if ( nUserIndex ) aSortParam.nUserIndex = nUserIndex - 1; // Basic: 1-based @@ -437,25 +439,25 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq ) SCCOLROW nField0 = 0; if ( pArgs->GetItemState( FN_PARAM_1, sal_True, &pItem ) == SFX_ITEM_SET ) - nField0 = static_cast<const SfxInt32Item*>(pItem)->GetValue(); - aSortParam.maKeyState[0].bDoSort = ( nField0 != 0 ); - aSortParam.maKeyState[0].nField = nField0 > 0 ? (nField0-1) : 0; + nField0 = ((const SfxInt32Item*)pItem)->GetValue(); + aSortParam.bDoSort[0] = ( nField0 != 0 ); + aSortParam.nField[0] = nField0 > 0 ? (nField0-1) : 0; if ( pArgs->GetItemState( FN_PARAM_2, sal_True, &pItem ) == SFX_ITEM_SET ) - aSortParam.maKeyState[0].bAscending = static_cast<const SfxBoolItem*>(pItem)->GetValue(); + aSortParam.bAscending[0] = ((const SfxBoolItem*)pItem)->GetValue(); SCCOLROW nField1 = 0; if ( pArgs->GetItemState( FN_PARAM_3, sal_True, &pItem ) == SFX_ITEM_SET ) - nField1 = static_cast<const SfxInt32Item*>(pItem)->GetValue(); - aSortParam.maKeyState[1].bDoSort = ( nField1 != 0 ); - aSortParam.maKeyState[1].nField = nField1 > 0 ? (nField1-1) : 0; + nField1 = ((const SfxInt32Item*)pItem)->GetValue(); + aSortParam.bDoSort[1] = ( nField1 != 0 ); + aSortParam.nField[1] = nField1 > 0 ? (nField1-1) : 0; if ( pArgs->GetItemState( FN_PARAM_4, sal_True, &pItem ) == SFX_ITEM_SET ) - aSortParam.maKeyState[1].bAscending = static_cast<const SfxBoolItem*>(pItem)->GetValue(); + aSortParam.bAscending[1] = ((const SfxBoolItem*)pItem)->GetValue(); SCCOLROW nField2 = 0; if ( pArgs->GetItemState( FN_PARAM_5, sal_True, &pItem ) == SFX_ITEM_SET ) - nField2 = static_cast<const SfxInt32Item*>(pItem)->GetValue(); - aSortParam.maKeyState[2].bDoSort = ( nField2 != 0 ); - aSortParam.maKeyState[2].nField = nField2 > 0 ? (nField2-1) : 0; + nField2 = ((const SfxInt32Item*)pItem)->GetValue(); + aSortParam.bDoSort[2] = ( nField2 != 0 ); + aSortParam.nField[2] = nField2 > 0 ? (nField2-1) : 0; if ( pArgs->GetItemState( FN_PARAM_6, sal_True, &pItem ) == SFX_ITEM_SET ) - aSortParam.maKeyState[2].bAscending = static_cast<const SfxBoolItem*>(pItem)->GetValue(); + aSortParam.bAscending[2] = ((const SfxBoolItem*)pItem)->GetValue(); // subtotal when needed new pTabViewShell->UISort( aSortParam ); @@ -514,26 +516,26 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq ) rOutParam.bIncludePattern ) ); sal_uInt16 nUser = rOutParam.bUserDef ? ( rOutParam.nUserIndex + 1 ) : 0; rReq.AppendItem( SfxUInt16Item( SID_SORT_USERDEF, nUser ) ); - if ( rOutParam.maKeyState[0].bDoSort ) + if ( rOutParam.bDoSort[0] ) { rReq.AppendItem( SfxInt32Item( FN_PARAM_1, - rOutParam.maKeyState[0].nField + 1 ) ); + rOutParam.nField[0] + 1 ) ); rReq.AppendItem( SfxBoolItem( FN_PARAM_2, - rOutParam.maKeyState[0].bAscending ) ); + rOutParam.bAscending[0] ) ); } - if ( rOutParam.maKeyState[1].bDoSort ) + if ( rOutParam.bDoSort[1] ) { rReq.AppendItem( SfxInt32Item( FN_PARAM_3, - rOutParam.maKeyState[1].nField + 1 ) ); + rOutParam.nField[1] + 1 ) ); rReq.AppendItem( SfxBoolItem( FN_PARAM_4, - rOutParam.maKeyState[1].bAscending ) ); + rOutParam.bAscending[1] ) ); } - if ( rOutParam.maKeyState[2].bDoSort ) + if ( rOutParam.bDoSort[2] ) { rReq.AppendItem( SfxInt32Item( FN_PARAM_5, - rOutParam.maKeyState[2].nField + 1 ) ); + rOutParam.nField[2] + 1 ) ); rReq.AppendItem( SfxBoolItem( FN_PARAM_6, - rOutParam.maKeyState[2].bAscending ) ); + rOutParam.bAscending[2] ) ); } } diff --git a/sc/source/ui/view/dbfunc3.cxx b/sc/source/ui/view/dbfunc3.cxx index bd3fa1919a9c..e8bfb3f2d3ab 100644 --- a/sc/source/ui/view/dbfunc3.cxx +++ b/sc/source/ui/view/dbfunc3.cxx @@ -2158,7 +2158,7 @@ void ScDBFunc::RepeatDB( sal_Bool bRecord ) ScSortParam aSortParam; pDBData->GetSortParam( aSortParam ); - sal_Bool bSort = aSortParam.maKeyState[0].bDoSort; + sal_Bool bSort = aSortParam.bDoSort[0]; ScSubTotalParam aSubTotalParam; pDBData->GetSubTotalParam( aSubTotalParam ); |