/* -*- 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 #include #include #include #include #include #include #include #include #include #include #include class SwPaM; class SwTextNode; class SwFormatContentControl; class SwContentControl; class SwXText; class SwXTextPortion; typedef std::deque> TextRangeList_t; /** * UNO API wrapper around an SwContentControl, exposed as the com.sun.star.text.ContentControl * service. */ class SwXContentControl final : public cppu::WeakImplHelper { class Impl; sw::UnoImplPtr m_pImpl; protected: void AttachImpl(const css::uno::Reference& xTextRange, sal_uInt16 nWhich); ~SwXContentControl() override; SwXContentControl(const SwXContentControl&) = delete; SwXContentControl& operator=(const SwXContentControl&) = delete; SwXContentControl(SwDoc* pDoc, SwContentControl* pContentControl, const css::uno::Reference& xParentText, std::unique_ptr pPortions); SwXContentControl(SwDoc* pDoc); public: static rtl::Reference CreateXContentControl(SwContentControl& rContentControl, const css::uno::Reference& xParentText = nullptr, std::unique_ptr&& pPortions = std::unique_ptr()); static rtl::Reference CreateXContentControl(SwDoc& rDoc); /// Initializes params with position of the attribute content (without CH_TXTATR). bool SetContentRange(SwTextNode*& rpNode, sal_Int32& rStart, sal_Int32& rEnd) const; const css::uno::Reference& GetParentText() const; // XServiceInfo OUString SAL_CALL getImplementationName() override; sal_Bool SAL_CALL supportsService(const OUString& rServiceName) override; css::uno::Sequence SAL_CALL getSupportedServiceNames() override; // XComponent void SAL_CALL dispose() override; void SAL_CALL addEventListener(const css::uno::Reference& xListener) override; void SAL_CALL removeEventListener(const css::uno::Reference& xListener) override; // XElementAccess css::uno::Type SAL_CALL getElementType() override; sal_Bool SAL_CALL hasElements() override; // XEnumerationAccess css::uno::Reference SAL_CALL createEnumeration() override; // XTextContent void SAL_CALL attach(const css::uno::Reference& xTextRange) override; css::uno::Reference SAL_CALL getAnchor() override; // XTextRange css::uno::Reference SAL_CALL getText() override; css::uno::Reference SAL_CALL getStart() override; css::uno::Reference SAL_CALL getEnd() override; OUString SAL_CALL getString() override; void SAL_CALL setString(const OUString& rString) override; // XSimpleText css::uno::Reference SAL_CALL createTextCursor() override; css::uno::Reference SAL_CALL createTextCursorByRange( const css::uno::Reference& xTextPosition) override; void SAL_CALL insertString(const css::uno::Reference& xRange, const OUString& aString, sal_Bool bAbsorb) override; void SAL_CALL insertControlCharacter(const css::uno::Reference& xRange, sal_Int16 nControlCharacter, sal_Bool bAbsorb) override; // XText void SAL_CALL insertTextContent(const css::uno::Reference& xRange, const css::uno::Reference& xContent, sal_Bool bAbsorb) override; void SAL_CALL removeTextContent(const css::uno::Reference& xContent) override; // XPropertySet css::uno::Reference SAL_CALL getPropertySetInfo() override; void SAL_CALL setPropertyValue(const OUString& rPropertyName, const css::uno::Any& rValue) override; css::uno::Any SAL_CALL getPropertyValue(const OUString& rPropertyName) override; void SAL_CALL addPropertyChangeListener( const OUString& rPropertyName, const css::uno::Reference& xListener) override; void SAL_CALL removePropertyChangeListener( const OUString& rPropertyName, const css::uno::Reference& xListener) override; void SAL_CALL addVetoableChangeListener( const OUString& rPropertyName, const css::uno::Reference& xListener) override; void SAL_CALL removeVetoableChangeListener( const OUString& rPropertyName, const css::uno::Reference& xListener) override; }; /// UNO wrapper around SwContentControlManager. class SwXContentControls final : public cppu::WeakImplHelper, public SwUnoCollection { ~SwXContentControls() override; public: SwXContentControls(SwDoc* pDoc); // XIndexAccess sal_Int32 SAL_CALL getCount() override; css::uno::Any SAL_CALL getByIndex(sal_Int32 nIndex) override; // XElementAccess css::uno::Type SAL_CALL getElementType() override; sal_Bool SAL_CALL hasElements() override; }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */