office-gobmx/sc/inc/dapiuno.hxx
Jan Holesovsky e6064484fa Merge remote-tracking branch 'origin/integration/dev300_m101'
Conflicts:
	chart2/source/controller/main/UndoManager.cxx
	chart2/source/tools/RegressionCurveHelper.cxx
	sc/inc/address.hxx
	sc/inc/attrib.hxx
	sc/inc/bigrange.hxx
	sc/inc/callform.hxx
	sc/inc/cell.hxx
	sc/inc/chartarr.hxx
	sc/inc/chartlis.hxx
	sc/inc/chgtrack.hxx
	sc/inc/collect.hxx
	sc/inc/compiler.hxx
	sc/inc/detdata.hxx
	sc/inc/document.hxx
	sc/inc/fillinfo.hxx
	sc/inc/olinetab.hxx
	sc/inc/prnsave.hxx
	sc/inc/queryparam.hxx
	sc/inc/sc.hrc
	sc/inc/scabstdlg.hxx
	sc/inc/table.hxx
	sc/inc/validat.hxx
	sc/inc/zforauto.hxx
	sc/source/core/data/documen2.cxx
	sc/source/core/data/document.cxx
	sc/source/core/data/table1.cxx
	sc/source/core/tool/address.cxx
	sc/source/core/tool/token.cxx
	sc/source/filter/excel/frmbase.cxx
	sc/source/filter/excel/impop.cxx
	sc/source/filter/excel/xename.cxx
	sc/source/filter/inc/formel.hxx
	sc/source/filter/inc/xename.hxx
	sc/source/filter/xml/xmlexprt.cxx
	sc/source/filter/xml/xmlnexpi.cxx
	sc/source/filter/xml/xmlnexpi.hxx
	sc/source/ui/dbgui/filtdlg.cxx
	sc/source/ui/inc/docfunc.hxx
	sc/source/ui/inc/namedlg.hxx
	sc/source/ui/namedlg/namedlg.cxx
	sc/source/ui/src/namedlg.src
2011-03-18 15:33:40 +01:00

