/* -*- 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 . */ #pragma once #include "address.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 namespace com::sun::star::chart2::data { class XDataProvider; } namespace com::sun::star::sheet::opencl { struct OpenCLPlatform; } class ScDocShell; class ScAnnotationObj; class ScMarkData; class ScPrintFuncCache; struct ScPrintState; class ScPrintSelectionStatus; class ScTableColumnObj; class ScTableRowObj; class ScTableSheetObj; class ScRangeList; class ScPrintUIOptions; class ScSheetSaveData; struct ScFormatSaveData; class SAL_DLLPUBLIC_RTTI ScModelObj : public SfxBaseModel, public vcl::ITiledRenderable, public css::sheet::XSpreadsheetDocument, public css::document::XActionLockable, public css::sheet::XCalculatable, public css::util::XProtectable, public css::drawing::XDrawPagesSupplier, public css::sheet::XGoalSeek, public css::sheet::XConsolidatable, public css::sheet::XDocumentAuditing, public css::style::XStyleFamiliesSupplier, public css::view::XRenderable, public css::document::XLinkTargetSupplier, public css::beans::XPropertySet, public SvxFmMSFactory, ///< derived from XMultiServiceFactory public css::lang::XServiceInfo, public css::util::XChangesNotifier, public css::chart2::XDataProviderAccess, public css::sheet::opencl::XOpenCLSelection { private: SfxItemPropertySet aPropSet; ScDocShell* pDocShell; std::unique_ptr pPrintFuncCache; std::unique_ptr pPrinterOptions; std::unique_ptr m_pPrintState; css::uno::Reference xNumberAgg; css::uno::Reference xDrawGradTab; css::uno::Reference xDrawHatchTab; css::uno::Reference xDrawBitmapTab; css::uno::Reference xDrawTrGradTab; css::uno::Reference xDrawMarkerTab; css::uno::Reference xDrawDashTab; css::uno::Reference xChartDataProv; css::uno::Reference xObjProvider; ::comphelper::OInterfaceContainerHelper3 maChangesListeners; bool FillRenderMarkData( const css::uno::Any& aSelection, const css::uno::Sequence< css::beans::PropertyValue >& rOptions, ScMarkData& rMark, ScPrintSelectionStatus& rStatus, OUString& rPagesStr, bool& rbRenderToGraphic ) const; css::uno::Reference const & GetFormatter(); void HandleCalculateEvents(); css::uno::Reference create( OUString const & aServiceSpecifier, css::uno::Sequence const * arguments); static bool IsOnEvenPage( sal_Int32 nPage ) { return nPage % 2 == 0; }; OUString maBuildId; std::vector maValidPages; protected: const SfxItemPropertySet& GetPropertySet() const { return aPropSet; } /** abstract SdrModel provider */ virtual SdrModel& getSdrModelFromUnoModel() const override; public: ScModelObj(ScDocShell* pDocSh); virtual ~ScModelObj() override; /// create ScModelObj and set at pDocSh (SetBaseModel) static void CreateAndSet(ScDocShell* pDocSh); SC_DLLPUBLIC ScDocument* GetDocument() const; SC_DLLPUBLIC SfxObjectShell* GetEmbeddedObject() const; SC_DLLPUBLIC void UpdateAllRowHeights(); void BeforeXMLLoading(); void AfterXMLLoading(); ScSheetSaveData* GetSheetSaveData(); ScFormatSaveData* GetFormatSaveData(); void RepaintRange( const ScRange& rRange ); void RepaintRange( const ScRangeList& rRange ); bool HasChangesListeners() const; void NotifyChanges( const OUString& rOperation, const ScRangeList& rRanges, const css::uno::Sequence< css::beans::PropertyValue >& rProperties ); virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType ) override; virtual void SAL_CALL acquire() noexcept override; virtual void SAL_CALL release() noexcept override; virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; /// XSpreadsheetDocument virtual css::uno::Reference< css::sheet::XSpreadsheets > SAL_CALL getSheets() override; /// XDataProviderAccess virtual ::css::uno::Reference< css::chart2::data::XDataProvider > SAL_CALL createDataProvider() override; /// XStyleFamiliesSupplier virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getStyleFamilies() override; /// XRenderable virtual sal_Int32 SAL_CALL getRendererCount( const css::uno::Any& aSelection, const css::uno::Sequence< css::beans::PropertyValue >& xOptions ) override; virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getRenderer( sal_Int32 nRenderer, const css::uno::Any& aSelection, const css::uno::Sequence< css::beans::PropertyValue >& xOptions ) override; virtual void SAL_CALL render( sal_Int32 nRenderer, const css::uno::Any& aSelection, const css::uno::Sequence< css::beans::PropertyValue >& xOptions ) override; /// XLinkTargetSupplier virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getLinks() override; /// XActionLockable virtual sal_Bool SAL_CALL isActionLocked() override; virtual void SAL_CALL addActionLock() override; virtual void SAL_CALL removeActionLock() override; virtual void SAL_CALL setActionLocks( sal_Int16 nLock ) override; virtual sal_Int16 SAL_CALL resetActionLocks() override; virtual void SAL_CALL lockControllers() override; virtual void SAL_CALL unlockControllers() override; /// XCalculatable virtual void SAL_CALL calculate() override; virtual void SAL_CALL calculateAll() override; virtual sal_Bool SAL_CALL isAutomaticCalculationEnabled() override; virtual void SAL_CALL enableAutomaticCalculation( sal_Bool bEnabled ) override; /// XProtectable virtual void SAL_CALL protect( const OUString& aPassword ) override; virtual void SAL_CALL unprotect( const OUString& aPassword ) override; virtual sal_Bool SAL_CALL isProtected() override; /// XDrawPagesSupplier virtual css::uno::Reference< css::drawing::XDrawPages > SAL_CALL getDrawPages() override; /// XGoalSeek virtual css::sheet::GoalResult SAL_CALL seekGoal( const css::table::CellAddress& aFormulaPosition, const css::table::CellAddress& aVariablePosition, const OUString& aGoalValue ) override; /// XConsolidatable virtual css::uno::Reference< css::sheet::XConsolidationDescriptor > SAL_CALL createConsolidationDescriptor( sal_Bool bEmpty ) override; virtual void SAL_CALL consolidate( const css::uno::Reference< css::sheet::XConsolidationDescriptor >& xDescriptor ) override; /// XDocumentAuditing virtual void SAL_CALL refreshArrows() override; /// XViewDataSupplier virtual css::uno::Reference< css::container::XIndexAccess > SAL_CALL getViewData( ) override; /// XPropertySet virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override; virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; /// XMultiServiceFactory virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance( const OUString& aServiceSpecifier ) override; virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceWithArguments( const OUString& ServiceSpecifier, const css::uno::Sequence< css::uno::Any >& Arguments ) override; virtual css::uno::Sequence< OUString > SAL_CALL getAvailableServiceNames() override; /// XServiceInfo virtual OUString SAL_CALL getImplementationName() override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; /// XUnoTunnel virtual sal_Int64 SAL_CALL getSomething( const css::uno::Sequence< sal_Int8 >& aIdentifier ) override; SC_DLLPUBLIC static const css::uno::Sequence& getUnoTunnelId(); /// XTypeProvider virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override; virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override; /// XChangesNotifier virtual void SAL_CALL addChangesListener( const css::uno::Reference< css::util::XChangesListener >& aListener ) override; virtual void SAL_CALL removeChangesListener( const css::uno::Reference< css::util::XChangesListener >& aListener ) override; // XOpenCLSelection virtual sal_Bool SAL_CALL isOpenCLEnabled() override; virtual void SAL_CALL enableOpenCL(sal_Bool bEnable) override; virtual void SAL_CALL enableAutomaticDeviceSelection(sal_Bool bForce) override; virtual void SAL_CALL disableAutomaticDeviceSelection() override; virtual void SAL_CALL selectOpenCLDevice( sal_Int32 platform, sal_Int32 device ) override; virtual sal_Int32 SAL_CALL getPlatformID() override; virtual sal_Int32 SAL_CALL getDeviceID() override; virtual css::uno::Sequence< css::sheet::opencl::OpenCLPlatform > SAL_CALL getOpenCLPlatforms() override; virtual void SAL_CALL enableOpcodeSubsetTest() override; virtual void SAL_CALL disableOpcodeSubsetTest() override; virtual sal_Bool SAL_CALL isOpcodeSubsetTested() override; virtual void SAL_CALL setFormulaCellNumberLimit( sal_Int32 number ) override; virtual sal_Int32 SAL_CALL getFormulaCellNumberLimit() override; /// @see vcl::ITiledRenderable::paintTile(). virtual void paintTile( VirtualDevice& rDevice, int nOutputWidth, int nOutputHeight, int nTilePosX, int nTilePosY, tools::Long nTileWidth, tools::Long nTileHeight ) override; /// @see vcl::ITiledRenderable::getDocumentSize(). SC_DLLPUBLIC virtual Size getDocumentSize() final override; /// @see vcl::ITiledRenderable::getDataArea(). virtual Size getDataArea(long nPart) override; /// @see vcl::ITiledRenderable::setPart(). virtual void setPart(int nPart, bool bAllowChangeFocus = true) override; /// @see vcl::ITiledRenderable::getPart(). virtual int getPart() override; /// @see vcl::ITiledRenderable::getParts(). virtual int getParts() override; /// @see vcl::ITiledRenderable::getPartInfo(). virtual OUString getPartInfo( int nPart ) override; /// @see vcl::ITiledRenderable::getPartName(). virtual OUString getPartName(int nPart) override; /// @see vcl::ITiledRenderable::getPartHash(). virtual OUString getPartHash( int nPart ) override; /// @see vcl::ITiledRenderable::getDocWindow(). virtual VclPtr getDocWindow() override; /// @see vcl::ITiledRenderable::initializeForTiledRendering(). virtual void initializeForTiledRendering(const css::uno::Sequence& rArguments) override; /// @see vcl::ITiledRenderable::postKeyEvent(). virtual void postKeyEvent(int nType, int nCharCode, int nKeyCode) override; /// @see vcl::ITiledRenderable::postMouseEvent(). virtual void postMouseEvent(int nType, int nX, int nY, int nCount, int nButtons, int nModifier) override; /// @see vcl::ITiledRenderable::setTextSelection(). virtual void setTextSelection(int nType, int nX, int nY) override; /// @see vcl::ITiledRenderable::getSelection(). virtual css::uno::Reference getSelection() override; /// @see vcl::ITiledRenderable::setGraphicSelection(). virtual void setGraphicSelection(int nType, int nX, int nY) override; /// @see lok::Document::resetSelection(). virtual void resetSelection() override; /// @see vcl::ITiledRenderable::setClipboard(). virtual void setClipboard(const css::uno::Reference& xClipboard) override; /// @see vcl::ITiledRenderable::isMimeTypeSupported(). virtual bool isMimeTypeSupported() override; /// @see vcl::ITiledRenderable::setClientZoom(). virtual void setClientZoom(int nTilePixelWidth, int nTilePixelHeight, int nTileTwipWidth, int nTileTwipHeight) override; /// @see vcl::ITiledRenderable::setOutlineState(). virtual void setOutlineState(bool bColumn, int nLevel, int nIndex, bool bHidden) override; /// @see vcl::ITiledRenderable::getRowColumnHeaders(). virtual void getRowColumnHeaders(const tools::Rectangle& rRectangle, tools::JsonWriter& rJsonWriter) override; /// @see vcl::ITiledRenderable::getSheetGeometryData(). virtual OString getSheetGeometryData(bool bColumns, bool bRows, bool bSizes, bool bHidden, bool bFiltered, bool bGroups) override; /// @see vcl::ITiledRenderable::getCellCursor(). virtual void getCellCursor(tools::JsonWriter& rJsonWriter) override; /// @see vcl::ITiledRenderable::getPointer(). virtual PointerStyle getPointer() override; /// @see vcl::ITiledRenderable::getTrackedChanges(). void getTrackedChanges(tools::JsonWriter&) override; /// @see vcl::ITiledRenderable::setClientVisibleArea(). virtual void setClientVisibleArea(const tools::Rectangle& rRectangle) override; /// @see vcl::ITiledRenderable::getPostIts(). void getPostIts(tools::JsonWriter& rJsonWriter) override; /// @see vcl::ITiledRenderable::getPostItsPos(). void getPostItsPos(tools::JsonWriter& rJsonWriter) override; /// @see vcl::ITiledRenderable::completeFunction(). virtual void completeFunction(const OUString& rFunctionName) override; /// @see vcl::ITiledRenderable::getViewRenderState(). OString getViewRenderState(SfxViewShell* pViewShell = nullptr) override; private: Size getDocumentSize(SCCOL& rnTiledRenderingAreaEndCol, SCROW& rnTiledRenderingAreaEndRow ); }; class ScDrawPagesObj final : public cppu::WeakImplHelper< css::drawing::XDrawPages, css::lang::XServiceInfo>, public SfxListener { private: ScDocShell* pDocShell; css::uno::Reference< css::drawing::XDrawPage > GetObjectByIndex_Impl(sal_Int32 nIndex) const; public: ScDrawPagesObj(ScDocShell* pDocSh); virtual ~ScDrawPagesObj() override; virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; /// XDrawPages virtual css::uno::Reference< css::drawing::XDrawPage > SAL_CALL insertNewByIndex( sal_Int32 nIndex ) override; virtual void SAL_CALL remove( const css::uno::Reference< css::drawing::XDrawPage >& xPage ) override; /// XIndexAccess virtual sal_Int32 SAL_CALL getCount() override; virtual css::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) override; /// XElementAccess virtual css::uno::Type SAL_CALL getElementType() override; virtual sal_Bool SAL_CALL hasElements() override; /// XServiceInfo virtual OUString SAL_CALL getImplementationName() override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; }; class ScTableSheetsObj final : public cppu::WeakImplHelper< css::sheet::XSpreadsheets2, css::sheet::XCellRangesAccess, css::container::XEnumerationAccess, css::container::XIndexAccess, css::lang::XServiceInfo>, public SfxListener { private: ScDocShell* pDocShell; rtl::Reference GetObjectByIndex_Impl(sal_Int32 nIndex) const; rtl::Reference GetObjectByName_Impl(const OUString& aName) const; public: ScTableSheetsObj(ScDocShell* pDocSh); virtual ~ScTableSheetsObj() override; virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; /// XSpreadsheets virtual void SAL_CALL insertNewByName( const OUString& aName, sal_Int16 nPosition ) override; virtual void SAL_CALL moveByName( const OUString& aName, sal_Int16 nDestination ) override; virtual void SAL_CALL copyByName( const OUString& aName, const OUString& aCopy, sal_Int16 nDestination ) override; /// XSpreadsheets2 virtual sal_Int32 SAL_CALL importSheet( const css::uno::Reference< css::sheet::XSpreadsheetDocument > & xDocSrc, const OUString& srcName, sal_Int32 nDestPosition) override; /// XCellRangesAccess virtual css::uno::Reference< css::table::XCell > SAL_CALL getCellByPosition( sal_Int32 nColumn, sal_Int32 nRow, sal_Int32 nSheet ) override; virtual css::uno::Reference< css::table::XCellRange > SAL_CALL getCellRangeByPosition( sal_Int32 nLeft, sal_Int32 nTop, sal_Int32 nRight, sal_Int32 nBottom, sal_Int32 nSheet ) override; virtual css::uno::Sequence < css::uno::Reference< css::table::XCellRange > > SAL_CALL getCellRangesByName( const OUString& aRange ) override; /// XNameContainer virtual void SAL_CALL insertByName( const OUString& aName, const css::uno::Any& aElement ) override; virtual void SAL_CALL removeByName( const OUString& Name ) override; /// XNameReplace virtual void SAL_CALL replaceByName( const OUString& aName, const css::uno::Any& aElement ) override; /// XEnumerationAccess virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() override; /// XElementAccess virtual css::uno::Type SAL_CALL getElementType() override; virtual sal_Bool SAL_CALL hasElements() override; /// XIndexAccess virtual sal_Int32 SAL_CALL getCount() override; virtual css::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) override; /// XNameAccess virtual css::uno::Any SAL_CALL getByName( const OUString& aName ) override; virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override; virtual sal_Bool SAL_CALL hasByName( const OUString& aName ) override; /// XServiceInfo virtual OUString SAL_CALL getImplementationName() override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; }; class ScTableColumnsObj final : public cppu::WeakImplHelper< css::table::XTableColumns, css::container::XEnumerationAccess, css::container::XNameAccess, css::beans::XPropertySet, css::lang::XServiceInfo>, public SfxListener { private: ScDocShell* pDocShell; SCTAB nTab; SCCOL nStartCol; SCCOL nEndCol; rtl::Reference GetObjectByIndex_Impl(sal_Int32 nIndex) const; rtl::Reference GetObjectByName_Impl(std::u16string_view aName) const; public: ScTableColumnsObj(ScDocShell* pDocSh, SCTAB nT, SCCOL nSC, SCCOL nEC); virtual ~ScTableColumnsObj() override; virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; /// XTableColumns virtual void SAL_CALL insertByIndex( sal_Int32 nIndex, sal_Int32 nCount ) override; virtual void SAL_CALL removeByIndex( sal_Int32 nIndex, sal_Int32 nCount ) override; /// XNameAccess virtual css::uno::Any SAL_CALL getByName( const OUString& aName ) override; virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override; virtual sal_Bool SAL_CALL hasByName( const OUString& aName ) override; /// XIndexAccess virtual sal_Int32 SAL_CALL getCount() override; virtual css::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) override; /// XEnumerationAccess virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() override; /// XElementAccess virtual css::uno::Type SAL_CALL getElementType() override; virtual sal_Bool SAL_CALL hasElements() override; /// XPropertySet virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override; virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; /// XServiceInfo virtual OUString SAL_CALL getImplementationName() override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; }; class ScTableRowsObj final : public cppu::WeakImplHelper< css::table::XTableRows, css::container::XEnumerationAccess, css::beans::XPropertySet, css::lang::XServiceInfo>, public SfxListener { private: ScDocShell* pDocShell; SCTAB nTab; SCROW nStartRow; SCROW nEndRow; rtl::Reference GetObjectByIndex_Impl(sal_Int32 nIndex) const; public: ScTableRowsObj(ScDocShell* pDocSh, SCTAB nT, SCROW nSR, SCROW nER); virtual ~ScTableRowsObj() override; virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; /// XTableRows virtual void SAL_CALL insertByIndex( sal_Int32 nIndex, sal_Int32 nCount ) override; virtual void SAL_CALL removeByIndex( sal_Int32 nIndex, sal_Int32 nCount ) override; /// XIndexAccess virtual sal_Int32 SAL_CALL getCount() override; virtual css::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) override; /// XEnumerationAccess virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() override; /// XElementAccess virtual css::uno::Type SAL_CALL getElementType() override; virtual sal_Bool SAL_CALL hasElements() override; /// XPropertySet virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override; virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; /// XServiceInfo virtual OUString SAL_CALL getImplementationName() override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; }; class ScSpreadsheetSettingsObj final : public cppu::WeakImplHelper< css::beans::XPropertySet, css::lang::XServiceInfo>, public SfxListener { public: virtual ~ScSpreadsheetSettingsObj() override; /// XPropertySet virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override; virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const css::uno::Any& aValue ) override; virtual css::uno::Any SAL_CALL getPropertyValue( const OUString& PropertyName ) override; virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener ) override; virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener >& aListener ) override; virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override; /// XServiceInfo virtual OUString SAL_CALL getImplementationName() override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; }; class SAL_DLLPUBLIC_RTTI ScAnnotationsObj final : public cppu::WeakImplHelper< css::sheet::XSheetAnnotations, css::container::XEnumerationAccess, css::lang::XServiceInfo>, public SfxListener { private: ScDocShell* pDocShell; SCTAB nTab; ///< Collection belongs to the sheet bool GetAddressByIndex_Impl( sal_Int32 nIndex, ScAddress& rPos ) const; rtl::Reference GetObjectByIndex_Impl( sal_Int32 nIndex ) const; public: ScAnnotationsObj(ScDocShell* pDocSh, SCTAB nT); virtual ~ScAnnotationsObj() override; virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; ScDocShell* GetDocShell() const { return pDocShell; } /// XSheetAnnotations virtual void SAL_CALL insertNew( const css::table::CellAddress& aPosition, const OUString& aText ) override; virtual void SAL_CALL removeByIndex( sal_Int32 nIndex ) override; /// XIndexAccess virtual sal_Int32 SAL_CALL getCount() override; virtual css::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) override; /// XEnumerationAccess virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() override; /// XElementAccess virtual css::uno::Type SAL_CALL getElementType() override; virtual sal_Bool SAL_CALL hasElements() override; /// XServiceInfo virtual OUString SAL_CALL getImplementationName() override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; }; class ScScenariosObj final : public cppu::WeakImplHelper< css::sheet::XScenarios, css::container::XEnumerationAccess, css::container::XIndexAccess, css::lang::XServiceInfo>, public SfxListener { private: ScDocShell* pDocShell; SCTAB nTab; bool GetScenarioIndex_Impl( std::u16string_view rName, SCTAB& rIndex ); rtl::Reference GetObjectByIndex_Impl(sal_Int32 nIndex); rtl::Reference GetObjectByName_Impl(std::u16string_view aName); public: ScScenariosObj(ScDocShell* pDocSh, SCTAB nT); virtual ~ScScenariosObj() override; virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; /// XScenarios virtual void SAL_CALL addNewByName( const OUString& aName, const css::uno::Sequence< css::table::CellRangeAddress >& aRanges, const OUString& aComment ) override; virtual void SAL_CALL removeByName( const OUString& aName ) override; /// XNameAccess virtual css::uno::Any SAL_CALL getByName( const OUString& aName ) override; virtual css::uno::Sequence< OUString > SAL_CALL getElementNames() override; virtual sal_Bool SAL_CALL hasByName( const OUString& aName ) override; /// XIndexAccess virtual sal_Int32 SAL_CALL getCount() override; virtual css::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) override; /// XEnumerationAccess virtual css::uno::Reference< css::container::XEnumeration > SAL_CALL createEnumeration() override; /// XElementAccess virtual css::uno::Type SAL_CALL getElementType() override; virtual sal_Bool SAL_CALL hasElements() override; /// XServiceInfo virtual OUString SAL_CALL getImplementationName() override; virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */