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

Generated by: LCOV version 1.10