blob: b425c86582c6a9a9d9f1c3a40517211109ac9c40 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
/*
WICHTIG:
Folgende Reihenfolge beim Aufbau der Pivot-Tabelle unbedingt einzuhalten:
pPivot->SetColFields(aColArr, aColCount)
pPivot->SetRowFields(aRowArr, aRowCount)
pPivot->SetDataFields(aDataArr, aDataCount)
if (pPivot->CreateData())
{
pPivotDrawData();
pPivotReleaseData();
}
ausserdem ist sicherzustellen, dass entweder das ColArr oder das RowArr
einen PivotDataField Eintrag enthalten
*/
#ifndef SC_PIVOT_HXX
#define SC_PIVOT_HXX
#include "global.hxx"
#include "address.hxx"
#include "dpglobal.hxx"
#include <vector>
#include <boost/shared_ptr.hpp>
class SubTotal;
#include "collect.hxx"
#define PIVOT_DATA_FIELD (MAXCOLCOUNT)
#define PIVOT_FUNC_REF (MAXCOLCOUNT)
#include <com/sun/star/uno/Sequence.hxx>
#include <com/sun/star/sheet/DataPilotFieldReference.hpp>
#include <com/sun/star/sheet/DataPilotFieldSortInfo.hpp>
#include <com/sun/star/sheet/DataPilotFieldLayoutInfo.hpp>
#include <com/sun/star/sheet/DataPilotFieldAutoShowInfo.hpp>
class SvStream;
class ScDocument;
class ScUserListData;
class ScProgress;
// ============================================================================
struct ScDPLabelData
{
::rtl::OUString maName; /// Original name of the dimension.
::rtl::OUString maLayoutName; /// Layout name (display name)
SCCOL mnCol;
sal_uInt16 mnFuncMask; /// Page/Column/Row subtotal function.
sal_Int32 mnUsedHier; /// Used hierarchy.
sal_Int32 mnFlags; /// Flags from the DataPilotSource dimension
bool mbShowAll; /// true = Show all (also empty) results.
bool mbIsValue; /// true = Sum or count in data field.
struct Member
{
::rtl::OUString maName;
::rtl::OUString maLayoutName;
bool mbVisible;
bool mbShowDetails;
Member();
/**
* return the name that should be displayed in the dp dialogs i.e.
* when the layout name is present, use it, or else use the original
* name.
*/
::rtl::OUString SC_DLLPUBLIC getDisplayName() const;
};
::std::vector<Member> maMembers;
::com::sun::star::uno::Sequence< ::rtl::OUString > maHiers; /// Hierarchies.
::com::sun::star::sheet::DataPilotFieldSortInfo maSortInfo; /// Sorting info.
::com::sun::star::sheet::DataPilotFieldLayoutInfo maLayoutInfo; /// Layout info.
::com::sun::star::sheet::DataPilotFieldAutoShowInfo maShowInfo; /// AutoShow info.
explicit ScDPLabelData( const String& rName, SCCOL nCol, bool bIsValue );
/**
* return the name that should be displayed in the dp dialogs i.e. when
* the layout name is present, use it, or else use the original name.
*/
::rtl::OUString SC_DLLPUBLIC getDisplayName() const;
};
typedef std::vector< ScDPLabelData > ScDPLabelDataVector;
// ============================================================================
struct ScPivotField
{
SCCOL nCol;
sal_uInt16 nFuncMask;
sal_uInt16 nFuncCount;
::com::sun::star::sheet::DataPilotFieldReference maFieldRef;
explicit ScPivotField( SCCOL nNewCol = 0, sal_uInt16 nNewFuncMask = PIVOT_FUNC_NONE );
bool operator==( const ScPivotField& r ) const;
};
typedef ::std::vector< ScPivotField > ScPivotFieldVector;
// ============================================================================
struct ScPivotParam
{
SCCOL nCol; // Cursor Position /
SCROW nRow; // bzw. Anfang des Zielbereiches
SCTAB nTab;
ScDPLabelDataVector maLabelArray;
ScPivotFieldVector maPageArr;
ScPivotFieldVector maColArr;
ScPivotFieldVector maRowArr;
ScPivotFieldVector maDataArr;
bool bIgnoreEmptyRows;
bool bDetectCategories;
bool bMakeTotalCol;
bool bMakeTotalRow;
ScPivotParam();
bool operator==( const ScPivotParam& r ) const;
};
// ============================================================================
struct ScPivotFuncData
{
SCCOL mnCol;
sal_uInt16 mnFuncMask;
::com::sun::star::sheet::DataPilotFieldReference maFieldRef;
explicit ScPivotFuncData( SCCOL nCol, sal_uInt16 nFuncMask );
explicit ScPivotFuncData( SCCOL nCol, sal_uInt16 nFuncMask,
const ::com::sun::star::sheet::DataPilotFieldReference& rFieldRef );
};
typedef ::std::vector< ScPivotFuncData > ScPivotFuncDataVector;
// ============================================================================
typedef std::vector< String > ScDPNameVec;
// ============================================================================
#endif