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 : #include <config_folders.h>
21 :
22 : #include <officecfg/Office/Common.hxx>
23 :
24 : #ifdef WNT
25 : #include "win/svsys.h"
26 : #endif
27 :
28 : #include "comphelper/processfactory.hxx"
29 : #include <rtl/bootstrap.hxx>
30 : #include "tools/debug.hxx"
31 :
32 : #include "i18nlangtag/mslangid.hxx"
33 : #include "i18nlangtag/languagetag.hxx"
34 :
35 : #include <comphelper/lok.hxx>
36 :
37 : #include <vcl/graphicfilter.hxx>
38 : #include <vcl/IconThemeScanner.hxx>
39 : #include <vcl/IconThemeSelector.hxx>
40 : #include <vcl/IconThemeInfo.hxx>
41 : #include <vcl/svapp.hxx>
42 : #include <vcl/event.hxx>
43 : #include <vcl/settings.hxx>
44 : #include <vcl/i18nhelp.hxx>
45 : #include <vcl/configsettings.hxx>
46 : #include <vcl/gradient.hxx>
47 : #include <vcl/outdev.hxx>
48 :
49 : #include "unotools/fontcfg.hxx"
50 : #include "unotools/localedatawrapper.hxx"
51 : #include "unotools/collatorwrapper.hxx"
52 : #include "unotools/confignode.hxx"
53 : #include "unotools/syslocaleoptions.hxx"
54 :
55 : using namespace ::com::sun::star;
56 :
57 : #include "svdata.hxx"
58 : #include "impimagetree.hxx"
59 :
60 : struct ImplMouseData
61 : {
62 : ImplMouseData();
63 : ImplMouseData( const ImplMouseData& rData );
64 :
65 : MouseSettingsOptions mnOptions;
66 : sal_uInt64 mnDoubleClkTime;
67 : long mnDoubleClkWidth;
68 : long mnDoubleClkHeight;
69 : long mnStartDragWidth;
70 : long mnStartDragHeight;
71 : sal_uInt16 mnStartDragCode;
72 : sal_uInt16 mnContextMenuCode;
73 : sal_uInt16 mnContextMenuClicks;
74 : sal_uLong mnScrollRepeat;
75 : sal_uLong mnButtonStartRepeat;
76 : sal_uLong mnButtonRepeat;
77 : sal_uLong mnActionDelay;
78 : sal_uLong mnMenuDelay;
79 : MouseFollowFlags mnFollow;
80 : MouseMiddleButtonAction mnMiddleButtonAction;
81 : MouseWheelBehaviour mnWheelBehavior;
82 : };
83 :
84 47296 : struct ImplStyleData
85 : {
86 : ImplStyleData();
87 : ImplStyleData( const ImplStyleData& rData );
88 :
89 : void SetStandardStyles();
90 :
91 : Color maActiveBorderColor;
92 : Color maActiveColor;
93 : Color maActiveTextColor;
94 : Color maAlternatingRowColor;
95 : Color maButtonTextColor;
96 : Color maButtonRolloverTextColor;
97 : Color maCheckedColor;
98 : Color maDarkShadowColor;
99 : Color maDeactiveBorderColor;
100 : Color maDeactiveColor;
101 : Color maDeactiveTextColor;
102 : Color maDialogColor;
103 : Color maDialogTextColor;
104 : Color maDisableColor;
105 : Color maFaceColor;
106 : Color maFieldColor;
107 : Color maFieldTextColor;
108 : Color maFieldRolloverTextColor;
109 : Color maFontColor;
110 : Color maGroupTextColor;
111 : Color maHelpColor;
112 : Color maHelpTextColor;
113 : Color maHighlightColor;
114 : Color maHighlightLinkColor;
115 : Color maHighlightTextColor;
116 : Color maInfoTextColor;
117 : Color maLabelTextColor;
118 : Color maLightBorderColor;
119 : Color maLightColor;
120 : Color maLinkColor;
121 : Color maMenuBarColor;
122 : Color maMenuBarRolloverColor;
123 : Color maMenuBorderColor;
124 : Color maMenuColor;
125 : Color maMenuHighlightColor;
126 : Color maMenuHighlightTextColor;
127 : Color maMenuTextColor;
128 : Color maMenuBarTextColor;
129 : Color maMenuBarRolloverTextColor;
130 : Color maMenuBarHighlightTextColor;
131 : Color maMonoColor;
132 : Color maRadioCheckTextColor;
133 : Color maShadowColor;
134 : Color maVisitedLinkColor;
135 : Color maWindowColor;
136 : Color maWindowTextColor;
137 : Color maWorkspaceColor;
138 : Color maActiveTabColor;
139 : Color maInactiveTabColor;
140 : Color maTabTextColor;
141 : Color maTabRolloverTextColor;
142 : Color maTabHighlightTextColor;
143 : vcl::Font maAppFont;
144 : vcl::Font maHelpFont;
145 : vcl::Font maTitleFont;
146 : vcl::Font maFloatTitleFont;
147 : vcl::Font maMenuFont;
148 : vcl::Font maToolFont;
149 : vcl::Font maLabelFont;
150 : vcl::Font maInfoFont;
151 : vcl::Font maRadioCheckFont;
152 : vcl::Font maPushButtonFont;
153 : vcl::Font maFieldFont;
154 : vcl::Font maIconFont;
155 : vcl::Font maTabFont;
156 : vcl::Font maGroupFont;
157 : long mnBorderSize;
158 : long mnTitleHeight;
159 : long mnFloatTitleHeight;
160 : long mnTearOffTitleHeight;
161 : long mnScrollBarSize;
162 : long mnSplitSize;
163 : long mnSpinSize;
164 : long mnCursorSize;
165 : long mnAntialiasedMin;
166 : sal_uInt64 mnCursorBlinkTime;
167 : DragFullOptions mnDragFullOptions;
168 : SelectionOptions mnSelectionOptions;
169 : DisplayOptions mnDisplayOptions;
170 : ToolbarIconSize mnToolbarIconSize;
171 : bool mnUseFlatMenus;
172 : StyleSettingsOptions mnOptions;
173 : sal_uInt16 mnScreenZoom;
174 : sal_uInt16 mnScreenFontZoom;
175 : bool mbHighContrast;
176 : bool mbUseSystemUIFonts;
177 : bool mbAutoMnemonic;
178 : TriState meUseImagesInMenus;
179 : bool mnUseFlatBorders;
180 : bool mbPreferredUseImagesInMenus;
181 : long mnMinThumbSize;
182 : std::shared_ptr<vcl::IconThemeScanner>
183 : mIconThemeScanner;
184 : std::shared_ptr<vcl::IconThemeSelector>
185 : mIconThemeSelector;
186 :
187 : rtl::OUString mIconTheme;
188 : bool mbSkipDisabledInMenus;
189 : bool mbHideDisabledMenuItems;
190 : bool mbAcceleratorsInContextMenus;
191 : //mbPrimaryButtonWarpsSlider == true for "jump to here" behavior for primary button, otherwise
192 : //primary means scroll by single page. Secondary button takes the alternative behaviour
193 : bool mbPrimaryButtonWarpsSlider;
194 : DialogStyle maDialogStyle;
195 : FrameStyle maFrameStyle;
196 : const void* mpFontOptions;
197 :
198 : sal_uInt16 mnEdgeBlending;
199 : Color maEdgeBlendingTopLeftColor;
200 : Color maEdgeBlendingBottomRightColor;
201 : sal_uInt16 mnListBoxMaximumLineCount;
202 : sal_uInt16 mnColorValueSetColumnCount;
203 : sal_uInt16 mnColorValueSetMaximumRowCount;
204 : Size maListBoxPreviewDefaultLogicSize;
205 : Size maListBoxPreviewDefaultPixelSize;
206 : sal_uInt16 mnListBoxPreviewDefaultLineWidth;
207 : bool mbPreviewUsesCheckeredBackground;
208 :
209 : OUString maPersonaHeaderFooter; ///< Cache the settings to detect changes.
210 :
211 : BitmapEx maPersonaHeaderBitmap; ///< Cache the header bitmap.
212 : BitmapEx maPersonaFooterBitmap; ///< Cache the footer bitmap.
213 : boost::optional<Color> maPersonaMenuBarTextColor; ///< Cache the menubar color.
214 : };
215 :
216 : struct ImplMiscData
217 : {
218 : ImplMiscData();
219 : ImplMiscData( const ImplMiscData& rData );
220 : TriState mnEnableATT;
221 : bool mbEnableLocalizedDecimalSep;
222 : TriState mnDisablePrinting;
223 : bool mbPseudoHeadless;
224 : };
225 :
226 : struct ImplHelpData
227 : {
228 : ImplHelpData();
229 : ImplHelpData( const ImplHelpData& rData );
230 :
231 : sal_uLong mnTipDelay;
232 : sal_uLong mnTipTimeout;
233 : sal_uLong mnBalloonDelay;
234 : };
235 :
236 : struct ImplAllSettingsData
237 : {
238 : ImplAllSettingsData();
239 : ImplAllSettingsData( const ImplAllSettingsData& rData );
240 : ~ImplAllSettingsData();
241 :
242 : MouseSettings maMouseSettings;
243 : StyleSettings maStyleSettings;
244 : MiscSettings maMiscSettings;
245 : HelpSettings maHelpSettings;
246 : LanguageTag maLocale;
247 : AllSettingsFlags mnWindowUpdate;
248 : LanguageTag maUILocale;
249 : LocaleDataWrapper* mpLocaleDataWrapper;
250 : LocaleDataWrapper* mpUILocaleDataWrapper;
251 : vcl::I18nHelper* mpI18nHelper;
252 : vcl::I18nHelper* mpUII18nHelper;
253 : SvtSysLocale maSysLocale;
254 : };
255 :
256 422 : ImplMouseData::ImplMouseData()
257 : {
258 422 : mnOptions = MouseSettingsOptions::NONE;
259 422 : mnDoubleClkTime = 500;
260 422 : mnDoubleClkWidth = 2;
261 422 : mnDoubleClkHeight = 2;
262 422 : mnStartDragWidth = 2;
263 422 : mnStartDragHeight = 2;
264 422 : mnStartDragCode = MOUSE_LEFT;
265 422 : mnContextMenuCode = MOUSE_RIGHT;
266 422 : mnContextMenuClicks = 1;
267 422 : mnMiddleButtonAction = MouseMiddleButtonAction::AutoScroll;
268 422 : mnScrollRepeat = 100;
269 422 : mnButtonStartRepeat = 370;
270 422 : mnButtonRepeat = 90;
271 422 : mnActionDelay = 250;
272 422 : mnMenuDelay = 150;
273 422 : mnFollow = MouseFollowFlags::Menu | MouseFollowFlags::DDList;
274 422 : mnWheelBehavior = MouseWheelBehaviour::ALWAYS;
275 422 : }
276 :
277 3560 : ImplMouseData::ImplMouseData( const ImplMouseData& rData )
278 : {
279 3560 : mnOptions = rData.mnOptions;
280 3560 : mnDoubleClkTime = rData.mnDoubleClkTime;
281 3560 : mnDoubleClkWidth = rData.mnDoubleClkWidth;
282 3560 : mnDoubleClkHeight = rData.mnDoubleClkHeight;
283 3560 : mnStartDragWidth = rData.mnStartDragWidth;
284 3560 : mnStartDragHeight = rData.mnStartDragHeight;
285 3560 : mnStartDragCode = rData.mnStartDragCode;
286 3560 : mnContextMenuCode = rData.mnContextMenuCode;
287 3560 : mnContextMenuClicks = rData.mnContextMenuClicks;
288 3560 : mnMiddleButtonAction = rData.mnMiddleButtonAction;
289 3560 : mnScrollRepeat = rData.mnScrollRepeat;
290 3560 : mnButtonStartRepeat = rData.mnButtonStartRepeat;
291 3560 : mnButtonRepeat = rData.mnButtonRepeat;
292 3560 : mnActionDelay = rData.mnActionDelay;
293 3560 : mnMenuDelay = rData.mnMenuDelay;
294 3560 : mnFollow = rData.mnFollow;
295 3560 : mnWheelBehavior = rData.mnWheelBehavior;
296 3560 : }
297 :
298 : void
299 116 : MouseSettings::SetOptions(MouseSettingsOptions nOptions)
300 : {
301 116 : CopyData();
302 116 : mxData->mnOptions = nOptions;
303 116 : }
304 :
305 : MouseSettingsOptions
306 121 : MouseSettings::GetOptions() const
307 : {
308 121 : return mxData->mnOptions;
309 : }
310 :
311 : void
312 11 : MouseSettings::SetDoubleClickTime( sal_uInt64 nDoubleClkTime )
313 : {
314 11 : CopyData();
315 11 : mxData->mnDoubleClkTime = nDoubleClkTime;
316 11 : }
317 :
318 : sal_uInt64
319 571 : MouseSettings::GetDoubleClickTime() const
320 : {
321 571 : return mxData->mnDoubleClkTime;
322 : }
323 :
324 : void
325 11 : MouseSettings::SetDoubleClickWidth( long nDoubleClkWidth )
326 : {
327 11 : CopyData();
328 11 : mxData->mnDoubleClkWidth = nDoubleClkWidth;
329 11 : }
330 :
331 : long
332 0 : MouseSettings::GetDoubleClickWidth() const
333 : {
334 0 : return mxData->mnDoubleClkWidth;
335 : }
336 :
337 : void
338 11 : MouseSettings::SetDoubleClickHeight( long nDoubleClkHeight )
339 : {
340 11 : CopyData();
341 11 : mxData->mnDoubleClkHeight = nDoubleClkHeight;
342 11 : }
343 :
344 : long
345 0 : MouseSettings::GetDoubleClickHeight() const
346 : {
347 0 : return mxData->mnDoubleClkHeight;
348 : }
349 :
350 : void
351 11 : MouseSettings::SetStartDragWidth( long nDragWidth )
352 : {
353 11 : CopyData();
354 11 : mxData->mnStartDragWidth = nDragWidth;
355 11 : }
356 :
357 : long
358 0 : MouseSettings::GetStartDragWidth() const
359 : {
360 0 : return mxData->mnStartDragWidth;
361 : }
362 :
363 : void
364 11 : MouseSettings::SetStartDragHeight( long nDragHeight )
365 : {
366 11 : CopyData();
367 11 : mxData->mnStartDragHeight = nDragHeight;
368 11 : }
369 :
370 : long
371 0 : MouseSettings::GetStartDragHeight() const
372 : {
373 0 : return mxData->mnStartDragHeight;
374 : }
375 :
376 : sal_uInt16
377 0 : MouseSettings::GetStartDragCode() const
378 : {
379 0 : return mxData->mnStartDragCode;
380 : }
381 :
382 : sal_uInt16
383 0 : MouseSettings::GetContextMenuCode() const
384 : {
385 0 : return mxData->mnContextMenuCode;
386 : }
387 :
388 : sal_uInt16
389 0 : MouseSettings::GetContextMenuClicks() const
390 : {
391 0 : return mxData->mnContextMenuClicks;
392 : }
393 :
394 : sal_uLong
395 0 : MouseSettings::GetScrollRepeat() const
396 : {
397 0 : return mxData->mnScrollRepeat;
398 : }
399 :
400 : sal_uLong
401 2194 : MouseSettings::GetButtonStartRepeat() const
402 : {
403 2194 : return mxData->mnButtonStartRepeat;
404 : }
405 :
406 : void
407 236 : MouseSettings::SetButtonRepeat( sal_uLong nRepeat )
408 : {
409 236 : CopyData();
410 236 : mxData->mnButtonRepeat = nRepeat;
411 236 : }
412 :
413 : sal_uLong
414 20 : MouseSettings::GetButtonRepeat() const
415 : {
416 20 : return mxData->mnButtonRepeat;
417 : }
418 :
419 : sal_uLong
420 0 : MouseSettings::GetActionDelay() const
421 : {
422 0 : return mxData->mnActionDelay;
423 : }
424 :
425 : void
426 27 : MouseSettings::SetMenuDelay( sal_uLong nDelay )
427 : {
428 27 : CopyData();
429 27 : mxData->mnMenuDelay = nDelay;
430 27 : }
431 :
432 : sal_uLong
433 24 : MouseSettings::GetMenuDelay() const
434 : {
435 24 : return mxData->mnMenuDelay;
436 : }
437 :
438 : void
439 232 : MouseSettings::SetFollow( MouseFollowFlags nFollow )
440 : {
441 232 : CopyData();
442 232 : mxData->mnFollow = nFollow;
443 232 : }
444 :
445 : MouseFollowFlags
446 232 : MouseSettings::GetFollow() const
447 : {
448 232 : return mxData->mnFollow;
449 : }
450 :
451 : void
452 116 : MouseSettings::SetMiddleButtonAction( MouseMiddleButtonAction nAction )
453 : {
454 116 : CopyData();
455 116 : mxData->mnMiddleButtonAction = nAction;
456 116 : }
457 :
458 : MouseMiddleButtonAction
459 0 : MouseSettings::GetMiddleButtonAction() const
460 : {
461 0 : return mxData->mnMiddleButtonAction;
462 : }
463 :
464 : void
465 3065 : MouseSettings::SetWheelBehavior( MouseWheelBehaviour nBehavior )
466 : {
467 3065 : CopyData();
468 3065 : mxData->mnWheelBehavior = nBehavior;
469 3065 : }
470 :
471 : MouseWheelBehaviour
472 2856 : MouseSettings::GetWheelBehavior() const
473 : {
474 2856 : return mxData->mnWheelBehavior;
475 : }
476 :
477 : bool
478 0 : MouseSettings::operator !=( const MouseSettings& rSet ) const
479 : {
480 0 : return !(*this == rSet);
481 : }
482 :
483 422 : MouseSettings::MouseSettings()
484 422 : : mxData(std::make_shared<ImplMouseData>())
485 : {
486 422 : }
487 :
488 51512 : MouseSettings::~MouseSettings()
489 : {
490 51512 : }
491 :
492 3847 : void MouseSettings::CopyData()
493 : {
494 : // copy if other references exist
495 3847 : if ( ! mxData.unique() ) {
496 3560 : mxData = std::make_shared<ImplMouseData>(*mxData);
497 : }
498 3847 : }
499 :
500 0 : bool MouseSettings::operator ==( const MouseSettings& rSet ) const
501 : {
502 0 : if ( mxData == rSet.mxData )
503 0 : return true;
504 :
505 0 : if ( (mxData->mnOptions == rSet.mxData->mnOptions) &&
506 0 : (mxData->mnDoubleClkTime == rSet.mxData->mnDoubleClkTime) &&
507 0 : (mxData->mnDoubleClkWidth == rSet.mxData->mnDoubleClkWidth) &&
508 0 : (mxData->mnDoubleClkHeight == rSet.mxData->mnDoubleClkHeight) &&
509 0 : (mxData->mnStartDragWidth == rSet.mxData->mnStartDragWidth) &&
510 0 : (mxData->mnStartDragHeight == rSet.mxData->mnStartDragHeight) &&
511 0 : (mxData->mnStartDragCode == rSet.mxData->mnStartDragCode) &&
512 0 : (mxData->mnContextMenuCode == rSet.mxData->mnContextMenuCode) &&
513 0 : (mxData->mnContextMenuClicks == rSet.mxData->mnContextMenuClicks) &&
514 0 : (mxData->mnMiddleButtonAction == rSet.mxData->mnMiddleButtonAction) &&
515 0 : (mxData->mnScrollRepeat == rSet.mxData->mnScrollRepeat) &&
516 0 : (mxData->mnButtonStartRepeat == rSet.mxData->mnButtonStartRepeat) &&
517 0 : (mxData->mnButtonRepeat == rSet.mxData->mnButtonRepeat) &&
518 0 : (mxData->mnActionDelay == rSet.mxData->mnActionDelay) &&
519 0 : (mxData->mnMenuDelay == rSet.mxData->mnMenuDelay) &&
520 0 : (mxData->mnFollow == rSet.mxData->mnFollow) &&
521 0 : (mxData->mnWheelBehavior == rSet.mxData->mnWheelBehavior ) )
522 0 : return true;
523 : else
524 0 : return false;
525 : }
526 :
527 422 : ImplStyleData::ImplStyleData() :
528 : mIconThemeScanner(vcl::IconThemeScanner::Create(vcl::IconThemeScanner::GetStandardIconThemePath())),
529 0 : mIconThemeSelector(new vcl::IconThemeSelector()),
530 : maPersonaHeaderFooter(),
531 : maPersonaHeaderBitmap(),
532 : maPersonaFooterBitmap(),
533 422 : maPersonaMenuBarTextColor()
534 : {
535 422 : mnScrollBarSize = 16;
536 422 : mnMinThumbSize = 16;
537 422 : mnSplitSize = 3;
538 422 : mnSpinSize = 16;
539 422 : mnAntialiasedMin = 0;
540 422 : mnCursorSize = 2;
541 422 : mnCursorBlinkTime = STYLE_CURSOR_NOBLINKTIME;
542 422 : mnScreenZoom = 100;
543 422 : mnScreenFontZoom = 100;
544 422 : mnDragFullOptions = DragFullOptions::All;
545 422 : mnSelectionOptions = SelectionOptions::NONE;
546 422 : mnDisplayOptions = DisplayOptions::NONE;
547 422 : mnOptions = StyleSettingsOptions::NONE;
548 422 : mbAutoMnemonic = true;
549 422 : mnToolbarIconSize = ToolbarIconSize::Unknown;
550 422 : meUseImagesInMenus = TRISTATE_INDET;
551 422 : mpFontOptions = NULL;
552 422 : mnEdgeBlending = 35;
553 422 : maEdgeBlendingTopLeftColor = RGB_COLORDATA(0xC0, 0xC0, 0xC0);
554 422 : maEdgeBlendingBottomRightColor = RGB_COLORDATA(0x40, 0x40, 0x40);
555 422 : mnListBoxMaximumLineCount = 25;
556 422 : mnColorValueSetColumnCount = 12;
557 422 : mnColorValueSetMaximumRowCount = 20;
558 422 : maListBoxPreviewDefaultLogicSize = Size(15, 7);
559 422 : maListBoxPreviewDefaultPixelSize = Size(0, 0); // on-demand calculated in GetListBoxPreviewDefaultPixelSize()
560 422 : mnListBoxPreviewDefaultLineWidth = 1;
561 422 : mbPreviewUsesCheckeredBackground = true;
562 :
563 422 : SetStandardStyles();
564 422 : }
565 :
566 49894 : ImplStyleData::ImplStyleData( const ImplStyleData& rData ) :
567 : maActiveBorderColor( rData.maActiveBorderColor ),
568 : maActiveColor( rData.maActiveColor ),
569 : maActiveTextColor( rData.maActiveTextColor ),
570 : maAlternatingRowColor( rData.maAlternatingRowColor ),
571 : maButtonTextColor( rData.maButtonTextColor ),
572 : maButtonRolloverTextColor( rData.maButtonRolloverTextColor ),
573 : maCheckedColor( rData.maCheckedColor ),
574 : maDarkShadowColor( rData.maDarkShadowColor ),
575 : maDeactiveBorderColor( rData.maDeactiveBorderColor ),
576 : maDeactiveColor( rData.maDeactiveColor ),
577 : maDeactiveTextColor( rData.maDeactiveTextColor ),
578 : maDialogColor( rData.maDialogColor ),
579 : maDialogTextColor( rData.maDialogTextColor ),
580 : maDisableColor( rData.maDisableColor ),
581 : maFaceColor( rData.maFaceColor ),
582 : maFieldColor( rData.maFieldColor ),
583 : maFieldTextColor( rData.maFieldTextColor ),
584 : maFieldRolloverTextColor( rData.maFieldRolloverTextColor ),
585 : maFontColor( rData.maFontColor ),
586 : maGroupTextColor( rData.maGroupTextColor ),
587 : maHelpColor( rData.maHelpColor ),
588 : maHelpTextColor( rData.maHelpTextColor ),
589 : maHighlightColor( rData.maHighlightColor ),
590 : maHighlightLinkColor( rData.maHighlightLinkColor ),
591 : maHighlightTextColor( rData.maHighlightTextColor ),
592 : maInfoTextColor( rData.maInfoTextColor ),
593 : maLabelTextColor( rData.maLabelTextColor ),
594 : maLightBorderColor( rData.maLightBorderColor ),
595 : maLightColor( rData.maLightColor ),
596 : maLinkColor( rData.maLinkColor ),
597 : maMenuBarColor( rData.maMenuBarColor ),
598 : maMenuBarRolloverColor( rData.maMenuBarRolloverColor ),
599 : maMenuBorderColor( rData.maMenuBorderColor ),
600 : maMenuColor( rData.maMenuColor ),
601 : maMenuHighlightColor( rData.maMenuHighlightColor ),
602 : maMenuHighlightTextColor( rData.maMenuHighlightTextColor ),
603 : maMenuTextColor( rData.maMenuTextColor ),
604 : maMenuBarTextColor( rData.maMenuBarTextColor ),
605 : maMenuBarRolloverTextColor( rData.maMenuBarRolloverTextColor ),
606 : maMenuBarHighlightTextColor( rData.maMenuBarHighlightTextColor ),
607 : maMonoColor( rData.maMonoColor ),
608 : maRadioCheckTextColor( rData.maRadioCheckTextColor ),
609 : maShadowColor( rData.maShadowColor ),
610 : maVisitedLinkColor( rData.maVisitedLinkColor ),
611 : maWindowColor( rData.maWindowColor ),
612 : maWindowTextColor( rData.maWindowTextColor ),
613 : maWorkspaceColor( rData.maWorkspaceColor ),
614 : maActiveTabColor( rData.maActiveTabColor ),
615 : maInactiveTabColor( rData.maInactiveTabColor ),
616 : maTabTextColor( rData.maTabTextColor ),
617 : maTabRolloverTextColor( rData.maTabRolloverTextColor ),
618 : maTabHighlightTextColor( rData.maTabHighlightTextColor ),
619 : maAppFont( rData.maAppFont ),
620 : maHelpFont( rData.maAppFont ),
621 : maTitleFont( rData.maTitleFont ),
622 : maFloatTitleFont( rData.maFloatTitleFont ),
623 : maMenuFont( rData.maMenuFont ),
624 : maToolFont( rData.maToolFont ),
625 : maLabelFont( rData.maLabelFont ),
626 : maInfoFont( rData.maInfoFont ),
627 : maRadioCheckFont( rData.maRadioCheckFont ),
628 : maPushButtonFont( rData.maPushButtonFont ),
629 : maFieldFont( rData.maFieldFont ),
630 : maIconFont( rData.maIconFont ),
631 : maTabFont( rData.maTabFont ),
632 : maGroupFont( rData.maGroupFont ),
633 : mIconTheme(rData.mIconTheme),
634 : maDialogStyle( rData.maDialogStyle ),
635 : maFrameStyle( rData.maFrameStyle ),
636 : maPersonaHeaderFooter( rData.maPersonaHeaderFooter ),
637 : maPersonaHeaderBitmap( rData.maPersonaHeaderBitmap ),
638 : maPersonaFooterBitmap( rData.maPersonaFooterBitmap ),
639 49894 : maPersonaMenuBarTextColor( rData.maPersonaMenuBarTextColor )
640 : {
641 49894 : mnBorderSize = rData.mnBorderSize;
642 49894 : mnTitleHeight = rData.mnTitleHeight;
643 49894 : mnFloatTitleHeight = rData.mnFloatTitleHeight;
644 49894 : mnTearOffTitleHeight = rData.mnTearOffTitleHeight;
645 49894 : mnScrollBarSize = rData.mnScrollBarSize;
646 49894 : mnMinThumbSize = rData.mnMinThumbSize;
647 49894 : mnSplitSize = rData.mnSplitSize;
648 49894 : mnSpinSize = rData.mnSpinSize;
649 49894 : mnAntialiasedMin = rData.mnAntialiasedMin;
650 49894 : mnCursorSize = rData.mnCursorSize;
651 49894 : mnCursorBlinkTime = rData.mnCursorBlinkTime;
652 49894 : mnScreenZoom = rData.mnScreenZoom;
653 49894 : mnScreenFontZoom = rData.mnScreenFontZoom;
654 49894 : mnDragFullOptions = rData.mnDragFullOptions;
655 49894 : mnSelectionOptions = rData.mnSelectionOptions;
656 49894 : mnDisplayOptions = rData.mnDisplayOptions;
657 49894 : mnOptions = rData.mnOptions;
658 49894 : mbHighContrast = rData.mbHighContrast;
659 49894 : mbUseSystemUIFonts = rData.mbUseSystemUIFonts;
660 49894 : mnUseFlatBorders = rData.mnUseFlatBorders;
661 49894 : mnUseFlatMenus = rData.mnUseFlatMenus;
662 49894 : mbAutoMnemonic = rData.mbAutoMnemonic;
663 49894 : meUseImagesInMenus = rData.meUseImagesInMenus;
664 49894 : mbPreferredUseImagesInMenus = rData.mbPreferredUseImagesInMenus;
665 49894 : mbSkipDisabledInMenus = rData.mbSkipDisabledInMenus;
666 49894 : mbHideDisabledMenuItems = rData.mbHideDisabledMenuItems;
667 49894 : mbAcceleratorsInContextMenus = rData.mbAcceleratorsInContextMenus;
668 49894 : mbPrimaryButtonWarpsSlider = rData.mbPrimaryButtonWarpsSlider;
669 49894 : mnToolbarIconSize = rData.mnToolbarIconSize;
670 49894 : mIconThemeScanner.reset(new vcl::IconThemeScanner(*rData.mIconThemeScanner));
671 49894 : mIconThemeSelector.reset(new vcl::IconThemeSelector(*rData.mIconThemeSelector));
672 49894 : mpFontOptions = rData.mpFontOptions;
673 49894 : mnEdgeBlending = rData.mnEdgeBlending;
674 49894 : maEdgeBlendingTopLeftColor = rData.maEdgeBlendingTopLeftColor;
675 49894 : maEdgeBlendingBottomRightColor = rData.maEdgeBlendingBottomRightColor;
676 49894 : mnListBoxMaximumLineCount = rData.mnListBoxMaximumLineCount;
677 49894 : mnColorValueSetColumnCount = rData.mnColorValueSetColumnCount;
678 49894 : mnColorValueSetMaximumRowCount = rData.mnColorValueSetMaximumRowCount;
679 49894 : maListBoxPreviewDefaultLogicSize = rData.maListBoxPreviewDefaultLogicSize;
680 49894 : maListBoxPreviewDefaultPixelSize = rData.maListBoxPreviewDefaultPixelSize;
681 49894 : mnListBoxPreviewDefaultLineWidth = rData.mnListBoxPreviewDefaultLineWidth;
682 49894 : mbPreviewUsesCheckeredBackground = rData.mbPreviewUsesCheckeredBackground;
683 49894 : }
684 :
685 538 : void ImplStyleData::SetStandardStyles()
686 : {
687 538 : vcl::Font aStdFont( FAMILY_SWISS, Size( 0, 8 ) );
688 538 : aStdFont.SetCharSet( osl_getThreadTextEncoding() );
689 538 : aStdFont.SetWeight( WEIGHT_NORMAL );
690 538 : aStdFont.SetName( utl::DefaultFontConfiguration::get().getUserInterfaceFont( LanguageTag("en")) );
691 538 : maAppFont = aStdFont;
692 538 : maHelpFont = aStdFont;
693 538 : maMenuFont = aStdFont;
694 538 : maToolFont = aStdFont;
695 538 : maGroupFont = aStdFont;
696 538 : maLabelFont = aStdFont;
697 538 : maInfoFont = aStdFont;
698 538 : maRadioCheckFont = aStdFont;
699 538 : maPushButtonFont = aStdFont;
700 538 : maFieldFont = aStdFont;
701 538 : maIconFont = aStdFont;
702 538 : maTabFont = aStdFont;
703 538 : aStdFont.SetWeight( WEIGHT_BOLD );
704 538 : maFloatTitleFont = aStdFont;
705 538 : maTitleFont = aStdFont;
706 :
707 538 : maFaceColor = Color( COL_LIGHTGRAY );
708 538 : maCheckedColor = Color( 0xCC, 0xCC, 0xCC );
709 538 : maLightColor = Color( COL_WHITE );
710 538 : maLightBorderColor = Color( COL_LIGHTGRAY );
711 538 : maShadowColor = Color( COL_GRAY );
712 538 : maDarkShadowColor = Color( COL_BLACK );
713 538 : maButtonTextColor = Color( COL_BLACK );
714 538 : maButtonRolloverTextColor = Color( COL_BLACK );
715 538 : maRadioCheckTextColor = Color( COL_BLACK );
716 538 : maGroupTextColor = Color( COL_BLACK );
717 538 : maLabelTextColor = Color( COL_BLACK );
718 538 : maInfoTextColor = Color( COL_BLACK );
719 538 : maWindowColor = Color( COL_WHITE );
720 538 : maWindowTextColor = Color( COL_BLACK );
721 538 : maDialogColor = Color( COL_LIGHTGRAY );
722 538 : maDialogTextColor = Color( COL_BLACK );
723 538 : maWorkspaceColor = Color( 0xDF, 0xDF, 0xDE );
724 538 : maMonoColor = Color( COL_BLACK );
725 538 : maFieldColor = Color( COL_WHITE );
726 538 : maFieldTextColor = Color( COL_BLACK );
727 538 : maFieldRolloverTextColor = Color( COL_BLACK );
728 538 : maActiveColor = Color( COL_BLUE );
729 538 : maActiveTextColor = Color( COL_WHITE );
730 538 : maActiveBorderColor = Color( COL_LIGHTGRAY );
731 538 : maDeactiveColor = Color( COL_GRAY );
732 538 : maDeactiveTextColor = Color( COL_LIGHTGRAY );
733 538 : maDeactiveBorderColor = Color( COL_LIGHTGRAY );
734 538 : maMenuColor = Color( COL_LIGHTGRAY );
735 538 : maMenuBarColor = Color( COL_LIGHTGRAY );
736 538 : maMenuBarRolloverColor = Color( COL_BLUE );
737 538 : maMenuBorderColor = Color( COL_LIGHTGRAY );
738 538 : maMenuTextColor = Color( COL_BLACK );
739 538 : maMenuBarTextColor = Color( COL_BLACK );
740 538 : maMenuBarRolloverTextColor = Color( COL_WHITE );
741 538 : maMenuBarHighlightTextColor = Color( COL_WHITE );
742 538 : maMenuHighlightColor = Color( COL_BLUE );
743 538 : maMenuHighlightTextColor = Color( COL_WHITE );
744 538 : maHighlightColor = Color( COL_BLUE );
745 538 : maHighlightTextColor = Color( COL_WHITE );
746 538 : maActiveTabColor = Color( COL_WHITE );
747 538 : maInactiveTabColor = Color( COL_LIGHTGRAY );
748 538 : maTabTextColor = Color( COL_BLACK );
749 538 : maTabRolloverTextColor = Color( COL_BLACK );
750 538 : maTabHighlightTextColor = Color( COL_BLACK );
751 538 : maDisableColor = Color( COL_GRAY );
752 538 : maHelpColor = Color( 0xFF, 0xFF, 0xE0 );
753 538 : maHelpTextColor = Color( COL_BLACK );
754 538 : maLinkColor = Color( COL_BLUE );
755 538 : maVisitedLinkColor = Color( 0x00, 0x00, 0xCC );
756 538 : maHighlightLinkColor = Color( COL_LIGHTBLUE );
757 538 : maFontColor = Color( COL_BLACK );
758 538 : maAlternatingRowColor = Color( 0xEE, 0xEE, 0xEE );
759 :
760 538 : mnBorderSize = 1;
761 538 : mnTitleHeight = 18;
762 538 : mnFloatTitleHeight = 13;
763 538 : mnTearOffTitleHeight = 8;
764 538 : mbHighContrast = false;
765 538 : mbUseSystemUIFonts = true;
766 538 : mnUseFlatBorders = false;
767 538 : mnUseFlatMenus = false;
768 538 : mbPreferredUseImagesInMenus = true;
769 538 : mbSkipDisabledInMenus = false;
770 538 : mbHideDisabledMenuItems = false;
771 538 : mbAcceleratorsInContextMenus = true;
772 538 : mbPrimaryButtonWarpsSlider = false;
773 538 : }
774 :
775 422 : StyleSettings::StyleSettings()
776 422 : : mxData(std::make_shared<ImplStyleData>())
777 : {
778 422 : }
779 :
780 275691 : StyleSettings::~StyleSettings()
781 : {
782 275691 : }
783 :
784 : void
785 97 : StyleSettings::SetFaceColor( const Color& rColor )
786 : {
787 97 : CopyData();
788 97 : mxData->maFaceColor = rColor;
789 97 : }
790 :
791 : const Color&
792 789152 : StyleSettings::GetFaceColor() const
793 : {
794 789152 : return mxData->maFaceColor;
795 : }
796 :
797 : void
798 86 : StyleSettings::SetCheckedColor( const Color& rColor )
799 : {
800 86 : CopyData();
801 86 : mxData->maCheckedColor = rColor;
802 86 : }
803 :
804 : const Color&
805 35068 : StyleSettings::GetCheckedColor() const
806 : {
807 35068 : return mxData->maCheckedColor;
808 : }
809 :
810 : void
811 2 : StyleSettings::SetLightColor( const Color& rColor )
812 : {
813 2 : CopyData();
814 2 : mxData->maLightColor = rColor;
815 2 : }
816 :
817 : const Color&
818 164417 : StyleSettings::GetLightColor() const
819 : {
820 164417 : return mxData->maLightColor;
821 : }
822 :
823 : void
824 2 : StyleSettings::SetLightBorderColor( const Color& rColor )
825 : {
826 2 : CopyData();
827 2 : mxData->maLightBorderColor = rColor;
828 2 : }
829 :
830 : const Color&
831 65805 : StyleSettings::GetLightBorderColor() const
832 : {
833 65805 : return mxData->maLightBorderColor;
834 : }
835 :
836 : void
837 86 : StyleSettings::SetShadowColor( const Color& rColor )
838 : {
839 86 : CopyData();
840 86 : mxData->maShadowColor = rColor;
841 86 : }
842 :
843 : const Color&
844 430347 : StyleSettings::GetShadowColor() const
845 : {
846 430347 : return mxData->maShadowColor;
847 : }
848 :
849 : void
850 2 : StyleSettings::SetDarkShadowColor( const Color& rColor )
851 : {
852 2 : CopyData();
853 2 : mxData->maDarkShadowColor = rColor;
854 2 : }
855 :
856 : const Color&
857 170936 : StyleSettings::GetDarkShadowColor() const
858 : {
859 170936 : return mxData->maDarkShadowColor;
860 : }
861 :
862 : void
863 97 : StyleSettings::SetButtonTextColor( const Color& rColor )
864 : {
865 97 : CopyData();
866 97 : mxData->maButtonTextColor = rColor;
867 97 : }
868 :
869 : const Color&
870 351129 : StyleSettings::GetButtonTextColor() const
871 : {
872 351129 : return mxData->maButtonTextColor;
873 : }
874 :
875 : void
876 11 : StyleSettings::SetButtonRolloverTextColor( const Color& rColor )
877 : {
878 11 : CopyData();
879 11 : mxData->maButtonRolloverTextColor = rColor;
880 11 : }
881 :
882 : const Color&
883 0 : StyleSettings::GetButtonRolloverTextColor() const
884 : {
885 0 : return mxData->maButtonRolloverTextColor;
886 : }
887 :
888 : void
889 11 : StyleSettings::SetRadioCheckTextColor( const Color& rColor )
890 : {
891 11 : CopyData();
892 11 : mxData->maRadioCheckTextColor = rColor;
893 11 : }
894 :
895 : const Color&
896 18690 : StyleSettings::GetRadioCheckTextColor() const
897 : {
898 18690 : return mxData->maRadioCheckTextColor;
899 : }
900 :
901 : void
902 11 : StyleSettings::SetGroupTextColor( const Color& rColor )
903 : {
904 11 : CopyData();
905 11 : mxData->maGroupTextColor = rColor;
906 11 : }
907 :
908 : const Color&
909 422 : StyleSettings::GetGroupTextColor() const
910 : {
911 422 : return mxData->maGroupTextColor;
912 : }
913 :
914 : void
915 11 : StyleSettings::SetLabelTextColor( const Color& rColor )
916 : {
917 11 : CopyData();
918 11 : mxData->maLabelTextColor = rColor;
919 11 : }
920 :
921 : const Color&
922 13125 : StyleSettings::GetLabelTextColor() const
923 : {
924 13125 : return mxData->maLabelTextColor;
925 : }
926 :
927 : void
928 11 : StyleSettings::SetInfoTextColor( const Color& rColor )
929 : {
930 11 : CopyData();
931 11 : mxData->maInfoTextColor = rColor;
932 11 : }
933 :
934 : const Color&
935 0 : StyleSettings::GetInfoTextColor() const
936 : {
937 0 : return mxData->maInfoTextColor;
938 : }
939 :
940 : void
941 11 : StyleSettings::SetWindowColor( const Color& rColor )
942 : {
943 11 : CopyData();
944 11 : mxData->maWindowColor = rColor;
945 11 : }
946 :
947 : const Color&
948 80878 : StyleSettings::GetWindowColor() const
949 : {
950 80878 : return mxData->maWindowColor;
951 : }
952 :
953 : void
954 11 : StyleSettings::SetWindowTextColor( const Color& rColor )
955 : {
956 11 : CopyData();
957 11 : mxData->maWindowTextColor = rColor;
958 11 : }
959 :
960 : const Color&
961 58093 : StyleSettings::GetWindowTextColor() const
962 : {
963 58093 : return mxData->maWindowTextColor;
964 : }
965 :
966 : void
967 11 : StyleSettings::SetDialogColor( const Color& rColor )
968 : {
969 11 : CopyData();
970 11 : mxData->maDialogColor = rColor;
971 11 : }
972 :
973 : const Color&
974 11169 : StyleSettings::GetDialogColor() const
975 : {
976 11169 : return mxData->maDialogColor;
977 : }
978 :
979 : void
980 11 : StyleSettings::SetDialogTextColor( const Color& rColor )
981 : {
982 11 : CopyData();
983 11 : mxData->maDialogTextColor = rColor;
984 11 : }
985 :
986 : const Color&
987 0 : StyleSettings::GetDialogTextColor() const
988 : {
989 0 : return mxData->maDialogTextColor;
990 : }
991 :
992 : void
993 11 : StyleSettings::SetWorkspaceColor( const Color& rColor )
994 : {
995 11 : CopyData();
996 11 : mxData->maWorkspaceColor = rColor;
997 11 : }
998 :
999 : const Color&
1000 22137 : StyleSettings::GetWorkspaceColor() const
1001 : {
1002 22137 : return mxData->maWorkspaceColor;
1003 : }
1004 :
1005 : void
1006 11 : StyleSettings::SetFieldColor( const Color& rColor )
1007 : {
1008 11 : CopyData();
1009 11 : mxData->maFieldColor = rColor;
1010 11 : }
1011 :
1012 : const Color&
1013 27293 : StyleSettings::GetFieldColor() const
1014 : {
1015 27293 : return mxData->maFieldColor;
1016 : }
1017 :
1018 : void
1019 179 : StyleSettings::SetFieldTextColor( const Color& rColor )
1020 : {
1021 179 : CopyData();
1022 179 : mxData->maFieldTextColor = rColor;
1023 179 : }
1024 :
1025 : const Color&
1026 12897 : StyleSettings::GetFieldTextColor() const
1027 : {
1028 12897 : return mxData->maFieldTextColor;
1029 : }
1030 :
1031 : void
1032 11 : StyleSettings::SetFieldRolloverTextColor( const Color& rColor )
1033 : {
1034 11 : CopyData();
1035 11 : mxData->maFieldRolloverTextColor = rColor;
1036 11 : }
1037 :
1038 : const Color&
1039 0 : StyleSettings::GetFieldRolloverTextColor() const
1040 : {
1041 0 : return mxData->maFieldRolloverTextColor;
1042 : }
1043 :
1044 : void
1045 0 : StyleSettings::SetActiveColor( const Color& rColor )
1046 : {
1047 0 : CopyData();
1048 0 : mxData->maActiveColor = rColor;
1049 0 : }
1050 :
1051 : const Color&
1052 0 : StyleSettings::GetActiveColor() const
1053 : {
1054 0 : return mxData->maActiveColor;
1055 : }
1056 :
1057 : void
1058 0 : StyleSettings::SetActiveTextColor( const Color& rColor )
1059 : {
1060 0 : CopyData();
1061 0 : mxData->maActiveTextColor = rColor;
1062 0 : }
1063 :
1064 : const Color&
1065 175 : StyleSettings::GetActiveTextColor() const
1066 : {
1067 175 : return mxData->maActiveTextColor;
1068 : }
1069 :
1070 : void
1071 0 : StyleSettings::SetActiveBorderColor( const Color& rColor )
1072 : {
1073 0 : CopyData();
1074 0 : mxData->maActiveBorderColor = rColor;
1075 0 : }
1076 :
1077 : const Color&
1078 257 : StyleSettings::GetActiveBorderColor() const
1079 : {
1080 257 : return mxData->maActiveBorderColor;
1081 : }
1082 :
1083 : void
1084 0 : StyleSettings::SetDeactiveColor( const Color& rColor )
1085 : {
1086 0 : CopyData();
1087 0 : mxData->maDeactiveColor = rColor;
1088 0 : }
1089 :
1090 : const Color&
1091 0 : StyleSettings::GetDeactiveColor() const
1092 : {
1093 0 : return mxData->maDeactiveColor;
1094 : }
1095 :
1096 : void
1097 0 : StyleSettings::SetDeactiveTextColor( const Color& rColor )
1098 : {
1099 0 : CopyData();
1100 0 : mxData->maDeactiveTextColor = rColor;
1101 0 : }
1102 :
1103 : const Color&
1104 0 : StyleSettings::GetDeactiveTextColor() const
1105 : {
1106 0 : return mxData->maDeactiveTextColor;
1107 : }
1108 :
1109 : void
1110 0 : StyleSettings::SetDeactiveBorderColor( const Color& rColor )
1111 : {
1112 0 : CopyData();
1113 0 : mxData->maDeactiveBorderColor = rColor;
1114 0 : }
1115 :
1116 : const Color&
1117 0 : StyleSettings::GetDeactiveBorderColor() const
1118 : {
1119 0 : return mxData->maDeactiveBorderColor;
1120 : }
1121 :
1122 : void
1123 11 : StyleSettings::SetHighlightColor( const Color& rColor )
1124 : {
1125 11 : CopyData();
1126 11 : mxData->maHighlightColor = rColor;
1127 11 : }
1128 :
1129 : const Color&
1130 7290 : StyleSettings::GetHighlightColor() const
1131 : {
1132 7290 : return mxData->maHighlightColor;
1133 : }
1134 :
1135 : void
1136 11 : StyleSettings::SetHighlightTextColor( const Color& rColor )
1137 : {
1138 11 : CopyData();
1139 11 : mxData->maHighlightTextColor = rColor;
1140 11 : }
1141 :
1142 : const Color&
1143 1427 : StyleSettings::GetHighlightTextColor() const
1144 : {
1145 1427 : return mxData->maHighlightTextColor;
1146 : }
1147 :
1148 : void
1149 0 : StyleSettings::SetDisableColor( const Color& rColor )
1150 : {
1151 0 : CopyData();
1152 0 : mxData->maDisableColor = rColor;
1153 0 : }
1154 :
1155 : const Color&
1156 3401 : StyleSettings::GetDisableColor() const
1157 : {
1158 3401 : return mxData->maDisableColor;
1159 : }
1160 :
1161 : void
1162 0 : StyleSettings::SetHelpColor( const Color& rColor )
1163 : {
1164 0 : CopyData();
1165 0 : mxData->maHelpColor = rColor;
1166 0 : }
1167 :
1168 : const Color&
1169 3 : StyleSettings::GetHelpColor() const
1170 : {
1171 3 : return mxData->maHelpColor;
1172 : }
1173 :
1174 : void
1175 11 : StyleSettings::SetHelpTextColor( const Color& rColor )
1176 : {
1177 11 : CopyData();
1178 11 : mxData->maHelpTextColor = rColor;
1179 11 : }
1180 :
1181 : const Color&
1182 0 : StyleSettings::GetHelpTextColor() const
1183 : {
1184 0 : return mxData->maHelpTextColor;
1185 : }
1186 :
1187 : void
1188 11 : StyleSettings::SetMenuColor( const Color& rColor )
1189 : {
1190 11 : CopyData();
1191 11 : mxData->maMenuColor = rColor;
1192 11 : }
1193 :
1194 : const Color&
1195 1297 : StyleSettings::GetMenuColor() const
1196 : {
1197 1297 : return mxData->maMenuColor;
1198 : }
1199 :
1200 : void
1201 11 : StyleSettings::SetMenuBarColor( const Color& rColor )
1202 : {
1203 11 : CopyData();
1204 11 : mxData->maMenuBarColor = rColor;
1205 11 : }
1206 :
1207 : const Color&
1208 1 : StyleSettings::GetMenuBarColor() const
1209 : {
1210 1 : return mxData->maMenuBarColor;
1211 : }
1212 :
1213 : void
1214 11 : StyleSettings::SetMenuBarRolloverColor( const Color& rColor )
1215 : {
1216 11 : CopyData();
1217 11 : mxData->maMenuBarRolloverColor = rColor;
1218 11 : }
1219 :
1220 : const Color&
1221 0 : StyleSettings::GetMenuBarRolloverColor() const
1222 : {
1223 0 : return mxData->maMenuBarRolloverColor;
1224 : }
1225 :
1226 : void
1227 0 : StyleSettings::SetMenuBorderColor( const Color& rColor )
1228 : {
1229 0 : CopyData();
1230 0 : mxData->maMenuBorderColor = rColor;
1231 0 : }
1232 :
1233 : const Color&
1234 8 : StyleSettings::GetMenuBorderColor() const
1235 : {
1236 8 : return mxData->maMenuBorderColor;
1237 : }
1238 :
1239 : void
1240 11 : StyleSettings::SetMenuTextColor( const Color& rColor )
1241 : {
1242 11 : CopyData();
1243 11 : mxData->maMenuTextColor = rColor;
1244 11 : }
1245 :
1246 : const Color&
1247 28 : StyleSettings::GetMenuTextColor() const
1248 : {
1249 28 : return mxData->maMenuTextColor;
1250 : }
1251 :
1252 : void
1253 11 : StyleSettings::SetMenuBarTextColor( const Color& rColor )
1254 : {
1255 11 : CopyData();
1256 11 : mxData->maMenuBarTextColor = rColor;
1257 11 : }
1258 :
1259 : const Color&
1260 1235 : StyleSettings::GetMenuBarTextColor() const
1261 : {
1262 1235 : return mxData->maMenuBarTextColor;
1263 : }
1264 :
1265 : void
1266 11 : StyleSettings::SetMenuBarRolloverTextColor( const Color& rColor )
1267 : {
1268 11 : CopyData();
1269 11 : mxData->maMenuBarRolloverTextColor = rColor;
1270 11 : }
1271 :
1272 : const Color&
1273 0 : StyleSettings::GetMenuBarRolloverTextColor() const
1274 : {
1275 0 : return mxData->maMenuBarRolloverTextColor;
1276 : }
1277 :
1278 : void
1279 11 : StyleSettings::SetMenuBarHighlightTextColor( const Color& rColor )
1280 : {
1281 11 : CopyData();
1282 11 : mxData->maMenuBarHighlightTextColor = rColor;
1283 11 : }
1284 :
1285 : const Color&
1286 8 : StyleSettings::GetMenuBarHighlightTextColor() const
1287 : {
1288 8 : return mxData->maMenuBarHighlightTextColor;
1289 : }
1290 :
1291 : void
1292 11 : StyleSettings::SetMenuHighlightColor( const Color& rColor )
1293 : {
1294 11 : CopyData();
1295 11 : mxData->maMenuHighlightColor = rColor;
1296 11 : }
1297 :
1298 : const Color&
1299 200 : StyleSettings::GetMenuHighlightColor() const
1300 : {
1301 200 : return mxData->maMenuHighlightColor;
1302 : }
1303 :
1304 : void
1305 11 : StyleSettings::SetMenuHighlightTextColor( const Color& rColor )
1306 : {
1307 11 : CopyData();
1308 11 : mxData->maMenuHighlightTextColor = rColor;
1309 11 : }
1310 :
1311 : const Color&
1312 11 : StyleSettings::GetMenuHighlightTextColor() const
1313 : {
1314 11 : return mxData->maMenuHighlightTextColor;
1315 : }
1316 :
1317 : void
1318 11 : StyleSettings::SetTabTextColor( const Color& rColor )
1319 : {
1320 11 : CopyData();
1321 11 : mxData->maTabTextColor = rColor;
1322 11 : }
1323 :
1324 : const Color&
1325 172 : StyleSettings::GetTabTextColor() const
1326 : {
1327 172 : return mxData->maTabTextColor;
1328 : }
1329 :
1330 : void
1331 11 : StyleSettings::SetTabRolloverTextColor( const Color& rColor )
1332 : {
1333 11 : CopyData();
1334 11 : mxData->maTabRolloverTextColor = rColor;
1335 11 : }
1336 :
1337 : const Color&
1338 0 : StyleSettings::GetTabRolloverTextColor() const
1339 : {
1340 0 : return mxData->maTabRolloverTextColor;
1341 : }
1342 :
1343 : void
1344 11 : StyleSettings::SetTabHighlightTextColor( const Color& rColor )
1345 : {
1346 11 : CopyData();
1347 11 : mxData->maTabHighlightTextColor = rColor;
1348 11 : }
1349 :
1350 : const Color&
1351 21 : StyleSettings::GetTabHighlightTextColor() const
1352 : {
1353 21 : return mxData->maTabHighlightTextColor;
1354 : }
1355 :
1356 : void
1357 0 : StyleSettings::SetLinkColor( const Color& rColor )
1358 : {
1359 0 : CopyData();
1360 0 : mxData->maLinkColor = rColor;
1361 0 : }
1362 :
1363 : const Color&
1364 155 : StyleSettings::GetLinkColor() const
1365 : {
1366 155 : return mxData->maLinkColor;
1367 : }
1368 :
1369 : void
1370 0 : StyleSettings::SetVisitedLinkColor( const Color& rColor )
1371 : {
1372 0 : CopyData();
1373 0 : mxData->maVisitedLinkColor = rColor;
1374 0 : }
1375 :
1376 : const Color&
1377 112 : StyleSettings::GetVisitedLinkColor() const
1378 : {
1379 112 : return mxData->maVisitedLinkColor;
1380 : }
1381 :
1382 : const Color&
1383 5 : StyleSettings::GetHighlightLinkColor() const
1384 : {
1385 5 : return mxData->maHighlightLinkColor;
1386 : }
1387 :
1388 : void
1389 322 : StyleSettings::SetMonoColor( const Color& rColor )
1390 : {
1391 322 : CopyData();
1392 322 : mxData->maMonoColor = rColor;
1393 322 : }
1394 :
1395 : const Color&
1396 1737 : StyleSettings::GetMonoColor() const
1397 : {
1398 1737 : return mxData->maMonoColor;
1399 : }
1400 :
1401 : void
1402 11 : StyleSettings::SetActiveTabColor( const Color& rColor )
1403 : {
1404 11 : CopyData();
1405 11 : mxData->maActiveTabColor = rColor;
1406 11 : }
1407 :
1408 : const Color&
1409 509 : StyleSettings::GetActiveTabColor() const
1410 : {
1411 509 : return mxData->maActiveTabColor;
1412 : }
1413 :
1414 : void
1415 11 : StyleSettings::SetInactiveTabColor( const Color& rColor )
1416 : {
1417 11 : CopyData();
1418 11 : mxData->maInactiveTabColor = rColor;
1419 11 : }
1420 :
1421 : const Color&
1422 409 : StyleSettings::GetInactiveTabColor() const
1423 : {
1424 409 : return mxData->maInactiveTabColor;
1425 : }
1426 :
1427 : void
1428 0 : StyleSettings::SetAlternatingRowColor( const Color& rColor )
1429 : {
1430 0 : CopyData();
1431 0 : mxData->maAlternatingRowColor = rColor;
1432 0 : }
1433 :
1434 : const Color&
1435 0 : StyleSettings::GetAlternatingRowColor() const
1436 : {
1437 0 : return mxData->maAlternatingRowColor;
1438 : }
1439 :
1440 : void
1441 116 : StyleSettings::SetUseSystemUIFonts( bool bUseSystemUIFonts )
1442 : {
1443 116 : CopyData();
1444 116 : mxData->mbUseSystemUIFonts = bUseSystemUIFonts;
1445 116 : }
1446 :
1447 : bool
1448 116 : StyleSettings::GetUseSystemUIFonts() const
1449 : {
1450 116 : return mxData->mbUseSystemUIFonts;
1451 : }
1452 :
1453 : void
1454 0 : StyleSettings::SetUseFlatBorders( bool bUseFlatBorders )
1455 : {
1456 0 : CopyData();
1457 0 : mxData->mnUseFlatBorders = bUseFlatBorders;
1458 0 : }
1459 :
1460 : bool
1461 62640 : StyleSettings::GetUseFlatBorders() const
1462 : {
1463 62640 : return (bool) mxData->mnUseFlatBorders;
1464 : }
1465 :
1466 : void
1467 0 : StyleSettings::SetUseFlatMenus( bool bUseFlatMenus )
1468 : {
1469 0 : CopyData();
1470 0 : mxData->mnUseFlatMenus = bUseFlatMenus;
1471 0 : }
1472 :
1473 : bool
1474 8 : StyleSettings::GetUseFlatMenus() const
1475 : {
1476 8 : return (bool) mxData->mnUseFlatMenus;
1477 : }
1478 :
1479 : void
1480 116 : StyleSettings::SetUseImagesInMenus( TriState eUseImagesInMenus )
1481 : {
1482 116 : CopyData();
1483 116 : mxData->meUseImagesInMenus = eUseImagesInMenus;
1484 116 : }
1485 :
1486 : void
1487 11 : StyleSettings::SetPreferredUseImagesInMenus( bool bPreferredUseImagesInMenus )
1488 : {
1489 11 : CopyData();
1490 11 : mxData->mbPreferredUseImagesInMenus = bPreferredUseImagesInMenus;
1491 11 : }
1492 :
1493 : bool
1494 36483 : StyleSettings::GetPreferredUseImagesInMenus() const
1495 : {
1496 36483 : return mxData->mbPreferredUseImagesInMenus;
1497 : }
1498 :
1499 : void
1500 11 : StyleSettings::SetSkipDisabledInMenus( bool bSkipDisabledInMenus )
1501 : {
1502 11 : CopyData();
1503 11 : mxData->mbSkipDisabledInMenus = bSkipDisabledInMenus;
1504 11 : }
1505 :
1506 : bool
1507 0 : StyleSettings::GetSkipDisabledInMenus() const
1508 : {
1509 0 : return mxData->mbSkipDisabledInMenus;
1510 : }
1511 :
1512 : void
1513 0 : StyleSettings::SetHideDisabledMenuItems( bool bHideDisabledMenuItems )
1514 : {
1515 0 : CopyData();
1516 0 : mxData->mbHideDisabledMenuItems = bHideDisabledMenuItems;
1517 0 : }
1518 :
1519 : bool
1520 0 : StyleSettings::GetHideDisabledMenuItems() const
1521 : {
1522 0 : return mxData->mbHideDisabledMenuItems;
1523 : }
1524 :
1525 : void
1526 11 : StyleSettings::SetAcceleratorsInContextMenus( bool bAcceleratorsInContextMenus )
1527 : {
1528 11 : CopyData();
1529 11 : mxData->mbAcceleratorsInContextMenus = bAcceleratorsInContextMenus;
1530 11 : }
1531 :
1532 : bool
1533 0 : StyleSettings::GetAcceleratorsInContextMenus() const
1534 : {
1535 0 : return mxData->mbAcceleratorsInContextMenus;
1536 : }
1537 :
1538 : void
1539 11 : StyleSettings::SetPrimaryButtonWarpsSlider( bool bPrimaryButtonWarpsSlider )
1540 : {
1541 11 : CopyData();
1542 11 : mxData->mbPrimaryButtonWarpsSlider = bPrimaryButtonWarpsSlider;
1543 11 : }
1544 :
1545 : bool
1546 0 : StyleSettings::GetPrimaryButtonWarpsSlider() const
1547 : {
1548 0 : return mxData->mbPrimaryButtonWarpsSlider;
1549 : }
1550 :
1551 : void
1552 11 : StyleSettings::SetCairoFontOptions( const void *pOptions )
1553 : {
1554 11 : CopyData();
1555 11 : mxData->mpFontOptions = pOptions;
1556 11 : }
1557 :
1558 : const void*
1559 40 : StyleSettings::GetCairoFontOptions() const
1560 : {
1561 40 : return mxData->mpFontOptions;
1562 : }
1563 :
1564 : void
1565 686 : StyleSettings::SetAppFont( const vcl::Font& rFont )
1566 : {
1567 686 : CopyData();
1568 686 : mxData->maAppFont = rFont;
1569 686 : }
1570 :
1571 : const vcl::Font&
1572 272584 : StyleSettings::GetAppFont() const
1573 : {
1574 272584 : return mxData->maAppFont;
1575 : }
1576 :
1577 : void
1578 11 : StyleSettings::SetHelpFont( const vcl::Font& rFont )
1579 : {
1580 11 : CopyData();
1581 11 : mxData->maHelpFont = rFont;
1582 11 : }
1583 :
1584 : const vcl::Font&
1585 0 : StyleSettings::GetHelpFont() const
1586 : {
1587 0 : return mxData->maHelpFont;
1588 : }
1589 :
1590 : void
1591 686 : StyleSettings::SetTitleFont( const vcl::Font& rFont )
1592 : {
1593 686 : CopyData();
1594 686 : mxData->maTitleFont = rFont;
1595 686 : }
1596 :
1597 : const vcl::Font&
1598 675 : StyleSettings::GetTitleFont() const
1599 : {
1600 675 : return mxData->maTitleFont;
1601 : }
1602 :
1603 : void
1604 686 : StyleSettings::SetFloatTitleFont( const vcl::Font& rFont )
1605 : {
1606 686 : CopyData();
1607 686 : mxData->maFloatTitleFont = rFont;
1608 686 : }
1609 :
1610 : const vcl::Font&
1611 675 : StyleSettings::GetFloatTitleFont() const
1612 : {
1613 675 : return mxData->maFloatTitleFont;
1614 : }
1615 :
1616 : void
1617 11 : StyleSettings::SetMenuFont( const vcl::Font& rFont )
1618 : {
1619 11 : CopyData();
1620 11 : mxData->maMenuFont = rFont;
1621 11 : }
1622 :
1623 : const vcl::Font&
1624 1901 : StyleSettings::GetMenuFont() const
1625 : {
1626 1901 : return mxData->maMenuFont;
1627 : }
1628 :
1629 : void
1630 686 : StyleSettings::SetToolFont( const vcl::Font& rFont )
1631 : {
1632 686 : CopyData();
1633 686 : mxData->maToolFont = rFont;
1634 686 : }
1635 :
1636 : const vcl::Font&
1637 92538 : StyleSettings::GetToolFont() const
1638 : {
1639 92538 : return mxData->maToolFont;
1640 : }
1641 :
1642 : void
1643 686 : StyleSettings::SetGroupFont( const vcl::Font& rFont )
1644 : {
1645 686 : CopyData();
1646 686 : mxData->maGroupFont = rFont;
1647 686 : }
1648 :
1649 : const vcl::Font&
1650 1097 : StyleSettings::GetGroupFont() const
1651 : {
1652 1097 : return mxData->maGroupFont;
1653 : }
1654 :
1655 : void
1656 686 : StyleSettings::SetLabelFont( const vcl::Font& rFont )
1657 : {
1658 686 : CopyData();
1659 686 : mxData->maLabelFont = rFont;
1660 686 : }
1661 :
1662 : const vcl::Font&
1663 13804 : StyleSettings::GetLabelFont() const
1664 : {
1665 13804 : return mxData->maLabelFont;
1666 : }
1667 :
1668 : void
1669 686 : StyleSettings::SetInfoFont( const vcl::Font& rFont )
1670 : {
1671 686 : CopyData();
1672 686 : mxData->maInfoFont = rFont;
1673 686 : }
1674 :
1675 : const vcl::Font&
1676 675 : StyleSettings::GetInfoFont() const
1677 : {
1678 675 : return mxData->maInfoFont;
1679 : }
1680 :
1681 : void
1682 686 : StyleSettings::SetRadioCheckFont( const vcl::Font& rFont )
1683 : {
1684 686 : CopyData();
1685 686 : mxData->maRadioCheckFont = rFont;
1686 686 : }
1687 :
1688 : const vcl::Font&
1689 19802 : StyleSettings::GetRadioCheckFont() const
1690 : {
1691 19802 : return mxData->maRadioCheckFont;
1692 : }
1693 :
1694 : void
1695 686 : StyleSettings::SetPushButtonFont( const vcl::Font& rFont )
1696 : {
1697 686 : CopyData();
1698 686 : mxData->maPushButtonFont = rFont;
1699 686 : }
1700 :
1701 : const vcl::Font&
1702 25020 : StyleSettings::GetPushButtonFont() const
1703 : {
1704 25020 : return mxData->maPushButtonFont;
1705 : }
1706 :
1707 : void
1708 854 : StyleSettings::SetFieldFont( const vcl::Font& rFont )
1709 : {
1710 854 : CopyData();
1711 854 : mxData->maFieldFont = rFont;
1712 854 : }
1713 :
1714 : const vcl::Font&
1715 13936 : StyleSettings::GetFieldFont() const
1716 : {
1717 13936 : return mxData->maFieldFont;
1718 : }
1719 :
1720 : void
1721 686 : StyleSettings::SetIconFont( const vcl::Font& rFont )
1722 : {
1723 686 : CopyData();
1724 686 : mxData->maIconFont = rFont;
1725 686 : }
1726 :
1727 : const vcl::Font&
1728 675 : StyleSettings::GetIconFont() const
1729 : {
1730 675 : return mxData->maIconFont;
1731 : }
1732 :
1733 : void
1734 686 : StyleSettings::SetTabFont( const vcl::Font& rFont )
1735 : {
1736 686 : CopyData();
1737 686 : mxData->maTabFont = rFont;
1738 686 : }
1739 :
1740 : const vcl::Font&
1741 742 : StyleSettings::GetTabFont() const
1742 : {
1743 742 : return mxData->maTabFont;
1744 : }
1745 :
1746 : long
1747 0 : StyleSettings::GetBorderSize() const
1748 : {
1749 0 : return mxData->mnBorderSize;
1750 : }
1751 :
1752 : void
1753 0 : StyleSettings::SetTitleHeight( long nSize )
1754 : {
1755 0 : CopyData();
1756 0 : mxData->mnTitleHeight = nSize;
1757 0 : }
1758 :
1759 : long
1760 68 : StyleSettings::GetTitleHeight() const
1761 : {
1762 68 : return mxData->mnTitleHeight;
1763 : }
1764 :
1765 : void
1766 0 : StyleSettings::SetFloatTitleHeight( long nSize )
1767 : {
1768 0 : CopyData();
1769 0 : mxData->mnFloatTitleHeight = nSize;
1770 0 : }
1771 :
1772 : long
1773 0 : StyleSettings::GetFloatTitleHeight() const
1774 : {
1775 0 : return mxData->mnFloatTitleHeight;
1776 : }
1777 :
1778 : long
1779 0 : StyleSettings::GetTearOffTitleHeight() const
1780 : {
1781 0 : return mxData->mnTearOffTitleHeight;
1782 : }
1783 :
1784 : void
1785 11 : StyleSettings::SetScrollBarSize( long nSize )
1786 : {
1787 11 : CopyData();
1788 11 : mxData->mnScrollBarSize = nSize;
1789 11 : }
1790 :
1791 : long
1792 85589 : StyleSettings::GetScrollBarSize() const
1793 : {
1794 85589 : return mxData->mnScrollBarSize;
1795 : }
1796 :
1797 : void
1798 11 : StyleSettings::SetMinThumbSize( long nSize )
1799 : {
1800 11 : CopyData();
1801 11 : mxData->mnMinThumbSize = nSize;
1802 11 : }
1803 :
1804 : long
1805 32261 : StyleSettings::GetMinThumbSize() const
1806 : {
1807 32261 : return mxData->mnMinThumbSize;
1808 : }
1809 :
1810 : void
1811 0 : StyleSettings::SetSpinSize( long nSize )
1812 : {
1813 0 : CopyData();
1814 0 : mxData->mnSpinSize = nSize;
1815 0 : }
1816 :
1817 : long
1818 17342 : StyleSettings::GetSpinSize() const
1819 : {
1820 17342 : return mxData->mnSpinSize;
1821 : }
1822 :
1823 : long
1824 704 : StyleSettings::GetSplitSize() const
1825 : {
1826 704 : return mxData->mnSplitSize;
1827 : }
1828 :
1829 : void
1830 0 : StyleSettings::SetCursorSize( long nSize )
1831 : {
1832 0 : CopyData();
1833 0 : mxData->mnCursorSize = nSize;
1834 0 : }
1835 :
1836 : long
1837 33439 : StyleSettings::GetCursorSize() const
1838 : {
1839 33439 : return mxData->mnCursorSize;
1840 : }
1841 :
1842 : void
1843 43323 : StyleSettings::SetCursorBlinkTime( sal_uInt64 nBlinkTime )
1844 : {
1845 43323 : CopyData();
1846 43323 : mxData->mnCursorBlinkTime = nBlinkTime;
1847 43323 : }
1848 :
1849 : sal_uInt64
1850 117114 : StyleSettings::GetCursorBlinkTime() const
1851 : {
1852 117114 : return (long) mxData->mnCursorBlinkTime;
1853 : }
1854 :
1855 : void
1856 116 : StyleSettings::SetScreenZoom( sal_uInt16 nPercent )
1857 : {
1858 116 : CopyData();
1859 116 : mxData->mnScreenZoom = nPercent;
1860 116 : }
1861 :
1862 : sal_uInt16
1863 268302 : StyleSettings::GetScreenZoom() const
1864 : {
1865 268302 : return mxData->mnScreenZoom;
1866 : }
1867 :
1868 : void
1869 116 : StyleSettings::SetScreenFontZoom( sal_uInt16 nPercent )
1870 : {
1871 116 : CopyData();
1872 116 : mxData->mnScreenFontZoom = nPercent;
1873 116 : }
1874 :
1875 : sal_uInt16
1876 430300 : StyleSettings::GetScreenFontZoom() const
1877 : {
1878 430300 : return mxData->mnScreenFontZoom;
1879 : }
1880 :
1881 : void
1882 117 : StyleSettings::SetDragFullOptions( DragFullOptions nOptions )
1883 : {
1884 117 : CopyData();
1885 117 : mxData->mnDragFullOptions = nOptions;
1886 117 : }
1887 :
1888 : DragFullOptions
1889 8960 : StyleSettings::GetDragFullOptions() const
1890 : {
1891 8960 : return mxData->mnDragFullOptions;
1892 : }
1893 :
1894 : void
1895 31 : StyleSettings::SetSelectionOptions( SelectionOptions nOptions )
1896 : {
1897 31 : CopyData();
1898 31 : mxData->mnSelectionOptions = nOptions;
1899 31 : }
1900 :
1901 : SelectionOptions
1902 111 : StyleSettings::GetSelectionOptions() const
1903 : {
1904 111 : return mxData->mnSelectionOptions;
1905 : }
1906 :
1907 : void
1908 116 : StyleSettings::SetDisplayOptions( DisplayOptions nOptions )
1909 : {
1910 116 : CopyData();
1911 116 : mxData->mnDisplayOptions = nOptions;
1912 116 : }
1913 :
1914 : DisplayOptions
1915 282460 : StyleSettings::GetDisplayOptions() const
1916 : {
1917 282460 : return mxData->mnDisplayOptions;
1918 : }
1919 :
1920 : void
1921 116 : StyleSettings::SetAntialiasingMinPixelHeight( long nMinPixel )
1922 : {
1923 116 : CopyData();
1924 116 : mxData->mnAntialiasedMin = nMinPixel;
1925 116 : }
1926 :
1927 : sal_uLong
1928 282460 : StyleSettings::GetAntialiasingMinPixelHeight() const
1929 : {
1930 282460 : return mxData->mnAntialiasedMin;
1931 : }
1932 :
1933 : void
1934 56 : StyleSettings::SetOptions( StyleSettingsOptions nOptions )
1935 : {
1936 56 : CopyData();
1937 56 : mxData->mnOptions = nOptions;
1938 56 : }
1939 :
1940 : void
1941 208 : StyleSettings::SetAutoMnemonic( bool bAutoMnemonic )
1942 : {
1943 208 : CopyData();
1944 208 : mxData->mbAutoMnemonic = bAutoMnemonic;
1945 208 : }
1946 :
1947 : bool
1948 44592 : StyleSettings::GetAutoMnemonic() const
1949 : {
1950 44592 : return mxData->mbAutoMnemonic;
1951 : }
1952 :
1953 : void
1954 0 : StyleSettings::SetFontColor( const Color& rColor )
1955 : {
1956 0 : CopyData();
1957 0 : mxData->maFontColor = rColor;
1958 0 : }
1959 :
1960 : const Color&
1961 303 : StyleSettings::GetFontColor() const
1962 : {
1963 303 : return mxData->maFontColor;
1964 : }
1965 :
1966 : void
1967 11 : StyleSettings::SetToolbarIconSize( ToolbarIconSize nSize )
1968 : {
1969 11 : CopyData();
1970 11 : mxData->mnToolbarIconSize = nSize;
1971 11 : }
1972 :
1973 : ToolbarIconSize
1974 14051 : StyleSettings::GetToolbarIconSize() const
1975 : {
1976 14051 : return mxData->mnToolbarIconSize;
1977 : }
1978 :
1979 : const DialogStyle&
1980 12 : StyleSettings::GetDialogStyle() const
1981 : {
1982 12 : return mxData->maDialogStyle;
1983 : }
1984 :
1985 : void
1986 11 : StyleSettings::SetDialogStyle( const DialogStyle& rStyle )
1987 : {
1988 11 : CopyData();
1989 11 : mxData->maDialogStyle = rStyle;
1990 11 : }
1991 :
1992 : const FrameStyle&
1993 11 : StyleSettings::GetFrameStyle() const
1994 : {
1995 11 : return mxData->maFrameStyle;
1996 : }
1997 :
1998 : void
1999 11 : StyleSettings::SetFrameStyle( const FrameStyle& rStyle )
2000 : {
2001 11 : CopyData();
2002 11 : mxData->maFrameStyle = rStyle;
2003 11 : }
2004 :
2005 : void
2006 0 : StyleSettings::SetEdgeBlending(sal_uInt16 nCount)
2007 : {
2008 0 : CopyData();
2009 0 : mxData->mnEdgeBlending = nCount;
2010 0 : }
2011 :
2012 : sal_uInt16
2013 116 : StyleSettings::GetEdgeBlending() const
2014 : {
2015 116 : return mxData->mnEdgeBlending;
2016 : }
2017 :
2018 : const Color&
2019 0 : StyleSettings::GetEdgeBlendingTopLeftColor() const
2020 : {
2021 0 : return mxData->maEdgeBlendingTopLeftColor;
2022 : }
2023 :
2024 : const Color&
2025 0 : StyleSettings::GetEdgeBlendingBottomRightColor() const
2026 : {
2027 0 : return mxData->maEdgeBlendingBottomRightColor;
2028 : }
2029 :
2030 : void
2031 0 : StyleSettings::SetListBoxMaximumLineCount(sal_uInt16 nCount)
2032 : {
2033 0 : CopyData();
2034 0 : mxData->mnListBoxMaximumLineCount = nCount;
2035 0 : }
2036 :
2037 : sal_uInt16
2038 497 : StyleSettings::GetListBoxMaximumLineCount() const
2039 : {
2040 497 : return mxData->mnListBoxMaximumLineCount;
2041 : }
2042 :
2043 : void
2044 0 : StyleSettings::SetColorValueSetColumnCount(sal_uInt16 nCount)
2045 : {
2046 0 : CopyData();
2047 0 : mxData->mnColorValueSetColumnCount = nCount;
2048 0 : }
2049 :
2050 : sal_uInt16
2051 3564 : StyleSettings::GetColorValueSetColumnCount() const
2052 : {
2053 3564 : return mxData->mnColorValueSetColumnCount;
2054 : }
2055 :
2056 : sal_uInt16
2057 0 : StyleSettings::GetColorValueSetMaximumRowCount() const
2058 : {
2059 0 : return mxData->mnColorValueSetMaximumRowCount;
2060 : }
2061 :
2062 : sal_uInt16
2063 31 : StyleSettings::GetListBoxPreviewDefaultLineWidth() const
2064 : {
2065 31 : return mxData->mnListBoxPreviewDefaultLineWidth;
2066 : }
2067 :
2068 : void
2069 0 : StyleSettings::SetPreviewUsesCheckeredBackground(bool bNew)
2070 : {
2071 0 : CopyData();
2072 0 : mxData->mbPreviewUsesCheckeredBackground = bNew;
2073 0 : }
2074 :
2075 : bool
2076 147 : StyleSettings::GetPreviewUsesCheckeredBackground() const
2077 : {
2078 147 : return mxData->mbPreviewUsesCheckeredBackground;
2079 : }
2080 :
2081 : bool
2082 55395 : StyleSettings::operator !=( const StyleSettings& rSet ) const
2083 : {
2084 55395 : return !(*this == rSet);
2085 : }
2086 :
2087 82 : const Size& StyleSettings::GetListBoxPreviewDefaultPixelSize() const
2088 : {
2089 82 : if(0 == mxData->maListBoxPreviewDefaultPixelSize.Width() || 0 == mxData->maListBoxPreviewDefaultPixelSize.Height())
2090 : {
2091 8 : const_cast< StyleSettings* >(this)->mxData->maListBoxPreviewDefaultPixelSize =
2092 8 : Application::GetDefaultDevice()->LogicToPixel(mxData->maListBoxPreviewDefaultLogicSize, MAP_APPFONT);
2093 : }
2094 :
2095 82 : return mxData->maListBoxPreviewDefaultPixelSize;
2096 : }
2097 :
2098 4263 : void StyleSettings::Set3DColors( const Color& rColor )
2099 : {
2100 4263 : CopyData();
2101 4263 : mxData->maFaceColor = rColor;
2102 4263 : mxData->maLightBorderColor = rColor;
2103 4263 : mxData->maMenuBorderColor = rColor;
2104 4263 : mxData->maDarkShadowColor = Color( COL_BLACK );
2105 4263 : if ( rColor != Color( COL_LIGHTGRAY ) )
2106 : {
2107 4263 : mxData->maLightColor = rColor;
2108 4263 : mxData->maShadowColor = rColor;
2109 4263 : mxData->maDarkShadowColor=rColor;
2110 4263 : mxData->maLightColor.IncreaseLuminance( 64 );
2111 4263 : mxData->maShadowColor.DecreaseLuminance( 64 );
2112 4263 : mxData->maDarkShadowColor.DecreaseLuminance( 100 );
2113 4263 : sal_uLong nRed = mxData->maLightColor.GetRed();
2114 4263 : sal_uLong nGreen = mxData->maLightColor.GetGreen();
2115 4263 : sal_uLong nBlue = mxData->maLightColor.GetBlue();
2116 4263 : nRed += (sal_uLong)(mxData->maShadowColor.GetRed());
2117 4263 : nGreen += (sal_uLong)(mxData->maShadowColor.GetGreen());
2118 4263 : nBlue += (sal_uLong)(mxData->maShadowColor.GetBlue());
2119 4263 : mxData->maCheckedColor = Color( (sal_uInt8)(nRed/2), (sal_uInt8)(nGreen/2), (sal_uInt8)(nBlue/2) );
2120 : }
2121 : else
2122 : {
2123 0 : mxData->maCheckedColor = Color( 0x99, 0x99, 0x99 );
2124 0 : mxData->maLightColor = Color( COL_WHITE );
2125 0 : mxData->maShadowColor = Color( COL_GRAY );
2126 : }
2127 4263 : }
2128 :
2129 11 : void StyleSettings::SetCheckedColorSpecialCase( )
2130 : {
2131 11 : CopyData();
2132 : // Light gray checked color special case
2133 11 : if ( GetFaceColor() == COL_LIGHTGRAY )
2134 0 : mxData->maCheckedColor = Color( 0xCC, 0xCC, 0xCC );
2135 : else
2136 : {
2137 11 : sal_uInt8 nRed = (sal_uInt8)(((sal_uInt16)mxData->maFaceColor.GetRed() + (sal_uInt16)mxData->maLightColor.GetRed())/2);
2138 11 : sal_uInt8 nGreen = (sal_uInt8)(((sal_uInt16)mxData->maFaceColor.GetGreen() + (sal_uInt16)mxData->maLightColor.GetGreen())/2);
2139 11 : sal_uInt8 nBlue = (sal_uInt8)(((sal_uInt16)mxData->maFaceColor.GetBlue() + (sal_uInt16)mxData->maLightColor.GetBlue())/2);
2140 11 : mxData->maCheckedColor = Color( nRed, nGreen, nBlue );
2141 : }
2142 11 : }
2143 :
2144 36367 : bool StyleSettings::GetUseImagesInMenus() const
2145 : {
2146 : // icon mode selected in Tools -> Options... -> OpenOffice.org -> View
2147 36367 : switch (mxData->meUseImagesInMenus) {
2148 : case TRISTATE_FALSE:
2149 0 : return false;
2150 : case TRISTATE_TRUE:
2151 0 : return true;
2152 : default: // TRISTATE_INDET:
2153 36367 : return GetPreferredUseImagesInMenus();
2154 : }
2155 : }
2156 :
2157 0 : static BitmapEx readBitmapEx( const OUString& rPath )
2158 : {
2159 0 : OUString aPath( rPath );
2160 0 : rtl::Bootstrap::expandMacros( aPath );
2161 :
2162 : // import the image
2163 0 : Graphic aGraphic;
2164 0 : if ( GraphicFilter::LoadGraphic( aPath, OUString(), aGraphic ) != GRFILTER_OK )
2165 0 : return BitmapEx();
2166 0 : return aGraphic.GetBitmapEx();
2167 : }
2168 :
2169 : enum WhichPersona { PERSONA_HEADER, PERSONA_FOOTER };
2170 :
2171 : /** Update the setting of the Persona header / footer in ImplStyleData */
2172 137323 : static void setupPersonaHeaderFooter( WhichPersona eWhich, OUString& rHeaderFooter, BitmapEx& rHeaderFooterBitmap, boost::optional<Color>& rMenuBarTextColor )
2173 : {
2174 137323 : uno::Reference< uno::XComponentContext > xContext( comphelper::getProcessComponentContext() );
2175 137323 : if ( !xContext.is() )
2176 0 : return;
2177 :
2178 : // don't burn time loading images we don't need.
2179 137323 : if ( Application::IsHeadlessModeEnabled() )
2180 137312 : return;
2181 :
2182 : // read from the configuration
2183 17 : OUString aPersona( officecfg::Office::Common::Misc::Persona::get( xContext ) );
2184 17 : OUString aPersonaSettings( officecfg::Office::Common::Misc::PersonaSettings::get( xContext ) );
2185 :
2186 : // have the settings changed? marks if header /footer prepared before
2187 : //should maybe extended to a flag that marks if header /footer /both are loaded
2188 17 : OUString aOldValue= eWhich==PERSONA_HEADER?OUString(aPersona + ";" + aPersonaSettings+";h" ):OUString(aPersona + ";" + aPersonaSettings+";f" );
2189 11 : if ( rHeaderFooter == aOldValue )
2190 5 : return;
2191 :
2192 6 : rHeaderFooter = aOldValue;
2193 6 : rHeaderFooterBitmap = BitmapEx();
2194 6 : rMenuBarTextColor = boost::none;
2195 :
2196 : // now read the new values and setup bitmaps
2197 12 : OUString aHeader, aFooter;
2198 6 : if ( aPersona == "own" || aPersona == "default" )
2199 : {
2200 3 : sal_Int32 nIndex = 0;
2201 3 : aHeader = aPersonaSettings.getToken( 0, ';', nIndex );
2202 3 : if ( nIndex > 0 )
2203 0 : aFooter = aPersonaSettings.getToken( 0, ';', nIndex );
2204 :
2205 : // change menu text color, advance nIndex to skip the '#'
2206 3 : if ( nIndex > 0 )
2207 : {
2208 0 : OUString aColor = aPersonaSettings.getToken( 0, ';', ++nIndex );
2209 0 : rMenuBarTextColor = Color( aColor.toUInt64( 16 ) );
2210 : }
2211 : }
2212 :
2213 12 : OUString aName;
2214 6 : switch ( eWhich ) {
2215 6 : case PERSONA_HEADER: aName = aHeader; break;
2216 0 : case PERSONA_FOOTER: aName = aFooter; break;
2217 : }
2218 :
2219 6 : if ( !aName.isEmpty() )
2220 : {
2221 0 : OUString gallery("");
2222 : // try the gallery first, then the program path:
2223 0 : if ( aPersona == "own" && !aPersonaSettings.startsWith( "vnd.sun.star.expand" ) )
2224 : {
2225 0 : gallery = "${$BRAND_BASE_DIR/" LIBO_ETC_FOLDER "/" SAL_CONFIGFILE( "bootstrap") "::UserInstallation}";
2226 0 : rtl::Bootstrap::expandMacros( gallery );
2227 0 : gallery += "/user/gallery/personas/";
2228 : }
2229 0 : else if ( aPersona == "default" )
2230 : {
2231 0 : gallery = "$BRAND_BASE_DIR/" LIBO_SHARE_FOLDER;
2232 0 : gallery += "/gallery/personas/";
2233 : }
2234 0 : rHeaderFooterBitmap = readBitmapEx( gallery + aName );
2235 :
2236 0 : if ( rHeaderFooterBitmap.IsEmpty() )
2237 0 : rHeaderFooterBitmap = readBitmapEx( "$BRAND_BASE_DIR/" LIBO_ETC_FOLDER "/" + aName );
2238 : }
2239 :
2240 : // Something went wrong. Probably, the images are missing. Clear the persona properties in the registry.
2241 :
2242 6 : if( rHeaderFooterBitmap.IsEmpty() )
2243 : {
2244 6 : std::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create());
2245 6 : officecfg::Office::Common::Misc::Persona::set( "no", batch );
2246 6 : officecfg::Office::Common::Misc::PersonaSettings::set( "", batch );
2247 6 : batch->commit();
2248 6 : }
2249 : }
2250 :
2251 134684 : const BitmapEx StyleSettings::GetPersonaHeader() const
2252 : {
2253 134684 : setupPersonaHeaderFooter( PERSONA_HEADER, mxData->maPersonaHeaderFooter, mxData->maPersonaHeaderBitmap, mxData->maPersonaMenuBarTextColor );
2254 134684 : return mxData->maPersonaHeaderBitmap;
2255 : }
2256 :
2257 2639 : const BitmapEx StyleSettings::GetPersonaFooter() const
2258 : {
2259 2639 : setupPersonaHeaderFooter( PERSONA_FOOTER, mxData->maPersonaHeaderFooter, mxData->maPersonaFooterBitmap, mxData->maPersonaMenuBarTextColor );
2260 2639 : return mxData->maPersonaFooterBitmap;
2261 : }
2262 :
2263 11 : const boost::optional<Color>& StyleSettings::GetPersonaMenuBarTextColor() const
2264 : {
2265 11 : GetPersonaHeader();
2266 11 : return mxData->maPersonaMenuBarTextColor;
2267 : }
2268 :
2269 116 : void StyleSettings::SetStandardStyles()
2270 : {
2271 116 : CopyData();
2272 116 : mxData->SetStandardStyles();
2273 116 : }
2274 :
2275 84720 : Color StyleSettings::GetFaceGradientColor() const
2276 : {
2277 : // compute a brighter face color that can be used in gradients
2278 : // for a convex look (eg toolbars)
2279 :
2280 : sal_uInt16 h, s, b;
2281 84720 : GetFaceColor().RGBtoHSB( h, s, b );
2282 84720 : if( s > 1) s=1;
2283 84720 : if( b < 98) b=98;
2284 84720 : return Color( Color::HSBtoRGB( h, s, b ) );
2285 : }
2286 :
2287 17100 : Color StyleSettings::GetSeparatorColor() const
2288 : {
2289 : // compute a brighter shadow color for separators (used in toolbars or between menubar and toolbars on Windows XP)
2290 : sal_uInt16 h, s, b;
2291 17100 : GetShadowColor().RGBtoHSB( h, s, b );
2292 17100 : b += b/4;
2293 17100 : s -= s/4;
2294 17100 : return Color( Color::HSBtoRGB( h, s, b ) );
2295 : }
2296 :
2297 58915 : void StyleSettings::CopyData()
2298 : {
2299 : // copy if other references exist
2300 58915 : if ( ! mxData.unique() ) {
2301 49894 : mxData = std::make_shared<ImplStyleData>(*mxData);
2302 : }
2303 58915 : }
2304 :
2305 55395 : bool StyleSettings::operator ==( const StyleSettings& rSet ) const
2306 : {
2307 55395 : if ( mxData == rSet.mxData )
2308 2700 : return true;
2309 :
2310 52695 : if (mxData->mIconTheme != rSet.mxData->mIconTheme) {
2311 2579 : return false;
2312 : }
2313 :
2314 50116 : if (*mxData->mIconThemeSelector != *rSet.mxData->mIconThemeSelector) {
2315 0 : return false;
2316 : }
2317 :
2318 150334 : if ( (mxData->mnOptions == rSet.mxData->mnOptions) &&
2319 100204 : (mxData->mbAutoMnemonic == rSet.mxData->mbAutoMnemonic) &&
2320 100202 : (mxData->mnDragFullOptions == rSet.mxData->mnDragFullOptions) &&
2321 100169 : (mxData->mnSelectionOptions == rSet.mxData->mnSelectionOptions) &&
2322 100138 : (mxData->mnDisplayOptions == rSet.mxData->mnDisplayOptions) &&
2323 100138 : (mxData->mnCursorSize == rSet.mxData->mnCursorSize) &&
2324 100138 : (mxData->mnCursorBlinkTime == rSet.mxData->mnCursorBlinkTime) &&
2325 100138 : (mxData->mnBorderSize == rSet.mxData->mnBorderSize) &&
2326 100138 : (mxData->mnTitleHeight == rSet.mxData->mnTitleHeight) &&
2327 100138 : (mxData->mnFloatTitleHeight == rSet.mxData->mnFloatTitleHeight) &&
2328 100138 : (mxData->mnTearOffTitleHeight == rSet.mxData->mnTearOffTitleHeight) &&
2329 100138 : (mxData->mnScrollBarSize == rSet.mxData->mnScrollBarSize) &&
2330 100138 : (mxData->mnMinThumbSize == rSet.mxData->mnMinThumbSize) &&
2331 100138 : (mxData->mnSplitSize == rSet.mxData->mnSplitSize) &&
2332 100138 : (mxData->mnSpinSize == rSet.mxData->mnSpinSize) &&
2333 99790 : (mxData->mnAntialiasedMin == rSet.mxData->mnAntialiasedMin) &&
2334 99442 : (mxData->mnScreenZoom == rSet.mxData->mnScreenZoom) &&
2335 99442 : (mxData->mnScreenFontZoom == rSet.mxData->mnScreenFontZoom) &&
2336 99442 : (mxData->mbHighContrast == rSet.mxData->mbHighContrast) &&
2337 99442 : (mxData->mbUseSystemUIFonts == rSet.mxData->mbUseSystemUIFonts) &&
2338 99442 : (mxData->mnUseFlatBorders == rSet.mxData->mnUseFlatBorders) &&
2339 99442 : (mxData->mnUseFlatMenus == rSet.mxData->mnUseFlatMenus) &&
2340 95106 : (mxData->maFaceColor == rSet.mxData->maFaceColor) &&
2341 90770 : (mxData->maCheckedColor == rSet.mxData->maCheckedColor) &&
2342 90770 : (mxData->maLightColor == rSet.mxData->maLightColor) &&
2343 90770 : (mxData->maLightBorderColor == rSet.mxData->maLightBorderColor) &&
2344 90770 : (mxData->maShadowColor == rSet.mxData->maShadowColor) &&
2345 90770 : (mxData->maDarkShadowColor == rSet.mxData->maDarkShadowColor) &&
2346 90770 : (mxData->maButtonTextColor == rSet.mxData->maButtonTextColor) &&
2347 90770 : (mxData->maRadioCheckTextColor == rSet.mxData->maRadioCheckTextColor) &&
2348 90770 : (mxData->maGroupTextColor == rSet.mxData->maGroupTextColor) &&
2349 90770 : (mxData->maLabelTextColor == rSet.mxData->maLabelTextColor) &&
2350 90770 : (mxData->maInfoTextColor == rSet.mxData->maInfoTextColor) &&
2351 90770 : (mxData->maWindowColor == rSet.mxData->maWindowColor) &&
2352 90770 : (mxData->maWindowTextColor == rSet.mxData->maWindowTextColor) &&
2353 90770 : (mxData->maDialogColor == rSet.mxData->maDialogColor) &&
2354 90770 : (mxData->maDialogTextColor == rSet.mxData->maDialogTextColor) &&
2355 90770 : (mxData->maWorkspaceColor == rSet.mxData->maWorkspaceColor) &&
2356 90728 : (mxData->maMonoColor == rSet.mxData->maMonoColor) &&
2357 90686 : (mxData->maFieldColor == rSet.mxData->maFieldColor) &&
2358 90518 : (mxData->maFieldTextColor == rSet.mxData->maFieldTextColor) &&
2359 90350 : (mxData->maActiveColor == rSet.mxData->maActiveColor) &&
2360 90350 : (mxData->maActiveTextColor == rSet.mxData->maActiveTextColor) &&
2361 90350 : (mxData->maActiveBorderColor == rSet.mxData->maActiveBorderColor) &&
2362 90350 : (mxData->maDeactiveColor == rSet.mxData->maDeactiveColor) &&
2363 90350 : (mxData->maDeactiveTextColor == rSet.mxData->maDeactiveTextColor) &&
2364 90350 : (mxData->maDeactiveBorderColor == rSet.mxData->maDeactiveBorderColor) &&
2365 90350 : (mxData->maMenuColor == rSet.mxData->maMenuColor) &&
2366 90350 : (mxData->maMenuBarColor == rSet.mxData->maMenuBarColor) &&
2367 90350 : (mxData->maMenuBarRolloverColor == rSet.mxData->maMenuBarRolloverColor) &&
2368 90350 : (mxData->maMenuBorderColor == rSet.mxData->maMenuBorderColor) &&
2369 90350 : (mxData->maMenuTextColor == rSet.mxData->maMenuTextColor) &&
2370 90350 : (mxData->maMenuBarTextColor == rSet.mxData->maMenuBarTextColor) &&
2371 90350 : (mxData->maMenuBarRolloverTextColor == rSet.mxData->maMenuBarRolloverTextColor) &&
2372 90350 : (mxData->maMenuHighlightColor == rSet.mxData->maMenuHighlightColor) &&
2373 90350 : (mxData->maMenuHighlightTextColor == rSet.mxData->maMenuHighlightTextColor) &&
2374 90350 : (mxData->maHighlightColor == rSet.mxData->maHighlightColor) &&
2375 90350 : (mxData->maHighlightTextColor == rSet.mxData->maHighlightTextColor) &&
2376 90350 : (mxData->maTabTextColor == rSet.mxData->maTabTextColor) &&
2377 90350 : (mxData->maTabRolloverTextColor == rSet.mxData->maTabRolloverTextColor) &&
2378 90350 : (mxData->maTabHighlightTextColor == rSet.mxData->maTabHighlightTextColor) &&
2379 90350 : (mxData->maActiveTabColor == rSet.mxData->maActiveTabColor) &&
2380 90350 : (mxData->maInactiveTabColor == rSet.mxData->maInactiveTabColor) &&
2381 90350 : (mxData->maDisableColor == rSet.mxData->maDisableColor) &&
2382 90350 : (mxData->maHelpColor == rSet.mxData->maHelpColor) &&
2383 90350 : (mxData->maHelpTextColor == rSet.mxData->maHelpTextColor) &&
2384 90350 : (mxData->maLinkColor == rSet.mxData->maLinkColor) &&
2385 90350 : (mxData->maVisitedLinkColor == rSet.mxData->maVisitedLinkColor) &&
2386 90350 : (mxData->maHighlightLinkColor == rSet.mxData->maHighlightLinkColor) &&
2387 90350 : (mxData->maAppFont == rSet.mxData->maAppFont) &&
2388 90350 : (mxData->maHelpFont == rSet.mxData->maHelpFont) &&
2389 90350 : (mxData->maTitleFont == rSet.mxData->maTitleFont) &&
2390 90350 : (mxData->maFloatTitleFont == rSet.mxData->maFloatTitleFont) &&
2391 90350 : (mxData->maMenuFont == rSet.mxData->maMenuFont) &&
2392 90350 : (mxData->maToolFont == rSet.mxData->maToolFont) &&
2393 90350 : (mxData->maGroupFont == rSet.mxData->maGroupFont) &&
2394 90350 : (mxData->maLabelFont == rSet.mxData->maLabelFont) &&
2395 90350 : (mxData->maInfoFont == rSet.mxData->maInfoFont) &&
2396 90350 : (mxData->maRadioCheckFont == rSet.mxData->maRadioCheckFont) &&
2397 90350 : (mxData->maPushButtonFont == rSet.mxData->maPushButtonFont) &&
2398 90350 : (mxData->maFieldFont == rSet.mxData->maFieldFont) &&
2399 90350 : (mxData->maIconFont == rSet.mxData->maIconFont) &&
2400 90350 : (mxData->maTabFont == rSet.mxData->maTabFont) &&
2401 90350 : (mxData->meUseImagesInMenus == rSet.mxData->meUseImagesInMenus) &&
2402 90350 : (mxData->mbPreferredUseImagesInMenus == rSet.mxData->mbPreferredUseImagesInMenus) &&
2403 90350 : (mxData->mbSkipDisabledInMenus == rSet.mxData->mbSkipDisabledInMenus) &&
2404 90350 : (mxData->mbHideDisabledMenuItems == rSet.mxData->mbHideDisabledMenuItems) &&
2405 90350 : (mxData->mbAcceleratorsInContextMenus == rSet.mxData->mbAcceleratorsInContextMenus)&&
2406 90350 : (mxData->mbPrimaryButtonWarpsSlider == rSet.mxData->mbPrimaryButtonWarpsSlider) &&
2407 90350 : (mxData->maFontColor == rSet.mxData->maFontColor) &&
2408 90350 : (mxData->mnEdgeBlending == rSet.mxData->mnEdgeBlending) &&
2409 90350 : (mxData->maEdgeBlendingTopLeftColor == rSet.mxData->maEdgeBlendingTopLeftColor) &&
2410 90350 : (mxData->maEdgeBlendingBottomRightColor == rSet.mxData->maEdgeBlendingBottomRightColor) &&
2411 90350 : (mxData->mnListBoxMaximumLineCount == rSet.mxData->mnListBoxMaximumLineCount) &&
2412 90350 : (mxData->mnColorValueSetColumnCount == rSet.mxData->mnColorValueSetColumnCount) &&
2413 90350 : (mxData->mnColorValueSetMaximumRowCount == rSet.mxData->mnColorValueSetMaximumRowCount) &&
2414 90350 : (mxData->maListBoxPreviewDefaultLogicSize == rSet.mxData->maListBoxPreviewDefaultLogicSize) &&
2415 90350 : (mxData->maListBoxPreviewDefaultPixelSize == rSet.mxData->maListBoxPreviewDefaultPixelSize) &&
2416 140466 : (mxData->mnListBoxPreviewDefaultLineWidth == rSet.mxData->mnListBoxPreviewDefaultLineWidth) &&
2417 45175 : (mxData->mbPreviewUsesCheckeredBackground == rSet.mxData->mbPreviewUsesCheckeredBackground))
2418 45175 : return true;
2419 : else
2420 4941 : return false;
2421 : }
2422 :
2423 422 : ImplMiscData::ImplMiscData()
2424 : {
2425 422 : mnEnableATT = TRISTATE_INDET;
2426 422 : mnDisablePrinting = TRISTATE_INDET;
2427 422 : static const char* pEnv = getenv("SAL_DECIMALSEP_ENABLED" ); // set default without UI
2428 422 : mbEnableLocalizedDecimalSep = (pEnv != NULL);
2429 : // Should we display any windows?
2430 422 : mbPseudoHeadless = getenv("VCL_HIDE_WINDOWS") || comphelper::LibreOfficeKit::isActive();
2431 422 : }
2432 :
2433 0 : ImplMiscData::ImplMiscData( const ImplMiscData& rData )
2434 : {
2435 0 : mnEnableATT = rData.mnEnableATT;
2436 0 : mnDisablePrinting = rData.mnDisablePrinting;
2437 0 : mbEnableLocalizedDecimalSep = rData.mbEnableLocalizedDecimalSep;
2438 0 : mbPseudoHeadless = rData.mbPseudoHeadless;
2439 0 : }
2440 :
2441 422 : MiscSettings::MiscSettings()
2442 422 : : mxData(std::make_shared<ImplMiscData>())
2443 : {
2444 422 : }
2445 :
2446 47960 : MiscSettings::~MiscSettings()
2447 : {
2448 47960 : }
2449 :
2450 422 : void MiscSettings::CopyData()
2451 : {
2452 : // copy if other references exist
2453 422 : if ( ! mxData.unique() ) {
2454 0 : mxData = std::make_shared<ImplMiscData>(*mxData);
2455 : }
2456 422 : }
2457 :
2458 55395 : bool MiscSettings::operator ==( const MiscSettings& rSet ) const
2459 : {
2460 55395 : if ( mxData == rSet.mxData )
2461 55395 : return true;
2462 :
2463 0 : if ( (mxData->mnEnableATT == rSet.mxData->mnEnableATT ) &&
2464 0 : (mxData->mnDisablePrinting == rSet.mxData->mnDisablePrinting ) &&
2465 0 : (mxData->mbEnableLocalizedDecimalSep == rSet.mxData->mbEnableLocalizedDecimalSep ) )
2466 0 : return true;
2467 : else
2468 0 : return false;
2469 : }
2470 :
2471 : bool
2472 55395 : MiscSettings::operator !=( const MiscSettings& rSet ) const
2473 : {
2474 55395 : return !(*this == rSet);
2475 : }
2476 :
2477 3439 : bool MiscSettings::GetDisablePrinting() const
2478 : {
2479 3439 : if( mxData->mnDisablePrinting == TRISTATE_INDET )
2480 : {
2481 : OUString aEnable =
2482 : vcl::SettingsConfigItem::get()->
2483 : getValue( OUString( "DesktopManagement" ),
2484 41 : OUString( "DisablePrinting" ) );
2485 41 : mxData->mnDisablePrinting = aEnable.equalsIgnoreAsciiCase("true") ? TRISTATE_TRUE : TRISTATE_FALSE;
2486 : }
2487 :
2488 3439 : return mxData->mnDisablePrinting != TRISTATE_FALSE;
2489 : }
2490 :
2491 31870 : bool MiscSettings::GetEnableATToolSupport() const
2492 : {
2493 :
2494 : #ifdef WNT
2495 : if( mxData->mnEnableATT == TRISTATE_INDET )
2496 : {
2497 : // Check in the Windows registry if an AT tool wants Accessibility support to
2498 : // be activated ..
2499 : HKEY hkey;
2500 :
2501 : if( ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,
2502 : "Software\\LibreOffice\\Accessibility\\AtToolSupport",
2503 : &hkey) )
2504 : {
2505 : DWORD dwType;
2506 : sal_uInt8 Data[6]; // possible values: "true", "false", "1", "0", DWORD
2507 : DWORD cbData = sizeof(Data);
2508 :
2509 : if( ERROR_SUCCESS == RegQueryValueEx(hkey, "SupportAssistiveTechnology",
2510 : NULL, &dwType, Data, &cbData) )
2511 : {
2512 : switch (dwType)
2513 : {
2514 : case REG_SZ:
2515 : mxData->mnEnableATT = ((0 == stricmp((const char *) Data, "1")) || (0 == stricmp((const char *) Data, "true"))) ? TRISTATE_TRUE : TRISTATE_FALSE;
2516 : break;
2517 : case REG_DWORD:
2518 : switch (((DWORD *) Data)[0]) {
2519 : case 0:
2520 : mxData->mnEnableATT = TRISTATE_FALSE;
2521 : break;
2522 : case 1:
2523 : mxData->mnEnableATT = TRISTATE_TRUE;
2524 : break;
2525 : default:
2526 : mxData->mnEnableATT = TRISTATE_INDET;
2527 : //TODO: or TRISTATE_TRUE?
2528 : break;
2529 : }
2530 : break;
2531 : default:
2532 : // Unsupported registry type
2533 : break;
2534 : }
2535 : }
2536 :
2537 : RegCloseKey(hkey);
2538 : }
2539 : }
2540 : #endif
2541 :
2542 31870 : if( mxData->mnEnableATT == TRISTATE_INDET )
2543 : {
2544 179 : static const char* pEnv = getenv("SAL_ACCESSIBILITY_ENABLED" );
2545 179 : if( !pEnv || !*pEnv )
2546 : {
2547 : OUString aEnable =
2548 : vcl::SettingsConfigItem::get()->
2549 : getValue( OUString( "Accessibility" ),
2550 179 : OUString( "EnableATToolSupport" ) );
2551 179 : mxData->mnEnableATT = aEnable.equalsIgnoreAsciiCase("true") ? TRISTATE_TRUE : TRISTATE_FALSE;
2552 : }
2553 : else
2554 : {
2555 0 : mxData->mnEnableATT = TRISTATE_TRUE;
2556 : }
2557 : }
2558 :
2559 31870 : return mxData->mnEnableATT != TRISTATE_FALSE;
2560 : }
2561 :
2562 : #ifdef WNT
2563 : void MiscSettings::SetEnableATToolSupport( bool bEnable )
2564 : {
2565 : if ( (bEnable ? TRISTATE_TRUE : TRISTATE_FALSE) != mxData->mnEnableATT )
2566 : {
2567 : if( bEnable && !ImplInitAccessBridge() )
2568 : return;
2569 :
2570 : HKEY hkey;
2571 :
2572 : // If the accessibility key in the Windows registry exists, change it synchronously
2573 : if( ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,
2574 : "Software\\LibreOffice\\Accessibility\\AtToolSupport",
2575 : &hkey) )
2576 : {
2577 : DWORD dwType;
2578 : sal_uInt8 Data[6]; // possible values: "true", "false", 1, 0
2579 : DWORD cbData = sizeof(Data);
2580 :
2581 : if( ERROR_SUCCESS == RegQueryValueEx(hkey, "SupportAssistiveTechnology",
2582 : NULL, &dwType, Data, &cbData) )
2583 : {
2584 : switch (dwType)
2585 : {
2586 : case REG_SZ:
2587 : RegSetValueEx(hkey, "SupportAssistiveTechnology",
2588 : 0, dwType,
2589 : bEnable ? (sal_uInt8 *) "true" : (sal_uInt8 *) "false",
2590 : bEnable ? sizeof("true") : sizeof("false"));
2591 : break;
2592 : case REG_DWORD:
2593 : ((DWORD *) Data)[0] = bEnable ? 1 : 0;
2594 : RegSetValueEx(hkey, "SupportAssistiveTechnology",
2595 : 0, dwType, Data, sizeof(DWORD));
2596 : break;
2597 : default:
2598 : // Unsupported registry type
2599 : break;
2600 : }
2601 : }
2602 :
2603 : RegCloseKey(hkey);
2604 : }
2605 :
2606 : vcl::SettingsConfigItem::get()->
2607 : setValue( OUString( "Accessibility" ),
2608 : OUString( "EnableATToolSupport" ),
2609 : bEnable ? OUString("true") : OUString("false" ) );
2610 : mxData->mnEnableATT = bEnable ? TRISTATE_TRUE : TRISTATE_FALSE;
2611 : }
2612 : }
2613 : #endif
2614 :
2615 422 : void MiscSettings::SetEnableLocalizedDecimalSep( bool bEnable )
2616 : {
2617 422 : CopyData();
2618 422 : mxData->mbEnableLocalizedDecimalSep = bEnable;
2619 422 : }
2620 :
2621 0 : bool MiscSettings::GetEnableLocalizedDecimalSep() const
2622 : {
2623 0 : return mxData->mbEnableLocalizedDecimalSep;
2624 : }
2625 :
2626 3195 : bool MiscSettings::GetPseudoHeadless() const
2627 : {
2628 3195 : return mxData->mbPseudoHeadless;
2629 : }
2630 :
2631 422 : ImplHelpData::ImplHelpData()
2632 : {
2633 422 : mnTipDelay = 500;
2634 422 : mnTipTimeout = 3000;
2635 422 : mnBalloonDelay = 1500;
2636 422 : }
2637 :
2638 116 : ImplHelpData::ImplHelpData( const ImplHelpData& rData )
2639 : {
2640 116 : mnTipDelay = rData.mnTipDelay;
2641 116 : mnTipTimeout = rData.mnTipTimeout;
2642 116 : mnBalloonDelay = rData.mnBalloonDelay;
2643 116 : }
2644 :
2645 422 : HelpSettings::HelpSettings()
2646 422 : : mxData(std::make_shared<ImplHelpData>())
2647 : {
2648 422 : }
2649 :
2650 48076 : HelpSettings::~HelpSettings()
2651 : {
2652 48076 : }
2653 :
2654 116 : void HelpSettings::CopyData()
2655 : {
2656 : // copy if other references exist
2657 116 : if ( ! mxData.unique() ) {
2658 116 : mxData = std::make_shared<ImplHelpData>(*mxData);
2659 : }
2660 116 : }
2661 :
2662 0 : bool HelpSettings::operator ==( const HelpSettings& rSet ) const
2663 : {
2664 0 : if ( mxData == rSet.mxData )
2665 0 : return true;
2666 :
2667 0 : if ( (mxData->mnTipDelay == rSet.mxData->mnTipDelay ) &&
2668 0 : (mxData->mnTipTimeout == rSet.mxData->mnTipTimeout ) &&
2669 0 : (mxData->mnBalloonDelay == rSet.mxData->mnBalloonDelay ) )
2670 0 : return true;
2671 : else
2672 0 : return false;
2673 : }
2674 :
2675 : sal_uLong
2676 128 : HelpSettings::GetTipDelay() const
2677 : {
2678 128 : return mxData->mnTipDelay;
2679 : }
2680 :
2681 : void
2682 116 : HelpSettings::SetTipTimeout( sal_uLong nTipTimeout )
2683 : {
2684 116 : CopyData();
2685 116 : mxData->mnTipTimeout = nTipTimeout;
2686 116 : }
2687 :
2688 : sal_uLong
2689 0 : HelpSettings::GetTipTimeout() const
2690 : {
2691 0 : return mxData->mnTipTimeout;
2692 : }
2693 :
2694 : sal_uLong
2695 0 : HelpSettings::GetBalloonDelay() const
2696 : {
2697 0 : return mxData->mnBalloonDelay;
2698 : }
2699 :
2700 : bool
2701 0 : HelpSettings::operator !=( const HelpSettings& rSet ) const
2702 : {
2703 0 : return !(*this == rSet);
2704 : }
2705 :
2706 422 : ImplAllSettingsData::ImplAllSettingsData()
2707 : :
2708 : maLocale( LANGUAGE_SYSTEM ),
2709 422 : maUILocale( LANGUAGE_SYSTEM )
2710 : {
2711 422 : mnWindowUpdate = AllSettingsFlags::STYLE | AllSettingsFlags::MISC | AllSettingsFlags::LOCALE;
2712 422 : mpLocaleDataWrapper = NULL;
2713 422 : mpUILocaleDataWrapper = NULL;
2714 422 : mpI18nHelper = NULL;
2715 422 : mpUII18nHelper = NULL;
2716 422 : maMiscSettings.SetEnableLocalizedDecimalSep( maSysLocale.GetOptions().IsDecimalSeparatorAsLocale() );
2717 422 : }
2718 :
2719 50595 : ImplAllSettingsData::ImplAllSettingsData( const ImplAllSettingsData& rData ) :
2720 : maMouseSettings( rData.maMouseSettings ),
2721 : maStyleSettings( rData.maStyleSettings ),
2722 : maMiscSettings( rData.maMiscSettings ),
2723 : maHelpSettings( rData.maHelpSettings ),
2724 : maLocale( rData.maLocale ),
2725 50595 : maUILocale( rData.maUILocale )
2726 : {
2727 50595 : mnWindowUpdate = rData.mnWindowUpdate;
2728 : // Pointer couldn't shared and objects haven't a copy ctor
2729 : // So we create the cache objects new, if the GetFunction is
2730 : // called
2731 50595 : mpLocaleDataWrapper = NULL;
2732 50595 : mpUILocaleDataWrapper = NULL;
2733 50595 : mpI18nHelper = NULL;
2734 50595 : mpUII18nHelper = NULL;
2735 50595 : }
2736 :
2737 95920 : ImplAllSettingsData::~ImplAllSettingsData()
2738 : {
2739 47960 : delete mpLocaleDataWrapper;
2740 47960 : delete mpUILocaleDataWrapper;
2741 47960 : delete mpI18nHelper;
2742 47960 : delete mpUII18nHelper;
2743 47960 : }
2744 :
2745 422 : AllSettings::AllSettings()
2746 422 : : mxData(std::make_shared<ImplAllSettingsData>())
2747 : {
2748 422 : }
2749 :
2750 527616 : AllSettings::AllSettings( const AllSettings& rSet )
2751 : {
2752 527616 : mxData = rSet.mxData;
2753 527616 : }
2754 :
2755 515941 : AllSettings::~AllSettings()
2756 : {
2757 515941 : }
2758 :
2759 55353 : void AllSettings::CopyData()
2760 : {
2761 : // copy if other references exist
2762 55353 : if ( ! mxData.unique() ) {
2763 50595 : mxData = std::make_shared<ImplAllSettingsData>(*mxData);
2764 : }
2765 :
2766 55353 : }
2767 :
2768 2856 : AllSettingsFlags AllSettings::Update( AllSettingsFlags nFlags, const AllSettings& rSet )
2769 : {
2770 :
2771 2856 : AllSettingsFlags nChangeFlags = AllSettingsFlags::NONE;
2772 :
2773 2856 : if ( nFlags & AllSettingsFlags::STYLE )
2774 : {
2775 2856 : if ( mxData->maStyleSettings != rSet.mxData->maStyleSettings )
2776 : {
2777 2626 : CopyData();
2778 2626 : mxData->maStyleSettings = rSet.mxData->maStyleSettings;
2779 2626 : nChangeFlags |= AllSettingsFlags::STYLE;
2780 : }
2781 : }
2782 :
2783 2856 : if ( nFlags & AllSettingsFlags::MISC )
2784 : {
2785 2856 : if ( mxData->maMiscSettings != rSet.mxData->maMiscSettings )
2786 : {
2787 0 : CopyData();
2788 0 : mxData->maMiscSettings = rSet.mxData->maMiscSettings;
2789 0 : nChangeFlags |= AllSettingsFlags::MISC;
2790 : }
2791 : }
2792 :
2793 2856 : if ( nFlags & AllSettingsFlags::LOCALE )
2794 : {
2795 2856 : if ( mxData->maLocale != rSet.mxData->maLocale )
2796 : {
2797 601 : SetLanguageTag( rSet.mxData->maLocale );
2798 601 : nChangeFlags |= AllSettingsFlags::LOCALE;
2799 : }
2800 : }
2801 :
2802 2856 : return nChangeFlags;
2803 : }
2804 :
2805 52539 : AllSettingsFlags AllSettings::GetChangeFlags( const AllSettings& rSet ) const
2806 : {
2807 :
2808 52539 : AllSettingsFlags nChangeFlags = AllSettingsFlags::NONE;
2809 :
2810 52539 : if ( mxData->maStyleSettings != rSet.mxData->maStyleSettings )
2811 4894 : nChangeFlags |= AllSettingsFlags::STYLE;
2812 :
2813 52539 : if ( mxData->maMiscSettings != rSet.mxData->maMiscSettings )
2814 0 : nChangeFlags |= AllSettingsFlags::MISC;
2815 :
2816 52539 : if ( mxData->maLocale != rSet.mxData->maLocale )
2817 8 : nChangeFlags |= AllSettingsFlags::LOCALE;
2818 :
2819 52539 : return nChangeFlags;
2820 : }
2821 :
2822 0 : bool AllSettings::operator ==( const AllSettings& rSet ) const
2823 : {
2824 0 : if ( mxData == rSet.mxData )
2825 0 : return true;
2826 :
2827 0 : if ( (mxData->maMouseSettings == rSet.mxData->maMouseSettings) &&
2828 0 : (mxData->maStyleSettings == rSet.mxData->maStyleSettings) &&
2829 0 : (mxData->maMiscSettings == rSet.mxData->maMiscSettings) &&
2830 0 : (mxData->maHelpSettings == rSet.mxData->maHelpSettings) &&
2831 0 : (mxData->maLocale == rSet.mxData->maLocale) &&
2832 0 : (mxData->mnWindowUpdate == rSet.mxData->mnWindowUpdate) )
2833 : {
2834 0 : return true;
2835 : }
2836 :
2837 0 : return false;
2838 : }
2839 :
2840 606 : void AllSettings::SetLanguageTag( const LanguageTag& rLanguageTag )
2841 : {
2842 606 : if (mxData->maLocale != rLanguageTag)
2843 : {
2844 606 : CopyData();
2845 :
2846 606 : mxData->maLocale = rLanguageTag;
2847 :
2848 606 : if ( mxData->mpLocaleDataWrapper )
2849 : {
2850 0 : delete mxData->mpLocaleDataWrapper;
2851 0 : mxData->mpLocaleDataWrapper = NULL;
2852 : }
2853 606 : if ( mxData->mpI18nHelper )
2854 : {
2855 0 : delete mxData->mpI18nHelper;
2856 0 : mxData->mpI18nHelper = NULL;
2857 : }
2858 : }
2859 606 : }
2860 :
2861 : namespace
2862 : {
2863 1437192 : bool GetConfigLayoutRTL(bool bMath)
2864 : {
2865 1437192 : static const char* pEnv = getenv("SAL_RTL_ENABLED" );
2866 : static int nUIMirroring = -1; // -1: undef, 0: auto, 1: on 2: off
2867 :
2868 : // environment always overrides
2869 1437192 : if( pEnv )
2870 0 : return true;
2871 :
2872 1437192 : bool bRTL = false;
2873 :
2874 1437192 : if( nUIMirroring == -1 )
2875 : {
2876 215 : nUIMirroring = 0; // ask configuration only once
2877 : utl::OConfigurationNode aNode = utl::OConfigurationTreeRoot::tryCreateWithComponentContext(
2878 : comphelper::getProcessComponentContext(),
2879 215 : OUString("org.openoffice.Office.Common/I18N/CTL") ); // note: case sensitive !
2880 215 : if ( aNode.isValid() )
2881 : {
2882 215 : bool bTmp = bool();
2883 215 : ::com::sun::star::uno::Any aValue = aNode.getNodeValue( OUString("UIMirroring") );
2884 215 : if( aValue >>= bTmp )
2885 : {
2886 : // found true or false; if it was nil, nothing is changed
2887 0 : nUIMirroring = bTmp ? 1 : 2;
2888 215 : }
2889 215 : }
2890 : }
2891 :
2892 1437192 : if( nUIMirroring == 0 ) // no config found (eg, setup) or default (nil) was set: check language
2893 : {
2894 1437192 : LanguageType aLang = LANGUAGE_DONTKNOW;
2895 1437192 : ImplSVData* pSVData = ImplGetSVData();
2896 1437192 : if ( pSVData->maAppData.mpSettings )
2897 1437192 : aLang = pSVData->maAppData.mpSettings->GetUILanguageTag().getLanguageType();
2898 1437192 : if (bMath)
2899 27 : bRTL = MsLangId::isRightToLeftMath( aLang );
2900 : else
2901 1437165 : bRTL = MsLangId::isRightToLeft( aLang );
2902 : }
2903 : else
2904 0 : bRTL = (nUIMirroring == 1);
2905 :
2906 1437192 : return bRTL;
2907 : }
2908 : }
2909 :
2910 1437165 : bool AllSettings::GetLayoutRTL()
2911 : {
2912 1437165 : return GetConfigLayoutRTL(false);
2913 : }
2914 :
2915 27 : bool AllSettings::GetMathLayoutRTL()
2916 : {
2917 27 : return GetConfigLayoutRTL(true);
2918 : }
2919 :
2920 7007997 : const LanguageTag& AllSettings::GetLanguageTag() const
2921 : {
2922 : // SYSTEM locale means: use settings from SvtSysLocale that is resolved
2923 7007997 : if ( mxData->maLocale.isSystemLocale() )
2924 125 : mxData->maLocale = mxData->maSysLocale.GetLanguageTag();
2925 :
2926 7007997 : return mxData->maLocale;
2927 : }
2928 :
2929 1569419 : const LanguageTag& AllSettings::GetUILanguageTag() const
2930 : {
2931 : // the UILocale is never changed
2932 1569419 : if ( mxData->maUILocale.isSystemLocale() )
2933 227 : mxData->maUILocale = mxData->maSysLocale.GetUILanguageTag();
2934 :
2935 1569419 : return mxData->maUILocale;
2936 : }
2937 :
2938 3707 : const LocaleDataWrapper& AllSettings::GetLocaleDataWrapper() const
2939 : {
2940 3707 : if ( !mxData->mpLocaleDataWrapper )
2941 14 : const_cast<AllSettings*>(this)->mxData->mpLocaleDataWrapper = new LocaleDataWrapper(
2942 28 : comphelper::getProcessComponentContext(), GetLanguageTag() );
2943 3707 : return *mxData->mpLocaleDataWrapper;
2944 : }
2945 :
2946 887 : const LocaleDataWrapper& AllSettings::GetUILocaleDataWrapper() const
2947 : {
2948 887 : if ( !mxData->mpUILocaleDataWrapper )
2949 25 : const_cast<AllSettings*>(this)->mxData->mpUILocaleDataWrapper = new LocaleDataWrapper(
2950 50 : comphelper::getProcessComponentContext(), GetUILanguageTag() );
2951 887 : return *mxData->mpUILocaleDataWrapper;
2952 : }
2953 :
2954 11375 : const vcl::I18nHelper& AllSettings::GetLocaleI18nHelper() const
2955 : {
2956 11375 : if ( !mxData->mpI18nHelper ) {
2957 89 : const_cast<AllSettings*>(this)->mxData->mpI18nHelper = new vcl::I18nHelper(
2958 178 : comphelper::getProcessComponentContext(), GetLanguageTag() );
2959 : }
2960 11375 : return *mxData->mpI18nHelper;
2961 : }
2962 :
2963 2758 : const vcl::I18nHelper& AllSettings::GetUILocaleI18nHelper() const
2964 : {
2965 2758 : if ( !mxData->mpUII18nHelper ) {
2966 58 : const_cast<AllSettings*>(this)->mxData->mpUII18nHelper = new vcl::I18nHelper(
2967 116 : comphelper::getProcessComponentContext(), GetUILanguageTag() );
2968 : }
2969 2758 : return *mxData->mpUII18nHelper;
2970 : }
2971 :
2972 1 : void AllSettings::LocaleSettingsChanged( sal_uInt32 nHint )
2973 : {
2974 1 : AllSettings aAllSettings( Application::GetSettings() );
2975 1 : if ( nHint & SYSLOCALEOPTIONS_HINT_DECSEP )
2976 : {
2977 0 : MiscSettings aMiscSettings = aAllSettings.GetMiscSettings();
2978 0 : bool bIsDecSepAsLocale = aAllSettings.mxData->maSysLocale.GetOptions().IsDecimalSeparatorAsLocale();
2979 0 : if ( aMiscSettings.GetEnableLocalizedDecimalSep() != bIsDecSepAsLocale )
2980 : {
2981 0 : aMiscSettings.SetEnableLocalizedDecimalSep( bIsDecSepAsLocale );
2982 0 : aAllSettings.SetMiscSettings( aMiscSettings );
2983 0 : }
2984 : }
2985 :
2986 1 : if ( (nHint & SYSLOCALEOPTIONS_HINT_LOCALE) )
2987 1 : aAllSettings.SetLanguageTag( aAllSettings.mxData->maSysLocale.GetOptions().GetLanguageTag() );
2988 :
2989 1 : Application::SetSettings( aAllSettings );
2990 1 : }
2991 :
2992 : const StyleSettings&
2993 2832789 : AllSettings::GetStyleSettings() const
2994 : {
2995 2832789 : return mxData->maStyleSettings;
2996 : }
2997 :
2998 : StyleSettingsOptions
2999 315601 : StyleSettings::GetOptions() const
3000 : {
3001 315601 : return mxData->mnOptions;
3002 : }
3003 :
3004 : std::vector<vcl::IconThemeInfo>
3005 0 : StyleSettings::GetInstalledIconThemes() const
3006 : {
3007 0 : return mxData->mIconThemeScanner->GetFoundIconThemes();
3008 : }
3009 :
3010 : /*static*/ OUString
3011 468 : StyleSettings::GetAutomaticallyChosenIconTheme() const
3012 : {
3013 468 : OUString desktopEnvironment = Application::GetDesktopEnvironment();
3014 468 : OUString themeName = mxData->mIconThemeSelector->SelectIconThemeForDesktopEnvironment(
3015 468 : mxData->mIconThemeScanner->GetFoundIconThemes(),
3016 : desktopEnvironment
3017 468 : );
3018 468 : return themeName;
3019 : }
3020 :
3021 : void
3022 370 : StyleSettings::SetIconTheme(const OUString& theme)
3023 : {
3024 370 : CopyData();
3025 370 : mxData->mIconTheme = theme;
3026 370 : }
3027 :
3028 : OUString
3029 175501 : StyleSettings::DetermineIconTheme() const
3030 : {
3031 175501 : OUString sTheme(mxData->mIconTheme);
3032 175501 : if (sTheme.isEmpty())
3033 : {
3034 : // read from the configuration, or fallback to what the desktop wants
3035 98 : uno::Reference<uno::XComponentContext> xContext(comphelper::getProcessComponentContext());
3036 98 : if (xContext.is())
3037 : {
3038 98 : sTheme = officecfg::Office::Common::Misc::SymbolStyle::get(xContext);
3039 :
3040 98 : if (sTheme.isEmpty() || sTheme == "auto")
3041 98 : sTheme = GetAutomaticallyChosenIconTheme();
3042 98 : }
3043 : }
3044 :
3045 175501 : OUString r = mxData->mIconThemeSelector->SelectIconTheme(
3046 175501 : mxData->mIconThemeScanner->GetFoundIconThemes(),
3047 175501 : sTheme);
3048 175501 : return r;
3049 : }
3050 :
3051 : void
3052 675 : StyleSettings::SetHighContrastMode(bool bHighContrast )
3053 : {
3054 675 : if (mxData->mbHighContrast == bHighContrast) {
3055 1350 : return;
3056 : }
3057 :
3058 0 : CopyData();
3059 0 : mxData->mbHighContrast = bHighContrast;
3060 0 : mxData->mIconThemeSelector->SetUseHighContrastTheme(bHighContrast);
3061 : }
3062 :
3063 : bool
3064 170368 : StyleSettings::GetHighContrastMode() const
3065 : {
3066 170368 : return mxData->mbHighContrast;
3067 : }
3068 :
3069 : void
3070 11 : StyleSettings::SetPreferredIconTheme(const OUString& theme)
3071 : {
3072 11 : mxData->mIconThemeSelector->SetPreferredIconTheme(theme);
3073 11 : }
3074 :
3075 : void
3076 3560 : AllSettings::SetMouseSettings( const MouseSettings& rSet )
3077 : {
3078 3560 : CopyData();
3079 3560 : mxData->maMouseSettings = rSet;
3080 3560 : }
3081 :
3082 : const MouseSettings&
3083 9202 : AllSettings::GetMouseSettings() const
3084 : {
3085 9202 : return mxData->maMouseSettings;
3086 : }
3087 :
3088 : void
3089 48445 : AllSettings::SetStyleSettings( const StyleSettings& rSet )
3090 : {
3091 48445 : CopyData();
3092 48445 : mxData->maStyleSettings = rSet;
3093 48445 : }
3094 :
3095 : void
3096 0 : AllSettings::SetMiscSettings( const MiscSettings& rSet )
3097 : {
3098 0 : CopyData();
3099 0 : mxData->maMiscSettings = rSet;
3100 0 : }
3101 :
3102 : const MiscSettings&
3103 38504 : AllSettings::GetMiscSettings() const
3104 : {
3105 38504 : return mxData->maMiscSettings;
3106 : }
3107 :
3108 : void
3109 116 : AllSettings::SetHelpSettings( const HelpSettings& rSet )
3110 : {
3111 116 : CopyData();
3112 116 : mxData->maHelpSettings = rSet;
3113 116 : }
3114 :
3115 : const HelpSettings&
3116 180 : AllSettings::GetHelpSettings() const
3117 : {
3118 180 : return mxData->maHelpSettings;
3119 : }
3120 :
3121 : AllSettingsFlags
3122 2856 : AllSettings::GetWindowUpdate() const
3123 : {
3124 2856 : return mxData->mnWindowUpdate;
3125 : }
3126 :
3127 : bool
3128 0 : AllSettings::operator !=( const AllSettings& rSet ) const
3129 : {
3130 0 : return !(*this == rSet);
3131 : }
3132 :
3133 : SvtSysLocale&
3134 449 : AllSettings::GetSysLocale()
3135 : {
3136 449 : return mxData->maSysLocale;
3137 801 : }
3138 :
3139 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|