diff options
Diffstat (limited to 'sc/source')
-rw-r--r-- | sc/source/core/data/global2.cxx | 204 | ||||
-rw-r--r-- | sc/source/core/data/makefile.mk | 1 | ||||
-rw-r--r-- | sc/source/core/data/sortparam.cxx | 2 | ||||
-rw-r--r-- | sc/source/core/data/subtotalparam.cxx | 232 | ||||
-rw-r--r-- | sc/source/core/data/table3.cxx | 1 | ||||
-rw-r--r-- | sc/source/core/tool/dbcolect.cxx | 2 | ||||
-rw-r--r-- | sc/source/filter/xml/XMLExportDatabaseRanges.cxx | 2 | ||||
-rw-r--r-- | sc/source/ui/inc/dbfunc.hxx | 1 | ||||
-rw-r--r-- | sc/source/ui/inc/tpsubt.hxx | 1 | ||||
-rw-r--r-- | sc/source/ui/inc/uiitems.hxx | 1 | ||||
-rw-r--r-- | sc/source/ui/inc/undodat.hxx | 1 |
11 files changed, 243 insertions, 205 deletions
diff --git a/sc/source/core/data/global2.cxx b/sc/source/core/data/global2.cxx index 14ab743ca791..908cdfc72bcf 100644 --- a/sc/source/core/data/global2.cxx +++ b/sc/source/core/data/global2.cxx @@ -228,210 +228,6 @@ utl::TextSearch* ScQueryEntry::GetSearchTextPtr( sal_Bool bCaseSens ) } //------------------------------------------------------------------------ -// struct ScSubTotalParam: - -ScSubTotalParam::ScSubTotalParam() -{ - for ( sal_uInt16 i=0; i<MAXSUBTOTAL; i++ ) - { - nSubTotals[i] = 0; - pSubTotals[i] = NULL; - pFunctions[i] = NULL; - } - - Clear(); -} - -//------------------------------------------------------------------------ - -ScSubTotalParam::ScSubTotalParam( const ScSubTotalParam& r ) : - nCol1(r.nCol1),nRow1(r.nRow1),nCol2(r.nCol2),nRow2(r.nRow2),nUserIndex(r.nUserIndex), - bRemoveOnly(r.bRemoveOnly),bReplace(r.bReplace),bPagebreak(r.bPagebreak),bCaseSens(r.bCaseSens), - bDoSort(r.bDoSort),bAscending(r.bAscending),bUserDef(r.bUserDef), - bIncludePattern(r.bIncludePattern) -{ - for (sal_uInt16 i=0; i<MAXSUBTOTAL; i++) - { - bGroupActive[i] = r.bGroupActive[i]; - nField[i] = r.nField[i]; - - if ( (r.nSubTotals[i] > 0) && r.pSubTotals[i] && r.pFunctions[i] ) - { - nSubTotals[i] = r.nSubTotals[i]; - pSubTotals[i] = new SCCOL [r.nSubTotals[i]]; - pFunctions[i] = new ScSubTotalFunc [r.nSubTotals[i]]; - - for (SCCOL j=0; j<r.nSubTotals[i]; j++) - { - pSubTotals[i][j] = r.pSubTotals[i][j]; - pFunctions[i][j] = r.pFunctions[i][j]; - } - } - else - { - nSubTotals[i] = 0; - pSubTotals[i] = NULL; - pFunctions[i] = NULL; - } - } -} - -//------------------------------------------------------------------------ - -void ScSubTotalParam::Clear() -{ - nCol1=nCol2= 0; - nRow1=nRow2 = 0; - nUserIndex = 0; - bPagebreak=bCaseSens=bUserDef=bIncludePattern=bRemoveOnly = false; - bAscending=bReplace=bDoSort = true; - - for (sal_uInt16 i=0; i<MAXSUBTOTAL; i++) - { - bGroupActive[i] = false; - nField[i] = 0; - - if ( (nSubTotals[i] > 0) && pSubTotals[i] && pFunctions[i] ) - { - for ( SCCOL j=0; j<nSubTotals[i]; j++ ) { - pSubTotals[i][j] = 0; - pFunctions[i][j] = SUBTOTAL_FUNC_NONE; - } - } - } -} - -//------------------------------------------------------------------------ - -ScSubTotalParam& ScSubTotalParam::operator=( const ScSubTotalParam& r ) -{ - nCol1 = r.nCol1; - nRow1 = r.nRow1; - nCol2 = r.nCol2; - nRow2 = r.nRow2; - bRemoveOnly = r.bRemoveOnly; - bReplace = r.bReplace; - bPagebreak = r.bPagebreak; - bCaseSens = r.bCaseSens; - bDoSort = r.bDoSort; - bAscending = r.bAscending; - bUserDef = r.bUserDef; - nUserIndex = r.nUserIndex; - bIncludePattern = r.bIncludePattern; - - for (sal_uInt16 i=0; i<MAXSUBTOTAL; i++) - { - bGroupActive[i] = r.bGroupActive[i]; - nField[i] = r.nField[i]; - nSubTotals[i] = r.nSubTotals[i]; - - if ( pSubTotals[i] ) delete [] pSubTotals[i]; - if ( pFunctions[i] ) delete [] pFunctions[i]; - - if ( r.nSubTotals[i] > 0 ) - { - pSubTotals[i] = new SCCOL [r.nSubTotals[i]]; - pFunctions[i] = new ScSubTotalFunc [r.nSubTotals[i]]; - - for (SCCOL j=0; j<r.nSubTotals[i]; j++) - { - pSubTotals[i][j] = r.pSubTotals[i][j]; - pFunctions[i][j] = r.pFunctions[i][j]; - } - } - else - { - nSubTotals[i] = 0; - pSubTotals[i] = NULL; - pFunctions[i] = NULL; - } - } - - return *this; -} - -//------------------------------------------------------------------------ - -bool ScSubTotalParam::operator==( const ScSubTotalParam& rOther ) const -{ - bool bEqual = (nCol1 == rOther.nCol1) - && (nRow1 == rOther.nRow1) - && (nCol2 == rOther.nCol2) - && (nRow2 == rOther.nRow2) - && (nUserIndex == rOther.nUserIndex) - && (bRemoveOnly == rOther.bRemoveOnly) - && (bReplace == rOther.bReplace) - && (bPagebreak == rOther.bPagebreak) - && (bDoSort == rOther.bDoSort) - && (bCaseSens == rOther.bCaseSens) - && (bAscending == rOther.bAscending) - && (bUserDef == rOther.bUserDef) - && (bIncludePattern== rOther.bIncludePattern); - - if ( bEqual ) - { - bEqual = true; - for ( sal_uInt16 i=0; i<MAXSUBTOTAL && bEqual; i++ ) - { - bEqual = (bGroupActive[i] == rOther.bGroupActive[i]) - && (nField[i] == rOther.nField[i]) - && (nSubTotals[i] == rOther.nSubTotals[i]); - - if ( bEqual && (nSubTotals[i] > 0) ) - { - bEqual = (pSubTotals != NULL) && (pFunctions != NULL); - - for (SCCOL j=0; (j<nSubTotals[i]) && bEqual; j++) - { - bEqual = bEqual - && (pSubTotals[i][j] == rOther.pSubTotals[i][j]) - && (pFunctions[i][j] == rOther.pFunctions[i][j]); - } - } - } - } - - return bEqual; -} - -//------------------------------------------------------------------------ - -void ScSubTotalParam::SetSubTotals( sal_uInt16 nGroup, - const SCCOL* ptrSubTotals, - const ScSubTotalFunc* ptrFunctions, - sal_uInt16 nCount ) -{ - DBG_ASSERT( (nGroup <= MAXSUBTOTAL), - "ScSubTotalParam::SetSubTotals(): nGroup > MAXSUBTOTAL!" ); - DBG_ASSERT( ptrSubTotals, - "ScSubTotalParam::SetSubTotals(): ptrSubTotals == NULL!" ); - DBG_ASSERT( ptrFunctions, - "ScSubTotalParam::SetSubTotals(): ptrFunctions == NULL!" ); - DBG_ASSERT( (nCount > 0), - "ScSubTotalParam::SetSubTotals(): nCount <= 0!" ); - - if ( ptrSubTotals && ptrFunctions && (nCount > 0) && (nGroup <= MAXSUBTOTAL) ) - { - // 0 wird als 1 aufgefasst, sonst zum Array-Index dekrementieren - if (nGroup != 0) - nGroup--; - - delete [] pSubTotals[nGroup]; - delete [] pFunctions[nGroup]; - - pSubTotals[nGroup] = new SCCOL [nCount]; - pFunctions[nGroup] = new ScSubTotalFunc [nCount]; - nSubTotals[nGroup] = static_cast<SCCOL>(nCount); - - for ( sal_uInt16 i=0; i<nCount; i++ ) - { - pSubTotals[nGroup][i] = ptrSubTotals[i]; - pFunctions[nGroup][i] = ptrFunctions[i]; - } - } -} - -//------------------------------------------------------------------------ // struct ScConsolidateParam: ScConsolidateParam::ScConsolidateParam() : diff --git a/sc/source/core/data/makefile.mk b/sc/source/core/data/makefile.mk index efb3fca9e14e..e46c44621a47 100644 --- a/sc/source/core/data/makefile.mk +++ b/sc/source/core/data/makefile.mk @@ -103,6 +103,7 @@ EXCEPTIONSFILES= \ $(SLO)$/segmenttree.obj \ $(SLO)$/stlpool.obj \ $(SLO)$/stlsheet.obj \ + $(SLO)$/subtotalparam.obj \ $(SLO)$/tabbgcolor.obj \ $(SLO)$/table1.obj \ $(SLO)$/table2.obj \ diff --git a/sc/source/core/data/sortparam.cxx b/sc/source/core/data/sortparam.cxx index fc3b4957c9ca..7b021a70ab42 100644 --- a/sc/source/core/data/sortparam.cxx +++ b/sc/source/core/data/sortparam.cxx @@ -35,6 +35,8 @@ #include "global.hxx" #include "address.hxx" #include "queryparam.hxx" +#include "subtotalparam.hxx" + #include <tools/debug.hxx> diff --git a/sc/source/core/data/subtotalparam.cxx b/sc/source/core/data/subtotalparam.cxx new file mode 100644 index 000000000000..26f01e8e6da0 --- /dev/null +++ b/sc/source/core/data/subtotalparam.cxx @@ -0,0 +1,232 @@ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Initial Developer of the Original Code is + * Kohei Yoshida <kyoshida@novell.com> (Novell, Inc.) + * Portions created by the Initial Developer are Copyright (C) 2010 the + * Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sc.hxx" + +#include "subtotalparam.hxx" + +ScSubTotalParam::ScSubTotalParam() +{ + for ( sal_uInt16 i=0; i<MAXSUBTOTAL; i++ ) + { + nSubTotals[i] = 0; + pSubTotals[i] = NULL; + pFunctions[i] = NULL; + } + + Clear(); +} + +//------------------------------------------------------------------------ + +ScSubTotalParam::ScSubTotalParam( const ScSubTotalParam& r ) : + nCol1(r.nCol1),nRow1(r.nRow1),nCol2(r.nCol2),nRow2(r.nRow2),nUserIndex(r.nUserIndex), + bRemoveOnly(r.bRemoveOnly),bReplace(r.bReplace),bPagebreak(r.bPagebreak),bCaseSens(r.bCaseSens), + bDoSort(r.bDoSort),bAscending(r.bAscending),bUserDef(r.bUserDef), + bIncludePattern(r.bIncludePattern) +{ + for (sal_uInt16 i=0; i<MAXSUBTOTAL; i++) + { + bGroupActive[i] = r.bGroupActive[i]; + nField[i] = r.nField[i]; + + if ( (r.nSubTotals[i] > 0) && r.pSubTotals[i] && r.pFunctions[i] ) + { + nSubTotals[i] = r.nSubTotals[i]; + pSubTotals[i] = new SCCOL [r.nSubTotals[i]]; + pFunctions[i] = new ScSubTotalFunc [r.nSubTotals[i]]; + + for (SCCOL j=0; j<r.nSubTotals[i]; j++) + { + pSubTotals[i][j] = r.pSubTotals[i][j]; + pFunctions[i][j] = r.pFunctions[i][j]; + } + } + else + { + nSubTotals[i] = 0; + pSubTotals[i] = NULL; + pFunctions[i] = NULL; + } + } +} + +//------------------------------------------------------------------------ + +void ScSubTotalParam::Clear() +{ + nCol1=nCol2= 0; + nRow1=nRow2 = 0; + nUserIndex = 0; + bPagebreak=bCaseSens=bUserDef=bIncludePattern=bRemoveOnly = false; + bAscending=bReplace=bDoSort = true; + + for (sal_uInt16 i=0; i<MAXSUBTOTAL; i++) + { + bGroupActive[i] = false; + nField[i] = 0; + + if ( (nSubTotals[i] > 0) && pSubTotals[i] && pFunctions[i] ) + { + for ( SCCOL j=0; j<nSubTotals[i]; j++ ) { + pSubTotals[i][j] = 0; + pFunctions[i][j] = SUBTOTAL_FUNC_NONE; + } + } + } +} + +//------------------------------------------------------------------------ + +ScSubTotalParam& ScSubTotalParam::operator=( const ScSubTotalParam& r ) +{ + nCol1 = r.nCol1; + nRow1 = r.nRow1; + nCol2 = r.nCol2; + nRow2 = r.nRow2; + bRemoveOnly = r.bRemoveOnly; + bReplace = r.bReplace; + bPagebreak = r.bPagebreak; + bCaseSens = r.bCaseSens; + bDoSort = r.bDoSort; + bAscending = r.bAscending; + bUserDef = r.bUserDef; + nUserIndex = r.nUserIndex; + bIncludePattern = r.bIncludePattern; + + for (sal_uInt16 i=0; i<MAXSUBTOTAL; i++) + { + bGroupActive[i] = r.bGroupActive[i]; + nField[i] = r.nField[i]; + nSubTotals[i] = r.nSubTotals[i]; + + if ( pSubTotals[i] ) delete [] pSubTotals[i]; + if ( pFunctions[i] ) delete [] pFunctions[i]; + + if ( r.nSubTotals[i] > 0 ) + { + pSubTotals[i] = new SCCOL [r.nSubTotals[i]]; + pFunctions[i] = new ScSubTotalFunc [r.nSubTotals[i]]; + + for (SCCOL j=0; j<r.nSubTotals[i]; j++) + { + pSubTotals[i][j] = r.pSubTotals[i][j]; + pFunctions[i][j] = r.pFunctions[i][j]; + } + } + else + { + nSubTotals[i] = 0; + pSubTotals[i] = NULL; + pFunctions[i] = NULL; + } + } + + return *this; +} + +//------------------------------------------------------------------------ + +bool ScSubTotalParam::operator==( const ScSubTotalParam& rOther ) const +{ + bool bEqual = (nCol1 == rOther.nCol1) + && (nRow1 == rOther.nRow1) + && (nCol2 == rOther.nCol2) + && (nRow2 == rOther.nRow2) + && (nUserIndex == rOther.nUserIndex) + && (bRemoveOnly == rOther.bRemoveOnly) + && (bReplace == rOther.bReplace) + && (bPagebreak == rOther.bPagebreak) + && (bDoSort == rOther.bDoSort) + && (bCaseSens == rOther.bCaseSens) + && (bAscending == rOther.bAscending) + && (bUserDef == rOther.bUserDef) + && (bIncludePattern== rOther.bIncludePattern); + + if ( bEqual ) + { + bEqual = true; + for ( sal_uInt16 i=0; i<MAXSUBTOTAL && bEqual; i++ ) + { + bEqual = (bGroupActive[i] == rOther.bGroupActive[i]) + && (nField[i] == rOther.nField[i]) + && (nSubTotals[i] == rOther.nSubTotals[i]); + + if ( bEqual && (nSubTotals[i] > 0) ) + { + bEqual = (pSubTotals != NULL) && (pFunctions != NULL); + + for (SCCOL j=0; (j<nSubTotals[i]) && bEqual; j++) + { + bEqual = bEqual + && (pSubTotals[i][j] == rOther.pSubTotals[i][j]) + && (pFunctions[i][j] == rOther.pFunctions[i][j]); + } + } + } + } + + return bEqual; +} + +//------------------------------------------------------------------------ + +void ScSubTotalParam::SetSubTotals( sal_uInt16 nGroup, + const SCCOL* ptrSubTotals, + const ScSubTotalFunc* ptrFunctions, + sal_uInt16 nCount ) +{ + DBG_ASSERT( (nGroup <= MAXSUBTOTAL), + "ScSubTotalParam::SetSubTotals(): nGroup > MAXSUBTOTAL!" ); + DBG_ASSERT( ptrSubTotals, + "ScSubTotalParam::SetSubTotals(): ptrSubTotals == NULL!" ); + DBG_ASSERT( ptrFunctions, + "ScSubTotalParam::SetSubTotals(): ptrFunctions == NULL!" ); + DBG_ASSERT( (nCount > 0), + "ScSubTotalParam::SetSubTotals(): nCount <= 0!" ); + + if ( ptrSubTotals && ptrFunctions && (nCount > 0) && (nGroup <= MAXSUBTOTAL) ) + { + // 0 wird als 1 aufgefasst, sonst zum Array-Index dekrementieren + if (nGroup != 0) + nGroup--; + + delete [] pSubTotals[nGroup]; + delete [] pFunctions[nGroup]; + + pSubTotals[nGroup] = new SCCOL [nCount]; + pFunctions[nGroup] = new ScSubTotalFunc [nCount]; + nSubTotals[nGroup] = static_cast<SCCOL>(nCount); + + for ( sal_uInt16 i=0; i<nCount; i++ ) + { + pSubTotals[nGroup][i] = ptrSubTotals[i]; + pFunctions[nGroup][i] = ptrFunctions[i]; + } + } +} diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx index a2b4556e2738..01a6e69ebe89 100644 --- a/sc/source/core/data/table3.cxx +++ b/sc/source/core/data/table3.cxx @@ -61,6 +61,7 @@ #include "postit.hxx" #include "queryparam.hxx" #include "segmenttree.hxx" +#include "subtotalparam.hxx" #include <vector> diff --git a/sc/source/core/tool/dbcolect.cxx b/sc/source/core/tool/dbcolect.cxx index a7e27dcf4dd2..6b6bd458307c 100644 --- a/sc/source/core/tool/dbcolect.cxx +++ b/sc/source/core/tool/dbcolect.cxx @@ -40,7 +40,7 @@ #include "document.hxx" #include "queryparam.hxx" #include "globstr.hrc" - +#include "subtotalparam.hxx" //--------------------------------------------------------------------------------------- diff --git a/sc/source/filter/xml/XMLExportDatabaseRanges.cxx b/sc/source/filter/xml/XMLExportDatabaseRanges.cxx index 3e0ca1857bff..103721d0bbc6 100644 --- a/sc/source/filter/xml/XMLExportDatabaseRanges.cxx +++ b/sc/source/filter/xml/XMLExportDatabaseRanges.cxx @@ -46,6 +46,8 @@ #include "globstr.hrc" #include "XMLExportSharedData.hxx" #include "rangeutl.hxx" +#include "subtotalparam.hxx" + #include <com/sun/star/sheet/DataImportMode.hpp> #include <com/sun/star/table/TableSortField.hpp> #include <com/sun/star/table/TableSortFieldType.hpp> diff --git a/sc/source/ui/inc/dbfunc.hxx b/sc/source/ui/inc/dbfunc.hxx index 823b4509fcc5..e944ff171983 100644 --- a/sc/source/ui/inc/dbfunc.hxx +++ b/sc/source/ui/inc/dbfunc.hxx @@ -43,6 +43,7 @@ class ScDPObject; class ScDPSaveData; class ScStrCollection; struct ScDPNumGroupInfo; +struct ScSubTotalParam; // --------------------------------------------------------------------------- diff --git a/sc/source/ui/inc/tpsubt.hxx b/sc/source/ui/inc/tpsubt.hxx index 049633ad40b6..8a49eabe10d4 100644 --- a/sc/source/ui/inc/tpsubt.hxx +++ b/sc/source/ui/inc/tpsubt.hxx @@ -41,6 +41,7 @@ class ScViewData; class ScDocument; +struct ScSubTotalParam; //======================================================================== // Gruppenseiten: Basisklasse diff --git a/sc/source/ui/inc/uiitems.hxx b/sc/source/ui/inc/uiitems.hxx index f35302c92901..584b6e5dc815 100644 --- a/sc/source/ui/inc/uiitems.hxx +++ b/sc/source/ui/inc/uiitems.hxx @@ -33,6 +33,7 @@ #include "conditio.hxx" #include "sortparam.hxx" #include "queryparam.hxx" +#include "subtotalparam.hxx" #include "paramisc.hxx" #include <svl/poolitem.hxx> diff --git a/sc/source/ui/inc/undodat.hxx b/sc/source/ui/inc/undodat.hxx index 2aebb30a0cc5..f8d26d008daa 100644 --- a/sc/source/ui/inc/undodat.hxx +++ b/sc/source/ui/inc/undodat.hxx @@ -35,6 +35,7 @@ #include "markdata.hxx" #include "sortparam.hxx" #include "queryparam.hxx" +#include "subtotalparam.hxx" #include "pivot.hxx" class ScDocShell; |