diff options
Diffstat (limited to 'sd/source/ui/inc/AccessibleDrawDocumentView.hxx')
-rw-r--r-- | sd/source/ui/inc/AccessibleDrawDocumentView.hxx | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/sd/source/ui/inc/AccessibleDrawDocumentView.hxx b/sd/source/ui/inc/AccessibleDrawDocumentView.hxx new file mode 100644 index 000000000..202edd0ea --- /dev/null +++ b/sd/source/ui/inc/AccessibleDrawDocumentView.hxx @@ -0,0 +1,165 @@ +/* -*- 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 "AccessibleDocumentViewBase.hxx" + +#include <com/sun/star/accessibility/XAccessibleGroupPosition.hpp> + +namespace accessibility { class AccessiblePageShape; } +namespace accessibility { class ChildrenManager; } + +namespace accessibility { + +/** This class makes draw documents in the general view modes + accessible. It passes all shapes on the current draw page to a + children manager and additionally creates a new shape that + represents the actual draw page. + + Please see the documentation of the base class for further + explanations of the individual methods. +*/ +class AccessibleDrawDocumentView final : + public AccessibleDocumentViewBase + ,public css::accessibility::XAccessibleGroupPosition +{ +public: + //===== internal ======================================================== + + AccessibleDrawDocumentView (::sd::Window* pSdWindow, + ::sd::ViewShell* pViewShell, + const css::uno::Reference<css::frame::XController>& rxController, + const css::uno::Reference<css::accessibility::XAccessible>& rxParent); + + virtual ~AccessibleDrawDocumentView() override; + + /** Complete the initialization begun in the constructor. + */ + virtual void Init() override; + + //===== IAccessibleViewForwarderListener ================================ + + virtual void ViewForwarderChanged() override; + + //===== XAccessibleContext ============================================== + + virtual sal_Int32 SAL_CALL + getAccessibleChildCount() override; + + virtual css::uno::Reference< css::accessibility::XAccessible> SAL_CALL + getAccessibleChild (sal_Int32 nIndex) override; + + virtual OUString SAL_CALL + getAccessibleName() override; + + //===== lang::XEventListener ============================================ + + virtual void SAL_CALL + disposing (const css::lang::EventObject& rEventObject) override; + + //===== XPropertyChangeListener ========================================= + + virtual void SAL_CALL + propertyChange (const css::beans::PropertyChangeEvent& rEventObject) override; + //===== XInterface ====================================================== + + 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; + + //===== XAccessibleGroupPosition ========================================= + virtual css::uno::Sequence< sal_Int32 > SAL_CALL + getGroupPosition( const css::uno::Any& rAny ) override; + virtual OUString SAL_CALL getObjectLink( const css::uno::Any& accoject ) override; + +private: + + //===== XServiceInfo ==================================================== + + virtual OUString SAL_CALL + getImplementationName() override; + + virtual css::uno::Sequence< OUString> SAL_CALL + getSupportedServiceNames() override; + + virtual bool + implIsSelected( sal_Int32 nAccessibleChildIndex ) override; + + /** Select or deselect the specified child or all children if the given + index has the special value ACCESSIBLE_SELECTION_CHILD_ALL. + Selecting or deselecting a child sets or resets the + <const>SELECTED</const> state and selects or deselects the UNO shape + being made accessible by the child. + @param nAccessibleChildIndex + Index of the child to select or deselect. If the parameter has + the value ACCESSIBLE_SELECTION_CHILD_ALL then all children are + selected or deselected. + @param bSelect + Indicates whether to select or deselect the specified child + reps. children. + */ + virtual void + implSelect( sal_Int32 nAccessibleChildIndex, bool bSelect ) override; + + ::sd::ViewShell* mpSdViewSh; + + /** This object manages the shapes of the represented draw page. It is + responsible to determine the visible shapes and create on demand the + accessible objects representing them. + */ + std::unique_ptr<ChildrenManager> mpChildrenManager; + + // This method is called from the component helper base class while + // disposing. + virtual void SAL_CALL disposing() override; + + /** Create a shape the represents the page as seen on the screen. + */ + rtl::Reference<AccessiblePageShape> CreateDrawPageShape(); + + /// Create an accessible name that contains the current view mode. + virtual OUString + CreateAccessibleName () override; + + /** Make sure that the currently focused shape sends a FOCUSED state + change event indicating that it has (regained) the focus. + */ + virtual void Activated() override; + + /** Make sure that the currently focused shape sends a FOCUSED state + change event indicating that it has lost the focus. + */ + virtual void Deactivated() override; + + virtual void impl_dispose() override; + + void UpdateAccessibleName(); +}; + +} // end of namespace accessibility + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |