1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 5 * This Source Code Form is subject to the terms of the Mozilla Public 6 * License, v. 2.0. If a copy of the MPL was not distributed with this 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 8 * 9 * This file incorporates work covered by the following license notice: 10 * 11 * Licensed to the Apache Software Foundation (ASF) under one or more 12 * contributor license agreements. See the NOTICE file distributed 13 * with this work for additional information regarding copyright 14 * ownership. The ASF licenses this file to you under the Apache 15 * License, Version 2.0 (the "License"); you may not use this file 16 * except in compliance with the License. You may obtain a copy of 17 * the License at http://www.apache.org/licenses/LICENSE-2.0 . 18 */ 19 20 #ifndef INCLUDED_ACCESSIBILITY_INC_EXTENDED_ACCESSIBLEICONCHOICECTRLENTRY_HXX 21 #define INCLUDED_ACCESSIBILITY_INC_EXTENDED_ACCESSIBLEICONCHOICECTRLENTRY_HXX 22 23 #include <com/sun/star/accessibility/XAccessible.hpp> 24 #include <com/sun/star/accessibility/XAccessibleComponent.hpp> 25 #include <com/sun/star/accessibility/XAccessibleContext.hpp> 26 #include <com/sun/star/accessibility/XAccessibleStateSet.hpp> 27 #include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp> 28 #include <com/sun/star/accessibility/XAccessibleAction.hpp> 29 #include <com/sun/star/lang/XEventListener.hpp> 30 #include <com/sun/star/lang/XServiceInfo.hpp> 31 #include <cppuhelper/compbase8.hxx> 32 #include <cppuhelper/basemutex.hxx> 33 #include <comphelper/accessibletexthelper.hxx> 34 #include <tools/gen.hxx> 35 #include <vcl/vclptr.hxx> 36 37 // forward 38 39 class SvxIconChoiceCtrlEntry; 40 class SvtIconChoiceCtrl; 41 42 namespace accessibility 43 { 44 45 // class AccessibleIconChoiceCtrlEntry 46 47 typedef ::cppu::WeakAggComponentImplHelper8< css::accessibility::XAccessible 48 , css::accessibility::XAccessibleContext 49 , css::accessibility::XAccessibleComponent 50 , css::accessibility::XAccessibleEventBroadcaster 51 , css::accessibility::XAccessibleText 52 , css::accessibility::XAccessibleAction 53 , css::lang::XServiceInfo 54 , css::lang::XEventListener > AccessibleIconChoiceCtrlEntry_BASE; 55 56 /** the class AccessibleListBoxEntry represents the class for an accessible object of a listbox entry */ 57 class AccessibleIconChoiceCtrlEntry final : public ::cppu::BaseMutex, 58 public AccessibleIconChoiceCtrlEntry_BASE, 59 public ::comphelper::OCommonAccessibleText 60 { 61 /** The treelistbox control */ 62 VclPtr<SvtIconChoiceCtrl> m_pIconCtrl; 63 sal_Int32 m_nIndex; 64 65 /// client id in the AccessibleEventNotifier queue 66 sal_uInt32 m_nClientId; 67 68 css::uno::Reference< css::accessibility::XAccessible > m_xParent; 69 70 tools::Rectangle GetBoundingBox_Impl() const; 71 tools::Rectangle GetBoundingBoxOnScreen_Impl() const; 72 bool IsAlive_Impl() const; 73 bool IsShowing_Impl() const; 74 75 /// @throws css::lang::DisposedException 76 /// @throws css::uno::RuntimeException 77 tools::Rectangle GetBoundingBox(); 78 /// @throws css::lang::DisposedException 79 /// @throws css::uno::RuntimeException 80 tools::Rectangle GetBoundingBoxOnScreen(); 81 /// @throws css::lang::DisposedException 82 void EnsureIsAlive() const; 83 84 virtual ~AccessibleIconChoiceCtrlEntry() override; 85 /** this function is called upon disposing the component 86 */ 87 virtual void SAL_CALL disposing() override; 88 89 // OCommonAccessibleText 90 virtual OUString implGetText() override; 91 virtual css::lang::Locale implGetLocale() override; 92 virtual void implGetSelection( sal_Int32& nStartIndex, sal_Int32& nEndIndex ) override final; 93 94 public: 95 /** Ctor() 96 @param _rIconCtrl 97 the icon control 98 @param _nPos 99 the entry number 100 @param _xParent 101 is our parent accessible object 102 */ 103 AccessibleIconChoiceCtrlEntry( SvtIconChoiceCtrl& _rIconCtrl, 104 sal_Int32 _nPos, 105 const css::uno::Reference< css::accessibility::XAccessible >& _xParent ); 106 107 // XTypeProvider 108 virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override; 109 110 // XServiceInfo 111 virtual OUString SAL_CALL getImplementationName() override; 112 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; 113 virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; 114 115 // XEventListener 116 virtual void SAL_CALL disposing( const css::lang::EventObject& Source ) override; 117 118 // XAccessible 119 virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) override; 120 121 // XAccessibleContext 122 virtual sal_Int32 SAL_CALL getAccessibleChildCount( ) override; 123 virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int32 i ) override; 124 virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) override; 125 virtual sal_Int32 SAL_CALL getAccessibleIndexInParent( ) override; 126 virtual sal_Int16 SAL_CALL getAccessibleRole( ) override; 127 virtual OUString SAL_CALL getAccessibleDescription( ) override; 128 virtual OUString SAL_CALL getAccessibleName( ) override; 129 virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override; 130 virtual css::uno::Reference< css::accessibility::XAccessibleStateSet > SAL_CALL getAccessibleStateSet( ) override; 131 virtual css::lang::Locale SAL_CALL getLocale( ) override; 132 133 // XAccessibleComponent 134 virtual sal_Bool SAL_CALL containsPoint( const css::awt::Point& aPoint ) override; 135 virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const css::awt::Point& aPoint ) override; 136 virtual css::awt::Rectangle SAL_CALL getBounds( ) override; 137 virtual css::awt::Point SAL_CALL getLocation( ) override; 138 virtual css::awt::Point SAL_CALL getLocationOnScreen( ) override; 139 virtual css::awt::Size SAL_CALL getSize( ) override; 140 virtual void SAL_CALL grabFocus( ) override; 141 virtual sal_Int32 SAL_CALL getForeground( ) override; 142 virtual sal_Int32 SAL_CALL getBackground( ) override; 143 144 // XAccessibleText 145 virtual sal_Int32 SAL_CALL getCaretPosition() override; 146 virtual sal_Bool SAL_CALL setCaretPosition( sal_Int32 nIndex ) override; 147 virtual sal_Unicode SAL_CALL getCharacter( sal_Int32 nIndex ) override; 148 virtual css::uno::Sequence< css::beans::PropertyValue > SAL_CALL getCharacterAttributes( sal_Int32 nIndex, const css::uno::Sequence< OUString >& aRequestedAttributes ) override; 149 virtual css::awt::Rectangle SAL_CALL getCharacterBounds( sal_Int32 nIndex ) override; 150 virtual sal_Int32 SAL_CALL getCharacterCount() override; 151 virtual sal_Int32 SAL_CALL getIndexAtPoint( const css::awt::Point& aPoint ) override; 152 virtual OUString SAL_CALL getSelectedText() override; 153 virtual sal_Int32 SAL_CALL getSelectionStart() override; 154 virtual sal_Int32 SAL_CALL getSelectionEnd() override; 155 virtual sal_Bool SAL_CALL setSelection( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) override; 156 virtual OUString SAL_CALL getText() override; 157 virtual OUString SAL_CALL getTextRange( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) override; 158 virtual css::accessibility::TextSegment SAL_CALL getTextAtIndex( sal_Int32 nIndex, sal_Int16 aTextType ) override; 159 virtual css::accessibility::TextSegment SAL_CALL getTextBeforeIndex( sal_Int32 nIndex, sal_Int16 aTextType ) override; 160 virtual css::accessibility::TextSegment SAL_CALL getTextBehindIndex( sal_Int32 nIndex, sal_Int16 aTextType ) override; 161 virtual sal_Bool SAL_CALL copyText( sal_Int32 nStartIndex, sal_Int32 nEndIndex ) override; 162 163 // XAccessibleEventBroadcaster 164 virtual void SAL_CALL addAccessibleEventListener( const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener ) override; 165 virtual void SAL_CALL removeAccessibleEventListener( const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener ) override; 166 167 // XAccessibleAction 168 virtual sal_Int32 SAL_CALL getAccessibleActionCount( ) override; 169 virtual sal_Bool SAL_CALL doAccessibleAction( sal_Int32 nIndex ) override; 170 virtual OUString SAL_CALL getAccessibleActionDescription( sal_Int32 nIndex ) override; 171 virtual css::uno::Reference< css::accessibility::XAccessibleKeyBinding > SAL_CALL getAccessibleActionKeyBinding( sal_Int32 nIndex ) override; 172 }; 173 174 175 }// namespace accessibility 176 177 178 #endif // INCLUDED_ACCESSIBILITY_INC_EXTENDED_ACCESSIBLEICONCHOICECTRLENTRY_HXX 179 180 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 181