963 lines
52 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef SC_DAPIUNO_HXX
#define SC_DAPIUNO_HXX
#include "global.hxx"
#include "dpobject.hxx"
#include "rangeutl.hxx" // ScArea
#include "cellsuno.hxx" // for XModifyListenerArr_Impl
#include <svl/lstner.hxx>
#include <svl/itemprop.hxx>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XUnoTunnel.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/container/XEnumerationAccess.hpp>
#include <com/sun/star/container/XNameContainer.hpp>
#include <com/sun/star/util/XModifyBroadcaster.hpp>
#include <com/sun/star/sheet/DataPilotFieldAutoShowInfo.hpp>
#include <com/sun/star/sheet/DataPilotFieldGroupInfo.hpp>
#include <com/sun/star/sheet/DataPilotFieldLayoutInfo.hpp>
#include <com/sun/star/sheet/DataPilotFieldOrientation.hpp>
#include <com/sun/star/sheet/DataPilotFieldReference.hpp>
#include <com/sun/star/sheet/DataPilotFieldSortInfo.hpp>
#include <com/sun/star/sheet/GeneralFunction.hpp>
#include <com/sun/star/sheet/XDataPilotDataLayoutFieldSupplier.hpp>
#include <com/sun/star/sheet/XDataPilotDescriptor.hpp>
#include <com/sun/star/sheet/XDataPilotField.hpp>
#include <com/sun/star/sheet/XDataPilotFieldGrouping.hpp>
#include <com/sun/star/sheet/XDataPilotTable.hpp>
#include <com/sun/star/sheet/XDataPilotTable2.hpp>
#include <com/sun/star/sheet/XDataPilotTables.hpp>
#include <cppuhelper/implbase2.hxx>
#include <cppuhelper/implbase3.hxx>
#include <cppuhelper/implbase4.hxx>
#include <cppuhelper/implbase5.hxx>
#include <memory>
#include <vector>
namespace com { namespace sun { namespace star { namespace sheet {
struct DataPilotFieldFilter;
struct DataPilotTablePositionData;
}}}}
class ScDocShell;
class ScDPSaveDimension;
class ScDPSaveGroupDimension;
class ScDPSaveNumGroupDimension;
struct ScDPNumGroupInfo;
class ScDataPilotTableObj;
class ScDataPilotFieldObj;
class ScDataPilotItemObj;
class ScDataPilotConversion
{
public:
static com::sun::star::sheet::GeneralFunction FirstFunc( sal_uInt16 nBits );
static sal_uInt16 FunctionBit( com::sun::star::sheet::GeneralFunction eFunc );
static void FillGroupInfo(
::com::sun::star::sheet::DataPilotFieldGroupInfo& rInfo,
const ScDPNumGroupInfo& rGroupInfo );
};
/** DataPilotTables collection per sheet. */
class ScDataPilotTablesObj : public cppu::WeakImplHelper4<
com::sun::star::sheet::XDataPilotTables,
com::sun::star::container::XEnumerationAccess,
com::sun::star::container::XIndexAccess,
com::sun::star::lang::XServiceInfo>,
public SfxListener
{
private:
ScDocShell* pDocShell;
SCTAB nTab;
ScDataPilotTableObj* GetObjectByIndex_Impl( sal_Int32 nIndex );
ScDataPilotTableObj* GetObjectByName_Impl(const ::rtl::OUString& aName);
public:
ScDataPilotTablesObj(ScDocShell* pDocSh, SCTAB nT);
virtual ~ScDataPilotTablesObj();
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
// XDataPilotTables
virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XDataPilotDescriptor > SAL_CALL
createDataPilotDescriptor() throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL insertNewByName( const ::rtl::OUString& aName,
const ::com::sun::star::table::CellAddress& aOutputAddress,
const ::com::sun::star::uno::Reference<
::com::sun::star::sheet::XDataPilotDescriptor >& xDescriptor )
throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeByName( const ::rtl::OUString& aName )
throw(::com::sun::star::uno::RuntimeException);
// XNameAccess
virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
throw(::com::sun::star::container::NoSuchElementException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
throw(::com::sun::star::uno::RuntimeException);
// XIndexAccess
virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
throw(::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XEnumerationAccess
virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
createEnumeration() throw(::com::sun::star::uno::RuntimeException);
// XElementAccess
virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
// XServiceInfo
virtual ::rtl::OUString SAL_CALL getImplementationName()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
throw(::com::sun::star::uno::RuntimeException);
};
// ScDataPilotDescriptorBase is never instantiated directly
class ScDataPilotDescriptorBase : public com::sun::star::sheet::XDataPilotDescriptor,
public com::sun::star::beans::XPropertySet,
public com::sun::star::sheet::XDataPilotDataLayoutFieldSupplier,
public com::sun::star::lang::XServiceInfo,
public com::sun::star::lang::XUnoTunnel,
public com::sun::star::lang::XTypeProvider,
public cppu::OWeakObject,
public SfxListener
{
private:
SfxItemPropertySet maPropSet;
ScDocShell* pDocShell;
public:
ScDataPilotDescriptorBase(ScDocShell* pDocSh);
virtual ~ScDataPilotDescriptorBase();
virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
const ::com::sun::star::uno::Type & rType )
throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL acquire() throw();
virtual void SAL_CALL release() throw();
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
ScDocShell* GetDocShell() const { return pDocShell; }
// in the derivatives:
virtual ScDPObject* GetDPObject() const = 0;
virtual void SetDPObject(ScDPObject* pDPObj) = 0;
// XDataPilotDescriptor
// getName, setName, getTag, setTag in derived classes
virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getSourceRange()
throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setSourceRange( const ::com::sun::star::table::CellRangeAddress& aSourceRange )
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor > SAL_CALL
getFilterDescriptor() throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
getDataPilotFields() throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
getColumnFields() throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
getRowFields() throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
getPageFields() throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
getDataFields() throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL
getHiddenFields() throw(::com::sun::star::uno::RuntimeException);
// XPropertySet
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
SAL_CALL getPropertySetInfo( )
throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
const ::com::sun::star::uno::Any& aValue )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::beans::PropertyVetoException,
::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
const ::rtl::OUString& PropertyName )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertyChangeListener >& xListener )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertyChangeListener >& aListener )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XVetoableChangeListener >& aListener )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XVetoableChangeListener >& aListener )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XDataPilotDataLayoutFieldSupplier
virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XDataPilotField >
SAL_CALL getDataLayoutField()
throw(::com::sun::star::uno::RuntimeException);
// XUnoTunnel
virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence<
sal_Int8 >& aIdentifier )
throw(::com::sun::star::uno::RuntimeException);
static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
static ScDataPilotDescriptorBase* getImplementation( const com::sun::star::uno::Reference<
com::sun::star::sheet::XDataPilotDescriptor> xObj );
// XTypeProvider (overloaded in ScDataPilotTableObj)
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
throw(::com::sun::star::uno::RuntimeException);
// XServiceInfo is in derived classes
};
class ScDataPilotDescriptor : public ScDataPilotDescriptorBase
{
private:
ScDPObject* mpDPObject;
public:
ScDataPilotDescriptor(ScDocShell* pDocSh);
virtual ~ScDataPilotDescriptor();
virtual ScDPObject* GetDPObject() const;
virtual void SetDPObject(ScDPObject* pDPObj);
// rest of XDataPilotDescriptor (incl. XNamed)
virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setName( const ::rtl::OUString& aName )
throw(::com::sun::star::uno::RuntimeException);
virtual ::rtl::OUString SAL_CALL getTag() throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setTag( const ::rtl::OUString& aTag )
throw(::com::sun::star::uno::RuntimeException);
// XServiceInfo
virtual ::rtl::OUString SAL_CALL getImplementationName()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
throw(::com::sun::star::uno::RuntimeException);
};
class ScDataPilotTableObj : public ScDataPilotDescriptorBase,
public com::sun::star::sheet::XDataPilotTable2,
public com::sun::star::util::XModifyBroadcaster
{
private:
SCTAB nTab;
String aName;
XModifyListenerArr_Impl aModifyListeners;
void Refreshed_Impl();
public:
ScDataPilotTableObj(ScDocShell* pDocSh, SCTAB nT, const String& rN);
virtual ~ScDataPilotTableObj();
virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
const ::com::sun::star::uno::Type & rType )
throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL acquire() throw();
virtual void SAL_CALL release() throw();
virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
virtual ScDPObject* GetDPObject() const;
virtual void SetDPObject(ScDPObject* pDPObj);
// rest of XDataPilotDescriptor (incl. XNamed)
virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setName( const ::rtl::OUString& aName )
throw(::com::sun::star::uno::RuntimeException);
virtual ::rtl::OUString SAL_CALL getTag() throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setTag( const ::rtl::OUString& aTag )
throw(::com::sun::star::uno::RuntimeException);
// XDataPilotTable
virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getOutputRange()
throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL refresh() throw(::com::sun::star::uno::RuntimeException);
// XDataPilotTable2
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > >
SAL_CALL getDrillDownData(const ::com::sun::star::table::CellAddress& aAddr)
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::sheet::DataPilotTablePositionData
SAL_CALL getPositionData(const ::com::sun::star::table::CellAddress& aAddr)
throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL insertDrillDownSheet(const ::com::sun::star::table::CellAddress& aAddr)
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getOutputRangeByType( sal_Int32 nType )
throw(::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::uno::RuntimeException);
// XModifyBroadcaster
virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference<
::com::sun::star::util::XModifyListener >& aListener )
throw (::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference<
::com::sun::star::util::XModifyListener >& aListener )
throw (::com::sun::star::uno::RuntimeException);
// XTypeProvider (overloaded)
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
throw(::com::sun::star::uno::RuntimeException);
// XServiceInfo
virtual ::rtl::OUString SAL_CALL getImplementationName()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
throw(::com::sun::star::uno::RuntimeException);
};
struct ScFieldIdentifier
{
::rtl::OUString maFieldName; /// Source field name.
sal_Int32 mnFieldIdx; /// Field index (if several fields with same name exist).
bool mbDataLayout; /// True = data layout field collecting all data fields as items.
inline explicit ScFieldIdentifier() :
mnFieldIdx( 0 ), mbDataLayout( false ) {}
inline explicit ScFieldIdentifier( const ::rtl::OUString& rFieldName, sal_Int32 nFieldIdx, bool bDataLayout ) :
maFieldName( rFieldName ), mnFieldIdx( nFieldIdx ), mbDataLayout( bDataLayout ) {}
};
/** Base class of all implementation objects based on a DataPilot descriptor
or DataPilot table object. Wraps acquiring and releasing the parent. */
class ScDataPilotChildObjBase
{
protected:
explicit ScDataPilotChildObjBase( ScDataPilotDescriptorBase& rParent );
explicit ScDataPilotChildObjBase( ScDataPilotDescriptorBase& rParent, const ScFieldIdentifier& rFieldId );
virtual ~ScDataPilotChildObjBase();
/** Returns the wrapped DataPilot object (calls GetDPObject() at parent). */
ScDPObject* GetDPObject() const;
/** Sets the passed DataPilot object (calls SetDPObject() at parent). */
void SetDPObject( ScDPObject* pDPObject );
/** Returns the DataPilot dimension object related to the field described by maFieldId. */
ScDPSaveDimension* GetDPDimension( ScDPObject** ppDPObject = 0 ) const;
/** Returns the number of members for the field described by maFieldId. */
sal_Int32 GetMemberCount() const;
/** Returns the collection of members for the field described by maFieldId. */
::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >
GetMembers() const;
protected:
ScDataPilotDescriptorBase& mrParent;
ScFieldIdentifier maFieldId;
private:
ScDataPilotChildObjBase& operator=( const ScDataPilotChildObjBase& );
};
typedef ::cppu::WeakImplHelper4
<
::com::sun::star::container::XEnumerationAccess,
::com::sun::star::container::XIndexAccess,
::com::sun::star::container::XNameAccess,
::com::sun::star::lang::XServiceInfo
>
ScDataPilotFieldsObjImpl;
/** Collection of all DataPilot fields, or of all fields from a specific dimension. */
class ScDataPilotFieldsObj : public ScDataPilotChildObjBase, public ScDataPilotFieldsObjImpl
{
public:
explicit ScDataPilotFieldsObj(
ScDataPilotDescriptorBase& rParent );
explicit ScDataPilotFieldsObj(
ScDataPilotDescriptorBase& rParent,
::com::sun::star::sheet::DataPilotFieldOrientation eOrient );
virtual ~ScDataPilotFieldsObj();
// XNameAccess
virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
throw(::com::sun::star::container::NoSuchElementException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
throw(::com::sun::star::uno::RuntimeException);
// XIndexAccess
virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
throw(::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XEnumerationAccess
virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
createEnumeration() throw(::com::sun::star::uno::RuntimeException);
// XElementAccess
virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
// XServiceInfo
virtual ::rtl::OUString SAL_CALL getImplementationName()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
throw(::com::sun::star::uno::RuntimeException);
private:
ScDataPilotFieldObj* GetObjectByIndex_Impl( sal_Int32 nIndex ) const;
ScDataPilotFieldObj* GetObjectByName_Impl( const ::rtl::OUString& rName ) const;
private:
::com::sun::star::uno::Any maOrient; /// Field orientation, no value = all fields.
};
typedef ::cppu::WeakImplHelper5
<
::com::sun::star::container::XNamed,
::com::sun::star::beans::XPropertySet,
::com::sun::star::sheet::XDataPilotField,
::com::sun::star::sheet::XDataPilotFieldGrouping,
::com::sun::star::lang::XServiceInfo
>
ScDataPilotFieldObjImpl;
/** Implementation of a single DataPilot field. */
class ScDataPilotFieldObj : public ScDataPilotChildObjBase, public ScDataPilotFieldObjImpl
{
public:
ScDataPilotFieldObj(
ScDataPilotDescriptorBase& rParent,
const ScFieldIdentifier& rIdent );
ScDataPilotFieldObj(
ScDataPilotDescriptorBase& rParent,
const ScFieldIdentifier& rIdent,
const ::com::sun::star::uno::Any& rOrient );
virtual ~ScDataPilotFieldObj();
// XNamed
virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setName( const ::rtl::OUString& aName )
throw(::com::sun::star::uno::RuntimeException);
// XPropertySet
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
SAL_CALL getPropertySetInfo( )
throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
const ::com::sun::star::uno::Any& aValue )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::beans::PropertyVetoException,
::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
const ::rtl::OUString& PropertyName )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertyChangeListener >& xListener )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertyChangeListener >& aListener )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XVetoableChangeListener >& aListener )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XVetoableChangeListener >& aListener )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XDatePilotField
virtual com::sun::star::uno::Reference<com::sun::star::container::XIndexAccess> SAL_CALL
getItems() throw (::com::sun::star::uno::RuntimeException);
// only called from property-functions:
com::sun::star::sheet::DataPilotFieldOrientation getOrientation(void) const;
void setOrientation(com::sun::star::sheet::DataPilotFieldOrientation Orientation);
com::sun::star::sheet::GeneralFunction getFunction(void) const;
void setFunction(com::sun::star::sheet::GeneralFunction Function);
com::sun::star::uno::Sequence< com::sun::star::sheet::GeneralFunction > getSubtotals() const;
void setSubtotals(const com::sun::star::uno::Sequence< com::sun::star::sheet::GeneralFunction >& rFunctions);
rtl::OUString getCurrentPage() const;
void setCurrentPage(const rtl::OUString& sPage);
sal_Bool getUseCurrentPage() const;
void setUseCurrentPage(sal_Bool bUse);
const com::sun::star::sheet::DataPilotFieldAutoShowInfo* getAutoShowInfo();
void setAutoShowInfo(const com::sun::star::sheet::DataPilotFieldAutoShowInfo* pInfo);
const com::sun::star::sheet::DataPilotFieldLayoutInfo* getLayoutInfo();
void setLayoutInfo(const com::sun::star::sheet::DataPilotFieldLayoutInfo* pInfo);
const com::sun::star::sheet::DataPilotFieldReference* getReference();
void setReference(const com::sun::star::sheet::DataPilotFieldReference* pInfo);
const com::sun::star::sheet::DataPilotFieldSortInfo* getSortInfo();
void setSortInfo(const com::sun::star::sheet::DataPilotFieldSortInfo* pInfo);
sal_Bool getShowEmpty() const;
void setShowEmpty(sal_Bool bShow);
sal_Bool hasGroupInfo();
com::sun::star::sheet::DataPilotFieldGroupInfo getGroupInfo();
void setGroupInfo(const com::sun::star::sheet::DataPilotFieldGroupInfo* pInfo);
// XDataPilotFieldGrouping
sal_Bool HasString(const com::sun::star::uno::Sequence< ::rtl::OUString >& aItems, const ::rtl::OUString& aString);
virtual com::sun::star::uno::Reference < com::sun::star::sheet::XDataPilotField > SAL_CALL
createNameGroup(const com::sun::star::uno::Sequence< ::rtl::OUString >& aItems)
throw (::com::sun::star::uno::RuntimeException,
::com::sun::star::lang::IllegalArgumentException);
virtual com::sun::star::uno::Reference < com::sun::star::sheet::XDataPilotField > SAL_CALL
createDateGroup(const com::sun::star::sheet::DataPilotFieldGroupInfo& rInfo)
throw (::com::sun::star::uno::RuntimeException,
::com::sun::star::lang::IllegalArgumentException);
// XServiceInfo
virtual ::rtl::OUString SAL_CALL getImplementationName()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
throw(::com::sun::star::uno::RuntimeException);
private:
::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >
mxItems;
SfxItemPropertySet maPropSet;
::com::sun::star::uno::Any maOrient;
};
typedef ::std::vector< ::rtl::OUString > ScFieldGroupMembers;
struct ScFieldGroup
{
::rtl::OUString maName;
ScFieldGroupMembers maMembers;
};
typedef ::std::vector< ScFieldGroup > ScFieldGroups;
typedef ::cppu::WeakImplHelper4
<
::com::sun::star::container::XNameContainer,
::com::sun::star::container::XEnumerationAccess,
::com::sun::star::container::XIndexAccess,
::com::sun::star::lang::XServiceInfo
>
ScDataPilotFieldGroupsObjImpl;
/** Implementation of all grouped items in a DataPilot field.
This is a stand-alone object without any connection to the base DataPilot
field. Grouping info has to be written back with the GroupInfo property of
the DataPilot field after modifying this object.
*/
class ScDataPilotFieldGroupsObj : public ScDataPilotFieldGroupsObjImpl
{
public:
explicit ScDataPilotFieldGroupsObj( const ScFieldGroups& rGroups );
virtual ~ScDataPilotFieldGroupsObj();
// XNameAccess
virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
throw(::com::sun::star::container::NoSuchElementException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
throw(::com::sun::star::uno::RuntimeException);
// XNameReplace
virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName,
const ::com::sun::star::uno::Any& aElement )
throw (::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::container::NoSuchElementException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XNameContainer
virtual void SAL_CALL insertByName( const ::rtl::OUString& aName,
const ::com::sun::star::uno::Any& aElement )
throw (::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::container::ElementExistException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeByName( const ::rtl::OUString& Name )
throw (::com::sun::star::container::NoSuchElementException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XIndexAccess
virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
throw(::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XEnumerationAccess
virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
createEnumeration() throw(::com::sun::star::uno::RuntimeException);
// XElementAccess
virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
// XServiceInfo
virtual ::rtl::OUString SAL_CALL getImplementationName()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
throw(::com::sun::star::uno::RuntimeException);
// implementation
ScFieldGroup& getFieldGroup( const ::rtl::OUString& rName ) throw(::com::sun::star::uno::RuntimeException);
void renameFieldGroup( const ::rtl::OUString& rOldName, const ::rtl::OUString& rNewName ) throw(::com::sun::star::uno::RuntimeException);
private:
ScFieldGroups::iterator implFindByName( const ::rtl::OUString& rName );
private:
ScFieldGroups maGroups;
};
typedef ::cppu::WeakImplHelper5
<
::com::sun::star::container::XNameContainer,
::com::sun::star::container::XEnumerationAccess,
::com::sun::star::container::XIndexAccess,
::com::sun::star::container::XNamed,
::com::sun::star::lang::XServiceInfo
>
ScDataPilotFieldGroupObjImpl;
class ScDataPilotFieldGroupObj : public ScDataPilotFieldGroupObjImpl
{
public:
explicit ScDataPilotFieldGroupObj( ScDataPilotFieldGroupsObj& rParent, const ::rtl::OUString& rGroupName );
virtual ~ScDataPilotFieldGroupObj();
// XNameAccess
virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
throw(::com::sun::star::container::NoSuchElementException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
throw(::com::sun::star::uno::RuntimeException);
// XNameReplace
virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName,
const ::com::sun::star::uno::Any& aElement )
throw (::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::container::NoSuchElementException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XNameContainer
virtual void SAL_CALL insertByName( const ::rtl::OUString& aName,
const ::com::sun::star::uno::Any& aElement )
throw (::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::container::ElementExistException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeByName( const ::rtl::OUString& Name )
throw (::com::sun::star::container::NoSuchElementException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XIndexAccess
virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
throw(::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XEnumerationAccess
virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
createEnumeration() throw(::com::sun::star::uno::RuntimeException);
// XElementAccess
virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
// XNamed
virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setName( const ::rtl::OUString& aName )
throw(::com::sun::star::uno::RuntimeException);
// XServiceInfo
virtual ::rtl::OUString SAL_CALL getImplementationName()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
throw(::com::sun::star::uno::RuntimeException);
private:
ScDataPilotFieldGroupsObj& mrParent;
::rtl::OUString maGroupName;
};
typedef ::cppu::WeakImplHelper2
<
::com::sun::star::container::XNamed,
::com::sun::star::lang::XServiceInfo
>
ScDataPilotFieldGroupItemObjImpl;
class ScDataPilotFieldGroupItemObj : public ScDataPilotFieldGroupItemObjImpl
{
public:
explicit ScDataPilotFieldGroupItemObj( ScDataPilotFieldGroupObj& rParent, const ::rtl::OUString& rName );
virtual ~ScDataPilotFieldGroupItemObj();
// XNamed
virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setName( const ::rtl::OUString& aName )
throw(::com::sun::star::uno::RuntimeException);
// XServiceInfo
virtual ::rtl::OUString SAL_CALL getImplementationName()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
throw(::com::sun::star::uno::RuntimeException);
private:
ScDataPilotFieldGroupObj& mrParent;
::rtl::OUString maName;
};
typedef ::cppu::WeakImplHelper4
<
::com::sun::star::container::XEnumerationAccess,
::com::sun::star::container::XIndexAccess,
::com::sun::star::container::XNameAccess,
::com::sun::star::lang::XServiceInfo
>
ScDataPilotItemsObjImpl;
class ScDataPilotItemsObj : public ScDataPilotChildObjBase, public ScDataPilotItemsObjImpl
{
public:
explicit ScDataPilotItemsObj( ScDataPilotDescriptorBase& rParent, const ScFieldIdentifier& rFieldId );
virtual ~ScDataPilotItemsObj();
// XNameAccess
virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName )
throw(::com::sun::star::container::NoSuchElementException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
throw(::com::sun::star::uno::RuntimeException);
// XIndexAccess
virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index )
throw(::com::sun::star::lang::IndexOutOfBoundsException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XEnumerationAccess
virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL
createEnumeration() throw(::com::sun::star::uno::RuntimeException);
// XElementAccess
virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
// XServiceInfo
virtual ::rtl::OUString SAL_CALL getImplementationName()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
throw(::com::sun::star::uno::RuntimeException);
private:
ScDataPilotItemObj* GetObjectByIndex_Impl( sal_Int32 nIndex ) const;
};
typedef ::cppu::WeakImplHelper3
<
::com::sun::star::container::XNamed,
::com::sun::star::beans::XPropertySet,
::com::sun::star::lang::XServiceInfo
>
ScDataPilotItemObjImpl;
class ScDataPilotItemObj : public ScDataPilotChildObjBase, public ScDataPilotItemObjImpl
{
public:
explicit ScDataPilotItemObj(
ScDataPilotDescriptorBase& rParent,
const ScFieldIdentifier& rFieldId,
sal_Int32 nIndex );
virtual ~ScDataPilotItemObj();
// XNamed
virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setName( const ::rtl::OUString& aName )
throw(::com::sun::star::uno::RuntimeException);
// XPropertySet
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
SAL_CALL getPropertySetInfo( )
throw(::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName,
const ::com::sun::star::uno::Any& aValue )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::beans::PropertyVetoException,
::com::sun::star::lang::IllegalArgumentException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(
const ::rtl::OUString& PropertyName )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertyChangeListener >& xListener )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XPropertyChangeListener >& aListener )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XVetoableChangeListener >& aListener )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName,
const ::com::sun::star::uno::Reference<
::com::sun::star::beans::XVetoableChangeListener >& aListener )
throw(::com::sun::star::beans::UnknownPropertyException,
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException);
// XServiceInfo
virtual ::rtl::OUString SAL_CALL getImplementationName()
throw(::com::sun::star::uno::RuntimeException);
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName )
throw(::com::sun::star::uno::RuntimeException);
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames()
throw(::com::sun::star::uno::RuntimeException);
private:
SfxItemPropertySet maPropSet;
sal_Int32 mnIndex;
};
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */