Line data Source code
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 :
21 : #include <svtools/accessibilityoptions.hxx>
22 :
23 : #include <unotools/configmgr.hxx>
24 : #include <com/sun/star/uno/Any.hxx>
25 : #include <com/sun/star/uno/Sequence.hxx>
26 :
27 : #include <com/sun/star/beans/XPropertySet.hpp>
28 : #include <com/sun/star/container/XNameAccess.hpp>
29 : #include <comphelper/configurationhelper.hxx>
30 : #include <comphelper/processfactory.hxx>
31 :
32 : #include <svl/smplhint.hxx>
33 :
34 : #include <svtools/colorcfg.hxx>
35 :
36 : #include <vcl/settings.hxx>
37 : #include <vcl/svapp.hxx>
38 : #include <rtl/instance.hxx>
39 :
40 : #include <itemholder2.hxx>
41 :
42 : using namespace utl;
43 : using namespace com::sun::star::uno;
44 :
45 : #define HELP_TIP_TIMEOUT 0xffff // max. timeout setting to pretend a non-timeout
46 :
47 : namespace
48 : {
49 : const char s_sAccessibility[] = "org.openoffice.Office.Common/Accessibility";
50 : const char s_sAutoDetectSystemHC[] = "AutoDetectSystemHC";
51 : const char s_sIsForPagePreviews[] = "IsForPagePreviews";
52 : const char s_sIsHelpTipsDisappear[] = "IsHelpTipsDisappear";
53 : const char s_sHelpTipSeconds[] = "HelpTipSeconds";
54 : const char s_sIsAllowAnimatedGraphics[] = "IsAllowAnimatedGraphics";
55 : const char s_sIsAllowAnimatedText[] = "IsAllowAnimatedText";
56 : const char s_sIsAutomaticFontColor[] = "IsAutomaticFontColor";
57 : const char s_sIsSystemFont[] = "IsSystemFont";
58 : const char s_sIsSelectionInReadonly[] = "IsSelectionInReadonly";
59 : const char s_sColorValueSetColumnCount[] = "ColorValueSetColumnCount";
60 : const char s_sEdgeBlending[] = "EdgeBlending";
61 : const char s_sListBoxMaximumLineCount[] = "ListBoxMaximumLineCount";
62 : const char s_sPreviewUsesCheckeredBackground[] = "PreviewUsesCheckeredBackground";
63 : }
64 :
65 : // class SvtAccessibilityOptions_Impl ---------------------------------------------
66 :
67 : class SvtAccessibilityOptions_Impl
68 : {
69 : private:
70 : css::uno::Reference< css::container::XNameAccess > m_xCfg;
71 : bool bIsModified;
72 :
73 : public:
74 : SvtAccessibilityOptions_Impl();
75 : ~SvtAccessibilityOptions_Impl();
76 :
77 : void SetVCLSettings();
78 : bool GetAutoDetectSystemHC();
79 : bool GetIsForPagePreviews() const;
80 : bool GetIsHelpTipsDisappear() const;
81 : bool GetIsAllowAnimatedGraphics() const;
82 : bool GetIsAllowAnimatedText() const;
83 : bool GetIsAutomaticFontColor() const;
84 : bool GetIsSystemFont() const;
85 : sal_Int16 GetHelpTipSeconds() const;
86 : bool IsSelectionInReadonly() const;
87 : sal_Int16 GetEdgeBlending() const;
88 : sal_Int16 GetListBoxMaximumLineCount() const;
89 : sal_Int16 GetColorValueSetColumnCount() const;
90 : bool GetPreviewUsesCheckeredBackground() const;
91 :
92 : void SetAutoDetectSystemHC(bool bSet);
93 : void SetIsForPagePreviews(bool bSet);
94 : void SetIsHelpTipsDisappear(bool bSet);
95 : void SetIsAllowAnimatedGraphics(bool bSet);
96 : void SetIsAllowAnimatedText(bool bSet);
97 : void SetIsAutomaticFontColor(bool bSet);
98 : void SetIsSystemFont(bool bSet);
99 : void SetHelpTipSeconds(sal_Int16 nSet);
100 : void SetSelectionInReadonly(bool bSet);
101 :
102 0 : bool IsModified() const { return bIsModified; };
103 : };
104 :
105 : // initialization of static members --------------------------------------
106 :
107 : SvtAccessibilityOptions_Impl* SvtAccessibilityOptions::sm_pSingleImplConfig =NULL;
108 : sal_Int32 SvtAccessibilityOptions::sm_nAccessibilityRefCount(0);
109 :
110 : namespace
111 : {
112 : struct SingletonMutex
113 : : public rtl::Static< ::osl::Mutex, SingletonMutex > {};
114 : }
115 :
116 :
117 : // class SvtAccessibilityOptions_Impl ---------------------------------------------
118 :
119 0 : SvtAccessibilityOptions_Impl::SvtAccessibilityOptions_Impl()
120 : {
121 : try
122 : {
123 0 : m_xCfg = css::uno::Reference< css::container::XNameAccess >(
124 : ::comphelper::ConfigurationHelper::openConfig(
125 : comphelper::getProcessComponentContext(),
126 : s_sAccessibility,
127 : ::comphelper::ConfigurationHelper::E_STANDARD),
128 0 : css::uno::UNO_QUERY);
129 :
130 0 : bIsModified = false;
131 : }
132 0 : catch(const css::uno::Exception& ex)
133 : {
134 0 : m_xCfg.clear();
135 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
136 : }
137 0 : }
138 :
139 0 : SvtAccessibilityOptions_Impl::~SvtAccessibilityOptions_Impl()
140 : {
141 0 : }
142 :
143 :
144 0 : bool SvtAccessibilityOptions_Impl::GetAutoDetectSystemHC()
145 : {
146 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
147 0 : sal_Bool bRet = sal_True;
148 :
149 : try
150 : {
151 0 : if(xNode.is())
152 0 : xNode->getPropertyValue(s_sAutoDetectSystemHC) >>= bRet;
153 : }
154 0 : catch(const css::uno::Exception& ex)
155 : {
156 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
157 : }
158 :
159 0 : return bRet;
160 : }
161 :
162 0 : bool SvtAccessibilityOptions_Impl::GetIsForPagePreviews() const
163 : {
164 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
165 0 : sal_Bool bRet = sal_True;
166 :
167 : try
168 : {
169 0 : if(xNode.is())
170 0 : xNode->getPropertyValue(s_sIsForPagePreviews) >>= bRet;
171 : }
172 0 : catch(const css::uno::Exception& ex)
173 : {
174 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
175 : }
176 0 : return bRet;
177 : }
178 :
179 0 : bool SvtAccessibilityOptions_Impl::GetIsHelpTipsDisappear() const
180 : {
181 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
182 0 : sal_Bool bRet = sal_True;
183 :
184 : try
185 : {
186 0 : if(xNode.is())
187 0 : xNode->getPropertyValue(s_sIsHelpTipsDisappear) >>= bRet;
188 : }
189 0 : catch(const css::uno::Exception& ex)
190 : {
191 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
192 : }
193 :
194 0 : return bRet;
195 : }
196 :
197 0 : bool SvtAccessibilityOptions_Impl::GetIsAllowAnimatedGraphics() const
198 : {
199 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
200 0 : sal_Bool bRet = sal_True;
201 :
202 : try
203 : {
204 0 : if(xNode.is())
205 0 : xNode->getPropertyValue(s_sIsAllowAnimatedGraphics) >>= bRet;
206 : }
207 0 : catch(const css::uno::Exception& ex)
208 : {
209 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
210 : }
211 :
212 0 : return bRet;
213 : }
214 :
215 0 : bool SvtAccessibilityOptions_Impl::GetIsAllowAnimatedText() const
216 : {
217 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
218 0 : sal_Bool bRet = sal_True;
219 :
220 : try
221 : {
222 0 : if(xNode.is())
223 0 : xNode->getPropertyValue(s_sIsAllowAnimatedText) >>= bRet;
224 : }
225 0 : catch(const css::uno::Exception& ex)
226 : {
227 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
228 : }
229 :
230 0 : return bRet;
231 : }
232 :
233 0 : bool SvtAccessibilityOptions_Impl::GetIsAutomaticFontColor() const
234 : {
235 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
236 0 : sal_Bool bRet = sal_False;
237 :
238 : try
239 : {
240 0 : if(xNode.is())
241 0 : xNode->getPropertyValue(s_sIsAutomaticFontColor) >>= bRet;
242 : }
243 0 : catch(const css::uno::Exception& ex)
244 : {
245 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
246 : }
247 :
248 0 : return bRet;
249 : }
250 :
251 0 : bool SvtAccessibilityOptions_Impl::GetIsSystemFont() const
252 : {
253 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
254 0 : sal_Bool bRet = sal_True;
255 :
256 : try
257 : {
258 0 : if(xNode.is())
259 0 : xNode->getPropertyValue(s_sIsSystemFont) >>= bRet;
260 : }
261 0 : catch(const css::uno::Exception& ex)
262 : {
263 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
264 : }
265 :
266 0 : return bRet;
267 : }
268 :
269 0 : sal_Int16 SvtAccessibilityOptions_Impl::GetHelpTipSeconds() const
270 : {
271 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
272 0 : sal_Int16 nRet = 4;
273 :
274 : try
275 : {
276 0 : if(xNode.is())
277 0 : xNode->getPropertyValue(s_sHelpTipSeconds) >>= nRet;
278 : }
279 0 : catch(const css::uno::Exception& ex)
280 : {
281 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
282 : }
283 :
284 0 : return nRet;
285 : }
286 :
287 0 : bool SvtAccessibilityOptions_Impl::IsSelectionInReadonly() const
288 : {
289 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
290 0 : sal_Bool bRet = sal_False;
291 :
292 : try
293 : {
294 0 : if(xNode.is())
295 0 : xNode->getPropertyValue(s_sIsSelectionInReadonly) >>= bRet;
296 : }
297 0 : catch(const css::uno::Exception& ex)
298 : {
299 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
300 : }
301 :
302 0 : return bRet;
303 : }
304 :
305 0 : sal_Int16 SvtAccessibilityOptions_Impl::GetEdgeBlending() const
306 : {
307 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
308 0 : sal_Int16 nRet = 35;
309 :
310 : try
311 : {
312 0 : if(xNode.is())
313 0 : xNode->getPropertyValue(s_sEdgeBlending) >>= nRet;
314 : }
315 0 : catch(const css::uno::Exception& ex)
316 : {
317 : SAL_WARN("svtools", "Caught unexpected: " << ex.Message);
318 : }
319 :
320 0 : return nRet;
321 : }
322 :
323 0 : sal_Int16 SvtAccessibilityOptions_Impl::GetListBoxMaximumLineCount() const
324 : {
325 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
326 0 : sal_Int16 nRet = 25;
327 :
328 : try
329 : {
330 0 : if(xNode.is())
331 0 : xNode->getPropertyValue(s_sListBoxMaximumLineCount) >>= nRet;
332 : }
333 0 : catch(const css::uno::Exception& ex)
334 : {
335 : SAL_WARN("svtools", "Caught unexpected: " << ex.Message);
336 : }
337 :
338 0 : return nRet;
339 : }
340 :
341 0 : sal_Int16 SvtAccessibilityOptions_Impl::GetColorValueSetColumnCount() const
342 : {
343 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
344 0 : sal_Int16 nRet = 12;
345 :
346 : try
347 : {
348 0 : if(xNode.is())
349 0 : xNode->getPropertyValue(s_sColorValueSetColumnCount) >>= nRet;
350 : }
351 0 : catch(const css::uno::Exception& ex)
352 : {
353 : SAL_WARN("svtools", "Caught unexpected: " << ex.Message);
354 : }
355 :
356 0 : return nRet;
357 : }
358 :
359 0 : bool SvtAccessibilityOptions_Impl::GetPreviewUsesCheckeredBackground() const
360 : {
361 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
362 0 : sal_Bool bRet = sal_False;
363 :
364 : try
365 : {
366 0 : if(xNode.is())
367 0 : xNode->getPropertyValue(s_sPreviewUsesCheckeredBackground) >>= bRet;
368 : }
369 0 : catch(const css::uno::Exception& ex)
370 : {
371 : SAL_WARN("svtools", "Caught unexpected: " << ex.Message);
372 : }
373 :
374 0 : return bRet;
375 : }
376 :
377 0 : void SvtAccessibilityOptions_Impl::SetAutoDetectSystemHC(bool bSet)
378 : {
379 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
380 :
381 : try
382 : {
383 0 : if(xNode.is() && xNode->getPropertyValue(s_sAutoDetectSystemHC)!=bSet)
384 : {
385 0 : xNode->setPropertyValue(s_sAutoDetectSystemHC, css::uno::makeAny(bSet));
386 0 : ::comphelper::ConfigurationHelper::flush(m_xCfg);
387 0 : svtools::ColorConfig().Reload();
388 0 : bIsModified = true;
389 : }
390 : }
391 0 : catch(const css::uno::Exception& ex)
392 : {
393 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
394 0 : }
395 0 : }
396 :
397 0 : void SvtAccessibilityOptions_Impl::SetIsForPagePreviews(bool bSet)
398 : {
399 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
400 :
401 : try
402 : {
403 0 : if(xNode.is() && xNode->getPropertyValue(s_sIsForPagePreviews)!=bSet)
404 : {
405 0 : xNode->setPropertyValue(s_sIsForPagePreviews, css::uno::makeAny(bSet));
406 0 : ::comphelper::ConfigurationHelper::flush(m_xCfg);
407 :
408 0 : bIsModified = true;
409 : }
410 : }
411 0 : catch(const css::uno::Exception& ex)
412 : {
413 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
414 0 : }
415 0 : }
416 :
417 0 : void SvtAccessibilityOptions_Impl::SetIsHelpTipsDisappear(bool bSet)
418 : {
419 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
420 :
421 : try
422 : {
423 0 : if(xNode.is() && xNode->getPropertyValue(s_sIsHelpTipsDisappear)!=bSet)
424 : {
425 0 : xNode->setPropertyValue(s_sIsHelpTipsDisappear, css::uno::makeAny(bSet));
426 0 : ::comphelper::ConfigurationHelper::flush(m_xCfg);
427 :
428 0 : bIsModified = true;
429 : }
430 : }
431 0 : catch(const css::uno::Exception& ex)
432 : {
433 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
434 0 : }
435 0 : }
436 :
437 0 : void SvtAccessibilityOptions_Impl::SetIsAllowAnimatedGraphics(bool bSet)
438 : {
439 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
440 :
441 : try
442 : {
443 0 : if(xNode.is() && xNode->getPropertyValue(s_sIsAllowAnimatedGraphics)!=bSet)
444 : {
445 0 : xNode->setPropertyValue(s_sIsAllowAnimatedGraphics, css::uno::makeAny(bSet));
446 0 : ::comphelper::ConfigurationHelper::flush(m_xCfg);
447 :
448 0 : bIsModified = true;
449 : }
450 : }
451 0 : catch(const css::uno::Exception& ex)
452 : {
453 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
454 0 : }
455 0 : }
456 :
457 0 : void SvtAccessibilityOptions_Impl::SetIsAllowAnimatedText(bool bSet)
458 : {
459 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
460 :
461 : try
462 : {
463 0 : if(xNode.is() && xNode->getPropertyValue(s_sIsAllowAnimatedText)!=bSet)
464 : {
465 0 : xNode->setPropertyValue(s_sIsAllowAnimatedText, css::uno::makeAny(bSet));
466 0 : ::comphelper::ConfigurationHelper::flush(m_xCfg);
467 :
468 0 : bIsModified = true;
469 : }
470 : }
471 0 : catch(const css::uno::Exception& ex)
472 : {
473 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
474 0 : }
475 0 : }
476 :
477 0 : void SvtAccessibilityOptions_Impl::SetIsAutomaticFontColor(bool bSet)
478 : {
479 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
480 :
481 : try
482 : {
483 0 : if(xNode.is() && xNode->getPropertyValue(s_sIsAutomaticFontColor)!=bSet)
484 : {
485 0 : xNode->setPropertyValue(s_sIsAutomaticFontColor, css::uno::makeAny(bSet));
486 0 : ::comphelper::ConfigurationHelper::flush(m_xCfg);
487 :
488 0 : bIsModified = true;
489 : }
490 : }
491 0 : catch(const css::uno::Exception& ex)
492 : {
493 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
494 0 : }
495 0 : }
496 :
497 0 : void SvtAccessibilityOptions_Impl::SetIsSystemFont(bool bSet)
498 : {
499 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
500 :
501 : try
502 : {
503 0 : if(xNode.is() && xNode->getPropertyValue(s_sIsSystemFont)!=bSet)
504 : {
505 0 : xNode->setPropertyValue(s_sIsSystemFont, css::uno::makeAny(bSet));
506 0 : ::comphelper::ConfigurationHelper::flush(m_xCfg);
507 :
508 0 : bIsModified = true;
509 : }
510 : }
511 0 : catch(const css::uno::Exception& ex)
512 : {
513 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
514 0 : }
515 0 : }
516 :
517 0 : void SvtAccessibilityOptions_Impl::SetHelpTipSeconds(sal_Int16 nSet)
518 : {
519 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
520 :
521 : try
522 : {
523 0 : if(xNode.is() && xNode->getPropertyValue(s_sHelpTipSeconds)!=nSet)
524 : {
525 0 : xNode->setPropertyValue(s_sHelpTipSeconds, css::uno::makeAny(nSet));
526 0 : ::comphelper::ConfigurationHelper::flush(m_xCfg);
527 :
528 0 : bIsModified = true;
529 : }
530 : }
531 0 : catch(const css::uno::Exception& ex)
532 : {
533 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
534 0 : }
535 0 : }
536 :
537 0 : void SvtAccessibilityOptions_Impl::SetSelectionInReadonly(bool bSet)
538 : {
539 0 : css::uno::Reference< css::beans::XPropertySet > xNode(m_xCfg, css::uno::UNO_QUERY);
540 :
541 : try
542 : {
543 0 : if(xNode.is() && xNode->getPropertyValue(s_sIsSelectionInReadonly)!=bSet)
544 : {
545 0 : xNode->setPropertyValue(s_sIsSelectionInReadonly, css::uno::makeAny(bSet));
546 0 : ::comphelper::ConfigurationHelper::flush(m_xCfg);
547 :
548 0 : bIsModified = true;
549 : }
550 : }
551 0 : catch(const css::uno::Exception& ex)
552 : {
553 : SAL_WARN("svtools.config", "Caught unexpected: " << ex.Message);
554 0 : }
555 0 : }
556 :
557 0 : void SvtAccessibilityOptions_Impl::SetVCLSettings()
558 : {
559 0 : AllSettings aAllSettings(Application::GetSettings());
560 0 : StyleSettings aStyleSettings(aAllSettings.GetStyleSettings());
561 0 : HelpSettings aHelpSettings(aAllSettings.GetHelpSettings());
562 0 : bool StyleSettingsChanged(false);
563 :
564 0 : aHelpSettings.SetTipTimeout( GetIsHelpTipsDisappear() ? GetHelpTipSeconds() * 1000 : HELP_TIP_TIMEOUT);
565 0 : aAllSettings.SetHelpSettings(aHelpSettings);
566 :
567 0 : if(aStyleSettings.GetUseSystemUIFonts() != GetIsSystemFont())
568 : {
569 0 : aStyleSettings.SetUseSystemUIFonts(GetIsSystemFont());
570 0 : StyleSettingsChanged = true;
571 : }
572 :
573 0 : const sal_Int16 nEdgeBlendingCountA(GetEdgeBlending());
574 : OSL_ENSURE(nEdgeBlendingCountA >= 0, "OOps, negative values for EdgeBlending are not allowed (!)");
575 0 : const sal_uInt16 nEdgeBlendingCountB(static_cast< sal_uInt16 >(nEdgeBlendingCountA >= 0 ? nEdgeBlendingCountA : 0));
576 :
577 0 : if(aStyleSettings.GetEdgeBlending() != nEdgeBlendingCountB)
578 : {
579 0 : aStyleSettings.SetEdgeBlending(nEdgeBlendingCountB);
580 0 : StyleSettingsChanged = true;
581 : }
582 :
583 0 : const sal_Int16 nMaxLineCountA(GetListBoxMaximumLineCount());
584 : OSL_ENSURE(nMaxLineCountA >= 0, "OOps, negative values for ListBoxMaximumLineCount are not allowed (!)");
585 0 : const sal_uInt16 nMaxLineCountB(static_cast< sal_uInt16 >(nMaxLineCountA >= 0 ? nMaxLineCountA : 0));
586 :
587 0 : if(aStyleSettings.GetListBoxMaximumLineCount() != nMaxLineCountB)
588 : {
589 0 : aStyleSettings.SetListBoxMaximumLineCount(nMaxLineCountB);
590 0 : StyleSettingsChanged = true;
591 : }
592 :
593 0 : const sal_Int16 nMaxColumnCountA(GetColorValueSetColumnCount());
594 : OSL_ENSURE(nMaxColumnCountA >= 0, "OOps, negative values for ColorValueSetColumnCount are not allowed (!)");
595 0 : const sal_uInt16 nMaxColumnCountB(static_cast< sal_uInt16 >(nMaxColumnCountA >= 0 ? nMaxColumnCountA : 0));
596 :
597 0 : if(aStyleSettings.GetColorValueSetColumnCount() != nMaxColumnCountB)
598 : {
599 0 : aStyleSettings.SetColorValueSetColumnCount(nMaxColumnCountB);
600 0 : StyleSettingsChanged = true;
601 : }
602 :
603 0 : const bool bPreviewUsesCheckeredBackground(GetPreviewUsesCheckeredBackground());
604 :
605 0 : if(aStyleSettings.GetPreviewUsesCheckeredBackground() != bPreviewUsesCheckeredBackground)
606 : {
607 0 : aStyleSettings.SetPreviewUsesCheckeredBackground(bPreviewUsesCheckeredBackground);
608 0 : StyleSettingsChanged = true;
609 : }
610 :
611 0 : if(StyleSettingsChanged)
612 : {
613 0 : aAllSettings.SetStyleSettings(aStyleSettings);
614 0 : Application::MergeSystemSettings(aAllSettings);
615 : }
616 :
617 0 : Application::SetSettings(aAllSettings);
618 0 : }
619 :
620 : // class SvtAccessibilityOptions --------------------------------------------------
621 :
622 0 : SvtAccessibilityOptions::SvtAccessibilityOptions()
623 : {
624 : {
625 0 : ::osl::MutexGuard aGuard( SingletonMutex::get() );
626 0 : if(!sm_pSingleImplConfig)
627 : {
628 0 : sm_pSingleImplConfig = new SvtAccessibilityOptions_Impl;
629 0 : svtools::ItemHolder2::holdConfigItem(E_ACCESSIBILITYOPTIONS);
630 : }
631 0 : ++sm_nAccessibilityRefCount;
632 : }
633 : //StartListening( *sm_pSingleImplConfig, sal_True );
634 0 : }
635 :
636 :
637 :
638 0 : SvtAccessibilityOptions::~SvtAccessibilityOptions()
639 : {
640 : //EndListening( *sm_pSingleImplConfig, sal_True );
641 0 : ::osl::MutexGuard aGuard( SingletonMutex::get() );
642 0 : if( !--sm_nAccessibilityRefCount )
643 : {
644 : //if( sm_pSingleImplConfig->IsModified() )
645 : // sm_pSingleImplConfig->Commit();
646 0 : DELETEZ( sm_pSingleImplConfig );
647 0 : }
648 0 : }
649 :
650 :
651 :
652 0 : void SvtAccessibilityOptions::Notify( SfxBroadcaster&, const SfxHint& rHint )
653 : {
654 0 : NotifyListeners(0);
655 0 : if ( rHint.IsA(TYPE(SfxSimpleHint)) )
656 : {
657 0 : if ( ((SfxSimpleHint&)rHint).GetId() == SFX_HINT_ACCESSIBILITY_CHANGED )
658 0 : SetVCLSettings();
659 : }
660 0 : }
661 :
662 :
663 :
664 0 : bool SvtAccessibilityOptions::IsModified() const
665 : {
666 0 : return sm_pSingleImplConfig->IsModified();
667 : }
668 0 : void SvtAccessibilityOptions::Commit()
669 : {
670 : //sm_pSingleImplConfig->Commit();
671 0 : }
672 :
673 :
674 :
675 0 : bool SvtAccessibilityOptions::GetAutoDetectSystemHC() const
676 : {
677 0 : return sm_pSingleImplConfig->GetAutoDetectSystemHC();
678 : }
679 0 : bool SvtAccessibilityOptions::GetIsForPagePreviews() const
680 : {
681 0 : return sm_pSingleImplConfig->GetIsForPagePreviews();
682 : }
683 0 : bool SvtAccessibilityOptions::GetIsHelpTipsDisappear() const
684 : {
685 0 : return sm_pSingleImplConfig->GetIsHelpTipsDisappear();
686 : }
687 0 : bool SvtAccessibilityOptions::GetIsAllowAnimatedGraphics() const
688 : {
689 0 : return sm_pSingleImplConfig->GetIsAllowAnimatedGraphics();
690 : }
691 0 : bool SvtAccessibilityOptions::GetIsAllowAnimatedText() const
692 : {
693 0 : return sm_pSingleImplConfig->GetIsAllowAnimatedText();
694 : }
695 0 : bool SvtAccessibilityOptions::GetIsAutomaticFontColor() const
696 : {
697 0 : return sm_pSingleImplConfig->GetIsAutomaticFontColor();
698 : }
699 0 : bool SvtAccessibilityOptions::GetIsSystemFont() const
700 : {
701 0 : return sm_pSingleImplConfig->GetIsSystemFont();
702 : }
703 0 : sal_Int16 SvtAccessibilityOptions::GetHelpTipSeconds() const
704 : {
705 0 : return sm_pSingleImplConfig->GetHelpTipSeconds();
706 : }
707 0 : bool SvtAccessibilityOptions::IsSelectionInReadonly() const
708 : {
709 0 : return sm_pSingleImplConfig->IsSelectionInReadonly();
710 : }
711 :
712 :
713 0 : void SvtAccessibilityOptions::SetAutoDetectSystemHC(bool bSet)
714 : {
715 0 : sm_pSingleImplConfig->SetAutoDetectSystemHC(bSet);
716 0 : }
717 0 : void SvtAccessibilityOptions::SetIsForPagePreviews(bool bSet)
718 : {
719 0 : sm_pSingleImplConfig->SetIsForPagePreviews(bSet);
720 0 : }
721 0 : void SvtAccessibilityOptions::SetIsHelpTipsDisappear(bool bSet)
722 : {
723 0 : sm_pSingleImplConfig->SetIsHelpTipsDisappear(bSet);
724 0 : }
725 0 : void SvtAccessibilityOptions::SetIsAllowAnimatedGraphics(bool bSet)
726 : {
727 0 : sm_pSingleImplConfig->SetIsAllowAnimatedGraphics(bSet);
728 0 : }
729 0 : void SvtAccessibilityOptions::SetIsAllowAnimatedText(bool bSet)
730 : {
731 0 : sm_pSingleImplConfig->SetIsAllowAnimatedText(bSet);
732 0 : }
733 0 : void SvtAccessibilityOptions::SetIsAutomaticFontColor(bool bSet)
734 : {
735 0 : sm_pSingleImplConfig->SetIsAutomaticFontColor(bSet);
736 0 : }
737 0 : void SvtAccessibilityOptions::SetIsSystemFont(bool bSet)
738 : {
739 0 : sm_pSingleImplConfig->SetIsSystemFont(bSet);
740 0 : }
741 0 : void SvtAccessibilityOptions::SetHelpTipSeconds(sal_Int16 nSet)
742 : {
743 0 : sm_pSingleImplConfig->SetHelpTipSeconds(nSet);
744 0 : }
745 0 : void SvtAccessibilityOptions::SetSelectionInReadonly(bool bSet)
746 : {
747 0 : sm_pSingleImplConfig->SetSelectionInReadonly(bSet);
748 0 : }
749 0 : void SvtAccessibilityOptions::SetVCLSettings()
750 : {
751 0 : sm_pSingleImplConfig->SetVCLSettings();
752 0 : }
753 :
754 :
755 :
756 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|