/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * 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 . */ #ifndef INCLUDED_SC_INC_CELLSUNO_HXX #define INCLUDED_SC_INC_CELLSUNO_HXX #include "global.hxx" #include "rangelst.hxx" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include class ScDocShell; class ScMarkData; class ScMemChart; class ScPrintRangeSaver; class ScAttrRectIterator; class ScCellRangeObj; class ScLinkListener; class ScPatternAttr; class SvxBoxItem; class SvxBoxInfoItem; class SvxItemPropertySet; namespace editeng { class SvxBorderLine; } class ScLinkListener : public SvtListener { Link aLink; public: ScLinkListener(const Link& rL) : aLink(rL) {} virtual ~ScLinkListener(); virtual void Notify( const SfxHint& rHint ) override; }; typedef ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener > XModifyListenerRef; typedef std::vector XModifyListenerArr_Impl; // ScCellRangesBase - base class for ScCellRangesObj (with access by index) // and ScCellRangeObj (without access by index) // XServiceInfo is implemented in derived classes class ScHelperFunctions { public: static const ::editeng::SvxBorderLine* GetBorderLine( ::editeng::SvxBorderLine& rLine, const com::sun::star::table::BorderLine& rStruct ); static const ::editeng::SvxBorderLine* GetBorderLine( ::editeng::SvxBorderLine& rLine, const com::sun::star::table::BorderLine2& rStruct ); static void FillBoxItems( SvxBoxItem& rOuter, SvxBoxInfoItem& rInner, const com::sun::star::table::TableBorder& rBorder ); static void FillBoxItems( SvxBoxItem& rOuter, SvxBoxInfoItem& rInner, const com::sun::star::table::TableBorder2& rBorder ); static void FillBorderLine( com::sun::star::table::BorderLine& rStruct, const ::editeng::SvxBorderLine* pLine ); static void FillBorderLine( com::sun::star::table::BorderLine2& rStruct, const ::editeng::SvxBorderLine* pLine ); static void AssignTableBorderToAny( com::sun::star::uno::Any& rAny, const SvxBoxItem& rOuter, const SvxBoxInfoItem& rInner, bool bInvalidateHorVerDist = false ); static void AssignTableBorder2ToAny( com::sun::star::uno::Any& rAny, const SvxBoxItem& rOuter, const SvxBoxInfoItem& rInner, bool bInvalidateHorVerDist = false ); static void ApplyBorder( ScDocShell* pDocShell, const ScRangeList& rRanges, const SvxBoxItem& rOuter, const SvxBoxInfoItem& rInner ); }; namespace ooo { namespace vba { namespace excel { class ScVbaCellRangeAccess; // Vba Helper class } } } class SC_DLLPUBLIC ScCellRangesBase : public com::sun::star::beans::XPropertySet, public com::sun::star::beans::XMultiPropertySet, public com::sun::star::beans::XPropertyState, public com::sun::star::sheet::XSheetOperation, public com::sun::star::chart::XChartDataArray, public com::sun::star::util::XIndent, public com::sun::star::sheet::XCellRangesQuery, public com::sun::star::sheet::XFormulaQuery, public com::sun::star::util::XReplaceable, public com::sun::star::util::XModifyBroadcaster, public com::sun::star::lang::XServiceInfo, public com::sun::star::lang::XUnoTunnel, public com::sun::star::lang::XTypeProvider, public com::sun::star::beans::XTolerantMultiPropertySet, public cppu::OWeakObject, public SfxListener { friend class ScTabViewObj; // for select() friend class ScTableSheetObj; // for createCursorByRange() friend class ooo::vba::excel::ScVbaCellRangeAccess; private: css::uno::WeakReference m_wThis; const SfxItemPropertySet* pPropSet; ScDocShell* pDocShell; ScLinkListener* pValueListener; ScPatternAttr* pCurrentFlat; ScPatternAttr* pCurrentDeep; SfxItemSet* pCurrentDataSet; SfxItemSet* pNoDfltCurrentDataSet; ScMarkData* pMarkData; ScRangeList aRanges; sal_Int64 nObjectId; bool bChartColAsHdr; bool bChartRowAsHdr; bool bCursorOnly; bool bGotDataChangedHint; XModifyListenerArr_Impl aValueListeners; DECL_LINK_TYPED( ValueListenerHdl, const SfxHint&, void ); private: void PaintRanges_Impl( sal_uInt16 nPart ); ScRangeListRef GetLimitedChartRanges_Impl( long nDataColumns, long nDataRows ) const; void ForceChartListener_Impl(); ScMemChart* CreateMemChart_Impl() const; const ScPatternAttr* GetCurrentAttrsFlat(); const ScPatternAttr* GetCurrentAttrsDeep(); SfxItemSet* GetCurrentDataSet(bool bNoDflt = false); void ForgetMarkData(); void ForgetCurrentAttrs(); com::sun::star::uno::Reference QueryDifferences_Impl(const com::sun::star::table::CellAddress& aCompare, bool bColumnDiff); com::sun::star::uno::Reference Find_Impl(const com::sun::star::uno::Reference< com::sun::star::util::XSearchDescriptor>& xDesc, const ScAddress* pLastPos); protected: const ScMarkData* GetMarkData(); // GetItemPropertyMap for derived classes must contain all entries, including base class virtual const SfxItemPropertyMap& GetItemPropertyMap(); ::com::sun::star::beans::PropertyState GetOnePropertyState( sal_uInt16 nItemWhich, const SfxItemPropertySimpleEntry* pEntry ); virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry, ::com::sun::star::uno::Any& ) throw(::com::sun::star::uno::RuntimeException, std::exception); virtual void SetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception); public: ScCellRangesBase(ScDocShell* pDocSh, const ScRange& rR); ScCellRangesBase(ScDocShell* pDocSh, const ScRangeList& rR); virtual ~ScCellRangesBase(); virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL acquire() throw() override; virtual void SAL_CALL release() throw() override; virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; virtual void RefChanged(); // from derived classes and by getImplementation ScDocShell* GetDocShell() const { return pDocShell; } ScDocument* GetDocument() const; const ScRangeList& GetRangeList() const { return aRanges; } void AddRange(const ScRange& rRange, const bool bMergeRanges); // arouse object created via service: void InitInsertRange(ScDocShell* pDocSh, const ScRange& rR); void SetNewRange(const ScRange& rNew); // for cursor void SetNewRanges(const ScRangeList& rNew); void SetCursorOnly(bool bSet); bool IsCursorOnly() const { return bCursorOnly; } // XSheetOperation virtual double SAL_CALL computeFunction( ::com::sun::star::sheet::GeneralFunction nFunction ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL clearContents( sal_Int32 nContentFlags ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XPropertySet virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setPropertyValue( const 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, std::exception) override; virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL addPropertyChangeListener( const 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, std::exception) override; virtual void SAL_CALL removePropertyChangeListener( const 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, std::exception) override; virtual void SAL_CALL addVetoableChangeListener( const 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, std::exception) override; virtual void SAL_CALL removeVetoableChangeListener( const 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, std::exception) override; // XMultiPropertySet virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< OUString >& aPropertyNames, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aValues ) throw (::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL getPropertyValues( const ::com::sun::star::uno::Sequence< OUString >& aPropertyNames ) throw (::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL addPropertiesChangeListener( const ::com::sun::star::uno::Sequence< OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL removePropertiesChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL firePropertiesChangeEvent( const ::com::sun::star::uno::Sequence< OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException, std::exception) override; // XTolerantMultiPropertySet virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::SetPropertyTolerantFailed > SAL_CALL setPropertyValuesTolerant( const ::com::sun::star::uno::Sequence< OUString >& aPropertyNames, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aValues ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::GetPropertyTolerantResult > SAL_CALL getPropertyValuesTolerant( const ::com::sun::star::uno::Sequence< OUString >& aPropertyNames ) throw (::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::GetDirectPropertyTolerantResult > SAL_CALL getDirectPropertyValuesTolerant( const ::com::sun::star::uno::Sequence< OUString >& aPropertyNames ) throw (::com::sun::star::uno::RuntimeException, std::exception) override; // XPropertyState virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( const OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL getPropertyStates( const ::com::sun::star::uno::Sequence< OUString >& aPropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setPropertyToDefault( const OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( const OUString& aPropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) override; // XIndent virtual void SAL_CALL decrementIndent() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL incrementIndent() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XChartData virtual void SAL_CALL addChartDataChangeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::chart::XChartDataChangeEventListener >& aListener ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL removeChartDataChangeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::chart::XChartDataChangeEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException, std::exception) override; virtual double SAL_CALL getNotANumber() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL isNotANumber( double nNumber ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XChartDataArray virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< double > > SAL_CALL getData() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setData( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< double > >& aData ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getRowDescriptions() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setRowDescriptions( const ::com::sun::star::uno::Sequence< OUString >& aRowDescriptions ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getColumnDescriptions() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setColumnDescriptions( const ::com::sun::star::uno::Sequence< OUString >& aColumnDescriptions ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XCellRangesQuery virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL queryVisibleCells() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL queryEmptyCells() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL queryContentCells( sal_Int16 nContentFlags ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL queryFormulaCells( sal_Int32 nResultFlags ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL queryColumnDifferences( const ::com::sun::star::table::CellAddress& aCompare ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL queryRowDifferences( const ::com::sun::star::table::CellAddress& aCompare ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL queryIntersection( const ::com::sun::star::table::CellRangeAddress& aRange ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XFormulaQuery virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL queryDependents( sal_Bool bRecursive ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRanges > SAL_CALL queryPrecedents( sal_Bool bRecursive ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XSearchable virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor > SAL_CALL createSearchDescriptor() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL findAll( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor >& xDesc ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL findFirst( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor >& xDesc ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL findNext( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xStartAt, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor >& xDesc ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XReplaceable virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XReplaceDescriptor > SAL_CALL createReplaceDescriptor() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Int32 SAL_CALL replaceAll( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor >& xDesc ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XModifyBroadcaster virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) throw (::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) throw (::com::sun::star::uno::RuntimeException, std::exception) override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XUnoTunnel virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; static const com::sun::star::uno::Sequence& getUnoTunnelId(); static ScCellRangesBase* getImplementation(const css::uno::Reference& rObj); // XTypeProvider virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException, std::exception) override; }; class SC_DLLPUBLIC ScCellRangesObj : public ScCellRangesBase, public com::sun::star::sheet::XSheetCellRangeContainer, public com::sun::star::container::XNameContainer, public com::sun::star::container::XEnumerationAccess { private: struct Impl; std::unique_ptr m_pImpl; ScCellRangeObj* GetObjectByIndex_Impl(sal_Int32 nIndex) const; public: ScCellRangesObj(ScDocShell* pDocSh, const ScRangeList& rR); virtual ~ScCellRangesObj(); virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL acquire() throw() override; virtual void SAL_CALL release() throw() override; virtual void RefChanged() override; // XSheetCellRanges virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumerationAccess > SAL_CALL getCells() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual OUString SAL_CALL getRangeAddressesAsString() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress > SAL_CALL getRangeAddresses() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XSheetCellRangeContainer virtual void SAL_CALL addRangeAddress( const ::com::sun::star::table::CellRangeAddress& rRange, sal_Bool bMergeRanges ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL removeRangeAddress( const ::com::sun::star::table::CellRangeAddress& rRange ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL addRangeAddresses( const ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress >& rRanges, sal_Bool bMergeRanges ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL removeRangeAddresses( const ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress >& rRanges ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException, std::exception) override; // XNameContainer virtual void SAL_CALL insertByName( const 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, std::exception) override; virtual void SAL_CALL removeByName( const OUString& Name ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) override; // XNameReplace virtual void SAL_CALL replaceByName( const 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, std::exception) override; // XNameAccess virtual ::com::sun::star::uno::Any SAL_CALL getByName( const OUString& aName ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getElementNames() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL hasByName( const OUString& aName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XIndexAccess virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException, std::exception) override; 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, std::exception) override; // XElementAccess virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XEnumerationAccess virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XTypeProvider virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException, std::exception) override; }; class SC_DLLPUBLIC ScCellRangeObj : public ScCellRangesBase, public com::sun::star::sheet::XCellRangeAddressable, public com::sun::star::sheet::XSheetCellRange, public com::sun::star::sheet::XArrayFormulaRange, public com::sun::star::sheet::XArrayFormulaTokens, public com::sun::star::sheet::XCellRangeData, public com::sun::star::sheet::XCellRangeFormula, public com::sun::star::sheet::XMultipleOperation, public com::sun::star::util::XMergeable, public com::sun::star::sheet::XCellSeries, public com::sun::star::table::XAutoFormattable, public com::sun::star::util::XSortable, public com::sun::star::sheet::XSheetFilterableEx, public com::sun::star::sheet::XSubTotalCalculatable, public com::sun::star::util::XImportable, public com::sun::star::sheet::XCellFormatRangesSupplier, public com::sun::star::sheet::XUniqueCellFormatRangesSupplier, public com::sun::star::table::XColumnRowRange { private: const SfxItemPropertySet* pRangePropSet; ScRange aRange; protected: const ScRange& GetRange() const { return aRange; } virtual const SfxItemPropertyMap& GetItemPropertyMap() override; virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry, ::com::sun::star::uno::Any& ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) override; ::com::sun::star::uno::Reference< ::com::sun::star::table::XCell > GetCellByPosition_Impl( sal_Int32 nColumn, sal_Int32 nRow ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); void SetArrayFormula_Impl( const OUString& rFormula, const OUString& rFormulaNmsp, const formula::FormulaGrammar::Grammar eGrammar ) throw (css::uno::RuntimeException, std::exception); public: ScCellRangeObj(ScDocShell* pDocSh, const ScRange& rR); virtual ~ScCellRangeObj(); // uses ObjectShell from document, if set (returns NULL otherwise) static com::sun::star::uno::Reference CreateRangeFromDoc( ScDocument* pDoc, const ScRange& rR ); virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL acquire() throw() override; virtual void SAL_CALL release() throw() override; virtual void RefChanged() override; // XCellRangeAddressable virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getRangeAddress() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XSheetCellRange virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet > SAL_CALL getSpreadsheet() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XArrayFormulaRange virtual OUString SAL_CALL getArrayFormula() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setArrayFormula( const OUString& aFormula ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XArrayFormulaTokens virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::FormulaToken > SAL_CALL getArrayTokens() throw (::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setArrayTokens( const ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::FormulaToken >& aTokens ) throw (::com::sun::star::uno::RuntimeException, std::exception) override; // XCellRangeData virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > > SAL_CALL getDataArray() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setDataArray( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > >& aArray ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XCellRangeFormula virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< OUString > > SAL_CALL getFormulaArray() throw (::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setFormulaArray( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< OUString > >& aArray ) throw (::com::sun::star::uno::RuntimeException, std::exception) override; // XMultipleOperation virtual void SAL_CALL setTableOperation( const ::com::sun::star::table::CellRangeAddress& aFormulaRange, ::com::sun::star::sheet::TableOperationMode nMode, const ::com::sun::star::table::CellAddress& aColumnCell, const ::com::sun::star::table::CellAddress& aRowCell ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XMergeable virtual void SAL_CALL merge( sal_Bool bMerge ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL getIsMerged() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XCellSeries virtual void SAL_CALL fillSeries( ::com::sun::star::sheet::FillDirection nFillDirection, ::com::sun::star::sheet::FillMode nFillMode, ::com::sun::star::sheet::FillDateMode nFillDateMode, double fStep, double fEndValue ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL fillAuto( ::com::sun::star::sheet::FillDirection nFillDirection, sal_Int32 nSourceCount ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XAutoFormattable virtual void SAL_CALL autoFormat( const OUString& aName ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) override; // XSortable virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL createSortDescriptor() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL sort( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& xDescriptor ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XSheetFilterableEx virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor > SAL_CALL createFilterDescriptorByObject( const ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterable >& xObject ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XSheetFilterable virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor > SAL_CALL createFilterDescriptor( sal_Bool bEmpty ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL filter( const ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetFilterDescriptor >& xDescriptor ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XSubTotalCalculatable virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSubTotalDescriptor > SAL_CALL createSubTotalDescriptor( sal_Bool bEmpty ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL applySubTotals(const ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSubTotalDescriptor >& xDescriptor, sal_Bool bReplace) throw (::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL removeSubTotals() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XImportable virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL createImportDescriptor( sal_Bool bEmpty ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL doImport( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aDescriptor ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XCellFormatRangesSupplier virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL getCellFormatRanges() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XUniqueCellFormatRangesSupplier virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL getUniqueCellFormatRanges() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XColumnRowRange virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XTableColumns > SAL_CALL getColumns() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XTableRows > SAL_CALL getRows() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XCellRange virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCell > SAL_CALL getCellByPosition( sal_Int32 nColumn, sal_Int32 nRow ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL getCellRangeByPosition( sal_Int32 nLeft, sal_Int32 nTop, sal_Int32 nRight, sal_Int32 nBottom ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL getCellRangeByName( const OUString& aRange ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > getCellRangeByName( const OUString& aRange, const ScAddress::Details& rDetails ) throw(::com::sun::star::uno::RuntimeException); // XPropertySet override due to Range-Properties virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XTypeProvider virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException, std::exception) override; }; //! really derive cell from range? class SC_DLLPUBLIC ScCellObj : public ScCellRangeObj, public com::sun::star::text::XText, public com::sun::star::container::XEnumerationAccess, public com::sun::star::table::XCell2, public com::sun::star::sheet::XFormulaTokens, public com::sun::star::sheet::XCellAddressable, public com::sun::star::sheet::XSheetAnnotationAnchor, public com::sun::star::text::XTextFieldsSupplier, public com::sun::star::document::XActionLockable { private: rtl::Reference mxUnoText; const SfxItemPropertySet* pCellPropSet; ScAddress aCellPos; sal_Int16 nActionLockCount; private: OUString GetInputString_Impl(bool bEnglish) const; OUString GetOutputString_Impl() const; void SetString_Impl(const OUString& rString, bool bInterpret, bool bEnglish); double GetValue_Impl() const; void SetValue_Impl(double fValue); com::sun::star::table::CellContentType GetResultType_Impl(); protected: virtual const SfxItemPropertyMap& GetItemPropertyMap() override; virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry, ::com::sun::star::uno::Any& ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) override; public: static const SvxItemPropertySet* GetEditPropertySet(); static const SfxItemPropertyMap& GetCellPropertyMap(); ScCellObj(ScDocShell* pDocSh, const ScAddress& rP); virtual ~ScCellObj(); virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL acquire() throw() override; virtual void SAL_CALL release() throw() override; virtual void RefChanged() override; SvxUnoText& GetUnoText(); // XML import needs to set results at formula cells, // not meant for any other purpose. const ScAddress& GetPosition() const { return aCellPos; } void InputEnglishString( const OUString& rText ); // XText virtual void SAL_CALL insertTextContent( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >& xRange, const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent >& xContent, sal_Bool bAbsorb ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL removeTextContent( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextContent >& xContent ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException, std::exception) override; // XSimpleText virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL createTextCursor() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextCursor > SAL_CALL createTextCursorByRange( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >& aTextPosition ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL insertString( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >& xRange, const OUString& aString, sal_Bool bAbsorb ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL insertControlCharacter( const ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange >& xRange, sal_Int16 nControlCharacter, sal_Bool bAbsorb ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) override; // XTextRange virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XText > SAL_CALL getText() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getStart() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > SAL_CALL getEnd() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual OUString SAL_CALL getString() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setString( const OUString& aString ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XEnumerationAccess virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XElementAccess virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XCell virtual OUString SAL_CALL getFormula() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setFormula( const OUString& aFormula ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setFormulaResult( double nValue ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setFormulaString( const OUString& aFormula ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual double SAL_CALL getValue() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setValue( double nValue ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::table::CellContentType SAL_CALL getType() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Int32 SAL_CALL getError() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XFormulaTokens virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::FormulaToken > SAL_CALL getTokens() throw (::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setTokens( const ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::FormulaToken >& aTokens ) throw (::com::sun::star::uno::RuntimeException, std::exception) override; // XCellAddressable virtual ::com::sun::star::table::CellAddress SAL_CALL getCellAddress() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XSheetAnnotationAnchor virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetAnnotation > SAL_CALL getAnnotation() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XTextFieldsSupplier virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumerationAccess > SAL_CALL getTextFields() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTextFieldMasters() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XPropertySet override due to cell properties virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XTypeProvider virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XActionLockable virtual sal_Bool SAL_CALL isActionLocked() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL addActionLock() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL removeActionLock() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setActionLocks( sal_Int16 nLock ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Int16 SAL_CALL resetActionLocks() throw(::com::sun::star::uno::RuntimeException, std::exception) override; }; class ScTableSheetObj : public ScCellRangeObj, public com::sun::star::sheet::XSpreadsheet, public com::sun::star::container::XNamed, public com::sun::star::sheet::XSheetPageBreak, public com::sun::star::sheet::XCellRangeMovement, public com::sun::star::table::XTableChartsSupplier, public com::sun::star::sheet::XDataPilotTablesSupplier, public com::sun::star::sheet::XScenariosSupplier, public com::sun::star::sheet::XSheetAnnotationsSupplier, public com::sun::star::drawing::XDrawPageSupplier, public com::sun::star::sheet::XPrintAreas, public com::sun::star::sheet::XSheetLinkable, public com::sun::star::sheet::XSheetAuditing, public com::sun::star::sheet::XSheetOutline, public com::sun::star::util::XProtectable, public com::sun::star::sheet::XScenario, public com::sun::star::sheet::XScenarioEnhanced, public com::sun::star::sheet::XExternalSheetName, public com::sun::star::document::XEventsSupplier { friend class ScTableSheetsObj; // for insertByName() private: const SfxItemPropertySet* pSheetPropSet; SCTAB GetTab_Impl() const; void PrintAreaUndo_Impl( ScPrintRangeSaver* pOldRanges ); protected: virtual const SfxItemPropertyMap& GetItemPropertyMap() override; virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry, ::com::sun::star::uno::Any& ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) override; public: ScTableSheetObj(ScDocShell* pDocSh, SCTAB nTab); virtual ~ScTableSheetObj(); void InitInsertSheet(ScDocShell* pDocSh, SCTAB nTab); virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL acquire() throw() override; virtual void SAL_CALL release() throw() override; // XSpreadsheet virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellCursor > SAL_CALL createCursor() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellCursor > SAL_CALL createCursorByRange( const ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetCellRange >& aRange ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XSheetCellRange virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSpreadsheet > SAL_CALL getSpreadsheet() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XCellRange virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCell > SAL_CALL getCellByPosition( sal_Int32 nColumn, sal_Int32 nRow ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL getCellRangeByPosition( sal_Int32 nLeft, sal_Int32 nTop, sal_Int32 nRight, sal_Int32 nBottom ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException, std::exception) override; using ScCellRangeObj::getCellRangeByName; virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XCellRange > SAL_CALL getCellRangeByName( const OUString& aRange ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XNamed virtual OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setName( const OUString& aName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XSheetPageBreak virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::TablePageBreakData > SAL_CALL getColumnPageBreaks() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< ::com::sun::star::sheet::TablePageBreakData > SAL_CALL getRowPageBreaks() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL removeAllManualPageBreaks() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XCellRangeMovement virtual void SAL_CALL insertCells( const ::com::sun::star::table::CellRangeAddress& aRange, ::com::sun::star::sheet::CellInsertMode nMode ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL removeRange( const ::com::sun::star::table::CellRangeAddress& aRange, ::com::sun::star::sheet::CellDeleteMode nMode ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL moveRange( const ::com::sun::star::table::CellAddress& aDestination, const ::com::sun::star::table::CellRangeAddress& aSource ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL copyRange( const ::com::sun::star::table::CellAddress& aDestination, const ::com::sun::star::table::CellRangeAddress& aSource ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XTableChartsSupplier virtual ::com::sun::star::uno::Reference< ::com::sun::star::table::XTableCharts > SAL_CALL getCharts() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XDataPilotTablesSupplier virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XDataPilotTables > SAL_CALL getDataPilotTables() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XScenariosSupplier virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XScenarios > SAL_CALL getScenarios() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XSheetAnnotationsSupplier virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XSheetAnnotations > SAL_CALL getAnnotations() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XDrawPageSupplier virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > SAL_CALL getDrawPage() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XPrintAreas virtual ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress > SAL_CALL getPrintAreas() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setPrintAreas( const ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress >& aPrintAreas ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL getPrintTitleColumns() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setPrintTitleColumns( sal_Bool bPrintTitleColumns ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getTitleColumns() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setTitleColumns( const ::com::sun::star::table::CellRangeAddress& aTitleColumns ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL getPrintTitleRows() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setPrintTitleRows( sal_Bool bPrintTitleRows ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::table::CellRangeAddress SAL_CALL getTitleRows() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setTitleRows( const ::com::sun::star::table::CellRangeAddress& aTitleRows ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XSheetLinkable virtual ::com::sun::star::sheet::SheetLinkMode SAL_CALL getLinkMode() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setLinkMode( ::com::sun::star::sheet::SheetLinkMode nLinkMode ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual OUString SAL_CALL getLinkUrl() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setLinkUrl( const OUString& aLinkUrl ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual OUString SAL_CALL getLinkSheetName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setLinkSheetName( const OUString& aLinkSheetName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL link( const OUString& aUrl, const OUString& aSheetName, const OUString& aFilterName, const OUString& aFilterOptions, ::com::sun::star::sheet::SheetLinkMode nMode ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XSheetAuditing virtual sal_Bool SAL_CALL hideDependents( const ::com::sun::star::table::CellAddress& aPosition ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL hidePrecedents( const ::com::sun::star::table::CellAddress& aPosition ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL showDependents( const ::com::sun::star::table::CellAddress& aPosition ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL showPrecedents( const ::com::sun::star::table::CellAddress& aPosition ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL showErrors( const ::com::sun::star::table::CellAddress& aPosition ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL showInvalid() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL clearArrows() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XSheetOutline virtual void SAL_CALL group( const ::com::sun::star::table::CellRangeAddress& aRange, ::com::sun::star::table::TableOrientation nOrientation ) throw (::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL ungroup( const ::com::sun::star::table::CellRangeAddress& aRange, ::com::sun::star::table::TableOrientation nOrientation ) throw (::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL autoOutline( const ::com::sun::star::table::CellRangeAddress& aRange ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL clearOutline() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL hideDetail( const ::com::sun::star::table::CellRangeAddress& aRange ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL showDetail( const ::com::sun::star::table::CellRangeAddress& aRange ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL showLevel( sal_Int16 nLevel, ::com::sun::star::table::TableOrientation nOrientation ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XProtectable virtual void SAL_CALL protect( const OUString& aPassword ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL unprotect( const OUString& aPassword ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL isProtected() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XScenario virtual sal_Bool SAL_CALL getIsScenario() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual OUString SAL_CALL getScenarioComment() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setScenarioComment( const OUString& aScenarioComment ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL addRanges( const ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress >& aRanges ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL apply() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XScenarioEnhanced virtual ::com::sun::star::uno::Sequence< ::com::sun::star::table::CellRangeAddress > SAL_CALL getRanges( ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XExternalSheetName virtual void SAL_CALL setExternalName( const OUString& aUrl, const OUString& aSheetName ) throw (::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException, std::exception) override; // XEventsSupplier virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameReplace > SAL_CALL getEvents() throw (::com::sun::star::uno::RuntimeException, std::exception) override; // XPropertySet override due to sheet properties virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XUnoTunnel virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; static const com::sun::star::uno::Sequence& getUnoTunnelId(); static ScTableSheetObj* getImplementation(const css::uno::Reference< com::sun::star::uno::XInterface>& rObj); // XTypeProvider virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException, std::exception) override; }; class ScTableColumnObj : public ScCellRangeObj, public com::sun::star::container::XNamed { private: const SfxItemPropertySet* pColPropSet; protected: virtual const SfxItemPropertyMap& GetItemPropertyMap() override; virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry, ::com::sun::star::uno::Any& ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) override; public: ScTableColumnObj(ScDocShell* pDocSh, SCCOL nCol, SCTAB nTab); virtual ~ScTableColumnObj(); virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL acquire() throw() override; virtual void SAL_CALL release() throw() override; // XNamed virtual OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SAL_CALL setName( const OUString& aName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XPropertySet override due to column properties virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XTypeProvider virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException, std::exception) override; }; class ScTableRowObj : public ScCellRangeObj { private: const SfxItemPropertySet* pRowPropSet; protected: virtual const SfxItemPropertyMap& GetItemPropertyMap() override; virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry, ::com::sun::star::uno::Any& ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual void SetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) override; public: ScTableRowObj(ScDocShell* pDocSh, SCROW nRow, SCTAB nTab); virtual ~ScTableRowObj(); // XPropertySet override due to row properties virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) override; }; class ScCellsObj : public cppu::WeakImplHelper< com::sun::star::container::XEnumerationAccess, com::sun::star::lang::XServiceInfo >, public SfxListener { private: ScDocShell* pDocShell; ScRangeList aRanges; public: ScCellsObj(ScDocShell* pDocSh, const ScRangeList& rR); virtual ~ScCellsObj(); virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; // XEnumerationAccess virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XElementAccess virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) override; }; class ScCellsEnumeration : public cppu::WeakImplHelper< com::sun::star::container::XEnumeration, com::sun::star::lang::XServiceInfo >, public SfxListener { private: ScDocShell* pDocShell; ScRangeList aRanges; ScAddress aPos; ScMarkData* pMark; bool bAtEnd; private: void Advance_Impl(); void CheckPos_Impl(); public: ScCellsEnumeration(ScDocShell* pDocSh, const ScRangeList& rR); virtual ~ScCellsEnumeration(); virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; // XEnumeration virtual sal_Bool SAL_CALL hasMoreElements() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Any SAL_CALL nextElement() throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) override; }; class ScCellFormatsObj : public cppu::WeakImplHelper< com::sun::star::container::XIndexAccess, com::sun::star::container::XEnumerationAccess, com::sun::star::lang::XServiceInfo >, public SfxListener { private: ScDocShell* pDocShell; ScRange aTotalRange; private: ScCellRangeObj* GetObjectByIndex_Impl(long nIndex) const; public: ScCellFormatsObj(ScDocShell* pDocSh, const ScRange& rR); virtual ~ScCellFormatsObj(); virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; // XIndexAccess virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException, std::exception) override; 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, std::exception) override; // XEnumerationAccess virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XElementAccess virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) override; }; class ScCellFormatsEnumeration : public cppu::WeakImplHelper< com::sun::star::container::XEnumeration, com::sun::star::lang::XServiceInfo >, public SfxListener { private: ScDocShell* pDocShell; SCTAB nTab; ScAttrRectIterator* pIter; ScRange aNext; bool bAtEnd; bool bDirty; private: void Advance_Impl(); ScCellRangeObj* NextObject_Impl(); public: ScCellFormatsEnumeration(ScDocShell* pDocSh, const ScRange& rR); virtual ~ScCellFormatsEnumeration(); virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; // XEnumeration virtual sal_Bool SAL_CALL hasMoreElements() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Any SAL_CALL nextElement() throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) override; }; typedef std::vector< ScRangeList > ScMyRangeLists; class ScUniqueCellFormatsObj : public cppu::WeakImplHelper< com::sun::star::container::XIndexAccess, com::sun::star::container::XEnumerationAccess, com::sun::star::lang::XServiceInfo >, public SfxListener { private: ScDocShell* pDocShell; ScRange aTotalRange; ScMyRangeLists aRangeLists; private: void GetObjects_Impl(); public: ScUniqueCellFormatsObj(ScDocShell* pDocSh, const ScRange& rR); virtual ~ScUniqueCellFormatsObj(); virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; // XIndexAccess virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException, std::exception) override; 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, std::exception) override; // XEnumerationAccess virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XElementAccess virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException, std::exception) override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) override; }; class ScUniqueCellFormatsEnumeration : public cppu::WeakImplHelper< com::sun::star::container::XEnumeration, com::sun::star::lang::XServiceInfo >, public SfxListener { private: ScMyRangeLists aRangeLists; ScDocShell* pDocShell; sal_Int32 nCurrentPosition; public: ScUniqueCellFormatsEnumeration(ScDocShell* pDocShell, const ScMyRangeLists& rRangeLists); virtual ~ScUniqueCellFormatsEnumeration(); virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; // XEnumeration virtual sal_Bool SAL_CALL hasMoreElements() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Any SAL_CALL nextElement() throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException, std::exception) override; virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException, std::exception) override; }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */