1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_svtools.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <svtools/accessibilityoptions.hxx>
28*b1cdbd2cSJim Jagielski #include "configitems/accessibilityoptions_const.hxx"
29*b1cdbd2cSJim Jagielski 
30*b1cdbd2cSJim Jagielski #include <unotools/configmgr.hxx>
31*b1cdbd2cSJim Jagielski #include <tools/debug.hxx>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Any.hxx>
33*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Sequence.hxx>
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
36*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
37*b1cdbd2cSJim Jagielski #endif
38*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
39*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameAccess.hpp>
40*b1cdbd2cSJim Jagielski #endif
41*b1cdbd2cSJim Jagielski #ifndef _COMPHELPER_CONFIGURATIONHELPER_HXX_
42*b1cdbd2cSJim Jagielski #include <comphelper/configurationhelper.hxx>
43*b1cdbd2cSJim Jagielski #endif
44*b1cdbd2cSJim Jagielski #ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
45*b1cdbd2cSJim Jagielski #include <unotools/processfactory.hxx>
46*b1cdbd2cSJim Jagielski #endif
47*b1cdbd2cSJim Jagielski #ifndef _SVT_LOGHELPER_HXX_
48*b1cdbd2cSJim Jagielski #include <unotools/loghelper.hxx>
49*b1cdbd2cSJim Jagielski #endif
50*b1cdbd2cSJim Jagielski 
51*b1cdbd2cSJim Jagielski #include <svl/smplhint.hxx>
52*b1cdbd2cSJim Jagielski 
53*b1cdbd2cSJim Jagielski #include <vcl/settings.hxx>
54*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
55*b1cdbd2cSJim Jagielski #include <rtl/instance.hxx>
56*b1cdbd2cSJim Jagielski 
57*b1cdbd2cSJim Jagielski #include <itemholder2.hxx>
58*b1cdbd2cSJim Jagielski 
59*b1cdbd2cSJim Jagielski using namespace utl;
60*b1cdbd2cSJim Jagielski using namespace rtl;
61*b1cdbd2cSJim Jagielski using namespace com::sun::star::uno;
62*b1cdbd2cSJim Jagielski namespace css = com::sun::star;
63*b1cdbd2cSJim Jagielski 
64*b1cdbd2cSJim Jagielski #define HELP_TIP_TIMEOUT 0xffff     // max. timeout setting to pretend a non-timeout
65*b1cdbd2cSJim Jagielski 
66*b1cdbd2cSJim Jagielski 
67*b1cdbd2cSJim Jagielski // class SvtAccessibilityOptions_Impl ---------------------------------------------
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski class SvtAccessibilityOptions_Impl
70*b1cdbd2cSJim Jagielski {
71*b1cdbd2cSJim Jagielski private:
72*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::container::XNameAccess > m_xCfg;
73*b1cdbd2cSJim Jagielski 	sal_Bool										   bIsModified;
74*b1cdbd2cSJim Jagielski 
75*b1cdbd2cSJim Jagielski public:
76*b1cdbd2cSJim Jagielski 	SvtAccessibilityOptions_Impl();
77*b1cdbd2cSJim Jagielski 	~SvtAccessibilityOptions_Impl();
78*b1cdbd2cSJim Jagielski 
79*b1cdbd2cSJim Jagielski 	void		SetVCLSettings();
80*b1cdbd2cSJim Jagielski 	sal_Bool	GetAutoDetectSystemHC();
81*b1cdbd2cSJim Jagielski 	sal_Bool	GetIsForPagePreviews() const;
82*b1cdbd2cSJim Jagielski 	sal_Bool	GetIsHelpTipsDisappear() const;
83*b1cdbd2cSJim Jagielski 	sal_Bool	GetIsAllowAnimatedGraphics() const;
84*b1cdbd2cSJim Jagielski 	sal_Bool	GetIsAllowAnimatedText() const;
85*b1cdbd2cSJim Jagielski 	sal_Bool	GetIsAutomaticFontColor() const;
86*b1cdbd2cSJim Jagielski 	sal_Bool	GetIsSystemFont() const;
87*b1cdbd2cSJim Jagielski 	sal_Int16	GetHelpTipSeconds() const;
88*b1cdbd2cSJim Jagielski 	sal_Bool	IsSelectionInReadonly() const;
89*b1cdbd2cSJim Jagielski     sal_Int16   GetEdgeBlending() const;
90*b1cdbd2cSJim Jagielski     sal_Int16   GetListBoxMaximumLineCount() const;
91*b1cdbd2cSJim Jagielski     sal_Int16   GetColorValueSetColumnCount() const;
92*b1cdbd2cSJim Jagielski     sal_Bool    GetPreviewUsesCheckeredBackground() const;
93*b1cdbd2cSJim Jagielski 
94*b1cdbd2cSJim Jagielski 	void		SetAutoDetectSystemHC(sal_Bool bSet);
95*b1cdbd2cSJim Jagielski 	void		SetIsForPagePreviews(sal_Bool bSet);
96*b1cdbd2cSJim Jagielski 	void		SetIsHelpTipsDisappear(sal_Bool bSet);
97*b1cdbd2cSJim Jagielski 	void		SetIsAllowAnimatedGraphics(sal_Bool bSet);
98*b1cdbd2cSJim Jagielski 	void		SetIsAllowAnimatedText(sal_Bool bSet);
99*b1cdbd2cSJim Jagielski 	void		SetIsAutomaticFontColor(sal_Bool bSet);
100*b1cdbd2cSJim Jagielski 	void		SetIsSystemFont(sal_Bool bSet);
101*b1cdbd2cSJim Jagielski 	void		SetHelpTipSeconds(sal_Int16 nSet);
102*b1cdbd2cSJim Jagielski 	void		SetSelectionInReadonly(sal_Bool bSet);
103*b1cdbd2cSJim Jagielski     void        SetEdgeBlending(sal_Int16 nSet);
104*b1cdbd2cSJim Jagielski     void        SetListBoxMaximumLineCount(sal_Int16 nSet);
105*b1cdbd2cSJim Jagielski     void        SetColorValueSetColumnCount(sal_Int16 nSet);
106*b1cdbd2cSJim Jagielski     void        SetPreviewUsesCheckeredBackground(sal_Bool bSet);
107*b1cdbd2cSJim Jagielski 
IsModified() const108*b1cdbd2cSJim Jagielski 	sal_Bool	IsModified() const { return bIsModified; };
109*b1cdbd2cSJim Jagielski };
110*b1cdbd2cSJim Jagielski 
111*b1cdbd2cSJim Jagielski // initialization of static members --------------------------------------
112*b1cdbd2cSJim Jagielski 
113*b1cdbd2cSJim Jagielski SvtAccessibilityOptions_Impl* volatile 	SvtAccessibilityOptions::sm_pSingleImplConfig =NULL;
114*b1cdbd2cSJim Jagielski sal_Int32					  volatile 	SvtAccessibilityOptions::sm_nAccessibilityRefCount(0);
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski namespace
117*b1cdbd2cSJim Jagielski {
118*b1cdbd2cSJim Jagielski 	struct SingletonMutex
119*b1cdbd2cSJim Jagielski 		: public rtl::Static< ::osl::Mutex, SingletonMutex > {};
120*b1cdbd2cSJim Jagielski }
121*b1cdbd2cSJim Jagielski 
122*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
123*b1cdbd2cSJim Jagielski // class SvtAccessibilityOptions_Impl ---------------------------------------------
124*b1cdbd2cSJim Jagielski 
SvtAccessibilityOptions_Impl()125*b1cdbd2cSJim Jagielski SvtAccessibilityOptions_Impl::SvtAccessibilityOptions_Impl()
126*b1cdbd2cSJim Jagielski {
127*b1cdbd2cSJim Jagielski 	try
128*b1cdbd2cSJim Jagielski 	{
129*b1cdbd2cSJim Jagielski 		m_xCfg = css::uno::Reference< css::container::XNameAccess >(
130*b1cdbd2cSJim Jagielski 			::comphelper::ConfigurationHelper::openConfig(
131*b1cdbd2cSJim Jagielski 			utl::getProcessServiceFactory(),
132*b1cdbd2cSJim Jagielski 			s_sAccessibility,
133*b1cdbd2cSJim Jagielski 			::comphelper::ConfigurationHelper::E_STANDARD),
134*b1cdbd2cSJim Jagielski 			css::uno::UNO_QUERY);
135*b1cdbd2cSJim Jagielski 
136*b1cdbd2cSJim Jagielski 		bIsModified = sal_False;
137*b1cdbd2cSJim Jagielski 	}
138*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
139*b1cdbd2cSJim Jagielski 	{
140*b1cdbd2cSJim Jagielski 		m_xCfg.clear();
141*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
142*b1cdbd2cSJim Jagielski 	}
143*b1cdbd2cSJim Jagielski }
144*b1cdbd2cSJim Jagielski 
~SvtAccessibilityOptions_Impl()145*b1cdbd2cSJim Jagielski SvtAccessibilityOptions_Impl::~SvtAccessibilityOptions_Impl()
146*b1cdbd2cSJim Jagielski {
147*b1cdbd2cSJim Jagielski }
148*b1cdbd2cSJim Jagielski 
149*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
GetAutoDetectSystemHC()150*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions_Impl::GetAutoDetectSystemHC()
151*b1cdbd2cSJim Jagielski {
152*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
153*b1cdbd2cSJim Jagielski 	sal_Bool										bRet = sal_True;
154*b1cdbd2cSJim Jagielski 
155*b1cdbd2cSJim Jagielski 	try
156*b1cdbd2cSJim Jagielski 	{
157*b1cdbd2cSJim Jagielski 		if(xNode.is())
158*b1cdbd2cSJim Jagielski 			xNode->getPropertyValue(s_sAutoDetectSystemHC) >>= bRet;
159*b1cdbd2cSJim Jagielski 	}
160*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
161*b1cdbd2cSJim Jagielski 	{
162*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
163*b1cdbd2cSJim Jagielski 	}
164*b1cdbd2cSJim Jagielski 
165*b1cdbd2cSJim Jagielski 	return bRet;
166*b1cdbd2cSJim Jagielski }
167*b1cdbd2cSJim Jagielski 
GetIsForPagePreviews() const168*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions_Impl::GetIsForPagePreviews() const
169*b1cdbd2cSJim Jagielski {
170*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
171*b1cdbd2cSJim Jagielski 	sal_Bool										bRet = sal_True;
172*b1cdbd2cSJim Jagielski 
173*b1cdbd2cSJim Jagielski 	try
174*b1cdbd2cSJim Jagielski 	{
175*b1cdbd2cSJim Jagielski 		if(xNode.is())
176*b1cdbd2cSJim Jagielski 			xNode->getPropertyValue(s_sIsForPagePreviews) >>= bRet;
177*b1cdbd2cSJim Jagielski 	}
178*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
179*b1cdbd2cSJim Jagielski 	{
180*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
181*b1cdbd2cSJim Jagielski 	}
182*b1cdbd2cSJim Jagielski 	return bRet;
183*b1cdbd2cSJim Jagielski }
184*b1cdbd2cSJim Jagielski 
GetIsHelpTipsDisappear() const185*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions_Impl::GetIsHelpTipsDisappear() const
186*b1cdbd2cSJim Jagielski {
187*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
188*b1cdbd2cSJim Jagielski 	sal_Bool										bRet = sal_True;
189*b1cdbd2cSJim Jagielski 
190*b1cdbd2cSJim Jagielski 	try
191*b1cdbd2cSJim Jagielski 	{
192*b1cdbd2cSJim Jagielski 		if(xNode.is())
193*b1cdbd2cSJim Jagielski 			xNode->getPropertyValue(s_sIsHelpTipsDisappear) >>= bRet;
194*b1cdbd2cSJim Jagielski 	}
195*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
196*b1cdbd2cSJim Jagielski 	{
197*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
198*b1cdbd2cSJim Jagielski 	}
199*b1cdbd2cSJim Jagielski 
200*b1cdbd2cSJim Jagielski 	return bRet;
201*b1cdbd2cSJim Jagielski }
202*b1cdbd2cSJim Jagielski 
GetIsAllowAnimatedGraphics() const203*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions_Impl::GetIsAllowAnimatedGraphics() const
204*b1cdbd2cSJim Jagielski {
205*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
206*b1cdbd2cSJim Jagielski 	sal_Bool										bRet = sal_True;
207*b1cdbd2cSJim Jagielski 
208*b1cdbd2cSJim Jagielski 	try
209*b1cdbd2cSJim Jagielski 	{
210*b1cdbd2cSJim Jagielski 		if(xNode.is())
211*b1cdbd2cSJim Jagielski 			xNode->getPropertyValue(s_sIsAllowAnimatedGraphics) >>= bRet;
212*b1cdbd2cSJim Jagielski 	}
213*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
214*b1cdbd2cSJim Jagielski 	{
215*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
216*b1cdbd2cSJim Jagielski 	}
217*b1cdbd2cSJim Jagielski 
218*b1cdbd2cSJim Jagielski 	return bRet;
219*b1cdbd2cSJim Jagielski }
220*b1cdbd2cSJim Jagielski 
GetIsAllowAnimatedText() const221*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions_Impl::GetIsAllowAnimatedText() const
222*b1cdbd2cSJim Jagielski {
223*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
224*b1cdbd2cSJim Jagielski 	sal_Bool										bRet = sal_True;
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski 	try
227*b1cdbd2cSJim Jagielski 	{
228*b1cdbd2cSJim Jagielski 		if(xNode.is())
229*b1cdbd2cSJim Jagielski 			xNode->getPropertyValue(s_sIsAllowAnimatedText) >>= bRet;
230*b1cdbd2cSJim Jagielski 	}
231*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
232*b1cdbd2cSJim Jagielski 	{
233*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
234*b1cdbd2cSJim Jagielski 	}
235*b1cdbd2cSJim Jagielski 
236*b1cdbd2cSJim Jagielski 	return bRet;
237*b1cdbd2cSJim Jagielski }
238*b1cdbd2cSJim Jagielski 
GetIsAutomaticFontColor() const239*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions_Impl::GetIsAutomaticFontColor() const
240*b1cdbd2cSJim Jagielski {
241*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
242*b1cdbd2cSJim Jagielski 	sal_Bool										bRet = sal_False;
243*b1cdbd2cSJim Jagielski 
244*b1cdbd2cSJim Jagielski 	try
245*b1cdbd2cSJim Jagielski 	{
246*b1cdbd2cSJim Jagielski 		if(xNode.is())
247*b1cdbd2cSJim Jagielski 			xNode->getPropertyValue(s_sIsAutomaticFontColor) >>= bRet;
248*b1cdbd2cSJim Jagielski 	}
249*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
250*b1cdbd2cSJim Jagielski 	{
251*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
252*b1cdbd2cSJim Jagielski 	}
253*b1cdbd2cSJim Jagielski 
254*b1cdbd2cSJim Jagielski 	return bRet;
255*b1cdbd2cSJim Jagielski }
256*b1cdbd2cSJim Jagielski 
GetIsSystemFont() const257*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions_Impl::GetIsSystemFont() const
258*b1cdbd2cSJim Jagielski {
259*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
260*b1cdbd2cSJim Jagielski 	sal_Bool										bRet = sal_True;
261*b1cdbd2cSJim Jagielski 
262*b1cdbd2cSJim Jagielski 	try
263*b1cdbd2cSJim Jagielski 	{
264*b1cdbd2cSJim Jagielski 		if(xNode.is())
265*b1cdbd2cSJim Jagielski 			xNode->getPropertyValue(s_sIsSystemFont) >>= bRet;
266*b1cdbd2cSJim Jagielski 	}
267*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
268*b1cdbd2cSJim Jagielski 	{
269*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
270*b1cdbd2cSJim Jagielski 	}
271*b1cdbd2cSJim Jagielski 
272*b1cdbd2cSJim Jagielski 	return bRet;
273*b1cdbd2cSJim Jagielski }
274*b1cdbd2cSJim Jagielski 
GetHelpTipSeconds() const275*b1cdbd2cSJim Jagielski sal_Int16 SvtAccessibilityOptions_Impl::GetHelpTipSeconds() const
276*b1cdbd2cSJim Jagielski {
277*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
278*b1cdbd2cSJim Jagielski 	sal_Int16										nRet = 4;
279*b1cdbd2cSJim Jagielski 
280*b1cdbd2cSJim Jagielski 	try
281*b1cdbd2cSJim Jagielski 	{
282*b1cdbd2cSJim Jagielski 		if(xNode.is())
283*b1cdbd2cSJim Jagielski 			xNode->getPropertyValue(s_sHelpTipSeconds) >>= nRet;
284*b1cdbd2cSJim Jagielski 	}
285*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
286*b1cdbd2cSJim Jagielski 	{
287*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
288*b1cdbd2cSJim Jagielski 	}
289*b1cdbd2cSJim Jagielski 
290*b1cdbd2cSJim Jagielski 	return nRet;
291*b1cdbd2cSJim Jagielski }
292*b1cdbd2cSJim Jagielski 
IsSelectionInReadonly() const293*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions_Impl::IsSelectionInReadonly() const
294*b1cdbd2cSJim Jagielski {
295*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
296*b1cdbd2cSJim Jagielski 	sal_Bool										bRet = sal_False;
297*b1cdbd2cSJim Jagielski 
298*b1cdbd2cSJim Jagielski 	try
299*b1cdbd2cSJim Jagielski 	{
300*b1cdbd2cSJim Jagielski 		if(xNode.is())
301*b1cdbd2cSJim Jagielski 			xNode->getPropertyValue(s_sIsSelectionInReadonly) >>= bRet;
302*b1cdbd2cSJim Jagielski 	}
303*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
304*b1cdbd2cSJim Jagielski 	{
305*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
306*b1cdbd2cSJim Jagielski 	}
307*b1cdbd2cSJim Jagielski 
308*b1cdbd2cSJim Jagielski 	return bRet;
309*b1cdbd2cSJim Jagielski }
310*b1cdbd2cSJim Jagielski 
GetEdgeBlending() const311*b1cdbd2cSJim Jagielski sal_Int16 SvtAccessibilityOptions_Impl::GetEdgeBlending() const
312*b1cdbd2cSJim Jagielski {
313*b1cdbd2cSJim Jagielski     css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
314*b1cdbd2cSJim Jagielski     sal_Int16 nRet = 35;
315*b1cdbd2cSJim Jagielski 
316*b1cdbd2cSJim Jagielski     try
317*b1cdbd2cSJim Jagielski     {
318*b1cdbd2cSJim Jagielski         if(xNode.is())
319*b1cdbd2cSJim Jagielski             xNode->getPropertyValue(s_sEdgeBlending) >>= nRet;
320*b1cdbd2cSJim Jagielski     }
321*b1cdbd2cSJim Jagielski     catch(const css::uno::Exception& ex)
322*b1cdbd2cSJim Jagielski     {
323*b1cdbd2cSJim Jagielski         LogHelper::logIt(ex);
324*b1cdbd2cSJim Jagielski     }
325*b1cdbd2cSJim Jagielski 
326*b1cdbd2cSJim Jagielski     return nRet;
327*b1cdbd2cSJim Jagielski }
328*b1cdbd2cSJim Jagielski 
GetListBoxMaximumLineCount() const329*b1cdbd2cSJim Jagielski sal_Int16 SvtAccessibilityOptions_Impl::GetListBoxMaximumLineCount() const
330*b1cdbd2cSJim Jagielski {
331*b1cdbd2cSJim Jagielski     css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
332*b1cdbd2cSJim Jagielski     sal_Int16 nRet = 25;
333*b1cdbd2cSJim Jagielski 
334*b1cdbd2cSJim Jagielski     try
335*b1cdbd2cSJim Jagielski     {
336*b1cdbd2cSJim Jagielski         if(xNode.is())
337*b1cdbd2cSJim Jagielski             xNode->getPropertyValue(s_sListBoxMaximumLineCount) >>= nRet;
338*b1cdbd2cSJim Jagielski     }
339*b1cdbd2cSJim Jagielski     catch(const css::uno::Exception& ex)
340*b1cdbd2cSJim Jagielski     {
341*b1cdbd2cSJim Jagielski         LogHelper::logIt(ex);
342*b1cdbd2cSJim Jagielski     }
343*b1cdbd2cSJim Jagielski 
344*b1cdbd2cSJim Jagielski     return nRet;
345*b1cdbd2cSJim Jagielski }
346*b1cdbd2cSJim Jagielski 
GetColorValueSetColumnCount() const347*b1cdbd2cSJim Jagielski sal_Int16 SvtAccessibilityOptions_Impl::GetColorValueSetColumnCount() const
348*b1cdbd2cSJim Jagielski {
349*b1cdbd2cSJim Jagielski     css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
350*b1cdbd2cSJim Jagielski     sal_Int16 nRet = 12;
351*b1cdbd2cSJim Jagielski 
352*b1cdbd2cSJim Jagielski     try
353*b1cdbd2cSJim Jagielski     {
354*b1cdbd2cSJim Jagielski         if(xNode.is())
355*b1cdbd2cSJim Jagielski             xNode->getPropertyValue(s_sColorValueSetColumnCount) >>= nRet;
356*b1cdbd2cSJim Jagielski     }
357*b1cdbd2cSJim Jagielski     catch(const css::uno::Exception& ex)
358*b1cdbd2cSJim Jagielski     {
359*b1cdbd2cSJim Jagielski         LogHelper::logIt(ex);
360*b1cdbd2cSJim Jagielski     }
361*b1cdbd2cSJim Jagielski 
362*b1cdbd2cSJim Jagielski     return nRet;
363*b1cdbd2cSJim Jagielski }
364*b1cdbd2cSJim Jagielski 
GetPreviewUsesCheckeredBackground() const365*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions_Impl::GetPreviewUsesCheckeredBackground() const
366*b1cdbd2cSJim Jagielski {
367*b1cdbd2cSJim Jagielski     css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
368*b1cdbd2cSJim Jagielski     sal_Bool bRet = sal_False;
369*b1cdbd2cSJim Jagielski 
370*b1cdbd2cSJim Jagielski     try
371*b1cdbd2cSJim Jagielski     {
372*b1cdbd2cSJim Jagielski         if(xNode.is())
373*b1cdbd2cSJim Jagielski             xNode->getPropertyValue(s_sPreviewUsesCheckeredBackground) >>= bRet;
374*b1cdbd2cSJim Jagielski     }
375*b1cdbd2cSJim Jagielski     catch(const css::uno::Exception& ex)
376*b1cdbd2cSJim Jagielski     {
377*b1cdbd2cSJim Jagielski         LogHelper::logIt(ex);
378*b1cdbd2cSJim Jagielski     }
379*b1cdbd2cSJim Jagielski 
380*b1cdbd2cSJim Jagielski     return bRet;
381*b1cdbd2cSJim Jagielski }
382*b1cdbd2cSJim Jagielski 
SetAutoDetectSystemHC(sal_Bool bSet)383*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions_Impl::SetAutoDetectSystemHC(sal_Bool bSet)
384*b1cdbd2cSJim Jagielski {
385*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
386*b1cdbd2cSJim Jagielski 
387*b1cdbd2cSJim Jagielski 	try
388*b1cdbd2cSJim Jagielski 	{
389*b1cdbd2cSJim Jagielski 		if(xNode.is() && xNode->getPropertyValue(s_sAutoDetectSystemHC)!=bSet)
390*b1cdbd2cSJim Jagielski 		{
391*b1cdbd2cSJim Jagielski 			xNode->setPropertyValue(s_sAutoDetectSystemHC, css::uno::makeAny(bSet));
392*b1cdbd2cSJim Jagielski 			::comphelper::ConfigurationHelper::flush(m_xCfg);
393*b1cdbd2cSJim Jagielski 
394*b1cdbd2cSJim Jagielski 			bIsModified = sal_True;
395*b1cdbd2cSJim Jagielski 		}
396*b1cdbd2cSJim Jagielski 	}
397*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
398*b1cdbd2cSJim Jagielski 	{
399*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
400*b1cdbd2cSJim Jagielski 	}
401*b1cdbd2cSJim Jagielski }
402*b1cdbd2cSJim Jagielski 
SetIsForPagePreviews(sal_Bool bSet)403*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions_Impl::SetIsForPagePreviews(sal_Bool bSet)
404*b1cdbd2cSJim Jagielski {
405*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
406*b1cdbd2cSJim Jagielski 
407*b1cdbd2cSJim Jagielski 	try
408*b1cdbd2cSJim Jagielski 	{
409*b1cdbd2cSJim Jagielski 		if(xNode.is() && xNode->getPropertyValue(s_sIsForPagePreviews)!=bSet)
410*b1cdbd2cSJim Jagielski 		{
411*b1cdbd2cSJim Jagielski 			xNode->setPropertyValue(s_sIsForPagePreviews, css::uno::makeAny(bSet));
412*b1cdbd2cSJim Jagielski 			::comphelper::ConfigurationHelper::flush(m_xCfg);
413*b1cdbd2cSJim Jagielski 
414*b1cdbd2cSJim Jagielski 			bIsModified = sal_True;
415*b1cdbd2cSJim Jagielski 		}
416*b1cdbd2cSJim Jagielski 	}
417*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
418*b1cdbd2cSJim Jagielski 	{
419*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
420*b1cdbd2cSJim Jagielski 	}
421*b1cdbd2cSJim Jagielski }
422*b1cdbd2cSJim Jagielski 
SetIsHelpTipsDisappear(sal_Bool bSet)423*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions_Impl::SetIsHelpTipsDisappear(sal_Bool bSet)
424*b1cdbd2cSJim Jagielski {
425*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
426*b1cdbd2cSJim Jagielski 
427*b1cdbd2cSJim Jagielski 	try
428*b1cdbd2cSJim Jagielski 	{
429*b1cdbd2cSJim Jagielski 		if(xNode.is() && xNode->getPropertyValue(s_sIsHelpTipsDisappear)!=bSet)
430*b1cdbd2cSJim Jagielski 		{
431*b1cdbd2cSJim Jagielski 			xNode->setPropertyValue(s_sIsHelpTipsDisappear, css::uno::makeAny(bSet));
432*b1cdbd2cSJim Jagielski 			::comphelper::ConfigurationHelper::flush(m_xCfg);
433*b1cdbd2cSJim Jagielski 
434*b1cdbd2cSJim Jagielski 			bIsModified = sal_True;
435*b1cdbd2cSJim Jagielski 		}
436*b1cdbd2cSJim Jagielski 	}
437*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
438*b1cdbd2cSJim Jagielski 	{
439*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
440*b1cdbd2cSJim Jagielski 	}
441*b1cdbd2cSJim Jagielski }
442*b1cdbd2cSJim Jagielski 
SetIsAllowAnimatedGraphics(sal_Bool bSet)443*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions_Impl::SetIsAllowAnimatedGraphics(sal_Bool bSet)
444*b1cdbd2cSJim Jagielski {
445*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
446*b1cdbd2cSJim Jagielski 
447*b1cdbd2cSJim Jagielski 	try
448*b1cdbd2cSJim Jagielski 	{
449*b1cdbd2cSJim Jagielski 		if(xNode.is() && xNode->getPropertyValue(s_sIsAllowAnimatedGraphics)!=bSet)
450*b1cdbd2cSJim Jagielski 		{
451*b1cdbd2cSJim Jagielski 			xNode->setPropertyValue(s_sIsAllowAnimatedGraphics, css::uno::makeAny(bSet));
452*b1cdbd2cSJim Jagielski 			::comphelper::ConfigurationHelper::flush(m_xCfg);
453*b1cdbd2cSJim Jagielski 
454*b1cdbd2cSJim Jagielski 			bIsModified = sal_True;
455*b1cdbd2cSJim Jagielski 		}
456*b1cdbd2cSJim Jagielski 	}
457*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
458*b1cdbd2cSJim Jagielski 	{
459*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
460*b1cdbd2cSJim Jagielski 	}
461*b1cdbd2cSJim Jagielski }
462*b1cdbd2cSJim Jagielski 
SetIsAllowAnimatedText(sal_Bool bSet)463*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions_Impl::SetIsAllowAnimatedText(sal_Bool bSet)
464*b1cdbd2cSJim Jagielski {
465*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
466*b1cdbd2cSJim Jagielski 
467*b1cdbd2cSJim Jagielski 	try
468*b1cdbd2cSJim Jagielski 	{
469*b1cdbd2cSJim Jagielski 		if(xNode.is() && xNode->getPropertyValue(s_sIsAllowAnimatedText)!=bSet)
470*b1cdbd2cSJim Jagielski 		{
471*b1cdbd2cSJim Jagielski 			xNode->setPropertyValue(s_sIsAllowAnimatedText, css::uno::makeAny(bSet));
472*b1cdbd2cSJim Jagielski 			::comphelper::ConfigurationHelper::flush(m_xCfg);
473*b1cdbd2cSJim Jagielski 
474*b1cdbd2cSJim Jagielski 			bIsModified = sal_True;
475*b1cdbd2cSJim Jagielski 		}
476*b1cdbd2cSJim Jagielski 	}
477*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
478*b1cdbd2cSJim Jagielski 	{
479*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
480*b1cdbd2cSJim Jagielski 	}
481*b1cdbd2cSJim Jagielski }
482*b1cdbd2cSJim Jagielski 
SetIsAutomaticFontColor(sal_Bool bSet)483*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions_Impl::SetIsAutomaticFontColor(sal_Bool bSet)
484*b1cdbd2cSJim Jagielski {
485*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
486*b1cdbd2cSJim Jagielski 
487*b1cdbd2cSJim Jagielski 	try
488*b1cdbd2cSJim Jagielski 	{
489*b1cdbd2cSJim Jagielski 		if(xNode.is() && xNode->getPropertyValue(s_sIsAutomaticFontColor)!=bSet)
490*b1cdbd2cSJim Jagielski 		{
491*b1cdbd2cSJim Jagielski 			xNode->setPropertyValue(s_sIsAutomaticFontColor, css::uno::makeAny(bSet));
492*b1cdbd2cSJim Jagielski 			::comphelper::ConfigurationHelper::flush(m_xCfg);
493*b1cdbd2cSJim Jagielski 
494*b1cdbd2cSJim Jagielski 			bIsModified = sal_True;
495*b1cdbd2cSJim Jagielski 		}
496*b1cdbd2cSJim Jagielski 	}
497*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
498*b1cdbd2cSJim Jagielski 	{
499*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
500*b1cdbd2cSJim Jagielski 	}
501*b1cdbd2cSJim Jagielski }
502*b1cdbd2cSJim Jagielski 
SetIsSystemFont(sal_Bool bSet)503*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions_Impl::SetIsSystemFont(sal_Bool bSet)
504*b1cdbd2cSJim Jagielski {
505*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
506*b1cdbd2cSJim Jagielski 
507*b1cdbd2cSJim Jagielski 	try
508*b1cdbd2cSJim Jagielski 	{
509*b1cdbd2cSJim Jagielski 		if(xNode.is() && xNode->getPropertyValue(s_sIsSystemFont)!=bSet)
510*b1cdbd2cSJim Jagielski 		{
511*b1cdbd2cSJim Jagielski 			xNode->setPropertyValue(s_sIsSystemFont, css::uno::makeAny(bSet));
512*b1cdbd2cSJim Jagielski 			::comphelper::ConfigurationHelper::flush(m_xCfg);
513*b1cdbd2cSJim Jagielski 
514*b1cdbd2cSJim Jagielski 			bIsModified = sal_True;
515*b1cdbd2cSJim Jagielski 		}
516*b1cdbd2cSJim Jagielski 	}
517*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
518*b1cdbd2cSJim Jagielski 	{
519*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
520*b1cdbd2cSJim Jagielski 	}
521*b1cdbd2cSJim Jagielski }
522*b1cdbd2cSJim Jagielski 
SetHelpTipSeconds(sal_Int16 nSet)523*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions_Impl::SetHelpTipSeconds(sal_Int16 nSet)
524*b1cdbd2cSJim Jagielski {
525*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
526*b1cdbd2cSJim Jagielski 
527*b1cdbd2cSJim Jagielski 	try
528*b1cdbd2cSJim Jagielski 	{
529*b1cdbd2cSJim Jagielski 		if(xNode.is() && xNode->getPropertyValue(s_sHelpTipSeconds)!=nSet)
530*b1cdbd2cSJim Jagielski 		{
531*b1cdbd2cSJim Jagielski 			xNode->setPropertyValue(s_sHelpTipSeconds, css::uno::makeAny(nSet));
532*b1cdbd2cSJim Jagielski 			::comphelper::ConfigurationHelper::flush(m_xCfg);
533*b1cdbd2cSJim Jagielski 
534*b1cdbd2cSJim Jagielski 			bIsModified = sal_True;
535*b1cdbd2cSJim Jagielski 		}
536*b1cdbd2cSJim Jagielski 	}
537*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
538*b1cdbd2cSJim Jagielski 	{
539*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
540*b1cdbd2cSJim Jagielski 	}
541*b1cdbd2cSJim Jagielski }
542*b1cdbd2cSJim Jagielski 
SetSelectionInReadonly(sal_Bool bSet)543*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions_Impl::SetSelectionInReadonly(sal_Bool bSet)
544*b1cdbd2cSJim Jagielski {
545*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
546*b1cdbd2cSJim Jagielski 
547*b1cdbd2cSJim Jagielski 	try
548*b1cdbd2cSJim Jagielski 	{
549*b1cdbd2cSJim Jagielski 		if(xNode.is() && xNode->getPropertyValue(s_sIsSelectionInReadonly)!=bSet)
550*b1cdbd2cSJim Jagielski 		{
551*b1cdbd2cSJim Jagielski 			xNode->setPropertyValue(s_sIsSelectionInReadonly, css::uno::makeAny(bSet));
552*b1cdbd2cSJim Jagielski 			::comphelper::ConfigurationHelper::flush(m_xCfg);
553*b1cdbd2cSJim Jagielski 
554*b1cdbd2cSJim Jagielski 			bIsModified = sal_True;
555*b1cdbd2cSJim Jagielski 		}
556*b1cdbd2cSJim Jagielski 	}
557*b1cdbd2cSJim Jagielski 	catch(const css::uno::Exception& ex)
558*b1cdbd2cSJim Jagielski 	{
559*b1cdbd2cSJim Jagielski 		LogHelper::logIt(ex);
560*b1cdbd2cSJim Jagielski 	}
561*b1cdbd2cSJim Jagielski }
562*b1cdbd2cSJim Jagielski 
SetVCLSettings()563*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions_Impl::SetVCLSettings()
564*b1cdbd2cSJim Jagielski {
565*b1cdbd2cSJim Jagielski     AllSettings aAllSettings(Application::GetSettings());
566*b1cdbd2cSJim Jagielski     StyleSettings aStyleSettings(aAllSettings.GetStyleSettings());
567*b1cdbd2cSJim Jagielski     HelpSettings aHelpSettings(aAllSettings.GetHelpSettings());
568*b1cdbd2cSJim Jagielski     bool StyleSettingsChanged(false);
569*b1cdbd2cSJim Jagielski 
570*b1cdbd2cSJim Jagielski     aHelpSettings.SetTipTimeout( GetIsHelpTipsDisappear() ? GetHelpTipSeconds() * 1000 : HELP_TIP_TIMEOUT);
571*b1cdbd2cSJim Jagielski     aAllSettings.SetHelpSettings(aHelpSettings);
572*b1cdbd2cSJim Jagielski 
573*b1cdbd2cSJim Jagielski     if(aStyleSettings.GetUseSystemUIFonts() != GetIsSystemFont())
574*b1cdbd2cSJim Jagielski     {
575*b1cdbd2cSJim Jagielski         aStyleSettings.SetUseSystemUIFonts(GetIsSystemFont());
576*b1cdbd2cSJim Jagielski         StyleSettingsChanged = true;
577*b1cdbd2cSJim Jagielski     }
578*b1cdbd2cSJim Jagielski 
579*b1cdbd2cSJim Jagielski     const sal_Int16 nEdgeBlendingCountA(GetEdgeBlending());
580*b1cdbd2cSJim Jagielski     OSL_ENSURE(nEdgeBlendingCountA >= 0, "OOps, negative values for EdgeBlending are not allowed (!)");
581*b1cdbd2cSJim Jagielski     const sal_uInt16 nEdgeBlendingCountB(static_cast< sal_uInt16 >(nEdgeBlendingCountA >= 0 ? nEdgeBlendingCountA : 0));
582*b1cdbd2cSJim Jagielski 
583*b1cdbd2cSJim Jagielski     if(aStyleSettings.GetEdgeBlending() != nEdgeBlendingCountB)
584*b1cdbd2cSJim Jagielski     {
585*b1cdbd2cSJim Jagielski         aStyleSettings.SetEdgeBlending(nEdgeBlendingCountB);
586*b1cdbd2cSJim Jagielski         StyleSettingsChanged = true;
587*b1cdbd2cSJim Jagielski     }
588*b1cdbd2cSJim Jagielski 
589*b1cdbd2cSJim Jagielski     const sal_Int16 nMaxLineCountA(GetListBoxMaximumLineCount());
590*b1cdbd2cSJim Jagielski     OSL_ENSURE(nMaxLineCountA >= 0, "OOps, negative values for ListBoxMaximumLineCount are not allowed (!)");
591*b1cdbd2cSJim Jagielski     const sal_uInt16 nMaxLineCountB(static_cast< sal_uInt16 >(nMaxLineCountA >= 0 ? nMaxLineCountA : 0));
592*b1cdbd2cSJim Jagielski 
593*b1cdbd2cSJim Jagielski     if(aStyleSettings.GetListBoxMaximumLineCount() != nMaxLineCountB)
594*b1cdbd2cSJim Jagielski     {
595*b1cdbd2cSJim Jagielski         aStyleSettings.SetListBoxMaximumLineCount(nMaxLineCountB);
596*b1cdbd2cSJim Jagielski         StyleSettingsChanged = true;
597*b1cdbd2cSJim Jagielski     }
598*b1cdbd2cSJim Jagielski 
599*b1cdbd2cSJim Jagielski     const sal_Int16 nMaxColumnCountA(GetColorValueSetColumnCount());
600*b1cdbd2cSJim Jagielski     OSL_ENSURE(nMaxColumnCountA >= 0, "OOps, negative values for ColorValueSetColumnCount are not allowed (!)");
601*b1cdbd2cSJim Jagielski     const sal_uInt16 nMaxColumnCountB(static_cast< sal_uInt16 >(nMaxColumnCountA >= 0 ? nMaxColumnCountA : 0));
602*b1cdbd2cSJim Jagielski 
603*b1cdbd2cSJim Jagielski     if(aStyleSettings.GetColorValueSetColumnCount() != nMaxColumnCountB)
604*b1cdbd2cSJim Jagielski     {
605*b1cdbd2cSJim Jagielski         aStyleSettings.SetColorValueSetColumnCount(nMaxColumnCountB);
606*b1cdbd2cSJim Jagielski         StyleSettingsChanged = true;
607*b1cdbd2cSJim Jagielski     }
608*b1cdbd2cSJim Jagielski 
609*b1cdbd2cSJim Jagielski     const bool bPreviewUsesCheckeredBackground(GetPreviewUsesCheckeredBackground());
610*b1cdbd2cSJim Jagielski 
611*b1cdbd2cSJim Jagielski     if(aStyleSettings.GetPreviewUsesCheckeredBackground() != bPreviewUsesCheckeredBackground)
612*b1cdbd2cSJim Jagielski     {
613*b1cdbd2cSJim Jagielski         aStyleSettings.SetPreviewUsesCheckeredBackground(bPreviewUsesCheckeredBackground);
614*b1cdbd2cSJim Jagielski         StyleSettingsChanged = true;
615*b1cdbd2cSJim Jagielski     }
616*b1cdbd2cSJim Jagielski 
617*b1cdbd2cSJim Jagielski     if(StyleSettingsChanged)
618*b1cdbd2cSJim Jagielski     {
619*b1cdbd2cSJim Jagielski         aAllSettings.SetStyleSettings(aStyleSettings);
620*b1cdbd2cSJim Jagielski         Application::MergeSystemSettings(aAllSettings);
621*b1cdbd2cSJim Jagielski     }
622*b1cdbd2cSJim Jagielski 
623*b1cdbd2cSJim Jagielski     Application::SetSettings(aAllSettings);
624*b1cdbd2cSJim Jagielski }
625*b1cdbd2cSJim Jagielski 
SetEdgeBlending(sal_Int16 nSet)626*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions_Impl::SetEdgeBlending(sal_Int16 nSet)
627*b1cdbd2cSJim Jagielski {
628*b1cdbd2cSJim Jagielski     css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
629*b1cdbd2cSJim Jagielski 
630*b1cdbd2cSJim Jagielski     try
631*b1cdbd2cSJim Jagielski     {
632*b1cdbd2cSJim Jagielski         if(xNode.is() && xNode->getPropertyValue(s_sEdgeBlending)!=nSet)
633*b1cdbd2cSJim Jagielski         {
634*b1cdbd2cSJim Jagielski             xNode->setPropertyValue(s_sEdgeBlending, css::uno::makeAny(nSet));
635*b1cdbd2cSJim Jagielski             ::comphelper::ConfigurationHelper::flush(m_xCfg);
636*b1cdbd2cSJim Jagielski 
637*b1cdbd2cSJim Jagielski             bIsModified = sal_True;
638*b1cdbd2cSJim Jagielski         }
639*b1cdbd2cSJim Jagielski     }
640*b1cdbd2cSJim Jagielski     catch(const css::uno::Exception& ex)
641*b1cdbd2cSJim Jagielski     {
642*b1cdbd2cSJim Jagielski         LogHelper::logIt(ex);
643*b1cdbd2cSJim Jagielski     }
644*b1cdbd2cSJim Jagielski }
645*b1cdbd2cSJim Jagielski 
SetListBoxMaximumLineCount(sal_Int16 nSet)646*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions_Impl::SetListBoxMaximumLineCount(sal_Int16 nSet)
647*b1cdbd2cSJim Jagielski {
648*b1cdbd2cSJim Jagielski     css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
649*b1cdbd2cSJim Jagielski 
650*b1cdbd2cSJim Jagielski     try
651*b1cdbd2cSJim Jagielski     {
652*b1cdbd2cSJim Jagielski         if(xNode.is() && xNode->getPropertyValue(s_sListBoxMaximumLineCount)!=nSet)
653*b1cdbd2cSJim Jagielski         {
654*b1cdbd2cSJim Jagielski             xNode->setPropertyValue(s_sListBoxMaximumLineCount, css::uno::makeAny(nSet));
655*b1cdbd2cSJim Jagielski             ::comphelper::ConfigurationHelper::flush(m_xCfg);
656*b1cdbd2cSJim Jagielski 
657*b1cdbd2cSJim Jagielski             bIsModified = sal_True;
658*b1cdbd2cSJim Jagielski         }
659*b1cdbd2cSJim Jagielski     }
660*b1cdbd2cSJim Jagielski     catch(const css::uno::Exception& ex)
661*b1cdbd2cSJim Jagielski     {
662*b1cdbd2cSJim Jagielski         LogHelper::logIt(ex);
663*b1cdbd2cSJim Jagielski     }
664*b1cdbd2cSJim Jagielski }
665*b1cdbd2cSJim Jagielski 
SetColorValueSetColumnCount(sal_Int16 nSet)666*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions_Impl::SetColorValueSetColumnCount(sal_Int16 nSet)
667*b1cdbd2cSJim Jagielski {
668*b1cdbd2cSJim Jagielski     css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
669*b1cdbd2cSJim Jagielski 
670*b1cdbd2cSJim Jagielski     try
671*b1cdbd2cSJim Jagielski     {
672*b1cdbd2cSJim Jagielski         if(xNode.is() && xNode->getPropertyValue(s_sColorValueSetColumnCount)!=nSet)
673*b1cdbd2cSJim Jagielski         {
674*b1cdbd2cSJim Jagielski             xNode->setPropertyValue(s_sColorValueSetColumnCount, css::uno::makeAny(nSet));
675*b1cdbd2cSJim Jagielski             ::comphelper::ConfigurationHelper::flush(m_xCfg);
676*b1cdbd2cSJim Jagielski 
677*b1cdbd2cSJim Jagielski             bIsModified = sal_True;
678*b1cdbd2cSJim Jagielski         }
679*b1cdbd2cSJim Jagielski     }
680*b1cdbd2cSJim Jagielski     catch(const css::uno::Exception& ex)
681*b1cdbd2cSJim Jagielski     {
682*b1cdbd2cSJim Jagielski         LogHelper::logIt(ex);
683*b1cdbd2cSJim Jagielski     }
684*b1cdbd2cSJim Jagielski }
685*b1cdbd2cSJim Jagielski 
SetPreviewUsesCheckeredBackground(sal_Bool bSet)686*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions_Impl::SetPreviewUsesCheckeredBackground(sal_Bool bSet)
687*b1cdbd2cSJim Jagielski {
688*b1cdbd2cSJim Jagielski     css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
689*b1cdbd2cSJim Jagielski 
690*b1cdbd2cSJim Jagielski     try
691*b1cdbd2cSJim Jagielski     {
692*b1cdbd2cSJim Jagielski         if(xNode.is() && xNode->getPropertyValue(s_sPreviewUsesCheckeredBackground)!=bSet)
693*b1cdbd2cSJim Jagielski         {
694*b1cdbd2cSJim Jagielski             xNode->setPropertyValue(s_sPreviewUsesCheckeredBackground, css::uno::makeAny(bSet));
695*b1cdbd2cSJim Jagielski             ::comphelper::ConfigurationHelper::flush(m_xCfg);
696*b1cdbd2cSJim Jagielski 
697*b1cdbd2cSJim Jagielski             bIsModified = sal_True;
698*b1cdbd2cSJim Jagielski         }
699*b1cdbd2cSJim Jagielski     }
700*b1cdbd2cSJim Jagielski     catch(const css::uno::Exception& ex)
701*b1cdbd2cSJim Jagielski     {
702*b1cdbd2cSJim Jagielski         LogHelper::logIt(ex);
703*b1cdbd2cSJim Jagielski     }
704*b1cdbd2cSJim Jagielski }
705*b1cdbd2cSJim Jagielski 
706*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
707*b1cdbd2cSJim Jagielski // class SvtAccessibilityOptions --------------------------------------------------
708*b1cdbd2cSJim Jagielski 
SvtAccessibilityOptions()709*b1cdbd2cSJim Jagielski SvtAccessibilityOptions::SvtAccessibilityOptions()
710*b1cdbd2cSJim Jagielski {
711*b1cdbd2cSJim Jagielski 	{
712*b1cdbd2cSJim Jagielski 		::osl::MutexGuard aGuard( SingletonMutex::get() );
713*b1cdbd2cSJim Jagielski 		if(!sm_pSingleImplConfig)
714*b1cdbd2cSJim Jagielski 		{
715*b1cdbd2cSJim Jagielski 			sm_pSingleImplConfig = new SvtAccessibilityOptions_Impl;
716*b1cdbd2cSJim Jagielski 			ItemHolder2::holdConfigItem(E_ACCESSIBILITYOPTIONS);
717*b1cdbd2cSJim Jagielski 		}
718*b1cdbd2cSJim Jagielski 		++sm_nAccessibilityRefCount;
719*b1cdbd2cSJim Jagielski 	}
720*b1cdbd2cSJim Jagielski 	//StartListening( *sm_pSingleImplConfig, sal_True );
721*b1cdbd2cSJim Jagielski }
722*b1cdbd2cSJim Jagielski 
723*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
724*b1cdbd2cSJim Jagielski 
~SvtAccessibilityOptions()725*b1cdbd2cSJim Jagielski SvtAccessibilityOptions::~SvtAccessibilityOptions()
726*b1cdbd2cSJim Jagielski {
727*b1cdbd2cSJim Jagielski 	//EndListening( *sm_pSingleImplConfig, sal_True );
728*b1cdbd2cSJim Jagielski 	::osl::MutexGuard aGuard( SingletonMutex::get() );
729*b1cdbd2cSJim Jagielski 	if( !--sm_nAccessibilityRefCount )
730*b1cdbd2cSJim Jagielski 	{
731*b1cdbd2cSJim Jagielski 		//if( sm_pSingleImplConfig->IsModified() )
732*b1cdbd2cSJim Jagielski 		//	sm_pSingleImplConfig->Commit();
733*b1cdbd2cSJim Jagielski 		DELETEZ( sm_pSingleImplConfig );
734*b1cdbd2cSJim Jagielski 	}
735*b1cdbd2cSJim Jagielski }
736*b1cdbd2cSJim Jagielski 
737*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
738*b1cdbd2cSJim Jagielski 
Notify(SfxBroadcaster &,const SfxHint & rHint)739*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::Notify( SfxBroadcaster&, const SfxHint& rHint )
740*b1cdbd2cSJim Jagielski {
741*b1cdbd2cSJim Jagielski 	NotifyListeners(0);
742*b1cdbd2cSJim Jagielski 	if ( rHint.IsA(TYPE(SfxSimpleHint)) )
743*b1cdbd2cSJim Jagielski 	{
744*b1cdbd2cSJim Jagielski 		if ( ((SfxSimpleHint&)rHint).GetId()  == SFX_HINT_ACCESSIBILITY_CHANGED )
745*b1cdbd2cSJim Jagielski 			SetVCLSettings();
746*b1cdbd2cSJim Jagielski 	}
747*b1cdbd2cSJim Jagielski }
748*b1cdbd2cSJim Jagielski 
749*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
750*b1cdbd2cSJim Jagielski 
IsModified() const751*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions::IsModified() const
752*b1cdbd2cSJim Jagielski {
753*b1cdbd2cSJim Jagielski 	return sm_pSingleImplConfig->IsModified();
754*b1cdbd2cSJim Jagielski }
Commit()755*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::Commit()
756*b1cdbd2cSJim Jagielski {
757*b1cdbd2cSJim Jagielski 	//sm_pSingleImplConfig->Commit();
758*b1cdbd2cSJim Jagielski }
759*b1cdbd2cSJim Jagielski 
760*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
761*b1cdbd2cSJim Jagielski 
GetIsForDrawings() const762*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions::GetIsForDrawings() const
763*b1cdbd2cSJim Jagielski {
764*b1cdbd2cSJim Jagielski 	DBG_ERROR( "SvtAccessibilityOptions::GetIsForDrawings: is obsolete!" );
765*b1cdbd2cSJim Jagielski     return sal_False;
766*b1cdbd2cSJim Jagielski }
GetIsForBorders() const767*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions::GetIsForBorders() const
768*b1cdbd2cSJim Jagielski {
769*b1cdbd2cSJim Jagielski 	DBG_ERROR( "SvtAccessibilityOptions::GetIsForBorders: is obsolete!" );
770*b1cdbd2cSJim Jagielski     return sal_False;
771*b1cdbd2cSJim Jagielski }
GetAutoDetectSystemHC() const772*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions::GetAutoDetectSystemHC() const
773*b1cdbd2cSJim Jagielski {
774*b1cdbd2cSJim Jagielski 	return sm_pSingleImplConfig->GetAutoDetectSystemHC();
775*b1cdbd2cSJim Jagielski }
GetIsForPagePreviews() const776*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions::GetIsForPagePreviews() const
777*b1cdbd2cSJim Jagielski {
778*b1cdbd2cSJim Jagielski 	return sm_pSingleImplConfig->GetIsForPagePreviews();
779*b1cdbd2cSJim Jagielski }
GetIsHelpTipsDisappear() const780*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions::GetIsHelpTipsDisappear() const
781*b1cdbd2cSJim Jagielski {
782*b1cdbd2cSJim Jagielski 	return sm_pSingleImplConfig->GetIsHelpTipsDisappear();
783*b1cdbd2cSJim Jagielski }
GetIsAllowAnimatedGraphics() const784*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions::GetIsAllowAnimatedGraphics() const
785*b1cdbd2cSJim Jagielski {
786*b1cdbd2cSJim Jagielski 	return sm_pSingleImplConfig->GetIsAllowAnimatedGraphics();
787*b1cdbd2cSJim Jagielski }
GetIsAllowAnimatedText() const788*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions::GetIsAllowAnimatedText() const
789*b1cdbd2cSJim Jagielski {
790*b1cdbd2cSJim Jagielski 	return sm_pSingleImplConfig->GetIsAllowAnimatedText();
791*b1cdbd2cSJim Jagielski }
GetIsAutomaticFontColor() const792*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions::GetIsAutomaticFontColor() const
793*b1cdbd2cSJim Jagielski {
794*b1cdbd2cSJim Jagielski 	return sm_pSingleImplConfig->GetIsAutomaticFontColor();
795*b1cdbd2cSJim Jagielski }
GetIsSystemFont() const796*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions::GetIsSystemFont() const
797*b1cdbd2cSJim Jagielski {
798*b1cdbd2cSJim Jagielski 	return sm_pSingleImplConfig->GetIsSystemFont();
799*b1cdbd2cSJim Jagielski }
GetHelpTipSeconds() const800*b1cdbd2cSJim Jagielski sal_Int16 SvtAccessibilityOptions::GetHelpTipSeconds() const
801*b1cdbd2cSJim Jagielski {
802*b1cdbd2cSJim Jagielski 	return sm_pSingleImplConfig->GetHelpTipSeconds();
803*b1cdbd2cSJim Jagielski }
IsSelectionInReadonly() const804*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions::IsSelectionInReadonly() const
805*b1cdbd2cSJim Jagielski {
806*b1cdbd2cSJim Jagielski 	return sm_pSingleImplConfig->IsSelectionInReadonly();
807*b1cdbd2cSJim Jagielski }
GetEdgeBlending() const808*b1cdbd2cSJim Jagielski sal_Int16 SvtAccessibilityOptions::GetEdgeBlending() const
809*b1cdbd2cSJim Jagielski {
810*b1cdbd2cSJim Jagielski     return sm_pSingleImplConfig->GetEdgeBlending();
811*b1cdbd2cSJim Jagielski }
GetListBoxMaximumLineCount() const812*b1cdbd2cSJim Jagielski sal_Int16 SvtAccessibilityOptions::GetListBoxMaximumLineCount() const
813*b1cdbd2cSJim Jagielski {
814*b1cdbd2cSJim Jagielski     return sm_pSingleImplConfig->GetListBoxMaximumLineCount();
815*b1cdbd2cSJim Jagielski }
GetColorValueSetColumnCount() const816*b1cdbd2cSJim Jagielski sal_Int16 SvtAccessibilityOptions::GetColorValueSetColumnCount() const
817*b1cdbd2cSJim Jagielski {
818*b1cdbd2cSJim Jagielski     return sm_pSingleImplConfig->GetColorValueSetColumnCount();
819*b1cdbd2cSJim Jagielski }
GetPreviewUsesCheckeredBackground() const820*b1cdbd2cSJim Jagielski sal_Bool SvtAccessibilityOptions::GetPreviewUsesCheckeredBackground() const
821*b1cdbd2cSJim Jagielski {
822*b1cdbd2cSJim Jagielski     return sm_pSingleImplConfig->GetPreviewUsesCheckeredBackground();
823*b1cdbd2cSJim Jagielski }
824*b1cdbd2cSJim Jagielski 
825*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
SetAutoDetectSystemHC(sal_Bool bSet)826*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::SetAutoDetectSystemHC(sal_Bool bSet)
827*b1cdbd2cSJim Jagielski {
828*b1cdbd2cSJim Jagielski 	sm_pSingleImplConfig->SetAutoDetectSystemHC(bSet);
829*b1cdbd2cSJim Jagielski }
SetIsForPagePreviews(sal_Bool bSet)830*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::SetIsForPagePreviews(sal_Bool bSet)
831*b1cdbd2cSJim Jagielski {
832*b1cdbd2cSJim Jagielski 	sm_pSingleImplConfig->SetIsForPagePreviews(bSet);
833*b1cdbd2cSJim Jagielski }
SetIsHelpTipsDisappear(sal_Bool bSet)834*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::SetIsHelpTipsDisappear(sal_Bool bSet)
835*b1cdbd2cSJim Jagielski {
836*b1cdbd2cSJim Jagielski 	sm_pSingleImplConfig->SetIsHelpTipsDisappear(bSet);
837*b1cdbd2cSJim Jagielski }
SetIsAllowAnimatedGraphics(sal_Bool bSet)838*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::SetIsAllowAnimatedGraphics(sal_Bool bSet)
839*b1cdbd2cSJim Jagielski {
840*b1cdbd2cSJim Jagielski 	sm_pSingleImplConfig->SetIsAllowAnimatedGraphics(bSet);
841*b1cdbd2cSJim Jagielski }
SetIsAllowAnimatedText(sal_Bool bSet)842*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::SetIsAllowAnimatedText(sal_Bool bSet)
843*b1cdbd2cSJim Jagielski {
844*b1cdbd2cSJim Jagielski 	sm_pSingleImplConfig->SetIsAllowAnimatedText(bSet);
845*b1cdbd2cSJim Jagielski }
SetIsAutomaticFontColor(sal_Bool bSet)846*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::SetIsAutomaticFontColor(sal_Bool bSet)
847*b1cdbd2cSJim Jagielski {
848*b1cdbd2cSJim Jagielski 	sm_pSingleImplConfig->SetIsAutomaticFontColor(bSet);
849*b1cdbd2cSJim Jagielski }
SetIsSystemFont(sal_Bool bSet)850*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::SetIsSystemFont(sal_Bool bSet)
851*b1cdbd2cSJim Jagielski {
852*b1cdbd2cSJim Jagielski 	sm_pSingleImplConfig->SetIsSystemFont(bSet);
853*b1cdbd2cSJim Jagielski }
SetHelpTipSeconds(sal_Int16 nSet)854*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::SetHelpTipSeconds(sal_Int16 nSet)
855*b1cdbd2cSJim Jagielski {
856*b1cdbd2cSJim Jagielski 	sm_pSingleImplConfig->SetHelpTipSeconds(nSet);
857*b1cdbd2cSJim Jagielski }
SetSelectionInReadonly(sal_Bool bSet)858*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::SetSelectionInReadonly(sal_Bool bSet)
859*b1cdbd2cSJim Jagielski {
860*b1cdbd2cSJim Jagielski 	sm_pSingleImplConfig->SetSelectionInReadonly(bSet);
861*b1cdbd2cSJim Jagielski }
SetVCLSettings()862*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::SetVCLSettings()
863*b1cdbd2cSJim Jagielski {
864*b1cdbd2cSJim Jagielski 	sm_pSingleImplConfig->SetVCLSettings();
865*b1cdbd2cSJim Jagielski }
SetEdgeBlending(sal_Int16 nSet)866*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::SetEdgeBlending(sal_Int16 nSet)
867*b1cdbd2cSJim Jagielski {
868*b1cdbd2cSJim Jagielski     sm_pSingleImplConfig->SetEdgeBlending(nSet);
869*b1cdbd2cSJim Jagielski }
SetListBoxMaximumLineCount(sal_Int16 nSet)870*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::SetListBoxMaximumLineCount(sal_Int16 nSet)
871*b1cdbd2cSJim Jagielski {
872*b1cdbd2cSJim Jagielski     sm_pSingleImplConfig->SetListBoxMaximumLineCount(nSet);
873*b1cdbd2cSJim Jagielski }
SetColorValueSetColumnCount(sal_Int16 nSet)874*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::SetColorValueSetColumnCount(sal_Int16 nSet)
875*b1cdbd2cSJim Jagielski {
876*b1cdbd2cSJim Jagielski     sm_pSingleImplConfig->SetColorValueSetColumnCount(nSet);
877*b1cdbd2cSJim Jagielski }
SetPreviewUsesCheckeredBackground(sal_Bool bSet)878*b1cdbd2cSJim Jagielski void SvtAccessibilityOptions::SetPreviewUsesCheckeredBackground(sal_Bool bSet)
879*b1cdbd2cSJim Jagielski {
880*b1cdbd2cSJim Jagielski     sm_pSingleImplConfig->SetPreviewUsesCheckeredBackground(bSet);
881*b1cdbd2cSJim Jagielski }
882*b1cdbd2cSJim Jagielski 
883*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
884