diff options
Diffstat (limited to 'sc/inc/docuno.hxx')
-rw-r--r-- | sc/inc/docuno.hxx | 765 |
1 files changed, 765 insertions, 0 deletions
diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx new file mode 100644 index 0000000000..611b0c22d2 --- /dev/null +++ b/sc/inc/docuno.hxx @@ -0,0 +1,765 @@ +/* -*- 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 <sal/types.h> +#include <sfx2/sfxbasemodel.hxx> +#include <svl/lstner.hxx> +#include <svx/fmdmod.hxx> +#include <com/sun/star/view/XRenderable.hpp> +#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> +#include <com/sun/star/document/XActionLockable.hpp> +#include <com/sun/star/document/XLinkTargetSupplier.hpp> +#include <com/sun/star/drawing/XDrawPagesSupplier.hpp> +#include <com/sun/star/drawing/XDrawPages.hpp> +#include <com/sun/star/sheet/XGoalSeek.hpp> +#include <com/sun/star/sheet/XCalculatable.hpp> +#include <com/sun/star/sheet/XScenarios.hpp> +#include <com/sun/star/sheet/XConsolidatable.hpp> +#include <com/sun/star/sheet/XSpreadsheetDocument.hpp> +#include <com/sun/star/sheet/XSpreadsheets2.hpp> +#include <com/sun/star/sheet/XDocumentAuditing.hpp> +#include <com/sun/star/chart2/XDataProviderAccess.hpp> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/util/XProtectable.hpp> +#include <com/sun/star/container/XEnumerationAccess.hpp> +#include <com/sun/star/table/XTableColumns.hpp> +#include <com/sun/star/table/XTableRows.hpp> +#include <com/sun/star/sheet/XSheetAnnotations.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/sheet/XCellRangesAccess.hpp> +#include <com/sun/star/sheet/opencl/XOpenCLSelection.hpp> +#include <com/sun/star/util/XChangesNotifier.hpp> +#include <com/sun/star/uno/XAggregation.hpp> +#include <cppuhelper/implbase.hxx> +#include <comphelper/interfacecontainer3.hxx> +#include <svl/itemprop.hxx> +#include <vcl/ITiledRenderable.hxx> + +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 SC_DLLPUBLIC 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<ScPrintFuncCache> pPrintFuncCache; + std::unique_ptr<ScPrintUIOptions> pPrinterOptions; + std::unique_ptr<ScPrintState> m_pPrintState; + css::uno::Reference<css::uno::XAggregation> xNumberAgg; + css::uno::Reference<css::uno::XInterface> xDrawGradTab; + css::uno::Reference<css::uno::XInterface> xDrawHatchTab; + css::uno::Reference<css::uno::XInterface> xDrawBitmapTab; + css::uno::Reference<css::uno::XInterface> xDrawTrGradTab; + css::uno::Reference<css::uno::XInterface> xDrawMarkerTab; + css::uno::Reference<css::uno::XInterface> xDrawDashTab; + css::uno::Reference<css::uno::XInterface> xChartDataProv; + css::uno::Reference<css::uno::XInterface> xObjProvider; + + ::comphelper::OInterfaceContainerHelper3<css::util::XChangesListener> 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<css::uno::XAggregation> const & GetFormatter(); + void HandleCalculateEvents(); + + css::uno::Reference<css::uno::XInterface> create( + OUString const & aServiceSpecifier, + css::uno::Sequence<css::uno::Any> const * arguments); + + static bool IsOnEvenPage( sal_Int32 nPage ) { return nPage % 2 == 0; }; + + OUString maBuildId; + std::vector<sal_Int32> 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); + + ScDocument* GetDocument() const; + SfxObjectShell* GetEmbeddedObject() const; + + 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; + + static const css::uno::Sequence<sal_Int8>& 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(). + 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<vcl::Window> getDocWindow() override; + + /// @see vcl::ITiledRenderable::initializeForTiledRendering(). + virtual void initializeForTiledRendering(const css::uno::Sequence<css::beans::PropertyValue>& 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<css::datatransfer::XTransferable> 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<css::datatransfer::clipboard::XClipboard>& 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<ScTableSheetObj> GetObjectByIndex_Impl(sal_Int32 nIndex) const; + rtl::Reference<ScTableSheetObj> 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<ScTableColumnObj> GetObjectByIndex_Impl(sal_Int32 nIndex) const; + rtl::Reference<ScTableColumnObj> 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<ScTableRowObj> 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<ScAnnotationObj> 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<ScTableSheetObj> GetObjectByIndex_Impl(sal_Int32 nIndex); + rtl::Reference<ScTableSheetObj> 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: */ |