LCOV - code coverage report
Current view: top level - vcl/source/app - settings.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 1172 1459 80.3 %
Date: 2015-06-13 12:38:46 Functions: 250 321 77.9 %
Legend: Lines: hit not hit

          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: */

Generated by: LCOV version 1.11