diff options
Diffstat (limited to 'include/vcl/settings.hxx')
-rw-r--r-- | include/vcl/settings.hxx | 1104 |
1 files changed, 1104 insertions, 0 deletions
diff --git a/include/vcl/settings.hxx b/include/vcl/settings.hxx new file mode 100644 index 000000000000..19dc20f3ba12 --- /dev/null +++ b/include/vcl/settings.hxx @@ -0,0 +1,1104 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef _SV_SETTINGS_HXX +#define _SV_SETTINGS_HXX + +#include "tools/solar.h" +#include "vcl/dllapi.h" +#include "tools/color.hxx" +#include "vcl/bitmapex.hxx" +#include "vcl/font.hxx" +#include "vcl/accel.hxx" +#include "vcl/wall.hxx" +#include <i18nlangtag/languagetag.hxx> +#include <unotools/syslocale.hxx> + +class CollatorWrapper; +class LocaleDataWrapper; + +namespace vcl { + class I18nHelper; +} + +// ----------------- +// - ImplMouseData - +// ----------------- + +class ImplMouseData +{ + friend class MouseSettings; + + ImplMouseData(); + ImplMouseData( const ImplMouseData& rData ); + +private: + sal_uLong mnRefCount; + sal_uLong mnOptions; + sal_uLong mnDoubleClkTime; + long mnDoubleClkWidth; + long mnDoubleClkHeight; + long mnStartDragWidth; + long mnStartDragHeight; + sal_uInt16 mnStartDragCode; + sal_uInt16 mnDragMoveCode; + sal_uInt16 mnDragCopyCode; + sal_uInt16 mnDragLinkCode; + sal_uInt16 mnContextMenuCode; + sal_uInt16 mnContextMenuClicks; + sal_Bool mbContextMenuDown; + sal_uLong mnScrollRepeat; + sal_uLong mnButtonStartRepeat; + sal_uLong mnButtonRepeat; + sal_uLong mnActionDelay; + sal_uLong mnMenuDelay; + sal_uLong mnFollow; + sal_uInt16 mnMiddleButtonAction; + sal_uInt16 mnWheelBehavior; +}; + +// ----------------- +// - MouseSettings - +// ----------------- + +#define MOUSE_OPTION_AUTOFOCUS ((sal_uLong)0x00000001) +#define MOUSE_OPTION_AUTOCENTERPOS ((sal_uLong)0x00000002) +#define MOUSE_OPTION_AUTODEFBTNPOS ((sal_uLong)0x00000004) + +#define MOUSE_FOLLOW_MENU ((sal_uLong)0x00000001) +#define MOUSE_FOLLOW_DDLIST ((sal_uLong)0x00000002) + +#define MOUSE_MIDDLE_NOTHING ((sal_uInt16)0) +#define MOUSE_MIDDLE_AUTOSCROLL ((sal_uInt16)1) +#define MOUSE_MIDDLE_PASTESELECTION ((sal_uInt16)2) + +#define MOUSE_WHEEL_DISABLE ((sal_uInt16)0) +#define MOUSE_WHEEL_FOCUS_ONLY ((sal_uInt16)1) +#define MOUSE_WHEEL_ALWAYS ((sal_uInt16)2) + +class VCL_DLLPUBLIC MouseSettings +{ + void CopyData(); + +private: + ImplMouseData* mpData; + +public: + MouseSettings(); + MouseSettings( const MouseSettings& rSet ); + ~MouseSettings(); + + void SetOptions( sal_uLong nOptions ) + { CopyData(); mpData->mnOptions = nOptions; } + sal_uLong GetOptions() const + { return mpData->mnOptions; } + + void SetDoubleClickTime( sal_uLong nDoubleClkTime ) + { CopyData(); mpData->mnDoubleClkTime = nDoubleClkTime; } + sal_uLong GetDoubleClickTime() const + { return mpData->mnDoubleClkTime; } + void SetDoubleClickWidth( long nDoubleClkWidth ) + { CopyData(); mpData->mnDoubleClkWidth = nDoubleClkWidth; } + long GetDoubleClickWidth() const + { return mpData->mnDoubleClkWidth; } + void SetDoubleClickHeight( long nDoubleClkHeight ) + { CopyData(); mpData->mnDoubleClkHeight = nDoubleClkHeight; } + long GetDoubleClickHeight() const + { return mpData->mnDoubleClkHeight; } + + void SetStartDragWidth( long nDragWidth ) + { CopyData(); mpData->mnStartDragWidth = nDragWidth; } + long GetStartDragWidth() const + { return mpData->mnStartDragWidth; } + void SetStartDragHeight( long nDragHeight ) + { CopyData(); mpData->mnStartDragHeight = nDragHeight; } + long GetStartDragHeight() const + { return mpData->mnStartDragHeight; } + void SetStartDragCode( sal_uInt16 nCode ) + { CopyData(); mpData->mnStartDragCode = nCode; } + sal_uInt16 GetStartDragCode() const + { return mpData->mnStartDragCode; } + void SetDragMoveCode( sal_uInt16 nCode ) + { CopyData(); mpData->mnDragMoveCode = nCode; } + sal_uInt16 GetDragMoveCode() const + { return mpData->mnDragMoveCode; } + void SetDragCopyCode( sal_uInt16 nCode ) + { CopyData(); mpData->mnDragCopyCode = nCode; } + sal_uInt16 GetDragCopyCode() const + { return mpData->mnDragCopyCode; } + void SetDragLinkCode( sal_uInt16 nCode ) + { CopyData(); mpData->mnDragLinkCode = nCode; } + sal_uInt16 GetDragLinkCode() const + { return mpData->mnDragLinkCode; } + + void SetContextMenuCode( sal_uInt16 nCode ) + { CopyData(); mpData->mnContextMenuCode = nCode; } + sal_uInt16 GetContextMenuCode() const + { return mpData->mnContextMenuCode; } + void SetContextMenuClicks( sal_uInt16 nClicks ) + { CopyData(); mpData->mnContextMenuClicks = nClicks; } + sal_uInt16 GetContextMenuClicks() const + { return mpData->mnContextMenuClicks; } + void SetContextMenuDown( sal_Bool bDown ) + { CopyData(); mpData->mbContextMenuDown = bDown; } + sal_Bool GetContextMenuDown() const + { return mpData->mbContextMenuDown; } + + void SetScrollRepeat( sal_uLong nRepeat ) + { CopyData(); mpData->mnScrollRepeat = nRepeat; } + sal_uLong GetScrollRepeat() const + { return mpData->mnScrollRepeat; } + void SetButtonStartRepeat( sal_uLong nRepeat ) + { CopyData(); mpData->mnButtonStartRepeat = nRepeat; } + sal_uLong GetButtonStartRepeat() const + { return mpData->mnButtonStartRepeat; } + void SetButtonRepeat( sal_uLong nRepeat ) + { CopyData(); mpData->mnButtonRepeat = nRepeat; } + sal_uLong GetButtonRepeat() const + { return mpData->mnButtonRepeat; } + void SetActionDelay( sal_uLong nDelay ) + { CopyData(); mpData->mnActionDelay = nDelay; } + sal_uLong GetActionDelay() const + { return mpData->mnActionDelay; } + void SetMenuDelay( sal_uLong nDelay ) + { CopyData(); mpData->mnMenuDelay = nDelay; } + sal_uLong GetMenuDelay() const + { return mpData->mnMenuDelay; } + + void SetFollow( sal_uLong nFollow ) + { CopyData(); mpData->mnFollow = nFollow; } + sal_uLong GetFollow() const + { return mpData->mnFollow; } + + void SetMiddleButtonAction( sal_uInt16 nAction ) + { CopyData(); mpData->mnMiddleButtonAction = nAction; } + sal_uInt16 GetMiddleButtonAction() const + { return mpData->mnMiddleButtonAction; } + + void SetWheelBehavior( sal_uInt16 nBehavior ) + { CopyData(); mpData->mnWheelBehavior = nBehavior; } + sal_uInt16 GetWheelBehavior() const + { return mpData->mnWheelBehavior; } + + const MouseSettings& operator =( const MouseSettings& rSet ); + + sal_Bool operator ==( const MouseSettings& rSet ) const; + sal_Bool operator !=( const MouseSettings& rSet ) const + { return !(*this == rSet); } +}; + +struct DialogStyle +{ + int content_area_border; + int content_area_spacing; + int button_spacing; + int action_area_border; + DialogStyle() + : content_area_border(2) + , content_area_spacing(0) + , button_spacing(6) + , action_area_border(5) + {} +}; + +struct FrameStyle +{ + int left; + int right; + int top; + int bottom; + FrameStyle() + : left(2) + , right(2) + , top(2) + , bottom(2) + {} +}; + +// ----------------- +// - ImplStyleData - +// ----------------- + +class ImplStyleData +{ + friend class StyleSettings; + + ImplStyleData(); + ImplStyleData( const ImplStyleData& rData ); + void SetStandardStyles(); + +private: + sal_uLong mnRefCount; + + Color maActiveBorderColor; + Color maActiveColor; + Color maActiveColor2; + Color maActiveTextColor; + Color maButtonTextColor; + Color maButtonRolloverTextColor; + Color maCheckedColor; + Color maDarkShadowColor; + Color maDeactiveBorderColor; + Color maDeactiveColor; + Color maDeactiveColor2; + Color maDeactiveTextColor; + Color maDialogColor; + Color maDialogTextColor; + Color maDisableColor; + Color maFaceColor; + Color maFieldColor; + Color maFieldTextColor; + Color maFieldRolloverTextColor; + Color maFontColor; + Color maGroupTextColor; + Color maHelpColor; + Color maHelpTextColor; + Color maHighlightColor; + Color maHighlightLinkColor; + Color maHighlightTextColor; + Color maInfoTextColor; + Color maLabelTextColor; + Color maLightBorderColor; + Color maLightColor; + Color maLinkColor; + Color maMenuBarColor; + Color maMenuBorderColor; + Color maMenuColor; + Color maMenuHighlightColor; + Color maMenuHighlightTextColor; + Color maMenuTextColor; + Color maMenuBarTextColor; + Color maMonoColor; + Color maRadioCheckTextColor; + Color maShadowColor; + Color maVisitedLinkColor; + Color maWindowColor; + Color maWindowTextColor; + Color maWorkspaceColor; + Color maActiveTabColor; + Color maInactiveTabColor; + Font maAppFont; + Font maHelpFont; + Font maTitleFont; + Font maFloatTitleFont; + Font maMenuFont; + Font maToolFont; + Font maLabelFont; + Font maInfoFont; + Font maRadioCheckFont; + Font maPushButtonFont; + Font maFieldFont; + Font maIconFont; + Font maGroupFont; + long mnBorderSize; + long mnTitleHeight; + long mnFloatTitleHeight; + long mnTearOffTitleHeight; + long mnScrollBarSize; + long mnSplitSize; + long mnSpinSize; + long mnCursorSize; + long mnMenuBarHeight; + long mnIconHorzSpace; + long mnIconVertSpace; + long mnAntialiasedMin; + sal_uLong mnCursorBlinkTime; + sal_uLong mnDragFullOptions; + sal_uLong mnAnimationOptions; + sal_uLong mnSelectionOptions; + sal_uLong mnLogoDisplayTime; + sal_uLong mnDisplayOptions; + sal_uLong mnToolbarIconSize; + sal_uLong mnUseFlatMenus; + sal_uLong mnOptions; + sal_uInt16 mnScreenZoom; + sal_uInt16 mnScreenFontZoom; + sal_uInt16 mnHighContrast; + sal_uInt16 mnUseSystemUIFonts; + sal_uInt16 mnAutoMnemonic; + sal_uInt16 mnUseImagesInMenus; + sal_uLong mnUseFlatBorders; + sal_Bool mbPreferredUseImagesInMenus; + long mnMinThumbSize; + sal_uLong mnSymbolsStyle; + sal_uLong mnPreferredSymbolsStyle; + sal_uInt16 mnSkipDisabledInMenus; + sal_Bool mbHideDisabledMenuItems; + sal_Bool mbAcceleratorsInContextMenus; + //mbPrimaryButtonWarpsSlider == true for "jump to here" behavior for primary button, otherwise + //primary means scroll by single page. Secondary button takes the alternative behaviour + sal_Bool mbPrimaryButtonWarpsSlider; + Wallpaper maWorkspaceGradient; + DialogStyle maDialogStyle; + FrameStyle maFrameStyle; + const void* mpFontOptions; + + OUString maPersonaHeaderFooter; ///< Cache the settings to detect changes. + + BitmapEx maPersonaHeaderBitmap; ///< Cache the header bitmap. + BitmapEx maPersonaFooterBitmap; ///< Cache the footer bitmap. +}; + +#define DEFAULT_WORKSPACE_GRADIENT_START_COLOR Color( 0xa3, 0xae, 0xb8 ) +#define DEFAULT_WORKSPACE_GRADIENT_END_COLOR Color( 0x73, 0x7e, 0x88 ) + +// ----------------- +// - StyleSettings - +// ----------------- + +#define STYLE_OPTION_MONO ((sal_uLong)0x00000001) +#define STYLE_OPTION_COLOR ((sal_uLong)0x00000002) +#define STYLE_OPTION_FLAT ((sal_uLong)0x00000004) +#define STYLE_OPTION_GREAT ((sal_uLong)0x00000008) +#define STYLE_OPTION_HIGHLIGHT ((sal_uLong)0x00000010) +#define STYLE_OPTION_ADVANCEDUSER ((sal_uLong)0x00000020) +#define STYLE_OPTION_SCROLLARROW ((sal_uLong)0x00000040) +#define STYLE_OPTION_SPINARROW ((sal_uLong)0x00000080) +#define STYLE_OPTION_SPINUPDOWN ((sal_uLong)0x00000100) +#define STYLE_OPTION_NOMNEMONICS ((sal_uLong)0x00000200) + +#define DRAGFULL_OPTION_WINDOWMOVE ((sal_uLong)0x00000001) +#define DRAGFULL_OPTION_WINDOWSIZE ((sal_uLong)0x00000002) +#define DRAGFULL_OPTION_OBJECTMOVE ((sal_uLong)0x00000004) +#define DRAGFULL_OPTION_OBJECTSIZE ((sal_uLong)0x00000008) +#define DRAGFULL_OPTION_DOCKING ((sal_uLong)0x00000010) +#define DRAGFULL_OPTION_SPLIT ((sal_uLong)0x00000020) +#define DRAGFULL_OPTION_SCROLL ((sal_uLong)0x00000040) + +#define LOGO_DISPLAYTIME_STARTTIME ((sal_uLong)0xFFFFFFFF) + +#define SELECTION_OPTION_WORD ((sal_uLong)0x00000001) +#define SELECTION_OPTION_FOCUS ((sal_uLong)0x00000002) +#define SELECTION_OPTION_INVERT ((sal_uLong)0x00000004) +#define SELECTION_OPTION_SHOWFIRST ((sal_uLong)0x00000008) + +#define DISPLAY_OPTION_AA_DISABLE ((sal_uLong)0x00000001) + +#define STYLE_RADIOBUTTON_MONO ((sal_uInt16)0x0001) // legacy +#define STYLE_CHECKBOX_MONO ((sal_uInt16)0x0001) // legacy + +#define STYLE_TOOLBAR_ICONSIZE_UNKNOWN ((sal_uLong)0) +#define STYLE_TOOLBAR_ICONSIZE_SMALL ((sal_uLong)1) +#define STYLE_TOOLBAR_ICONSIZE_LARGE ((sal_uLong)2) + +#define STYLE_SYMBOLS_AUTO ((sal_uLong)0) +#define STYLE_SYMBOLS_DEFAULT ((sal_uLong)1) +#define STYLE_SYMBOLS_HICONTRAST ((sal_uLong)2) +#define STYLE_SYMBOLS_INDUSTRIAL ((sal_uLong)3) +#define STYLE_SYMBOLS_CRYSTAL ((sal_uLong)4) +#define STYLE_SYMBOLS_TANGO ((sal_uLong)5) +#define STYLE_SYMBOLS_OXYGEN ((sal_uLong)6) +#define STYLE_SYMBOLS_CLASSIC ((sal_uLong)7) +#define STYLE_SYMBOLS_HUMAN ((sal_uLong)8) +#define STYLE_SYMBOLS_TANGO_TESTING ((sal_uLong)9) +#define STYLE_SYMBOLS_THEMES_MAX ((sal_uLong)10) + +#define STYLE_MENUIMAGES_OFF ((sal_uInt16)0) +#define STYLE_MENUIMAGES_ON ((sal_uInt16)1) +#define STYLE_MENUIMAGES_AUTO ((sal_uInt16)2) + +#define STYLE_CURSOR_NOBLINKTIME ((sal_uLong)0xFFFFFFFF) + +class VCL_DLLPUBLIC StyleSettings +{ + void CopyData(); + +private: + ImplStyleData* mpData; + +public: + StyleSettings(); + StyleSettings( const StyleSettings& rSet ); + ~StyleSettings(); + + void Set3DColors( const Color& rColor ); + void SetFaceColor( const Color& rColor ) + { CopyData(); mpData->maFaceColor = rColor; } + const Color& GetFaceColor() const + { return mpData->maFaceColor; } + Color GetFaceGradientColor() const; + Color GetSeparatorColor() const; + void SetCheckedColor( const Color& rColor ) + { CopyData(); mpData->maCheckedColor = rColor; } + void SetCheckedColorSpecialCase( ); + const Color& GetCheckedColor() const + { return mpData->maCheckedColor; } + void SetLightColor( const Color& rColor ) + { CopyData(); mpData->maLightColor = rColor; } + const Color& GetLightColor() const + { return mpData->maLightColor; } + void SetLightBorderColor( const Color& rColor ) + { CopyData(); mpData->maLightBorderColor = rColor; } + const Color& GetLightBorderColor() const + { return mpData->maLightBorderColor; } + void SetShadowColor( const Color& rColor ) + { CopyData(); mpData->maShadowColor = rColor; } + const Color& GetShadowColor() const + { return mpData->maShadowColor; } + void SetDarkShadowColor( const Color& rColor ) + { CopyData(); mpData->maDarkShadowColor = rColor; } + const Color& GetDarkShadowColor() const + { return mpData->maDarkShadowColor; } + void SetButtonTextColor( const Color& rColor ) + { CopyData(); mpData->maButtonTextColor = rColor; } + const Color& GetButtonTextColor() const + { return mpData->maButtonTextColor; } + void SetButtonRolloverTextColor( const Color& rColor ) + { CopyData(); mpData->maButtonRolloverTextColor = rColor; } + const Color& GetButtonRolloverTextColor() const + { return mpData->maButtonRolloverTextColor; } + void SetRadioCheckTextColor( const Color& rColor ) + { CopyData(); mpData->maRadioCheckTextColor = rColor; } + const Color& GetRadioCheckTextColor() const + { return mpData->maRadioCheckTextColor; } + void SetGroupTextColor( const Color& rColor ) + { CopyData(); mpData->maGroupTextColor = rColor; } + const Color& GetGroupTextColor() const + { return mpData->maGroupTextColor; } + void SetLabelTextColor( const Color& rColor ) + { CopyData(); mpData->maLabelTextColor = rColor; } + const Color& GetLabelTextColor() const + { return mpData->maLabelTextColor; } + void SetInfoTextColor( const Color& rColor ) + { CopyData(); mpData->maInfoTextColor = rColor; } + const Color& GetInfoTextColor() const + { return mpData->maInfoTextColor; } + void SetWindowColor( const Color& rColor ) + { CopyData(); mpData->maWindowColor = rColor; } + const Color& GetWindowColor() const + { return mpData->maWindowColor; } + void SetWindowTextColor( const Color& rColor ) + { CopyData(); mpData->maWindowTextColor = rColor; } + const Color& GetWindowTextColor() const + { return mpData->maWindowTextColor; } + void SetDialogColor( const Color& rColor ) + { CopyData(); mpData->maDialogColor = rColor; } + const Color& GetDialogColor() const + { return mpData->maDialogColor; } + void SetDialogTextColor( const Color& rColor ) + { CopyData(); mpData->maDialogTextColor = rColor; } + const Color& GetDialogTextColor() const + { return mpData->maDialogTextColor; } + void SetWorkspaceColor( const Color& rColor ) + { CopyData(); mpData->maWorkspaceColor = rColor; } + const Color& GetWorkspaceColor() const + { return mpData->maWorkspaceColor; } + void SetFieldColor( const Color& rColor ) + { CopyData(); mpData->maFieldColor = rColor; } + const Color& GetFieldColor() const + { return mpData->maFieldColor; } + void SetFieldTextColor( const Color& rColor ) + { CopyData(); mpData->maFieldTextColor = rColor; } + const Color& GetFieldTextColor() const + { return mpData->maFieldTextColor; } + void SetFieldRolloverTextColor( const Color& rColor ) + { CopyData(); mpData->maFieldRolloverTextColor = rColor; } + const Color& GetFieldRolloverTextColor() const + { return mpData->maFieldRolloverTextColor; } + void SetActiveColor( const Color& rColor ) + { CopyData(); mpData->maActiveColor = rColor; } + const Color& GetActiveColor() const + { return mpData->maActiveColor; } + void SetActiveColor2( const Color& rColor ) + { CopyData(); mpData->maActiveColor2 = rColor; } + const Color& GetActiveColor2() const + { return mpData->maActiveColor2; } + void SetActiveTextColor( const Color& rColor ) + { CopyData(); mpData->maActiveTextColor = rColor; } + const Color& GetActiveTextColor() const + { return mpData->maActiveTextColor; } + void SetActiveBorderColor( const Color& rColor ) + { CopyData(); mpData->maActiveBorderColor = rColor; } + const Color& GetActiveBorderColor() const + { return mpData->maActiveBorderColor; } + void SetDeactiveColor( const Color& rColor ) + { CopyData(); mpData->maDeactiveColor = rColor; } + const Color& GetDeactiveColor() const + { return mpData->maDeactiveColor; } + void SetDeactiveColor2( const Color& rColor ) + { CopyData(); mpData->maDeactiveColor2 = rColor; } + const Color& GetDeactiveColor2() const + { return mpData->maDeactiveColor2; } + void SetDeactiveTextColor( const Color& rColor ) + { CopyData(); mpData->maDeactiveTextColor = rColor; } + const Color& GetDeactiveTextColor() const + { return mpData->maDeactiveTextColor; } + void SetDeactiveBorderColor( const Color& rColor ) + { CopyData(); mpData->maDeactiveBorderColor = rColor; } + const Color& GetDeactiveBorderColor() const + { return mpData->maDeactiveBorderColor; } + void SetHighlightColor( const Color& rColor ) + { CopyData(); mpData->maHighlightColor = rColor; } + const Color& GetHighlightColor() const + { return mpData->maHighlightColor; } + void SetHighlightTextColor( const Color& rColor ) + { CopyData(); mpData->maHighlightTextColor = rColor; } + const Color& GetHighlightTextColor() const + { return mpData->maHighlightTextColor; } + void SetDisableColor( const Color& rColor ) + { CopyData(); mpData->maDisableColor = rColor; } + const Color& GetDisableColor() const + { return mpData->maDisableColor; } + void SetHelpColor( const Color& rColor ) + { CopyData(); mpData->maHelpColor = rColor; } + const Color& GetHelpColor() const + { return mpData->maHelpColor; } + void SetHelpTextColor( const Color& rColor ) + { CopyData(); mpData->maHelpTextColor = rColor; } + const Color& GetHelpTextColor() const + { return mpData->maHelpTextColor; } + void SetMenuColor( const Color& rColor ) + { CopyData(); mpData->maMenuColor = rColor; } + const Color& GetMenuColor() const + { return mpData->maMenuColor; } + void SetMenuBarColor( const Color& rColor ) + { CopyData(); mpData->maMenuBarColor = rColor; } + const Color& GetMenuBarColor() const + { return mpData->maMenuBarColor; } + void SetMenuBorderColor( const Color& rColor ) + { CopyData(); mpData->maMenuBorderColor = rColor; } + const Color& GetMenuBorderColor() const + { return mpData->maMenuBorderColor; } + void SetMenuTextColor( const Color& rColor ) + { CopyData(); mpData->maMenuTextColor = rColor; } + const Color& GetMenuTextColor() const + { return mpData->maMenuTextColor; } + void SetMenuBarTextColor( const Color& rColor ) + { CopyData(); mpData->maMenuBarTextColor = rColor; } + const Color& GetMenuBarTextColor() const + { return mpData->maMenuBarTextColor; } + void SetMenuHighlightColor( const Color& rColor ) + { CopyData(); mpData->maMenuHighlightColor = rColor; } + const Color& GetMenuHighlightColor() const + { return mpData->maMenuHighlightColor; } + void SetMenuHighlightTextColor( const Color& rColor ) + { CopyData(); mpData->maMenuHighlightTextColor = rColor; } + const Color& GetMenuHighlightTextColor() const + { return mpData->maMenuHighlightTextColor; } + void SetLinkColor( const Color& rColor ) + { CopyData(); mpData->maLinkColor = rColor; } + const Color& GetLinkColor() const + { return mpData->maLinkColor; } + void SetVisitedLinkColor( const Color& rColor ) + { CopyData(); mpData->maVisitedLinkColor = rColor; } + const Color& GetVisitedLinkColor() const + { return mpData->maVisitedLinkColor; } + void SetHighlightLinkColor( const Color& rColor ) + { CopyData(); mpData->maHighlightLinkColor = rColor; } + const Color& GetHighlightLinkColor() const + { return mpData->maHighlightLinkColor; } + + void SetMonoColor( const Color& rColor ) + { CopyData(); mpData->maMonoColor = rColor; } + const Color& GetMonoColor() const + { return mpData->maMonoColor; } + + void SetActiveTabColor( const Color& rColor ) + { CopyData(); mpData->maActiveTabColor = rColor; } + const Color& GetActiveTabColor() const + { return mpData->maActiveTabColor; } + void SetInactiveTabColor( const Color& rColor ) + { CopyData(); mpData->maInactiveTabColor = rColor; } + const Color& GetInactiveTabColor() const + { return mpData->maInactiveTabColor; } + + void SetHighContrastMode( sal_Bool bHighContrast ) + { CopyData(); mpData->mnHighContrast = bHighContrast; } + sal_Bool GetHighContrastMode() const + { return (sal_Bool) mpData->mnHighContrast; } + void SetUseSystemUIFonts( sal_Bool bUseSystemUIFonts ) + { CopyData(); mpData->mnUseSystemUIFonts = bUseSystemUIFonts; } + sal_Bool GetUseSystemUIFonts() const + { return (sal_Bool) mpData->mnUseSystemUIFonts; } + void SetUseFlatBorders( sal_Bool bUseFlatBorders ) + { CopyData(); mpData->mnUseFlatBorders = bUseFlatBorders; } + sal_Bool GetUseFlatBorders() const + { return (sal_Bool) mpData->mnUseFlatBorders; } + void SetUseFlatMenus( sal_Bool bUseFlatMenus ) + { CopyData(); mpData->mnUseFlatMenus = bUseFlatMenus; } + sal_Bool GetUseFlatMenus() const + { return (sal_Bool) mpData->mnUseFlatMenus; } + void SetUseImagesInMenus( sal_Bool bUseImagesInMenus ) + { CopyData(); mpData->mnUseImagesInMenus = bUseImagesInMenus; } + sal_Bool GetUseImagesInMenus() const; + void SetPreferredUseImagesInMenus( sal_Bool bPreferredUseImagesInMenus ) + { CopyData(); mpData->mbPreferredUseImagesInMenus = bPreferredUseImagesInMenus; } + sal_Bool GetPreferredUseImagesInMenus() const + { return mpData->mbPreferredUseImagesInMenus; } + void SetSkipDisabledInMenus( sal_Bool bSkipDisabledInMenus ) + { CopyData(); mpData->mnSkipDisabledInMenus = bSkipDisabledInMenus; } + sal_Bool GetSkipDisabledInMenus() const + { return (sal_Bool) mpData->mnSkipDisabledInMenus; } + void SetHideDisabledMenuItems( sal_Bool bHideDisabledMenuItems ) + { CopyData(); mpData->mbHideDisabledMenuItems = bHideDisabledMenuItems; } + sal_Bool GetHideDisabledMenuItems() const + { return mpData->mbHideDisabledMenuItems; } + void SetAcceleratorsInContextMenus( sal_Bool bAcceleratorsInContextMenus ) + { CopyData(); mpData->mbAcceleratorsInContextMenus = bAcceleratorsInContextMenus; } + sal_Bool GetAcceleratorsInContextMenus() const + { return mpData->mbAcceleratorsInContextMenus; } + void SetPrimaryButtonWarpsSlider( sal_Bool bPrimaryButtonWarpsSlider ) + { CopyData(); mpData->mbPrimaryButtonWarpsSlider = bPrimaryButtonWarpsSlider; } + sal_Bool GetPrimaryButtonWarpsSlider() const + { return mpData->mbPrimaryButtonWarpsSlider; } + + void SetCairoFontOptions( const void *pOptions ) + { CopyData(); mpData->mpFontOptions = pOptions; } + const void* GetCairoFontOptions() const + { return mpData->mpFontOptions; } + + void SetAppFont( const Font& rFont ) + { CopyData(); mpData->maAppFont = rFont; } + const Font& GetAppFont() const + { return mpData->maAppFont; } + void SetHelpFont( const Font& rFont ) + { CopyData(); mpData->maHelpFont = rFont; } + const Font& GetHelpFont() const + { return mpData->maHelpFont; } + void SetTitleFont( const Font& rFont ) + { CopyData(); mpData->maTitleFont = rFont; } + const Font& GetTitleFont() const + { return mpData->maTitleFont; } + void SetFloatTitleFont( const Font& rFont ) + { CopyData(); mpData->maFloatTitleFont = rFont; } + const Font& GetFloatTitleFont() const + { return mpData->maFloatTitleFont; } + void SetMenuFont( const Font& rFont ) + { CopyData(); mpData->maMenuFont = rFont; } + const Font& GetMenuFont() const + { return mpData->maMenuFont; } + void SetToolFont( const Font& rFont ) + { CopyData(); mpData->maToolFont = rFont; } + const Font& GetToolFont() const + { return mpData->maToolFont; } + void SetGroupFont( const Font& rFont ) + { CopyData(); mpData->maGroupFont = rFont; } + const Font& GetGroupFont() const + { return mpData->maGroupFont; } + void SetLabelFont( const Font& rFont ) + { CopyData(); mpData->maLabelFont = rFont; } + const Font& GetLabelFont() const + { return mpData->maLabelFont; } + void SetInfoFont( const Font& rFont ) + { CopyData(); mpData->maInfoFont = rFont; } + const Font& GetInfoFont() const + { return mpData->maInfoFont; } + void SetRadioCheckFont( const Font& rFont ) + { CopyData(); mpData->maRadioCheckFont = rFont; } + const Font& GetRadioCheckFont() const + { return mpData->maRadioCheckFont; } + void SetPushButtonFont( const Font& rFont ) + { CopyData(); mpData->maPushButtonFont = rFont; } + const Font& GetPushButtonFont() const + { return mpData->maPushButtonFont; } + void SetFieldFont( const Font& rFont ) + { CopyData(); mpData->maFieldFont = rFont; } + const Font& GetFieldFont() const + { return mpData->maFieldFont; } + void SetIconFont( const Font& rFont ) + { CopyData(); mpData->maIconFont = rFont; } + const Font& GetIconFont() const + { return mpData->maIconFont; } + + void SetBorderSize( long nSize ) + { CopyData(); mpData->mnBorderSize = nSize; } + long GetBorderSize() const + { return mpData->mnBorderSize; } + void SetTitleHeight( long nSize ) + { CopyData(); mpData->mnTitleHeight = nSize; } + long GetTitleHeight() const + { return mpData->mnTitleHeight; } + void SetFloatTitleHeight( long nSize ) + { CopyData(); mpData->mnFloatTitleHeight = nSize; } + long GetFloatTitleHeight() const + { return mpData->mnFloatTitleHeight; } + void SetTearOffTitleHeight( long nSize ) + { CopyData(); mpData->mnTearOffTitleHeight = nSize; } + long GetTearOffTitleHeight() const + { return mpData->mnTearOffTitleHeight; } + void SetMenuBarHeight( long nSize ) + { CopyData(); mpData->mnMenuBarHeight = nSize; } + long GetMenuBarHeight() const + { return mpData->mnMenuBarHeight; } + void SetScrollBarSize( long nSize ) + { CopyData(); mpData->mnScrollBarSize = nSize; } + long GetScrollBarSize() const + { return mpData->mnScrollBarSize; } + void SetMinThumbSize( long nSize ) + { CopyData(); mpData->mnMinThumbSize = nSize; } + long GetMinThumbSize() const + { return mpData->mnMinThumbSize; } + void SetSpinSize( long nSize ) + { CopyData(); mpData->mnSpinSize = nSize; } + long GetSpinSize() const + { return mpData->mnSpinSize; } + void SetSplitSize( long nSize ) + { CopyData(); mpData->mnSplitSize = nSize; } + long GetSplitSize() const + { return mpData->mnSplitSize; } + + void SetIconHorzSpace( long nSpace ) + { CopyData(); mpData->mnIconHorzSpace = nSpace; } + long GetIconHorzSpace() const + { return mpData->mnIconHorzSpace; } + void SetIconVertSpace( long nSpace ) + { CopyData(); mpData->mnIconVertSpace = nSpace; } + long GetIconVertSpace() const + { return mpData->mnIconVertSpace; } + + void SetCursorSize( long nSize ) + { CopyData(); mpData->mnCursorSize = nSize; } + long GetCursorSize() const + { return mpData->mnCursorSize; } + void SetCursorBlinkTime( long nBlinkTime ) + { CopyData(); mpData->mnCursorBlinkTime = nBlinkTime; } + long GetCursorBlinkTime() const + { return (long) mpData->mnCursorBlinkTime; } + + void SetScreenZoom( sal_uInt16 nPercent ) + { CopyData(); mpData->mnScreenZoom = nPercent; } + sal_uInt16 GetScreenZoom() const + { return mpData->mnScreenZoom; } + void SetScreenFontZoom( sal_uInt16 nPercent ) + { CopyData(); mpData->mnScreenFontZoom = nPercent; } + sal_uInt16 GetScreenFontZoom() const + { return mpData->mnScreenFontZoom; } + + void SetLogoDisplayTime( sal_uLong nDisplayTime ) + { CopyData(); mpData->mnLogoDisplayTime = nDisplayTime; } + sal_uLong GetLogoDisplayTime() const + { return mpData->mnLogoDisplayTime; } + + void SetDragFullOptions( sal_uLong nOptions ) + { CopyData(); mpData->mnDragFullOptions = nOptions; } + sal_uLong GetDragFullOptions() const + { return mpData->mnDragFullOptions; } + + void SetAnimationOptions( sal_uLong nOptions ) + { CopyData(); mpData->mnAnimationOptions = nOptions; } + sal_uLong GetAnimationOptions() const + { return mpData->mnAnimationOptions; } + + void SetSelectionOptions( sal_uLong nOptions ) + { CopyData(); mpData->mnSelectionOptions = nOptions; } + sal_uLong GetSelectionOptions() const + { return mpData->mnSelectionOptions; } + + void SetDisplayOptions( sal_uLong nOptions ) + { CopyData(); mpData->mnDisplayOptions = nOptions; } + sal_uLong GetDisplayOptions() const + { return mpData->mnDisplayOptions; } + void SetAntialiasingMinPixelHeight( long nMinPixel ) + { CopyData(); mpData->mnAntialiasedMin = nMinPixel; } + sal_uLong GetAntialiasingMinPixelHeight() const + { return mpData->mnAntialiasedMin; } + + void SetOptions( sal_uLong nOptions ) + { CopyData(); mpData->mnOptions = nOptions; } + sal_uLong GetOptions() const + { return mpData->mnOptions; } + void SetAutoMnemonic( sal_Bool bAutoMnemonic ) + { CopyData(); mpData->mnAutoMnemonic = (sal_uInt16)bAutoMnemonic; } + sal_Bool GetAutoMnemonic() const + { return mpData->mnAutoMnemonic ? sal_True : sal_False; } + + void SetFontColor( const Color& rColor ) + { CopyData(); mpData->maFontColor = rColor; } + const Color& GetFontColor() const + { return mpData->maFontColor; } + + void SetToolbarIconSize( sal_uLong nSize ) + { CopyData(); mpData->mnToolbarIconSize = nSize; } + sal_uLong GetToolbarIconSize() const + { return mpData->mnToolbarIconSize; } + + void SetSymbolsStyle( sal_uLong nStyle ) + { CopyData(); mpData->mnSymbolsStyle = nStyle; } + sal_uLong GetSymbolsStyle() const + { return mpData->mnSymbolsStyle; } + + void SetPreferredSymbolsStyle( sal_uLong nStyle ) + { CopyData(); mpData->mnPreferredSymbolsStyle = nStyle; } + void SetPreferredSymbolsStyleName( const OUString &rName ); + sal_uLong GetPreferredSymbolsStyle() const + { return mpData->mnPreferredSymbolsStyle; } + // check whether the symbols style is supported (icons are installed) + bool CheckSymbolStyle( sal_uLong nStyle ) const; + sal_uLong GetAutoSymbolsStyle() const; + + sal_uLong GetCurrentSymbolsStyle() const; + + void SetSymbolsStyleName( const OUString &rName ) + { return SetSymbolsStyle( ImplNameToSymbolsStyle( rName ) ); } + OUString GetSymbolsStyleName() const + { return ImplSymbolsStyleToName( GetSymbolsStyle() ); } + OUString GetCurrentSymbolsStyleName() const + { return ImplSymbolsStyleToName( GetCurrentSymbolsStyle() ); } + + const Wallpaper& GetWorkspaceGradient() const + { return mpData->maWorkspaceGradient; } + void SetWorkspaceGradient( const Wallpaper& rWall ) + { CopyData(); mpData->maWorkspaceGradient = rWall; } + + const DialogStyle& GetDialogStyle() const + { return mpData->maDialogStyle; } + void SetDialogStyle( const DialogStyle& rStyle ) + { CopyData(); mpData->maDialogStyle = rStyle; } + + const FrameStyle& GetFrameStyle() const + { return mpData->maFrameStyle; } + void SetFrameStyle( const FrameStyle& rStyle ) + { CopyData(); mpData->maFrameStyle = rStyle; } + + const BitmapEx GetPersonaHeader() const; + + void SetStandardStyles(); + + const StyleSettings& operator =( const StyleSettings& rSet ); + + sal_Bool operator ==( const StyleSettings& rSet ) const; + sal_Bool operator !=( const StyleSettings& rSet ) const + { return !(*this == rSet); } + +protected: + OUString ImplSymbolsStyleToName( sal_uLong nStyle ) const; + sal_uLong ImplNameToSymbolsStyle( const OUString &rName ) const; +}; + +// ---------------- +// - ImplMiscData - +// ---------------- + +class ImplMiscData +{ + friend class MiscSettings; + + ImplMiscData(); + ImplMiscData( const ImplMiscData& rData ); + +private: + sal_uLong mnRefCount; + sal_uInt16 mnEnableATT; + sal_Bool mbEnableLocalizedDecimalSep; + sal_uInt16 mnDisablePrinting; +}; + +// ---------------- +// - MiscSettings - +// ---------------- + +class VCL_DLLPUBLIC MiscSettings +{ + void CopyData(); + +private: + ImplMiscData* mpData; + +public: + MiscSettings(); + MiscSettings( const MiscSettings& rSet ); + ~MiscSettings(); + +#ifdef WNT + void SetEnableATToolSupport( sal_Bool bEnable ); +#endif + sal_Bool GetEnableATToolSupport() const; + sal_Bool GetDisablePrinting() const; + void SetEnableLocalizedDecimalSep( sal_Bool bEnable ); + sal_Bool GetEnableLocalizedDecimalSep() const; + const MiscSettings& operator =( const MiscSettings& rSet ); + + sal_Bool operator ==( const MiscSettings& rSet ) const; + sal_Bool operator !=( const MiscSettings& rSet ) const + { return !(*this == rSet); } +}; + +// ---------------- +// - ImplHelpData - +// ---------------- + +class ImplHelpData +{ + friend class HelpSettings; + + ImplHelpData(); + ImplHelpData( const ImplHelpData& rData ); + +private: + sal_uLong mnRefCount; + sal_uLong mnOptions; + sal_uLong mnTipDelay; + sal_uLong mnTipTimeout; + sal_uLong mnBalloonDelay; +}; + +// ---------------- +// - HelpSettings - +// ---------------- + +class VCL_DLLPUBLIC HelpSettings +{ + void CopyData(); + +private: + ImplHelpData* mpData; + +public: + HelpSettings(); + HelpSettings( const HelpSettings& rSet ); + ~HelpSettings(); + + void SetOptions( sal_uLong nOptions ) + { CopyData(); mpData->mnOptions = nOptions; } + sal_uLong GetOptions() const + { return mpData->mnOptions; } + void SetTipDelay( sal_uLong nTipDelay ) + { CopyData(); mpData->mnTipDelay = nTipDelay; } + sal_uLong GetTipDelay() const + { return mpData->mnTipDelay; } + void SetTipTimeout( sal_uLong nTipTimeout ) + { CopyData(); mpData->mnTipTimeout = nTipTimeout; } + sal_uLong GetTipTimeout() const + { return mpData->mnTipTimeout; } + void SetBalloonDelay( sal_uLong nBalloonDelay ) + { CopyData(); mpData->mnBalloonDelay = nBalloonDelay; } + sal_uLong GetBalloonDelay() const + { return mpData->mnBalloonDelay; } + + const HelpSettings& operator =( const HelpSettings& rSet ); + + sal_Bool operator ==( const HelpSettings& rSet ) const; + sal_Bool operator !=( const HelpSettings& rSet ) const + { return !(*this == rSet); } +}; + +// ----------------------- +// - ImplAllSettingsData - +// ----------------------- +class ImplAllSettingsData +{ + friend class AllSettings; + + ImplAllSettingsData(); + ImplAllSettingsData( const ImplAllSettingsData& rData ); + ~ImplAllSettingsData(); + +private: + sal_uLong mnRefCount; + MouseSettings maMouseSettings; + StyleSettings maStyleSettings; + MiscSettings maMiscSettings; + HelpSettings maHelpSettings; + LanguageTag maLocale; + sal_uLong mnSystemUpdate; + sal_uLong mnWindowUpdate; + LanguageTag maUILocale; + LocaleDataWrapper* mpLocaleDataWrapper; + LocaleDataWrapper* mpUILocaleDataWrapper; + vcl::I18nHelper* mpI18nHelper; + vcl::I18nHelper* mpUII18nHelper; + SvtSysLocale maSysLocale; +}; + +// --------------- +// - AllSettings - +// --------------- + +const int SETTINGS_MOUSE = 0x00000001; +const int SETTINGS_STYLE = 0x00000002; +const int SETTINGS_MISC = 0x00000004; +const int SETTINGS_SOUND = 0x00000008; +const int SETTINGS_HELP = 0x00000010; +const int SETTINGS_LOCALE = 0x00000020; +const int SETTINGS_UILOCALE = 0x00000040; +const int SETTINGS_ALLSETTINGS = ( SETTINGS_MOUSE | + SETTINGS_STYLE | SETTINGS_MISC | + SETTINGS_SOUND | + SETTINGS_HELP | + SETTINGS_LOCALE | SETTINGS_UILOCALE ); +const int SETTINGS_IN_UPDATE_SETTINGS = 0x00000800; // this flag indicates that the data changed event was created + // in Windows::UpdateSettings probably because of a global + // settings changed + +class VCL_DLLPUBLIC AllSettings +{ + void CopyData(); + +private: + ImplAllSettingsData* mpData; + +public: + AllSettings(); + AllSettings( const AllSettings& rSet ); + ~AllSettings(); + + void SetMouseSettings( const MouseSettings& rSet ) + { CopyData(); mpData->maMouseSettings = rSet; } + const MouseSettings& GetMouseSettings() const + { return mpData->maMouseSettings; } + + void SetStyleSettings( const StyleSettings& rSet ) + { CopyData(); mpData->maStyleSettings = rSet; } + const StyleSettings& GetStyleSettings() const + { return mpData->maStyleSettings; } + + void SetMiscSettings( const MiscSettings& rSet ) + { CopyData(); mpData->maMiscSettings = rSet; } + const MiscSettings& GetMiscSettings() const + { return mpData->maMiscSettings; } + + void SetHelpSettings( const HelpSettings& rSet ) + { CopyData(); mpData->maHelpSettings = rSet; } + const HelpSettings& GetHelpSettings() const + { return mpData->maHelpSettings; } + + void SetLanguageTag( const LanguageTag& rLanguageTag ); + const LanguageTag& GetLanguageTag() const; + void SetUILanguageTag( const LanguageTag& rLanguageTag ); + const LanguageTag& GetUILanguageTag() const; + bool GetLayoutRTL() const; // returns true if UI language requires right-to-left UI + const LocaleDataWrapper& GetLocaleDataWrapper() const; + const LocaleDataWrapper& GetUILocaleDataWrapper() const; + const vcl::I18nHelper& GetLocaleI18nHelper() const; + const vcl::I18nHelper& GetUILocaleI18nHelper() const; + + void SetSystemUpdate( sal_uLong nUpdate ) + { CopyData(); mpData->mnSystemUpdate = nUpdate; } + sal_uLong GetSystemUpdate() const + { return mpData->mnSystemUpdate; } + void SetWindowUpdate( sal_uLong nUpdate ) + { CopyData(); mpData->mnWindowUpdate = nUpdate; } + sal_uLong GetWindowUpdate() const + { return mpData->mnWindowUpdate; } + + sal_uLong Update( sal_uLong nFlags, const AllSettings& rSettings ); + sal_uLong GetChangeFlags( const AllSettings& rSettings ) const; + + const AllSettings& operator =( const AllSettings& rSet ); + + sal_Bool operator ==( const AllSettings& rSet ) const; + sal_Bool operator !=( const AllSettings& rSet ) const + { return !(*this == rSet); } + static void LocaleSettingsChanged( sal_uInt32 nHint ); + SvtSysLocale& GetSysLocale() { return mpData->maSysLocale; } +}; + +#endif // _SV_SETTINGS_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |