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