LibreOffice Module svtools (master) 1
valueimp.hxx
Go to the documentation of this file.
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#pragma once
21
22#include <tools/color.hxx>
23#include <vcl/image.hxx>
26#include <com/sun/star/accessibility/XAccessible.hpp>
27#include <com/sun/star/accessibility/XAccessibleContext.hpp>
28#include <com/sun/star/accessibility/XAccessibleComponent.hpp>
29#include <com/sun/star/accessibility/XAccessibleSelection.hpp>
30#include <com/sun/star/accessibility/XAccessibleEventBroadcaster.hpp>
31
32#include <mutex>
33#include <vector>
34
35#define VALUESET_ITEM_NONEITEM 0xFFFE
36
38{
44};
45
46class ValueItemAcc;
47class ValueSet;
48
50{
52 OUString maText;
53 void* mpData;
57 sal_uInt16 mnId;
60
61 explicit ValueSetItem( ValueSet& rParent );
63
64 css::uno::Reference< css::accessibility::XAccessible >
65 GetAccessible( bool bIsTransientChildrenDisabled );
66};
67
69 css::accessibility::XAccessible,
70 css::accessibility::XAccessibleEventBroadcaster,
71 css::accessibility::XAccessibleContext,
72 css::accessibility::XAccessibleComponent,
73 css::accessibility::XAccessibleSelection >
75
77{
78public:
79
80 explicit ValueSetAcc(ValueSet* pParent);
81 virtual ~ValueSetAcc() override;
82
83 void FireAccessibleEvent( short nEventId, const css::uno::Any& rOldValue, const css::uno::Any& rNewValue );
84 bool HasAccessibleListeners() const { return( mxEventListeners.size() > 0 ); }
85
86 static ValueSetAcc* getImplementation( const css::uno::Reference< css::uno::XInterface >& rxData ) noexcept;
87
88public:
89
93 void GetFocus();
94
98 void LoseFocus();
99
100 // XAccessible
101 virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) override;
102
103 // XAccessibleEventBroadcaster
104 virtual void SAL_CALL addAccessibleEventListener( const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener ) override;
105 virtual void SAL_CALL removeAccessibleEventListener( const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener ) override;
106
107 // XAccessibleContext
108 virtual sal_Int64 SAL_CALL getAccessibleChildCount( ) override;
109 virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int64 i ) override;
110 virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) override;
111 virtual sal_Int64 SAL_CALL getAccessibleIndexInParent( ) override;
112 virtual sal_Int16 SAL_CALL getAccessibleRole( ) override;
113 virtual OUString SAL_CALL getAccessibleDescription( ) override;
114 virtual OUString SAL_CALL getAccessibleName( ) override;
115 virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override;
116 virtual sal_Int64 SAL_CALL getAccessibleStateSet( ) override;
117 virtual css::lang::Locale SAL_CALL getLocale( ) override;
118
119 // XAccessibleComponent
120 virtual sal_Bool SAL_CALL containsPoint( const css::awt::Point& aPoint ) override;
121 virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const css::awt::Point& aPoint ) override;
122 virtual css::awt::Rectangle SAL_CALL getBounds( ) override;
123 virtual css::awt::Point SAL_CALL getLocation( ) override;
124 virtual css::awt::Point SAL_CALL getLocationOnScreen( ) override;
125 virtual css::awt::Size SAL_CALL getSize( ) override;
126 virtual void SAL_CALL grabFocus( ) override;
127 virtual sal_Int32 SAL_CALL getForeground( ) override;
128 virtual sal_Int32 SAL_CALL getBackground( ) override;
129
130 // XAccessibleSelection
131 virtual void SAL_CALL selectAccessibleChild( sal_Int64 nChildIndex ) override;
132 virtual sal_Bool SAL_CALL isAccessibleChildSelected( sal_Int64 nChildIndex ) override;
133 virtual void SAL_CALL clearAccessibleSelection( ) override;
134 virtual void SAL_CALL selectAllAccessibleChildren( ) override;
135 virtual sal_Int64 SAL_CALL getSelectedAccessibleChildCount( ) override;
136 virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int64 nSelectedChildIndex ) override;
137 virtual void SAL_CALL deselectAccessibleChild( sal_Int64 nSelectedChildIndex ) override;
138
139private:
140 ::std::vector< css::uno::Reference<
141 css::accessibility::XAccessibleEventListener > > mxEventListeners;
145
149 virtual void disposing(std::unique_lock<std::mutex>&) override;
150
153 sal_uInt16 getItemCount() const;
154
164 ValueSetItem* getItem (sal_uInt16 nIndex) const;
165
172 void ThrowIfDisposed();
173
180 bool HasNoneField() const;
181};
182
183class ValueItemAcc : public ::cppu::WeakImplHelper< css::accessibility::XAccessible,
184 css::accessibility::XAccessibleEventBroadcaster,
185 css::accessibility::XAccessibleContext,
186 css::accessibility::XAccessibleComponent >
187{
188private:
189
190 ::std::vector< css::uno::Reference<
191 css::accessibility::XAccessibleEventListener > > mxEventListeners;
192 std::mutex maMutex;
195
196public:
197
198 ValueItemAcc(ValueSetItem* pParent, bool bIsTransientChildrenDisabled);
199 virtual ~ValueItemAcc() override;
200
201 void ParentDestroyed();
202
203 void FireAccessibleEvent( short nEventId, const css::uno::Any& rOldValue, const css::uno::Any& rNewValue );
204
205 static ValueItemAcc* getImplementation( const css::uno::Reference< css::uno::XInterface >& rxData ) noexcept;
206
207public:
208
209 // XAccessible
210 virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) override;
211
212 // XAccessibleEventBroadcaster
213 virtual void SAL_CALL addAccessibleEventListener( const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener ) override;
214 virtual void SAL_CALL removeAccessibleEventListener( const css::uno::Reference< css::accessibility::XAccessibleEventListener >& xListener ) override;
215
216 // XAccessibleContext
217 virtual sal_Int64 SAL_CALL getAccessibleChildCount( ) override;
218 virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild( sal_Int64 i ) override;
219 virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent( ) override;
220 virtual sal_Int64 SAL_CALL getAccessibleIndexInParent( ) override;
221 virtual sal_Int16 SAL_CALL getAccessibleRole( ) override;
222 virtual OUString SAL_CALL getAccessibleDescription( ) override;
223 virtual OUString SAL_CALL getAccessibleName( ) override;
224 virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet( ) override;
225 virtual sal_Int64 SAL_CALL getAccessibleStateSet( ) override;
226 virtual css::lang::Locale SAL_CALL getLocale( ) override;
227
228 // XAccessibleComponent
229 virtual sal_Bool SAL_CALL containsPoint( const css::awt::Point& aPoint ) override;
230 virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint( const css::awt::Point& aPoint ) override;
231 virtual css::awt::Rectangle SAL_CALL getBounds( ) override;
232 virtual css::awt::Point SAL_CALL getLocation( ) override;
233 virtual css::awt::Point SAL_CALL getLocationOnScreen( ) override;
234 virtual css::awt::Size SAL_CALL getSize( ) override;
235 virtual void SAL_CALL grabFocus( ) override;
236 virtual sal_Int32 SAL_CALL getForeground( ) override;
237 virtual sal_Int32 SAL_CALL getBackground( ) override;
238};
239
240
241/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual void SAL_CALL addAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener) override
Definition: valueacc.cxx:247
virtual ~ValueItemAcc() override
Definition: valueacc.cxx:69
virtual sal_Int32 SAL_CALL getBackground() override
Definition: valueacc.cxx:371
virtual sal_Int64 SAL_CALL getAccessibleStateSet() override
Definition: valueacc.cxx:199
virtual sal_Int32 SAL_CALL getForeground() override
Definition: valueacc.cxx:365
virtual css::awt::Rectangle SAL_CALL getBounds() override
Definition: valueacc.cxx:300
static ValueItemAcc * getImplementation(const css::uno::Reference< css::uno::XInterface > &rxData) noexcept
Definition: valueacc.cxx:79
ValueItemAcc(ValueSetItem *pParent, bool bIsTransientChildrenDisabled)
Definition: valueacc.cxx:63
virtual OUString SAL_CALL getAccessibleDescription() override
Definition: valueacc.cxx:171
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
Definition: valueacc.cxx:104
ValueSetItem * mpParent
Definition: valueimp.hxx:193
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(const css::awt::Point &aPoint) override
Definition: valueacc.cxx:294
virtual void SAL_CALL grabFocus() override
Definition: valueacc.cxx:360
std::mutex maMutex
Definition: valueimp.hxx:192
virtual void SAL_CALL removeAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener) override
Definition: valueacc.cxx:270
void FireAccessibleEvent(short nEventId, const css::uno::Any &rOldValue, const css::uno::Any &rNewValue)
Definition: valueacc.cxx:381
virtual css::awt::Size SAL_CALL getSize() override
Definition: valueacc.cxx:349
virtual css::awt::Point SAL_CALL getLocation() override
Definition: valueacc.cxx:321
virtual sal_Int64 SAL_CALL getAccessibleChildCount() override
Definition: valueacc.cxx:92
virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override
Definition: valueacc.cxx:193
bool mbIsTransientChildrenDisabled
Definition: valueimp.hxx:194
virtual sal_Bool SAL_CALL containsPoint(const css::awt::Point &aPoint) override
Definition: valueacc.cxx:285
void ParentDestroyed()
Definition: valueacc.cxx:73
virtual OUString SAL_CALL getAccessibleName() override
Definition: valueacc.cxx:177
virtual sal_Int16 SAL_CALL getAccessibleRole() override
Definition: valueacc.cxx:165
virtual css::awt::Point SAL_CALL getLocationOnScreen() override
Definition: valueacc.cxx:332
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() override
Definition: valueacc.cxx:86
virtual css::lang::Locale SAL_CALL getLocale() override
Definition: valueacc.cxx:229
::std::vector< css::uno::Reference< css::accessibility::XAccessibleEventListener > > mxEventListeners
Definition: valueimp.hxx:191
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int64 i) override
Definition: valueacc.cxx:98
virtual sal_Int64 SAL_CALL getAccessibleIndexInParent() override
Definition: valueacc.cxx:116
virtual sal_Int64 SAL_CALL getAccessibleChildCount() override
Definition: valueacc.cxx:478
virtual sal_Int32 SAL_CALL getBackground() override
Definition: valueacc.cxx:782
virtual css::awt::Point SAL_CALL getLocation() override
Definition: valueacc.cxx:720
virtual css::awt::Size SAL_CALL getSize() override
Definition: valueacc.cxx:756
virtual css::uno::Reference< css::accessibility::XAccessibleRelationSet > SAL_CALL getAccessibleRelationSet() override
Definition: valueacc.cxx:586
virtual css::uno::Reference< css::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext() override
Definition: valueacc.cxx:471
bool HasAccessibleListeners() const
Definition: valueimp.hxx:84
virtual ~ValueSetAcc() override
Definition: valueacc.cxx:407
bool mbIsFocused
The current FOCUSED state.
Definition: valueimp.hxx:144
virtual void disposing(std::unique_lock< std::mutex > &) override
Tell all listeners that the object is dying.
Definition: valueacc.cxx:890
virtual sal_Int16 SAL_CALL getAccessibleRole() override
Definition: valueacc.cxx:550
static ValueSetAcc * getImplementation(const css::uno::Reference< css::uno::XInterface > &rxData) noexcept
Definition: valueacc.cxx:438
virtual void SAL_CALL removeAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener) override
Definition: valueacc.cxx:655
void GetFocus()
Called by the corresponding ValueSet when it gets the focus.
Definition: valueacc.cxx:445
::std::vector< css::uno::Reference< css::accessibility::XAccessibleEventListener > > mxEventListeners
Definition: valueimp.hxx:141
ValueSet * mpParent
Definition: valueimp.hxx:142
virtual OUString SAL_CALL getAccessibleDescription() override
Definition: valueacc.cxx:557
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleParent() override
Definition: valueacc.cxx:507
virtual void SAL_CALL clearAccessibleSelection() override
Definition: valueacc.cxx:824
void LoseFocus()
Called by the corresponding ValueSet when it loses the focus.
Definition: valueacc.cxx:458
virtual sal_Int64 SAL_CALL getAccessibleStateSet() override
Definition: valueacc.cxx:593
bool HasNoneField() const
Check whether the value set has a 'none' field, i.e.
Definition: valueacc.cxx:964
ValueSetAcc(ValueSet *pParent)
Definition: valueacc.cxx:400
virtual OUString SAL_CALL getAccessibleName() override
Definition: valueacc.cxx:572
virtual void SAL_CALL selectAccessibleChild(sal_Int64 nChildIndex) override
Definition: valueacc.cxx:789
virtual css::lang::Locale SAL_CALL getLocale() override
Definition: valueacc.cxx:612
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild(sal_Int64 nSelectedChildIndex) override
Definition: valueacc.cxx:857
virtual void SAL_CALL selectAllAccessibleChildren() override
Definition: valueacc.cxx:832
virtual sal_Int64 SAL_CALL getAccessibleIndexInParent() override
Definition: valueacc.cxx:514
virtual css::awt::Rectangle SAL_CALL getBounds() override
Definition: valueacc.cxx:704
virtual sal_Bool SAL_CALL isAccessibleChildSelected(sal_Int64 nChildIndex) override
Definition: valueacc.cxx:806
virtual sal_Int64 SAL_CALL getSelectedAccessibleChildCount() override
Definition: valueacc.cxx:839
virtual sal_Bool SAL_CALL containsPoint(const css::awt::Point &aPoint) override
Definition: valueacc.cxx:671
virtual void SAL_CALL addAccessibleEventListener(const css::uno::Reference< css::accessibility::XAccessibleEventListener > &xListener) override
Definition: valueacc.cxx:631
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleChild(sal_Int64 i) override
Definition: valueacc.cxx:490
virtual void SAL_CALL deselectAccessibleChild(sal_Int64 nSelectedChildIndex) override
Definition: valueacc.cxx:875
virtual void SAL_CALL grabFocus() override
Definition: valueacc.cxx:768
virtual css::uno::Reference< css::accessibility::XAccessible > SAL_CALL getAccessibleAtPoint(const css::awt::Point &aPoint) override
Definition: valueacc.cxx:682
void FireAccessibleEvent(short nEventId, const css::uno::Any &rOldValue, const css::uno::Any &rNewValue)
Definition: valueacc.cxx:412
void ThrowIfDisposed()
Check whether or not the object has been disposed (or is in the state of being disposed).
Definition: valueacc.cxx:949
virtual sal_Int32 SAL_CALL getForeground() override
Definition: valueacc.cxx:775
virtual css::awt::Point SAL_CALL getLocationOnScreen() override
Definition: valueacc.cxx:732
ValueSetItem * getItem(sal_uInt16 nIndex) const
Return the item associated with the given index.
Definition: valueacc.cxx:929
sal_uInt16 getItemCount() const
Return the number of items.
Definition: valueacc.cxx:919
ValueSetItem(ValueSet &rParent)
Definition: valueacc.cxx:36
bool mbVisible
Definition: valueimp.hxx:59
void * mpData
Definition: valueimp.hxx:53
OUString maText
Definition: valueimp.hxx:52
sal_uInt16 mnId
Definition: valueimp.hxx:57
css::uno::Reference< css::accessibility::XAccessible > GetAccessible(bool bIsTransientChildrenDisabled)
Definition: valueacc.cxx:55
sal_uInt8 meType
Definition: valueimp.hxx:58
rtl::Reference< ValueItemAcc > mxAcc
Definition: valueimp.hxx:54
ValueSet & mrParent
Definition: valueimp.hxx:51
Color maColor
Definition: valueimp.hxx:56
Image maImage
Definition: valueimp.hxx:55
unsigned char sal_uInt8
unsigned char sal_Bool
comphelper::WeakComponentImplHelper< css::accessibility::XAccessible, css::accessibility::XAccessibleEventBroadcaster, css::accessibility::XAccessibleContext, css::accessibility::XAccessibleComponent, css::accessibility::XAccessibleSelection > ValueSetAccComponentBase
Definition: valueimp.hxx:74
ValueSetItemType
Definition: valueimp.hxx:38
@ VALUESETITEM_COLOR
Definition: valueimp.hxx:42
@ VALUESETITEM_USERDRAW
Definition: valueimp.hxx:43
@ VALUESETITEM_NONE
Definition: valueimp.hxx:39
@ VALUESETITEM_IMAGE_AND_TEXT
Definition: valueimp.hxx:41
@ VALUESETITEM_IMAGE
Definition: valueimp.hxx:40