diff options
Diffstat (limited to 'sc/source/ui/unoobj')
-rw-r--r-- | sc/source/ui/unoobj/cellsuno.cxx | 16 | ||||
-rw-r--r-- | sc/source/ui/unoobj/datauno.cxx | 48 |
2 files changed, 33 insertions, 31 deletions
diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx index c82e56afe8f6..750822cc8892 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<MAXSORT; i++) - if ( aParam.bDoSort[i] && aParam.nField[i] >= nFieldStart ) - aParam.nField[i] -= nFieldStart; + for (sal_uInt16 i=0; i<aParam.GetSortKeyCount(); i++) + if ( aParam.maKeyState[i].bDoSort && aParam.maKeyState[i].nField >= nFieldStart ) + aParam.maKeyState[i].nField -= 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<MAXSORT; i++) - if ( aParam.bDoSort[i] && aParam.nField[i] >= nOldStart ) - aParam.nField[i] -= nOldStart; + for (i=0; i<aParam.GetSortKeyCount(); i++) + if ( aParam.maKeyState[i].bDoSort && aParam.maKeyState[i].nField >= nOldStart ) + aParam.maKeyState[i].nField -= 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<MAXSORT; i++) - aParam.nField[i] += nFieldStart; + for (i=0; i<aParam.GetSortKeyCount(); i++) + aParam.maKeyState[i].nField += 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 125ac54ad5ed..c2243eed8921 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 < MAXSORT && rParam.bDoSort[nSortCount] ) + while ( nSortCount < rParam.GetSortKeyCount() && rParam.maKeyState[nSortCount].bDoSort ) ++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.nField[i]; - pFieldArray[i].IsAscending = rParam.bAscending[i]; + pFieldArray[i].Field = rParam.maKeyState[i].nField; + pFieldArray[i].IsAscending = rParam.maKeyState[i].bAscending; 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 <<= (sal_Int32) MAXSORT; + pArray[2].Value <<= static_cast<sal_Int32>( rParam.GetSortKeyCount() ); pArray[3].Name = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_SORTFLD )); pArray[3].Value <<= aFields; @@ -379,13 +379,15 @@ 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 <<= (sal_Int32) rParam.nUserIndex; + pArray[8].Value <<= static_cast<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]; @@ -407,7 +409,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 > MAXSORT ) + if ( (rProp.Value >>= nVal) && nVal > nSortSize ) { //! specify exceptions //! throw lang::IllegalArgumentException(); @@ -421,37 +423,37 @@ void ScSortDescriptor::FillSortParam( ScSortParam& rParam, const uno::Sequence<b { sal_Int32 nCount = aSeq.getLength(); sal_Int32 i; - if ( nCount > MAXSORT ) + if ( nCount > static_cast<sal_Int32>( rParam.GetSortKeyCount() ) ) { OSL_FAIL("Zu viele Sortierfelder"); - nCount = MAXSORT; + nCount = nSortSize; } const util::SortField* pFieldArray = aSeq.getConstArray(); for (i=0; i<nCount; i++) { - rParam.nField[i] = (SCCOLROW)pFieldArray[i].Field; - rParam.bAscending[i] = pFieldArray[i].SortAscending; + rParam.maKeyState[i].nField = static_cast<SCCOLROW>( pFieldArray[i].Field ); + rParam.maKeyState[i].bAscending = pFieldArray[i].SortAscending; // FieldType wird ignoriert - rParam.bDoSort[i] = sal_True; + rParam.maKeyState[i].bDoSort = sal_True; } - for (i=nCount; i<MAXSORT; i++) - rParam.bDoSort[i] = false; + for (i=nCount; i<nSortSize; i++) + rParam.maKeyState[i].bDoSort = false; } else if ( rProp.Value >>= aNewSeq ) { sal_Int32 nCount = aNewSeq.getLength(); sal_Int32 i; - if ( nCount > MAXSORT ) + if ( nCount > nSortSize ) { OSL_FAIL("Zu viele Sortierfelder"); - nCount = MAXSORT; + nCount = nSortSize; } const table::TableSortField* pFieldArray = aNewSeq.getConstArray(); for (i=0; i<nCount; i++) { - rParam.nField[i] = (SCCOLROW)pFieldArray[i].Field; - rParam.bAscending[i] = pFieldArray[i].IsAscending; + rParam.maKeyState[i].nField = static_cast<SCCOLROW>( pFieldArray[i].Field ); + rParam.maKeyState[i].bAscending = pFieldArray[i].IsAscending; // only one is possible, sometime we should make it possible to have different for every entry rParam.bCaseSens = pFieldArray[i].IsCaseSensitive; @@ -459,10 +461,10 @@ void ScSortDescriptor::FillSortParam( ScSortParam& rParam, const uno::Sequence<b rParam.aCollatorAlgorithm = pFieldArray[i].CollatorAlgorithm; // FieldType wird ignoriert - rParam.bDoSort[i] = sal_True; + rParam.maKeyState[i].bDoSort = sal_True; } - for (i=nCount; i<MAXSORT; i++) - rParam.bDoSort[i] = false; + for (i=nCount; i<nSortSize; i++) + rParam.maKeyState[i].bDoSort = false; } } else if (aPropName.EqualsAscii( SC_UNONAME_ISCASE )) @@ -1818,9 +1820,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<MAXSORT; i++) - if ( aParam.bDoSort[i] && aParam.nField[i] >= nFieldStart ) - aParam.nField[i] -= nFieldStart; + for (sal_uInt16 i=0; i<aParam.GetSortKeyCount(); i++) + if ( aParam.maKeyState[i].bDoSort && aParam.maKeyState[i].nField >= nFieldStart ) + aParam.maKeyState[i].nField -= nFieldStart; } uno::Sequence<beans::PropertyValue> aSeq( ScSortDescriptor::GetPropertyCount() ); |