LCOV - code coverage report
Current view: top level - sfx2/source/sidebar - Theme.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 341 475 71.8 %
Date: 2014-11-03 Functions: 29 37 78.4 %
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             : #include <sfx2/sidebar/Theme.hxx>
      20             : #include "Paint.hxx"
      21             : #include "SidebarResource.hxx"
      22             : #include <sfx2/sidebar/Tools.hxx>
      23             : #include <sfx2/app.hxx>
      24             : 
      25             : #include <tools/svborder.hxx>
      26             : #include <tools/rc.hxx>
      27             : #include <vcl/svapp.hxx>
      28             : #include <vcl/settings.hxx>
      29             : 
      30             : using namespace css;
      31             : using namespace css::uno;
      32             : 
      33             : 
      34             : namespace sfx2 { namespace sidebar {
      35             : 
      36             : 
      37      746488 : Theme& Theme::GetCurrentTheme()
      38             : {
      39      746488 :     return SfxGetpApp()->GetSidebarTheme();
      40             : }
      41             : 
      42          84 : Theme::Theme()
      43             :     : ThemeInterfaceBase(m_aMutex),
      44             :       maImages(),
      45             :       maColors(),
      46             :       maPaints(),
      47             :       maIntegers(),
      48             :       maBooleans(),
      49          84 :       mbIsHighContrastMode(Application::GetSettings().GetStyleSettings().GetHighContrastMode()),
      50             :       mbIsHighContrastModeSetManually(false),
      51             :       maPropertyNameToIdMap(),
      52             :       maPropertyIdToNameMap(),
      53             :       maRawValues(),
      54             :       maChangeListeners(),
      55         168 :       maVetoableListeners()
      56             : 
      57             : {
      58          84 :     SetupPropertyMaps();
      59          84 : }
      60             : 
      61             : 
      62             : 
      63             : 
      64          80 : Theme::~Theme (void)
      65             : {
      66          80 : }
      67             : 
      68             : 
      69             : 
      70             : 
      71       55332 : Image Theme::GetImage (const ThemeItem eItem)
      72             : {
      73       55332 :     const PropertyType eType (GetPropertyType(eItem));
      74             :     OSL_ASSERT(eType==PT_Image);
      75       55332 :     const sal_Int32 nIndex (GetIndex(eItem, eType));
      76       55332 :     const Theme& rTheme (GetCurrentTheme());
      77       55332 :     return rTheme.maImages[nIndex];
      78             : }
      79             : 
      80             : 
      81             : 
      82             : 
      83       25584 : Color Theme::GetColor (const ThemeItem eItem)
      84             : {
      85       25584 :     const PropertyType eType (GetPropertyType(eItem));
      86             :     OSL_ASSERT(eType==PT_Color || eType==PT_Paint);
      87       25584 :     const sal_Int32 nIndex (GetIndex(eItem, eType));
      88       25584 :     const Theme& rTheme (GetCurrentTheme());
      89       25584 :     if (eType == PT_Color)
      90       25560 :         return rTheme.maColors[nIndex];
      91          24 :     else if (eType == PT_Paint)
      92          24 :         return rTheme.maPaints[nIndex].GetColor();
      93             :     else
      94           0 :         return COL_WHITE;
      95             : }
      96             : 
      97             : 
      98             : 
      99             : 
     100      106240 : const Paint& Theme::GetPaint (const ThemeItem eItem)
     101             : {
     102      106240 :     const PropertyType eType (GetPropertyType(eItem));
     103             :     OSL_ASSERT(eType==PT_Paint);
     104      106240 :     const sal_Int32 nIndex (GetIndex(eItem, eType));
     105      106240 :     const Theme& rTheme (GetCurrentTheme());
     106      106240 :     return rTheme.maPaints[nIndex];
     107             : }
     108             : 
     109             : 
     110             : 
     111             : 
     112       10644 : const Wallpaper Theme::GetWallpaper (const ThemeItem eItem)
     113             : {
     114       10644 :     return GetPaint(eItem).GetWallpaper();
     115             : }
     116             : 
     117             : 
     118             : 
     119             : 
     120      506732 : sal_Int32 Theme::GetInteger (const ThemeItem eItem)
     121             : {
     122      506732 :     const PropertyType eType (GetPropertyType(eItem));
     123             :     OSL_ASSERT(eType==PT_Integer);
     124      506732 :     const sal_Int32 nIndex (GetIndex(eItem, eType));
     125      506732 :     const Theme& rTheme (GetCurrentTheme());
     126      506732 :     return rTheme.maIntegers[nIndex];
     127             : }
     128             : 
     129             : 
     130             : 
     131             : 
     132       27172 : bool Theme::GetBoolean (const ThemeItem eItem)
     133             : {
     134       27172 :     const PropertyType eType (GetPropertyType(eItem));
     135             :     OSL_ASSERT(eType==PT_Boolean);
     136       27172 :     const sal_Int32 nIndex (GetIndex(eItem, eType));
     137       27172 :     const Theme& rTheme (GetCurrentTheme());
     138       27172 :     return rTheme.maBooleans[nIndex];
     139             : }
     140             : 
     141             : 
     142             : 
     143             : 
     144        8710 : bool Theme::IsHighContrastMode (void)
     145             : {
     146        8710 :     const Theme& rTheme (GetCurrentTheme());
     147        8710 :     return rTheme.mbIsHighContrastMode;
     148             : }
     149             : 
     150             : 
     151             : 
     152             : 
     153          92 : void Theme::HandleDataChange (void)
     154             : {
     155          92 :     Theme& rTheme (GetCurrentTheme());
     156             : 
     157          92 :     if ( ! rTheme.mbIsHighContrastModeSetManually)
     158             :     {
     159             :         // Do not modify mbIsHighContrastMode when it was manually set.
     160          92 :         GetCurrentTheme().mbIsHighContrastMode = Application::GetSettings().GetStyleSettings().GetHighContrastMode();
     161          92 :         rTheme.maRawValues[Bool_IsHighContrastModeActive] = Any(GetCurrentTheme().mbIsHighContrastMode);
     162             :     }
     163             : 
     164          92 :     GetCurrentTheme().UpdateTheme();
     165          92 : }
     166             : 
     167             : 
     168             : 
     169             : 
     170          84 : void Theme::InitializeTheme (void)
     171             : {
     172             :     setPropertyValue(
     173          84 :         maPropertyIdToNameMap[Bool_UseSymphonyIcons],
     174         168 :         Any(false));
     175             :     setPropertyValue(
     176          84 :         maPropertyIdToNameMap[Bool_UseSystemColors],
     177         168 :         Any(false));
     178          84 : }
     179             : 
     180             : 
     181             : 
     182             : 
     183          92 : void Theme::UpdateTheme (void)
     184             : {
     185          92 :     SidebarResource aLocalResource;
     186             : 
     187             :     try
     188             :     {
     189          92 :         const StyleSettings& rStyle (Application::GetSettings().GetStyleSettings());
     190          92 :         const bool bUseSystemColors (GetBoolean(Bool_UseSystemColors));
     191             : 
     192             : #define Alternatives(n,hc,sys) (mbIsHighContrastMode ? hc : (bUseSystemColors ? sys : n))
     193             : 
     194          92 :         Color aBaseBackgroundColor (rStyle.GetDialogColor());
     195             :         // UX says this should be a little brighter, but that looks off when compared to the other windows.
     196             :         //aBaseBackgroundColor.IncreaseLuminance(7);
     197          92 :         Color aBorderColor (aBaseBackgroundColor);
     198          92 :         aBorderColor.DecreaseLuminance(15);
     199          92 :         Color aSecondColor (aBaseBackgroundColor);
     200          92 :         aSecondColor.DecreaseLuminance(15);
     201             : 
     202             :         setPropertyValue(
     203          92 :             maPropertyIdToNameMap[Paint_DeckBackground],
     204         184 :             Any(sal_Int32(aBaseBackgroundColor.GetRGBColor())));
     205             : 
     206             :         setPropertyValue(
     207          92 :             maPropertyIdToNameMap[Paint_DeckTitleBarBackground],
     208         184 :             Any(sal_Int32(aBaseBackgroundColor.GetRGBColor())));
     209             :         setPropertyValue(
     210          92 :             maPropertyIdToNameMap[Int_DeckLeftPadding],
     211         184 :             Any(sal_Int32(2)));
     212             :         setPropertyValue(
     213          92 :             maPropertyIdToNameMap[Int_DeckTopPadding],
     214         184 :             Any(sal_Int32(2)));
     215             :         setPropertyValue(
     216          92 :             maPropertyIdToNameMap[Int_DeckRightPadding],
     217         184 :             Any(sal_Int32(2)));
     218             :         setPropertyValue(
     219          92 :             maPropertyIdToNameMap[Int_DeckBottomPadding],
     220         184 :             Any(sal_Int32(2)));
     221             :         setPropertyValue(
     222          92 :             maPropertyIdToNameMap[Int_DeckBorderSize],
     223         184 :             Any(sal_Int32(1)));
     224             :         setPropertyValue(
     225          92 :             maPropertyIdToNameMap[Int_DeckSeparatorHeight],
     226         184 :             Any(sal_Int32(1)));
     227             :         setPropertyValue(
     228          92 :             maPropertyIdToNameMap[Int_ButtonCornerRadius],
     229         184 :             Any(sal_Int32(3)));
     230             :         setPropertyValue(
     231          92 :             maPropertyIdToNameMap[Color_DeckTitleFont],
     232         184 :             Any(sal_Int32(rStyle.GetFontColor().GetRGBColor())));
     233             :         setPropertyValue(
     234          92 :             maPropertyIdToNameMap[Int_DeckTitleBarHeight],
     235           0 :             Any(sal_Int32(Alternatives(
     236             :                         26,
     237             :                         26,
     238         184 :                         rStyle.GetFloatTitleHeight()))));
     239             :         setPropertyValue(
     240          92 :             maPropertyIdToNameMap[Paint_PanelBackground],
     241         184 :             Any(sal_Int32(aBaseBackgroundColor.GetRGBColor())));
     242             : 
     243             :         setPropertyValue(
     244          92 :             maPropertyIdToNameMap[Paint_PanelTitleBarBackground],
     245             :             Any(Tools::VclToAwtGradient(Gradient(
     246             :                         GradientStyle_LINEAR,
     247             :                         aSecondColor.GetRGBColor(),
     248             :                         aBaseBackgroundColor.GetRGBColor()
     249         184 :                         ))));
     250             :         setPropertyValue(
     251          92 :             maPropertyIdToNameMap[Color_PanelTitleFont],
     252         184 :             Any(sal_Int32(mbIsHighContrastMode ? 0x00ff00 : 0x262626)));
     253             :         setPropertyValue(
     254          92 :             maPropertyIdToNameMap[Int_PanelTitleBarHeight],
     255           0 :             Any(sal_Int32(Alternatives(
     256             :                         26,
     257             :                         26,
     258         184 :                         rStyle.GetTitleHeight()))));
     259             :         setPropertyValue(
     260          92 :             maPropertyIdToNameMap[Paint_TabBarBackground],
     261         184 :             Any(sal_Int32(aBaseBackgroundColor.GetRGBColor())));
     262             :         setPropertyValue(
     263          92 :             maPropertyIdToNameMap[Int_TabBarLeftPadding],
     264         184 :             Any(sal_Int32(2)));
     265             :         setPropertyValue(
     266          92 :             maPropertyIdToNameMap[Int_TabBarTopPadding],
     267         184 :             Any(sal_Int32(2)));
     268             :         setPropertyValue(
     269          92 :             maPropertyIdToNameMap[Int_TabBarRightPadding],
     270         184 :             Any(sal_Int32(2)));
     271             :         setPropertyValue(
     272          92 :             maPropertyIdToNameMap[Int_TabBarBottomPadding],
     273         184 :             Any(sal_Int32(2)));
     274             : 
     275             :         setPropertyValue(
     276          92 :             maPropertyIdToNameMap[Int_TabMenuPadding],
     277         184 :             Any(sal_Int32(6)));
     278             :         setPropertyValue(
     279          92 :             maPropertyIdToNameMap[Color_TabMenuSeparator],
     280         184 :             Any(sal_Int32(aBorderColor.GetRGBColor())));
     281             :         setPropertyValue(
     282          92 :             maPropertyIdToNameMap[Int_TabMenuSeparatorPadding],
     283         184 :             Any(sal_Int32(7)));
     284             : 
     285             :         setPropertyValue(
     286          92 :             maPropertyIdToNameMap[Int_TabItemWidth],
     287         184 :             Any(sal_Int32(32)));
     288             :         setPropertyValue(
     289          92 :             maPropertyIdToNameMap[Int_TabItemHeight],
     290         184 :             Any(sal_Int32(32)));
     291             :         setPropertyValue(
     292          92 :             maPropertyIdToNameMap[Color_TabItemBorder],
     293         184 :             Any(sal_Int32(rStyle.GetActiveBorderColor().GetRGBColor())));
     294             :         //                    mbIsHighContrastMode ? 0x00ff00 : 0xbfbfbf)));
     295             : 
     296             :         setPropertyValue(
     297          92 :             maPropertyIdToNameMap[Paint_DropDownBackground],
     298         184 :             Any(sal_Int32(aBaseBackgroundColor.GetRGBColor())));
     299             :         setPropertyValue(
     300          92 :             maPropertyIdToNameMap[Color_DropDownBorder],
     301         184 :             Any(sal_Int32(rStyle.GetActiveBorderColor().GetRGBColor())));
     302             : 
     303             :         setPropertyValue(
     304          92 :             maPropertyIdToNameMap[Color_Highlight],
     305         184 :             Any(sal_Int32(rStyle.GetHighlightColor().GetRGBColor())));
     306             :         setPropertyValue(
     307          92 :             maPropertyIdToNameMap[Color_HighlightText],
     308         184 :             Any(sal_Int32(rStyle.GetHighlightTextColor().GetRGBColor())));
     309             : 
     310             :         setPropertyValue(
     311          92 :             maPropertyIdToNameMap[Paint_TabItemBackgroundNormal],
     312         184 :             Any());
     313             :         setPropertyValue(
     314          92 :             maPropertyIdToNameMap[Paint_TabItemBackgroundHighlight],
     315         184 :             Any(sal_Int32(rStyle.GetActiveTabColor().GetRGBColor())));
     316             :         //                    mbIsHighContrastMode ? 0x000000 : 0x00ffffff)));
     317             : 
     318             :         setPropertyValue(
     319          92 :             maPropertyIdToNameMap[Paint_HorizontalBorder],
     320         184 :             Any(sal_Int32(aBorderColor.GetRGBColor())));
     321             :         //                    mbIsHighContrastMode ? 0x00ff00 :  0xe4e4e4)));
     322             :         setPropertyValue(
     323          92 :             maPropertyIdToNameMap[Paint_VerticalBorder],
     324         184 :             Any(sal_Int32(aBorderColor.GetRGBColor())));
     325             :         setPropertyValue(
     326          92 :             maPropertyIdToNameMap[Image_Grip],
     327         184 :             Any(OUString("private:graphicrepository/sfx2/res/grip.png")));
     328             :         setPropertyValue(
     329          92 :             maPropertyIdToNameMap[Image_Expand],
     330         184 :             Any(OUString("private:graphicrepository/res/plus.png")));
     331             :         setPropertyValue(
     332          92 :             maPropertyIdToNameMap[Image_Collapse],
     333         184 :             Any(OUString("private:graphicrepository/res/minus.png")));
     334             :         setPropertyValue(
     335          92 :             maPropertyIdToNameMap[Image_TabBarMenu],
     336         184 :             Any(OUString("private:graphicrepository/sfx2/res/symphony/open_more.png")));
     337             :         setPropertyValue(
     338          92 :             maPropertyIdToNameMap[Image_PanelMenu],
     339         184 :             Any(OUString("private:graphicrepository/sfx2/res/symphony/morebutton.png")));
     340             :         setPropertyValue(
     341          92 :             maPropertyIdToNameMap[Image_Closer],
     342         184 :             Any(OUString("private:graphicrepository/sfx2/res/closedoc.png")));
     343             :         setPropertyValue(
     344          92 :             maPropertyIdToNameMap[Image_CloseIndicator],
     345         184 :             Any(OUString("private:graphicrepository/cmd/lc_decrementlevel.png")));
     346             :         setPropertyValue(
     347          92 :             maPropertyIdToNameMap[Image_ToolBoxItemSeparator],
     348             :             Any(
     349         184 :                 OUString("private:graphicrepository/sfx2/res/separator.png")));
     350             : 
     351             :         // ToolBox
     352             : 
     353             :         /*
     354             :         // Separator style
     355             :         setPropertyValue(
     356             :             maPropertyIdToNameMap[Paint_ToolBoxBackground],
     357             :             Any(sal_Int32(rStyle.GetMenuColor().GetRGBColor())));
     358             :         setPropertyValue(
     359             :             maPropertyIdToNameMap[Paint_ToolBoxBorderTopLeft],
     360             :             Any());
     361             :         setPropertyValue(
     362             :             maPropertyIdToNameMap[Paint_ToolBoxBorderCenterCorners],
     363             :             Any());
     364             :         setPropertyValue(
     365             :             maPropertyIdToNameMap[Paint_ToolBoxBorderBottomRight],
     366             :             Any());
     367             :         setPropertyValue(
     368             :             maPropertyIdToNameMap[Rect_ToolBoxPadding],
     369             :             Any(awt::Rectangle(2,2,2,2)));
     370             :         setPropertyValue(
     371             :             maPropertyIdToNameMap[Rect_ToolBoxBorder],
     372             :             Any(awt::Rectangle(0,0,0,0)));
     373             :         setPropertyValue(
     374             :             maPropertyIdToNameMap[Bool_UseToolBoxItemSeparator],
     375             :             Any(true));
     376             : 
     377             :         */
     378             : 
     379             :         // Gradient style
     380          92 :         Color aGradientStop2 (aBaseBackgroundColor);
     381          92 :         aGradientStop2.IncreaseLuminance(17);
     382          92 :         Color aToolBoxBorderColor (aBaseBackgroundColor);
     383          92 :         aToolBoxBorderColor.DecreaseLuminance(12);
     384             :         setPropertyValue(
     385          92 :             maPropertyIdToNameMap[Paint_ToolBoxBackground],
     386             :             Any(Tools::VclToAwtGradient(Gradient(
     387             :                         GradientStyle_LINEAR,
     388             :                         aBaseBackgroundColor.GetRGBColor(),
     389             :                         aGradientStop2.GetRGBColor()
     390         184 :                         ))));
     391             :         setPropertyValue(
     392          92 :             maPropertyIdToNameMap[Paint_ToolBoxBorderTopLeft],
     393             :             mbIsHighContrastMode
     394             :                 ? Any(util::Color(sal_uInt32(0x00ff00)))
     395         184 :                 : Any(util::Color(aToolBoxBorderColor.GetRGBColor())));
     396             :         setPropertyValue(
     397          92 :             maPropertyIdToNameMap[Paint_ToolBoxBorderCenterCorners],
     398             :             mbIsHighContrastMode
     399             :                 ? Any(util::Color(sal_uInt32(0x00ff00)))
     400         184 :                 : Any(util::Color(aToolBoxBorderColor.GetRGBColor())));
     401             :         setPropertyValue(
     402          92 :             maPropertyIdToNameMap[Paint_ToolBoxBorderBottomRight],
     403             :             mbIsHighContrastMode
     404             :                 ? Any(util::Color(sal_uInt32(0x00ff00)))
     405         184 :                 : Any(util::Color(aToolBoxBorderColor.GetRGBColor())));
     406             :         setPropertyValue(
     407          92 :             maPropertyIdToNameMap[Rect_ToolBoxPadding],
     408         184 :             Any(awt::Rectangle(2,2,2,2)));
     409             :         setPropertyValue(
     410          92 :             maPropertyIdToNameMap[Rect_ToolBoxBorder],
     411         184 :             Any(awt::Rectangle(1,1,1,1)));
     412             :         setPropertyValue(
     413          92 :             maPropertyIdToNameMap[Bool_UseToolBoxItemSeparator],
     414         184 :             Any(false));
     415             :     }
     416           0 :     catch(beans::UnknownPropertyException& rException)
     417             :     {
     418             :         OSL_TRACE("unknown property: %s",
     419             :             OUStringToOString(
     420             :                 rException.Message,
     421             :                 RTL_TEXTENCODING_ASCII_US).getStr());
     422             :         OSL_ASSERT(false);
     423          92 :     }
     424          92 : }
     425             : 
     426             : 
     427             : 
     428             : 
     429          40 : void SAL_CALL Theme::disposing (void)
     430             : {
     431          40 :     ChangeListeners aListeners;
     432          40 :     maChangeListeners.swap(aListeners);
     433             : 
     434          80 :     const lang::EventObject aEvent (static_cast<XWeak*>(this));
     435             : 
     436          40 :     for (ChangeListeners::const_iterator
     437          40 :              iContainer(maChangeListeners.begin()),
     438          40 :              iContainerEnd(maChangeListeners.end());
     439             :          iContainerEnd!=iContainerEnd;
     440             :          ++iContainerEnd)
     441             :     {
     442           0 :         for (ChangeListenerContainer::const_iterator
     443           0 :                  iListener(iContainer->second.begin()),
     444           0 :                  iEnd(iContainer->second.end());
     445             :              iListener!=iEnd;
     446             :              ++iListener)
     447             :         {
     448             :             try
     449             :             {
     450           0 :                 (*iListener)->disposing(aEvent);
     451             :             }
     452           0 :             catch(const Exception&)
     453             :             {
     454             :             }
     455             :         }
     456          40 :     }
     457          40 : }
     458             : 
     459             : 
     460             : 
     461             : 
     462       16350 : Reference<beans::XPropertySet> Theme::GetPropertySet (void)
     463             : {
     464       16350 :     return Reference<beans::XPropertySet>(static_cast<XWeak*>(&GetCurrentTheme()), UNO_QUERY);
     465             : }
     466             : 
     467             : 
     468             : 
     469             : 
     470           0 : Reference<beans::XPropertySetInfo> SAL_CALL Theme::getPropertySetInfo (void)
     471             :     throw(css::uno::RuntimeException, std::exception)
     472             : {
     473           0 :     return Reference<beans::XPropertySetInfo>(this);
     474             : }
     475             : 
     476        4676 : void SAL_CALL Theme::setPropertyValue (
     477             :     const ::rtl::OUString& rsPropertyName,
     478             :     const css::uno::Any& rValue)
     479             :     throw (css::beans::UnknownPropertyException,
     480             :            css::uno::RuntimeException,
     481             :            std::exception)
     482             : {
     483        4676 :     PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     484        4676 :     if (iId == maPropertyNameToIdMap.end())
     485           0 :         throw beans::UnknownPropertyException(rsPropertyName);
     486             : 
     487        4676 :     const PropertyType eType (GetPropertyType(iId->second));
     488        4676 :     if (eType == PT_Invalid)
     489           0 :         throw beans::UnknownPropertyException(rsPropertyName);
     490             : 
     491        4676 :     const ThemeItem eItem (iId->second);
     492             : 
     493        4676 :     if (rValue == maRawValues[eItem])
     494             :     {
     495             :         // Value is not different from the one in the property
     496             :         // set => nothing to do.
     497         952 :         return;
     498             :     }
     499             : 
     500        4200 :     const Any aOldValue (maRawValues[eItem]);
     501             : 
     502             :     const beans::PropertyChangeEvent aEvent(
     503             :         static_cast<XWeak*>(this),
     504             :         rsPropertyName,
     505             :         sal_False,
     506             :         eItem,
     507             :         aOldValue,
     508        8400 :         rValue);
     509             : 
     510        4200 :     if (DoVetoableListenersVeto(GetVetoableListeners(__AnyItem, false), aEvent))
     511           0 :         return;
     512        4200 :     if (DoVetoableListenersVeto(GetVetoableListeners(eItem, false), aEvent))
     513           0 :         return;
     514             : 
     515        4200 :     maRawValues[eItem] = rValue;
     516        4200 :     ProcessNewValue(rValue, eItem, eType);
     517             : 
     518        4200 :     BroadcastPropertyChange(GetChangeListeners(__AnyItem, false), aEvent);
     519        8400 :     BroadcastPropertyChange(GetChangeListeners(eItem, false), aEvent);
     520             : }
     521             : 
     522           0 : Any SAL_CALL Theme::getPropertyValue (
     523             :     const ::rtl::OUString& rsPropertyName)
     524             :     throw(css::beans::UnknownPropertyException,
     525             :         css::lang::WrappedTargetException,
     526             :         css::uno::RuntimeException, std::exception)
     527             : {
     528           0 :     PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     529           0 :     if (iId == maPropertyNameToIdMap.end())
     530           0 :         throw beans::UnknownPropertyException();
     531             : 
     532           0 :     const PropertyType eType (GetPropertyType(iId->second));
     533           0 :     if (eType == PT_Invalid)
     534           0 :         throw beans::UnknownPropertyException();
     535             : 
     536           0 :     const ThemeItem eItem (iId->second);
     537             : 
     538           0 :     return maRawValues[eItem];
     539             : }
     540             : 
     541             : 
     542             : 
     543             : 
     544        4700 : void SAL_CALL Theme::addPropertyChangeListener(
     545             :     const ::rtl::OUString& rsPropertyName,
     546             :     const css::uno::Reference<css::beans::XPropertyChangeListener>& rxListener)
     547             :     throw(css::beans::UnknownPropertyException,
     548             :         css::lang::WrappedTargetException,
     549             :         css::uno::RuntimeException, std::exception)
     550             : {
     551        4700 :     ThemeItem eItem (__AnyItem);
     552        4700 :     if (rsPropertyName.getLength() > 0)
     553             :     {
     554           0 :         PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     555           0 :         if (iId == maPropertyNameToIdMap.end())
     556           0 :             throw beans::UnknownPropertyException();
     557             : 
     558           0 :         const PropertyType eType (GetPropertyType(iId->second));
     559           0 :         if (eType == PT_Invalid)
     560           0 :             throw beans::UnknownPropertyException();
     561             : 
     562           0 :         eItem = iId->second;
     563             :     }
     564        4700 :     ChangeListenerContainer* pListeners = GetChangeListeners(eItem, true);
     565        4700 :     if (pListeners != NULL)
     566        4700 :         pListeners->push_back(rxListener);
     567        4700 : }
     568             : 
     569             : 
     570             : 
     571             : 
     572        4700 : void SAL_CALL Theme::removePropertyChangeListener(
     573             :     const ::rtl::OUString& rsPropertyName,
     574             :     const css::uno::Reference<css::beans::XPropertyChangeListener>& rxListener)
     575             :     throw(css::beans::UnknownPropertyException,
     576             :         css::lang::WrappedTargetException,
     577             :         css::uno::RuntimeException, std::exception)
     578             : {
     579        4700 :     ThemeItem eItem (__AnyItem);
     580        4700 :     if (rsPropertyName.getLength() > 0)
     581             :     {
     582           0 :         PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     583           0 :         if (iId == maPropertyNameToIdMap.end())
     584           0 :             throw beans::UnknownPropertyException();
     585             : 
     586           0 :         const PropertyType eType (GetPropertyType(iId->second));
     587           0 :         if (eType == PT_Invalid)
     588           0 :             throw beans::UnknownPropertyException();
     589             : 
     590           0 :         eItem = iId->second;
     591             :     }
     592        4700 :     ChangeListenerContainer* pContainer = GetChangeListeners(eItem, false);
     593        4700 :     if (pContainer != NULL)
     594             :     {
     595        4700 :         ChangeListenerContainer::iterator iListener (::std::find(pContainer->begin(), pContainer->end(), rxListener));
     596        4700 :         if (iListener != pContainer->end())
     597             :         {
     598        4700 :             pContainer->erase(iListener);
     599             : 
     600             :             // Remove the listener container when empty.
     601        4700 :             if (pContainer->empty())
     602        4676 :                 maChangeListeners.erase(eItem);
     603             :         }
     604             :     }
     605        4700 : }
     606             : 
     607             : 
     608             : 
     609             : 
     610           0 : void SAL_CALL Theme::addVetoableChangeListener(
     611             :     const ::rtl::OUString& rsPropertyName,
     612             :     const css::uno::Reference<css::beans::XVetoableChangeListener>& rxListener)
     613             :     throw(css::beans::UnknownPropertyException,
     614             :         css::lang::WrappedTargetException,
     615             :         css::uno::RuntimeException, std::exception)
     616             : {
     617           0 :     ThemeItem eItem (__AnyItem);
     618           0 :     if (rsPropertyName.getLength() > 0)
     619             :     {
     620           0 :         PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     621           0 :         if (iId == maPropertyNameToIdMap.end())
     622           0 :             throw beans::UnknownPropertyException();
     623             : 
     624           0 :         const PropertyType eType (GetPropertyType(iId->second));
     625           0 :         if (eType == PT_Invalid)
     626           0 :             throw beans::UnknownPropertyException();
     627             : 
     628           0 :         eItem = iId->second;
     629             :     }
     630           0 :     VetoableListenerContainer* pListeners = GetVetoableListeners(eItem, true);
     631           0 :     if (pListeners != NULL)
     632           0 :         pListeners->push_back(rxListener);
     633           0 : }
     634             : 
     635             : 
     636             : 
     637             : 
     638           0 : void SAL_CALL Theme::removeVetoableChangeListener(
     639             :     const ::rtl::OUString& rsPropertyName,
     640             :     const css::uno::Reference<css::beans::XVetoableChangeListener>& rxListener)
     641             :     throw(css::beans::UnknownPropertyException,
     642             :         css::lang::WrappedTargetException,
     643             :         css::uno::RuntimeException, std::exception)
     644             : {
     645           0 :     ThemeItem eItem (__AnyItem);
     646           0 :     if (rsPropertyName.getLength() > 0)
     647             :     {
     648           0 :         PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     649           0 :         if (iId == maPropertyNameToIdMap.end())
     650           0 :             throw beans::UnknownPropertyException();
     651             : 
     652           0 :         const PropertyType eType (GetPropertyType(iId->second));
     653           0 :         if (eType == PT_Invalid)
     654           0 :             throw beans::UnknownPropertyException();
     655             : 
     656           0 :         eItem = iId->second;
     657             :     }
     658           0 :     VetoableListenerContainer* pContainer = GetVetoableListeners(eItem, false);
     659           0 :     if (pContainer != NULL)
     660             :     {
     661           0 :         VetoableListenerContainer::iterator iListener (::std::find(pContainer->begin(), pContainer->end(), rxListener));
     662           0 :         if (iListener != pContainer->end())
     663             :         {
     664           0 :             pContainer->erase(iListener);
     665             :             // Remove container when empty.
     666           0 :             if (pContainer->empty())
     667           0 :                 maVetoableListeners.erase(eItem);
     668             :         }
     669             :     }
     670           0 : }
     671             : 
     672             : 
     673             : 
     674             : 
     675           0 : css::uno::Sequence<css::beans::Property> SAL_CALL Theme::getProperties (void)
     676             :     throw(css::uno::RuntimeException, std::exception)
     677             : {
     678           0 :     ::std::vector<beans::Property> aProperties;
     679             : 
     680           0 :     for (sal_Int32 nItem(__Begin),nEnd(__End); nItem!=nEnd; ++nItem)
     681             :     {
     682           0 :         const ThemeItem eItem (static_cast<ThemeItem>(nItem));
     683           0 :         const PropertyType eType (GetPropertyType(eItem));
     684           0 :         if (eType == PT_Invalid)
     685           0 :             continue;
     686             : 
     687             :         const beans::Property aProperty(
     688           0 :             maPropertyIdToNameMap[eItem],
     689             :             eItem,
     690             :             GetCppuType(eType),
     691           0 :             0);
     692           0 :         aProperties.push_back(aProperty);
     693           0 :     }
     694             : 
     695             :     return css::uno::Sequence<css::beans::Property>(
     696           0 :         &aProperties.front(),
     697           0 :         aProperties.size());
     698             : }
     699             : 
     700             : 
     701             : 
     702             : 
     703           0 : beans::Property SAL_CALL Theme::getPropertyByName (const ::rtl::OUString& rsPropertyName)
     704             :     throw(css::beans::UnknownPropertyException,
     705             :         css::uno::RuntimeException, std::exception)
     706             : {
     707           0 :     PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     708           0 :     if (iId == maPropertyNameToIdMap.end())
     709           0 :         throw beans::UnknownPropertyException();
     710             : 
     711           0 :     const PropertyType eType (GetPropertyType(iId->second));
     712           0 :     if (eType == PT_Invalid)
     713           0 :         throw beans::UnknownPropertyException();
     714             : 
     715           0 :     const ThemeItem eItem (iId->second);
     716             : 
     717             :     return beans::Property(
     718             :         rsPropertyName,
     719             :         eItem,
     720             :         GetCppuType(eType),
     721           0 :         0);
     722             : }
     723             : 
     724             : 
     725             : 
     726             : 
     727           0 : sal_Bool SAL_CALL Theme::hasPropertyByName (const ::rtl::OUString& rsPropertyName)
     728             :     throw(css::uno::RuntimeException, std::exception)
     729             : {
     730           0 :     PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName));
     731           0 :     if (iId == maPropertyNameToIdMap.end())
     732           0 :         return sal_False;
     733             : 
     734           0 :     const PropertyType eType (GetPropertyType(iId->second));
     735           0 :     if (eType == PT_Invalid)
     736           0 :         return sal_False;
     737             : 
     738           0 :     return sal_True;
     739             : }
     740             : 
     741             : 
     742             : 
     743             : 
     744          84 : void Theme::SetupPropertyMaps (void)
     745             : {
     746          84 :     maPropertyIdToNameMap.resize(__Post_Rect);
     747          84 :     maImages.resize(__Image_Color - __Pre_Image - 1);
     748          84 :     maColors.resize(__Color_Paint - __Image_Color - 1);
     749          84 :     maPaints.resize(__Paint_Int - __Color_Paint - 1);
     750          84 :     maIntegers.resize(__Int_Bool - __Paint_Int - 1);
     751          84 :     maBooleans.resize(__Bool_Rect - __Int_Bool - 1);
     752          84 :     maRectangles.resize(__Post_Rect - __Bool_Rect - 1);
     753             : 
     754             :     #define AddEntry(e) maPropertyNameToIdMap[OUString(#e)]=e; maPropertyIdToNameMap[e]=OUString(#e)
     755             : 
     756          84 :     AddEntry(Image_Grip);
     757          84 :     AddEntry(Image_Expand);
     758          84 :     AddEntry(Image_Collapse);
     759          84 :     AddEntry(Image_TabBarMenu);
     760          84 :     AddEntry(Image_PanelMenu);
     761          84 :     AddEntry(Image_ToolBoxItemSeparator);
     762          84 :     AddEntry(Image_Closer);
     763          84 :     AddEntry(Image_CloseIndicator);
     764             : 
     765          84 :     AddEntry(Color_DeckTitleFont);
     766          84 :     AddEntry(Color_PanelTitleFont);
     767          84 :     AddEntry(Color_TabMenuSeparator);
     768          84 :     AddEntry(Color_TabItemBorder);
     769          84 :     AddEntry(Color_DropDownBorder);
     770          84 :     AddEntry(Color_Highlight);
     771          84 :     AddEntry(Color_HighlightText);
     772             : 
     773          84 :     AddEntry(Paint_DeckBackground);
     774          84 :     AddEntry(Paint_DeckTitleBarBackground);
     775          84 :     AddEntry(Paint_PanelBackground);
     776          84 :     AddEntry(Paint_PanelTitleBarBackground);
     777          84 :     AddEntry(Paint_TabBarBackground);
     778          84 :     AddEntry(Paint_TabItemBackgroundNormal);
     779          84 :     AddEntry(Paint_TabItemBackgroundHighlight);
     780          84 :     AddEntry(Paint_HorizontalBorder);
     781          84 :     AddEntry(Paint_VerticalBorder);
     782          84 :     AddEntry(Paint_ToolBoxBackground);
     783          84 :     AddEntry(Paint_ToolBoxBorderTopLeft);
     784          84 :     AddEntry(Paint_ToolBoxBorderCenterCorners);
     785          84 :     AddEntry(Paint_ToolBoxBorderBottomRight);
     786          84 :     AddEntry(Paint_DropDownBackground);
     787             : 
     788          84 :     AddEntry(Int_DeckTitleBarHeight);
     789          84 :     AddEntry(Int_DeckBorderSize);
     790          84 :     AddEntry(Int_DeckSeparatorHeight);
     791          84 :     AddEntry(Int_PanelTitleBarHeight);
     792          84 :     AddEntry(Int_TabMenuPadding);
     793          84 :     AddEntry(Int_TabMenuSeparatorPadding);
     794          84 :     AddEntry(Int_TabItemWidth);
     795          84 :     AddEntry(Int_TabItemHeight);
     796          84 :     AddEntry(Int_DeckLeftPadding);
     797          84 :     AddEntry(Int_DeckTopPadding);
     798          84 :     AddEntry(Int_DeckRightPadding);
     799          84 :     AddEntry(Int_DeckBottomPadding);
     800          84 :     AddEntry(Int_TabBarLeftPadding);
     801          84 :     AddEntry(Int_TabBarTopPadding);
     802          84 :     AddEntry(Int_TabBarRightPadding);
     803          84 :     AddEntry(Int_TabBarBottomPadding);
     804          84 :     AddEntry(Int_ButtonCornerRadius);
     805             : 
     806          84 :     AddEntry(Bool_UseSymphonyIcons);
     807          84 :     AddEntry(Bool_UseSystemColors);
     808          84 :     AddEntry(Bool_UseToolBoxItemSeparator);
     809          84 :     AddEntry(Bool_IsHighContrastModeActive);
     810             : 
     811          84 :     AddEntry(Rect_ToolBoxPadding);
     812          84 :     AddEntry(Rect_ToolBoxBorder);
     813             : 
     814             :     #undef AddEntry
     815             : 
     816          84 :     maRawValues.resize(maPropertyIdToNameMap.size());
     817          84 : }
     818             : 
     819             : 
     820             : 
     821             : 
     822      725736 : Theme::PropertyType Theme::GetPropertyType (const ThemeItem eItem)
     823             : {
     824      725736 :     switch(eItem)
     825             :     {
     826             :         case Image_Grip:
     827             :         case Image_Expand:
     828             :         case Image_Collapse:
     829             :         case Image_TabBarMenu:
     830             :         case Image_PanelMenu:
     831             :         case Image_ToolBoxItemSeparator:
     832             :         case Image_Closer:
     833             :         case Image_CloseIndicator:
     834       56068 :             return PT_Image;
     835             : 
     836             :         case Color_DeckTitleFont:
     837             :         case Color_PanelTitleFont:
     838             :         case Color_TabMenuSeparator:
     839             :         case Color_TabItemBorder:
     840             :         case Color_DropDownBorder:
     841             :         case Color_Highlight:
     842             :         case Color_HighlightText:
     843       26204 :             return PT_Color;
     844             : 
     845             :         case Paint_DeckBackground:
     846             :         case Paint_DeckTitleBarBackground:
     847             :         case Paint_PanelBackground:
     848             :         case Paint_PanelTitleBarBackground:
     849             :         case Paint_TabBarBackground:
     850             :         case Paint_TabItemBackgroundNormal:
     851             :         case Paint_TabItemBackgroundHighlight:
     852             :         case Paint_HorizontalBorder:
     853             :         case Paint_VerticalBorder:
     854             :         case Paint_ToolBoxBackground:
     855             :         case Paint_ToolBoxBorderTopLeft:
     856             :         case Paint_ToolBoxBorderCenterCorners:
     857             :         case Paint_ToolBoxBorderBottomRight:
     858             :         case Paint_DropDownBackground:
     859      107552 :             return PT_Paint;
     860             : 
     861             :         case Int_DeckTitleBarHeight:
     862             :         case Int_DeckBorderSize:
     863             :         case Int_DeckSeparatorHeight:
     864             :         case Int_PanelTitleBarHeight:
     865             :         case Int_TabMenuPadding:
     866             :         case Int_TabMenuSeparatorPadding:
     867             :         case Int_TabItemWidth:
     868             :         case Int_TabItemHeight:
     869             :         case Int_DeckLeftPadding:
     870             :         case Int_DeckTopPadding:
     871             :         case Int_DeckRightPadding:
     872             :         case Int_DeckBottomPadding:
     873             :         case Int_TabBarLeftPadding:
     874             :         case Int_TabBarTopPadding:
     875             :         case Int_TabBarRightPadding:
     876             :         case Int_TabBarBottomPadding:
     877             :         case Int_ButtonCornerRadius:
     878      508296 :             return PT_Integer;
     879             : 
     880             :         case Bool_UseSymphonyIcons:
     881             :         case Bool_UseSystemColors:
     882             :         case Bool_UseToolBoxItemSeparator:
     883             :         case Bool_IsHighContrastModeActive:
     884       27432 :             return PT_Boolean;
     885             : 
     886             :         case Rect_ToolBoxBorder:
     887             :         case Rect_ToolBoxPadding:
     888         184 :             return PT_Rectangle;
     889             : 
     890             :         default:
     891           0 :             return PT_Invalid;
     892             :     }
     893             : }
     894             : 
     895             : 
     896             : 
     897             : 
     898           0 : css::uno::Type Theme::GetCppuType (const PropertyType eType)
     899             : {
     900           0 :     switch(eType)
     901             :     {
     902             :         case PT_Image:
     903           0 :             return cppu::UnoType<rtl::OUString>::get();
     904             : 
     905             :         case PT_Color:
     906           0 :             return cppu::UnoType<sal_uInt32>::get();
     907             : 
     908             :         case PT_Paint:
     909           0 :             return getCppuVoidType();
     910             : 
     911             :         case PT_Integer:
     912           0 :             return cppu::UnoType<sal_Int32>::get();
     913             : 
     914             :         case PT_Boolean:
     915           0 :             return cppu::UnoType<sal_Bool>::get();
     916             : 
     917             :         case PT_Rectangle:
     918           0 :             return cppu::UnoType<awt::Rectangle>::get();
     919             : 
     920             :         case PT_Invalid:
     921             :         default:
     922           0 :             return getCppuVoidType();
     923             :     }
     924             : }
     925             : 
     926             : 
     927             : 
     928             : 
     929      725260 : sal_Int32 Theme::GetIndex (const ThemeItem eItem, const PropertyType eType)
     930             : {
     931      725260 :     switch(eType)
     932             :     {
     933             :         case PT_Image:
     934       56004 :             return eItem - __Pre_Image-1;
     935             :         case PT_Color:
     936       26148 :             return eItem - __Image_Color-1;
     937             :         case PT_Paint:
     938      107356 :             return eItem - __Color_Paint-1;
     939             :         case PT_Integer:
     940      508160 :             return eItem - __Paint_Int-1;
     941             :         case PT_Boolean:
     942       27424 :             return eItem - __Int_Bool-1;
     943             :         case PT_Rectangle:
     944         168 :             return eItem - __Bool_Rect-1;
     945             : 
     946             :         default:
     947             :             OSL_ASSERT(false);
     948           0 :             return 0;
     949             :     }
     950             : }
     951             : 
     952             : 
     953             : 
     954             : 
     955        8400 : Theme::VetoableListenerContainer* Theme::GetVetoableListeners (
     956             :     const ThemeItem eItem,
     957             :     const bool bCreate)
     958             : {
     959        8400 :     VetoableListeners::iterator iContainer (maVetoableListeners.find(eItem));
     960        8400 :     if (iContainer != maVetoableListeners.end())
     961           0 :         return &iContainer->second;
     962        8400 :     else if (bCreate)
     963             :     {
     964           0 :         maVetoableListeners[eItem] = VetoableListenerContainer();
     965           0 :         return &maVetoableListeners[eItem];
     966             :     }
     967             :     else
     968        8400 :         return NULL;
     969             : }
     970             : 
     971             : 
     972             : 
     973             : 
     974       17800 : Theme::ChangeListenerContainer* Theme::GetChangeListeners (
     975             :     const ThemeItem eItem,
     976             :     const bool bCreate)
     977             : {
     978       17800 :     ChangeListeners::iterator iContainer (maChangeListeners.find(eItem));
     979       17800 :     if (iContainer != maChangeListeners.end())
     980        4724 :         return &iContainer->second;
     981       13076 :     else if (bCreate)
     982             :     {
     983        4676 :         maChangeListeners[eItem] = ChangeListenerContainer();
     984        4676 :         return &maChangeListeners[eItem];
     985             :     }
     986             :     else
     987        8400 :         return NULL;
     988             : }
     989             : 
     990             : 
     991             : 
     992             : 
     993        8400 : bool Theme::DoVetoableListenersVeto (
     994             :     const VetoableListenerContainer* pListeners,
     995             :     const beans::PropertyChangeEvent& rEvent) const
     996             : {
     997        8400 :     if (pListeners == NULL)
     998        8400 :         return false;
     999             : 
    1000           0 :     VetoableListenerContainer aListeners (*pListeners);
    1001             :     try
    1002             :     {
    1003           0 :         for (VetoableListenerContainer::const_iterator
    1004           0 :                  iListener(aListeners.begin()),
    1005           0 :                  iEnd(aListeners.end());
    1006             :              iListener!=iEnd;
    1007             :              ++iListener)
    1008             :         {
    1009           0 :             (*iListener)->vetoableChange(rEvent);
    1010             :         }
    1011             :     }
    1012           0 :     catch(const beans::PropertyVetoException&)
    1013             :     {
    1014           0 :         return true;
    1015             :     }
    1016           0 :     catch(const Exception&)
    1017             :     {
    1018             :         // Ignore any other errors (such as disposed listeners).
    1019             :     }
    1020           0 :     return false;
    1021             : }
    1022             : 
    1023             : 
    1024             : 
    1025             : 
    1026        8400 : void Theme::BroadcastPropertyChange (
    1027             :     const ChangeListenerContainer* pListeners,
    1028             :     const beans::PropertyChangeEvent& rEvent) const
    1029             : {
    1030        8400 :     if (pListeners == NULL)
    1031       16800 :         return;
    1032             : 
    1033           0 :     const ChangeListenerContainer aListeners (*pListeners);
    1034             :     try
    1035             :     {
    1036           0 :         for (ChangeListenerContainer::const_iterator
    1037           0 :                  iListener(aListeners.begin()),
    1038           0 :                  iEnd(aListeners.end());
    1039             :              iListener!=iEnd;
    1040             :              ++iListener)
    1041             :         {
    1042           0 :             (*iListener)->propertyChange(rEvent);
    1043             :         }
    1044             :     }
    1045           0 :     catch(const Exception&)
    1046             :     {
    1047             :         // Ignore any errors (such as disposed listeners).
    1048           0 :     }
    1049             : }
    1050             : 
    1051             : 
    1052             : 
    1053             : 
    1054        4200 : void Theme::ProcessNewValue (
    1055             :     const Any& rValue,
    1056             :     const ThemeItem eItem,
    1057             :     const PropertyType eType)
    1058             : {
    1059        4200 :     const sal_Int32 nIndex (GetIndex (eItem, eType));
    1060        4200 :     switch (eType)
    1061             :     {
    1062             :         case PT_Image:
    1063             :         {
    1064         672 :             ::rtl::OUString sURL;
    1065         672 :             if (rValue >>= sURL)
    1066             :             {
    1067         672 :                 maImages[nIndex] = Tools::GetImage(sURL, NULL);
    1068             :             }
    1069         672 :             break;
    1070             :         }
    1071             :         case PT_Color:
    1072             :         {
    1073         588 :             sal_Int32 nColorValue (0);
    1074         588 :             if (rValue >>= nColorValue)
    1075             :             {
    1076         588 :                 maColors[nIndex] = Color(nColorValue);
    1077             :             }
    1078         588 :             break;
    1079             :         }
    1080             :         case PT_Paint:
    1081             :         {
    1082        1092 :             maPaints[nIndex] = Paint::Create(rValue);
    1083        1092 :             break;
    1084             :         }
    1085             :         case PT_Integer:
    1086             :         {
    1087        1428 :             sal_Int32 nValue (0);
    1088        1428 :             if (rValue >>= nValue)
    1089             :             {
    1090        1428 :                 maIntegers[nIndex] = nValue;
    1091             :             }
    1092        1428 :             break;
    1093             :         }
    1094             :         case PT_Boolean:
    1095             :         {
    1096         252 :             bool nValue (false);
    1097         252 :             if (rValue >>= nValue)
    1098             :             {
    1099         252 :                 maBooleans[nIndex] = nValue;
    1100         252 :                 if (eItem == Bool_IsHighContrastModeActive)
    1101             :                 {
    1102           0 :                     mbIsHighContrastModeSetManually = true;
    1103           0 :                     mbIsHighContrastMode = maBooleans[nIndex];
    1104           0 :                     HandleDataChange();
    1105             :                 }
    1106         252 :                 else if (eItem == Bool_UseSystemColors)
    1107             :                 {
    1108          84 :                     HandleDataChange();
    1109             :                 }
    1110             :             }
    1111         252 :             break;
    1112             :         }
    1113             :         case PT_Rectangle:
    1114             :         {
    1115         168 :             awt::Rectangle aBox;
    1116         168 :             if (rValue >>= aBox)
    1117             :             {
    1118         168 :                 maRectangles[nIndex] = Rectangle(
    1119             :                     aBox.X,
    1120             :                     aBox.Y,
    1121             :                     aBox.Width,
    1122         168 :                     aBox.Height);
    1123             :             }
    1124         168 :             break;
    1125             :         }
    1126             :         case PT_Invalid:
    1127             :             OSL_ASSERT(eType != PT_Invalid);
    1128           0 :             throw RuntimeException();
    1129             :     }
    1130        4200 : }
    1131             : 
    1132         951 : } } // end of namespace sfx2::sidebar
    1133             : 
    1134             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10