1ff12d537SAndre Fischer /************************************************************** 29f759e1cSMatthias Seidel * 3ff12d537SAndre Fischer * Licensed to the Apache Software Foundation (ASF) under one 4ff12d537SAndre Fischer * or more contributor license agreements. See the NOTICE file 5ff12d537SAndre Fischer * distributed with this work for additional information 6ff12d537SAndre Fischer * regarding copyright ownership. The ASF licenses this file 7ff12d537SAndre Fischer * to you under the Apache License, Version 2.0 (the 8ff12d537SAndre Fischer * "License"); you may not use this file except in compliance 9ff12d537SAndre Fischer * with the License. You may obtain a copy of the License at 109f759e1cSMatthias Seidel * 11ff12d537SAndre Fischer * http://www.apache.org/licenses/LICENSE-2.0 129f759e1cSMatthias Seidel * 13ff12d537SAndre Fischer * Unless required by applicable law or agreed to in writing, 14ff12d537SAndre Fischer * software distributed under the License is distributed on an 15ff12d537SAndre Fischer * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16ff12d537SAndre Fischer * KIND, either express or implied. See the License for the 17ff12d537SAndre Fischer * specific language governing permissions and limitations 18ff12d537SAndre Fischer * under the License. 199f759e1cSMatthias Seidel * 20ff12d537SAndre Fischer *************************************************************/ 21ff12d537SAndre Fischer 229f759e1cSMatthias Seidel 239f759e1cSMatthias Seidel 24ff12d537SAndre Fischer #include "precompiled_sfx2.hxx" 25ff12d537SAndre Fischer 26b9e67834SAndre Fischer #include "sfx2/sidebar/Theme.hxx" 27ff12d537SAndre Fischer #include "Paint.hxx" 28ff12d537SAndre Fischer #include "SidebarResource.hxx" 29f35c6d02SAndre Fischer #include "sfx2/sidebar/Tools.hxx" 30ff12d537SAndre Fischer 31b9e67834SAndre Fischer #include <tools/svborder.hxx> 32ff12d537SAndre Fischer #include <tools/rc.hxx> 33ff12d537SAndre Fischer #include <vcl/svapp.hxx> 34ff12d537SAndre Fischer 35b9e67834SAndre Fischer using namespace css; 36b9e67834SAndre Fischer using namespace cssu; 37ff12d537SAndre Fischer 38ff12d537SAndre Fischer 39b9e67834SAndre Fischer namespace sfx2 { namespace sidebar { 40ff12d537SAndre Fischer 41b9e67834SAndre Fischer ::rtl::Reference<Theme> Theme::mpInstance; 42ff12d537SAndre Fischer 43ff12d537SAndre Fischer 44b9e67834SAndre Fischer Theme& Theme::GetCurrentTheme (void) 45b9e67834SAndre Fischer { 469f759e1cSMatthias Seidel if ( ! mpInstance.is()) 479f759e1cSMatthias Seidel { 489f759e1cSMatthias Seidel mpInstance.set(new Theme()); 499f759e1cSMatthias Seidel mpInstance->InitializeTheme(); 509f759e1cSMatthias Seidel } 519f759e1cSMatthias Seidel return *mpInstance; 52b9e67834SAndre Fischer } 53ff12d537SAndre Fischer 54ff12d537SAndre Fischer 55b9e67834SAndre Fischer Theme::Theme (void) 569f759e1cSMatthias Seidel : ThemeInterfaceBase(m_aMutex), 579f759e1cSMatthias Seidel maImages(), 589f759e1cSMatthias Seidel maColors(), 599f759e1cSMatthias Seidel maPaints(), 609f759e1cSMatthias Seidel maIntegers(), 619f759e1cSMatthias Seidel maBooleans(), 629f759e1cSMatthias Seidel mbIsHighContrastMode(Application::GetSettings().GetStyleSettings().GetHighContrastMode()), 639f759e1cSMatthias Seidel mbIsHighContrastModeSetManually(false), 649f759e1cSMatthias Seidel maPropertyNameToIdMap(), 659f759e1cSMatthias Seidel maPropertyIdToNameMap(), 669f759e1cSMatthias Seidel maRawValues(), 679f759e1cSMatthias Seidel maChangeListeners(), 689f759e1cSMatthias Seidel maVetoableListeners() 69ff12d537SAndre Fischer 70ff12d537SAndre Fischer { 719f759e1cSMatthias Seidel SetupPropertyMaps(); 72ff12d537SAndre Fischer } 73ff12d537SAndre Fischer 74ff12d537SAndre Fischer 75b9e67834SAndre Fischer Theme::~Theme (void) 76ff12d537SAndre Fischer { 77ff12d537SAndre Fischer } 78ff12d537SAndre Fischer 79ff12d537SAndre Fischer 80b9e67834SAndre Fischer Image Theme::GetImage (const ThemeItem eItem) 81ff12d537SAndre Fischer { 829f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(eItem)); 839f759e1cSMatthias Seidel OSL_ASSERT(eType==PT_Image); 849f759e1cSMatthias Seidel const sal_Int32 nIndex (GetIndex(eItem, eType)); 859f759e1cSMatthias Seidel const Theme& rTheme (GetCurrentTheme()); 869f759e1cSMatthias Seidel return rTheme.maImages[nIndex]; 87ff12d537SAndre Fischer } 88ff12d537SAndre Fischer 89ff12d537SAndre Fischer 90b9e67834SAndre Fischer Color Theme::GetColor (const ThemeItem eItem) 91ff12d537SAndre Fischer { 929f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(eItem)); 939f759e1cSMatthias Seidel OSL_ASSERT(eType==PT_Color || eType==PT_Paint); 949f759e1cSMatthias Seidel const sal_Int32 nIndex (GetIndex(eItem, eType)); 959f759e1cSMatthias Seidel const Theme& rTheme (GetCurrentTheme()); 969f759e1cSMatthias Seidel if (eType == PT_Color) 979f759e1cSMatthias Seidel return rTheme.maColors[nIndex]; 989f759e1cSMatthias Seidel else if (eType == PT_Paint) 999f759e1cSMatthias Seidel return rTheme.maPaints[nIndex].GetColor(); 1009f759e1cSMatthias Seidel else 1019f759e1cSMatthias Seidel return COL_WHITE; 102ff12d537SAndre Fischer } 103ff12d537SAndre Fischer 104ff12d537SAndre Fischer 105b9e67834SAndre Fischer const Paint& Theme::GetPaint (const ThemeItem eItem) 106ff12d537SAndre Fischer { 1079f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(eItem)); 1089f759e1cSMatthias Seidel OSL_ASSERT(eType==PT_Paint); 1099f759e1cSMatthias Seidel const sal_Int32 nIndex (GetIndex(eItem, eType)); 1109f759e1cSMatthias Seidel const Theme& rTheme (GetCurrentTheme()); 1119f759e1cSMatthias Seidel return rTheme.maPaints[nIndex]; 112ff12d537SAndre Fischer } 113ff12d537SAndre Fischer 114ff12d537SAndre Fischer 1157a32b0c8SAndre Fischer const Wallpaper Theme::GetWallpaper (const ThemeItem eItem) 1167a32b0c8SAndre Fischer { 1179f759e1cSMatthias Seidel return GetPaint(eItem).GetWallpaper(); 1187a32b0c8SAndre Fischer } 1197a32b0c8SAndre Fischer 1207a32b0c8SAndre Fischer 121b9e67834SAndre Fischer sal_Int32 Theme::GetInteger (const ThemeItem eItem) 122ff12d537SAndre Fischer { 1239f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(eItem)); 1249f759e1cSMatthias Seidel OSL_ASSERT(eType==PT_Integer); 1259f759e1cSMatthias Seidel const sal_Int32 nIndex (GetIndex(eItem, eType)); 1269f759e1cSMatthias Seidel const Theme& rTheme (GetCurrentTheme()); 1279f759e1cSMatthias Seidel return rTheme.maIntegers[nIndex]; 128ff12d537SAndre Fischer } 129ff12d537SAndre Fischer 130ff12d537SAndre Fischer 131b9e67834SAndre Fischer bool Theme::GetBoolean (const ThemeItem eItem) 132ff12d537SAndre Fischer { 1339f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(eItem)); 1349f759e1cSMatthias Seidel OSL_ASSERT(eType==PT_Boolean); 1359f759e1cSMatthias Seidel const sal_Int32 nIndex (GetIndex(eItem, eType)); 1369f759e1cSMatthias Seidel const Theme& rTheme (GetCurrentTheme()); 1379f759e1cSMatthias Seidel return rTheme.maBooleans[nIndex]; 138ff12d537SAndre Fischer } 139ff12d537SAndre Fischer 140ff12d537SAndre Fischer 14195a18594SAndre Fischer Rectangle Theme::GetRectangle (const ThemeItem eItem) 14295a18594SAndre Fischer { 1439f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(eItem)); 1449f759e1cSMatthias Seidel OSL_ASSERT(eType==PT_Rectangle); 1459f759e1cSMatthias Seidel const sal_Int32 nIndex (GetIndex(eItem, eType)); 1469f759e1cSMatthias Seidel const Theme& rTheme (GetCurrentTheme()); 1479f759e1cSMatthias Seidel return rTheme.maRectangles[nIndex]; 14895a18594SAndre Fischer } 14995a18594SAndre Fischer 15095a18594SAndre Fischer 151b9e67834SAndre Fischer bool Theme::IsHighContrastMode (void) 152ff12d537SAndre Fischer { 1539f759e1cSMatthias Seidel const Theme& rTheme (GetCurrentTheme()); 1549f759e1cSMatthias Seidel return rTheme.mbIsHighContrastMode; 155ff12d537SAndre Fischer } 156ff12d537SAndre Fischer 157ff12d537SAndre Fischer 158b9e67834SAndre Fischer void Theme::HandleDataChange (void) 159ff12d537SAndre Fischer { 1609f759e1cSMatthias Seidel Theme& rTheme (GetCurrentTheme()); 16195a18594SAndre Fischer 1629f759e1cSMatthias Seidel if ( ! rTheme.mbIsHighContrastModeSetManually) 1639f759e1cSMatthias Seidel { 1649f759e1cSMatthias Seidel // Do not modify mbIsHighContrastMode when it was manually set. 1659f759e1cSMatthias Seidel GetCurrentTheme().mbIsHighContrastMode = Application::GetSettings().GetStyleSettings().GetHighContrastMode(); 1669f759e1cSMatthias Seidel rTheme.maRawValues[Bool_IsHighContrastModeActive] = Any(GetCurrentTheme().mbIsHighContrastMode); 1679f759e1cSMatthias Seidel } 16895a18594SAndre Fischer 1699f759e1cSMatthias Seidel GetCurrentTheme().UpdateTheme(); 170ff12d537SAndre Fischer } 171ff12d537SAndre Fischer 172ff12d537SAndre Fischer 173b9e67834SAndre Fischer void Theme::InitializeTheme (void) 17495a18594SAndre Fischer { 1759f759e1cSMatthias Seidel setPropertyValue( 1769f759e1cSMatthias Seidel maPropertyIdToNameMap[Bool_UseSymphonyIcons], 1779f759e1cSMatthias Seidel Any(false)); 1789f759e1cSMatthias Seidel setPropertyValue( 1799f759e1cSMatthias Seidel maPropertyIdToNameMap[Bool_UseSystemColors], 1809f759e1cSMatthias Seidel Any(false)); 18195a18594SAndre Fischer } 18295a18594SAndre Fischer 18395a18594SAndre Fischer 18495a18594SAndre Fischer void Theme::UpdateTheme (void) 185ff12d537SAndre Fischer { 1869f759e1cSMatthias Seidel SidebarResource aLocalResource; 187b9e67834SAndre Fischer 1889f759e1cSMatthias Seidel try 1899f759e1cSMatthias Seidel { 1909f759e1cSMatthias Seidel const StyleSettings& rStyle (Application::GetSettings().GetStyleSettings()); 1919f759e1cSMatthias Seidel const bool bUseSystemColors (GetBoolean(Bool_UseSystemColors)); 19295a18594SAndre Fischer 19395a18594SAndre Fischer #define Alternatives(n,hc,sys) (mbIsHighContrastMode ? hc : (bUseSystemColors ? sys : n)) 19495a18594SAndre Fischer 1959f759e1cSMatthias Seidel Color aBaseBackgroundColor (rStyle.GetDialogColor()); 1969f759e1cSMatthias Seidel // UX says this should be a little brighter, but that looks off when compared to the other windows. 1979f759e1cSMatthias Seidel //aBaseBackgroundColor.IncreaseLuminance(7); 1989f759e1cSMatthias Seidel Color aBorderColor (aBaseBackgroundColor); 199629b561bSmseidel aBorderColor.DecreaseLuminance(80); 2009f759e1cSMatthias Seidel Color aSecondColor (aBaseBackgroundColor); 201629b561bSmseidel aSecondColor.DecreaseLuminance(0); 2029f759e1cSMatthias Seidel 2039f759e1cSMatthias Seidel setPropertyValue( 2049f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_DeckBackground], 2059f759e1cSMatthias Seidel Any(sal_Int32(aBaseBackgroundColor.GetRGBColor()))); 2069f759e1cSMatthias Seidel 2079f759e1cSMatthias Seidel setPropertyValue( 2089f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_DeckTitleBarBackground], 2099f759e1cSMatthias Seidel Any(sal_Int32(aBaseBackgroundColor.GetRGBColor()))); 2109f759e1cSMatthias Seidel setPropertyValue( 2119f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_DeckLeftPadding], 2129f759e1cSMatthias Seidel Any(sal_Int32(2))); 2139f759e1cSMatthias Seidel setPropertyValue( 2149f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_DeckTopPadding], 2159f759e1cSMatthias Seidel Any(sal_Int32(2))); 2169f759e1cSMatthias Seidel setPropertyValue( 2179f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_DeckRightPadding], 2189f759e1cSMatthias Seidel Any(sal_Int32(2))); 2199f759e1cSMatthias Seidel setPropertyValue( 2209f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_DeckBottomPadding], 2219f759e1cSMatthias Seidel Any(sal_Int32(2))); 2229f759e1cSMatthias Seidel setPropertyValue( 2239f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_DeckBorderSize], 2249f759e1cSMatthias Seidel Any(sal_Int32(1))); 2259f759e1cSMatthias Seidel setPropertyValue( 2269f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_DeckSeparatorHeight], 2279f759e1cSMatthias Seidel Any(sal_Int32(1))); 2289f759e1cSMatthias Seidel setPropertyValue( 2299f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_ButtonCornerRadius], 2309f759e1cSMatthias Seidel Any(sal_Int32(3))); 2319f759e1cSMatthias Seidel setPropertyValue( 2329f759e1cSMatthias Seidel maPropertyIdToNameMap[Color_DeckTitleFont], 2339f759e1cSMatthias Seidel Any(sal_Int32(rStyle.GetFontColor().GetRGBColor()))); 2349f759e1cSMatthias Seidel setPropertyValue( 2359f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_DeckTitleBarHeight], 2369f759e1cSMatthias Seidel Any(sal_Int32(Alternatives( 2379f759e1cSMatthias Seidel 26, 2389f759e1cSMatthias Seidel 26, 2399f759e1cSMatthias Seidel rStyle.GetFloatTitleHeight())))); 2409f759e1cSMatthias Seidel setPropertyValue( 2419f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_PanelBackground], 2429f759e1cSMatthias Seidel Any(sal_Int32(aBaseBackgroundColor.GetRGBColor()))); 2439f759e1cSMatthias Seidel 2449f759e1cSMatthias Seidel setPropertyValue( 2459f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_PanelTitleBarBackground], 2469f759e1cSMatthias Seidel Any(Tools::VclToAwtGradient(Gradient( 2479f759e1cSMatthias Seidel GRADIENT_LINEAR, 2489f759e1cSMatthias Seidel aSecondColor.GetRGBColor(), 2499f759e1cSMatthias Seidel aBaseBackgroundColor.GetRGBColor() 2509f759e1cSMatthias Seidel )))); 2519f759e1cSMatthias Seidel setPropertyValue( 2529f759e1cSMatthias Seidel maPropertyIdToNameMap[Color_PanelTitleFont], 2539f759e1cSMatthias Seidel Any(sal_Int32(mbIsHighContrastMode ? 0x00ff00 : 0x262626))); 2549f759e1cSMatthias Seidel setPropertyValue( 2559f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_PanelTitleBarHeight], 2569f759e1cSMatthias Seidel Any(sal_Int32(Alternatives( 2579f759e1cSMatthias Seidel 26, 2589f759e1cSMatthias Seidel 26, 2599f759e1cSMatthias Seidel rStyle.GetTitleHeight())))); 2609f759e1cSMatthias Seidel setPropertyValue( 2619f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_TabBarBackground], 2629f759e1cSMatthias Seidel Any(sal_Int32(aBaseBackgroundColor.GetRGBColor()))); 2639f759e1cSMatthias Seidel setPropertyValue( 2649f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_TabBarLeftPadding], 2659f759e1cSMatthias Seidel Any(sal_Int32(2))); 2669f759e1cSMatthias Seidel setPropertyValue( 2679f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_TabBarTopPadding], 2689f759e1cSMatthias Seidel Any(sal_Int32(2))); 2699f759e1cSMatthias Seidel setPropertyValue( 2709f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_TabBarRightPadding], 2719f759e1cSMatthias Seidel Any(sal_Int32(2))); 2729f759e1cSMatthias Seidel setPropertyValue( 2739f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_TabBarBottomPadding], 2749f759e1cSMatthias Seidel Any(sal_Int32(2))); 2759f759e1cSMatthias Seidel 2769f759e1cSMatthias Seidel setPropertyValue( 2779f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_TabMenuPadding], 2789f759e1cSMatthias Seidel Any(sal_Int32(6))); 2799f759e1cSMatthias Seidel setPropertyValue( 2809f759e1cSMatthias Seidel maPropertyIdToNameMap[Color_TabMenuSeparator], 2819f759e1cSMatthias Seidel Any(sal_Int32(aBorderColor.GetRGBColor()))); 2829f759e1cSMatthias Seidel setPropertyValue( 2839f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_TabMenuSeparatorPadding], 2849f759e1cSMatthias Seidel Any(sal_Int32(7))); 2859f759e1cSMatthias Seidel 2869f759e1cSMatthias Seidel setPropertyValue( 2879f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_TabItemWidth], 2889f759e1cSMatthias Seidel Any(sal_Int32(32))); 2899f759e1cSMatthias Seidel setPropertyValue( 2909f759e1cSMatthias Seidel maPropertyIdToNameMap[Int_TabItemHeight], 2919f759e1cSMatthias Seidel Any(sal_Int32(32))); 2929f759e1cSMatthias Seidel setPropertyValue( 2939f759e1cSMatthias Seidel maPropertyIdToNameMap[Color_TabItemBorder], 2949f759e1cSMatthias Seidel Any(sal_Int32(rStyle.GetActiveBorderColor().GetRGBColor()))); 2959f759e1cSMatthias Seidel // mbIsHighContrastMode ? 0x00ff00 : 0xbfbfbf))); 2969f759e1cSMatthias Seidel 2979f759e1cSMatthias Seidel setPropertyValue( 2989f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_DropDownBackground], 2999f759e1cSMatthias Seidel Any(sal_Int32(aBaseBackgroundColor.GetRGBColor()))); 3009f759e1cSMatthias Seidel setPropertyValue( 3019f759e1cSMatthias Seidel maPropertyIdToNameMap[Color_DropDownBorder], 3029f759e1cSMatthias Seidel Any(sal_Int32(rStyle.GetActiveBorderColor().GetRGBColor()))); 3039f759e1cSMatthias Seidel 3049f759e1cSMatthias Seidel setPropertyValue( 3059f759e1cSMatthias Seidel maPropertyIdToNameMap[Color_Highlight], 3069f759e1cSMatthias Seidel Any(sal_Int32(rStyle.GetHighlightColor().GetRGBColor()))); 3079f759e1cSMatthias Seidel setPropertyValue( 3089f759e1cSMatthias Seidel maPropertyIdToNameMap[Color_HighlightText], 3099f759e1cSMatthias Seidel Any(sal_Int32(rStyle.GetHighlightTextColor().GetRGBColor()))); 3109f759e1cSMatthias Seidel 3119f759e1cSMatthias Seidel setPropertyValue( 3129f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_TabItemBackgroundNormal], 3139f759e1cSMatthias Seidel Any()); 3149f759e1cSMatthias Seidel setPropertyValue( 3159f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_TabItemBackgroundHighlight], 3169f759e1cSMatthias Seidel Any(sal_Int32(rStyle.GetActiveTabColor().GetRGBColor()))); 3179f759e1cSMatthias Seidel // mbIsHighContrastMode ? 0x000000 : 0x00ffffff))); 3189f759e1cSMatthias Seidel 3199f759e1cSMatthias Seidel setPropertyValue( 3209f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_HorizontalBorder], 3219f759e1cSMatthias Seidel Any(sal_Int32(aBorderColor.GetRGBColor()))); 3229f759e1cSMatthias Seidel // mbIsHighContrastMode ? 0x00ff00 : 0xe4e4e4))); 3239f759e1cSMatthias Seidel setPropertyValue( 3249f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_VerticalBorder], 3259f759e1cSMatthias Seidel Any(sal_Int32(aBorderColor.GetRGBColor()))); 3269f759e1cSMatthias Seidel // mbIsHighContrastMode ? 0x00ff00 : 0xe4e4e4))); 3279f759e1cSMatthias Seidel 3289f759e1cSMatthias Seidel setPropertyValue( 3299f759e1cSMatthias Seidel maPropertyIdToNameMap[Image_Grip], 3309f759e1cSMatthias Seidel Any( 3319f759e1cSMatthias Seidel mbIsHighContrastMode 3329f759e1cSMatthias Seidel ? A2S("private:graphicrepository/sfx2/res/grip_hc.png") 3339f759e1cSMatthias Seidel : A2S("private:graphicrepository/sfx2/res/grip.png"))); 3349f759e1cSMatthias Seidel setPropertyValue( 3359f759e1cSMatthias Seidel maPropertyIdToNameMap[Image_Expand], 3369f759e1cSMatthias Seidel Any( 3379f759e1cSMatthias Seidel mbIsHighContrastMode 3389f759e1cSMatthias Seidel ? A2S("private:graphicrepository/res/plus_sch.png") 3399f759e1cSMatthias Seidel : A2S("private:graphicrepository/res/plus.png"))); 3409f759e1cSMatthias Seidel setPropertyValue( 3419f759e1cSMatthias Seidel maPropertyIdToNameMap[Image_Collapse], 3429f759e1cSMatthias Seidel Any( 3439f759e1cSMatthias Seidel mbIsHighContrastMode 3449f759e1cSMatthias Seidel ? A2S("private:graphicrepository/res/minus_sch.png") 3459f759e1cSMatthias Seidel : A2S("private:graphicrepository/res/minus.png"))); 3469f759e1cSMatthias Seidel setPropertyValue( 3479f759e1cSMatthias Seidel maPropertyIdToNameMap[Image_TabBarMenu], 3489f759e1cSMatthias Seidel Any( 3499f759e1cSMatthias Seidel mbIsHighContrastMode 3509f759e1cSMatthias Seidel ? A2S("private:graphicrepository/sfx2/res/symphony/open_more_hc.png") 3519f759e1cSMatthias Seidel : A2S("private:graphicrepository/sfx2/res/symphony/open_more.png"))); 3529f759e1cSMatthias Seidel setPropertyValue( 3539f759e1cSMatthias Seidel maPropertyIdToNameMap[Image_PanelMenu], 3549f759e1cSMatthias Seidel Any( 3559f759e1cSMatthias Seidel mbIsHighContrastMode 3569f759e1cSMatthias Seidel ? A2S("private:graphicrepository/sfx2/res/symphony/morebutton_h.png") 3579f759e1cSMatthias Seidel : A2S("private:graphicrepository/sfx2/res/symphony/morebutton.png"))); 3589f759e1cSMatthias Seidel setPropertyValue( 3599f759e1cSMatthias Seidel maPropertyIdToNameMap[Image_Closer], 3609f759e1cSMatthias Seidel Any( 3619f759e1cSMatthias Seidel mbIsHighContrastMode 3629f759e1cSMatthias Seidel ? A2S("private:graphicrepository/sfx2/res/closedochc.png") 3639f759e1cSMatthias Seidel : A2S("private:graphicrepository/sfx2/res/closedoc.png"))); 3649f759e1cSMatthias Seidel setPropertyValue( 3659f759e1cSMatthias Seidel maPropertyIdToNameMap[Image_CloseIndicator], 3669f759e1cSMatthias Seidel Any( 3679f759e1cSMatthias Seidel mbIsHighContrastMode 3689f759e1cSMatthias Seidel ? A2S("private:graphicrepository/res/commandimagelist/lch_decrementlevel.png") 3699f759e1cSMatthias Seidel : A2S("private:graphicrepository/res/commandimagelist/lc_decrementlevel.png"))); 3709f759e1cSMatthias Seidel setPropertyValue( 3719f759e1cSMatthias Seidel maPropertyIdToNameMap[Image_ToolBoxItemSeparator], 3729f759e1cSMatthias Seidel Any( 3739f759e1cSMatthias Seidel A2S("private:graphicrepository/sfx2/res/separator.png"))); 3749f759e1cSMatthias Seidel 3759f759e1cSMatthias Seidel // ToolBox 3769f759e1cSMatthias Seidel 3779f759e1cSMatthias Seidel /* 3789f759e1cSMatthias Seidel // Separator style 3799f759e1cSMatthias Seidel setPropertyValue( 3809f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_ToolBoxBackground], 3819f759e1cSMatthias Seidel Any(sal_Int32(rStyle.GetMenuColor().GetRGBColor()))); 3829f759e1cSMatthias Seidel setPropertyValue( 3839f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_ToolBoxBorderTopLeft], 3849f759e1cSMatthias Seidel Any()); 3859f759e1cSMatthias Seidel setPropertyValue( 3869f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_ToolBoxBorderCenterCorners], 3879f759e1cSMatthias Seidel Any()); 3889f759e1cSMatthias Seidel setPropertyValue( 3899f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_ToolBoxBorderBottomRight], 3909f759e1cSMatthias Seidel Any()); 3919f759e1cSMatthias Seidel setPropertyValue( 3929f759e1cSMatthias Seidel maPropertyIdToNameMap[Rect_ToolBoxPadding], 3939f759e1cSMatthias Seidel Any(awt::Rectangle(2,2,2,2))); 3949f759e1cSMatthias Seidel setPropertyValue( 3959f759e1cSMatthias Seidel maPropertyIdToNameMap[Rect_ToolBoxBorder], 3969f759e1cSMatthias Seidel Any(awt::Rectangle(0,0,0,0))); 3979f759e1cSMatthias Seidel setPropertyValue( 3989f759e1cSMatthias Seidel maPropertyIdToNameMap[Bool_UseToolBoxItemSeparator], 3999f759e1cSMatthias Seidel Any(true)); 4009f759e1cSMatthias Seidel 4019f759e1cSMatthias Seidel */ 4029f759e1cSMatthias Seidel 4039f759e1cSMatthias Seidel // Gradient style 4049f759e1cSMatthias Seidel Color aGradientStop2 (aBaseBackgroundColor); 4050c7fe49eSmseidel aGradientStop2.IncreaseLuminance(0); 4069f759e1cSMatthias Seidel Color aToolBoxBorderColor (aBaseBackgroundColor); 407*c4aa4ee9Smseidel aToolBoxBorderColor.DecreaseLuminance(40); 4089f759e1cSMatthias Seidel setPropertyValue( 4099f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_ToolBoxBackground], 4109f759e1cSMatthias Seidel Any(Tools::VclToAwtGradient(Gradient( 4119f759e1cSMatthias Seidel GRADIENT_LINEAR, 4129f759e1cSMatthias Seidel aBaseBackgroundColor.GetRGBColor(), 4139f759e1cSMatthias Seidel aGradientStop2.GetRGBColor() 4149f759e1cSMatthias Seidel )))); 4159f759e1cSMatthias Seidel setPropertyValue( 4169f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_ToolBoxBorderTopLeft], 4179f759e1cSMatthias Seidel mbIsHighContrastMode 4189f759e1cSMatthias Seidel ? Any(util::Color(sal_uInt32(0x00ff00))) 4199f759e1cSMatthias Seidel : Any(util::Color(aToolBoxBorderColor.GetRGBColor()))); 4209f759e1cSMatthias Seidel setPropertyValue( 4219f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_ToolBoxBorderCenterCorners], 4229f759e1cSMatthias Seidel mbIsHighContrastMode 4239f759e1cSMatthias Seidel ? Any(util::Color(sal_uInt32(0x00ff00))) 4249f759e1cSMatthias Seidel : Any(util::Color(aToolBoxBorderColor.GetRGBColor()))); 4259f759e1cSMatthias Seidel setPropertyValue( 4269f759e1cSMatthias Seidel maPropertyIdToNameMap[Paint_ToolBoxBorderBottomRight], 4279f759e1cSMatthias Seidel mbIsHighContrastMode 4289f759e1cSMatthias Seidel ? Any(util::Color(sal_uInt32(0x00ff00))) 4299f759e1cSMatthias Seidel : Any(util::Color(aToolBoxBorderColor.GetRGBColor()))); 4309f759e1cSMatthias Seidel setPropertyValue( 4319f759e1cSMatthias Seidel maPropertyIdToNameMap[Rect_ToolBoxPadding], 4329f759e1cSMatthias Seidel Any(awt::Rectangle(2,2,2,2))); 4339f759e1cSMatthias Seidel setPropertyValue( 4349f759e1cSMatthias Seidel maPropertyIdToNameMap[Rect_ToolBoxBorder], 4359f759e1cSMatthias Seidel Any(awt::Rectangle(1,1,1,1))); 4369f759e1cSMatthias Seidel setPropertyValue( 4379f759e1cSMatthias Seidel maPropertyIdToNameMap[Bool_UseToolBoxItemSeparator], 4389f759e1cSMatthias Seidel Any(false)); 4399f759e1cSMatthias Seidel } 4409f759e1cSMatthias Seidel catch(beans::UnknownPropertyException& rException) 4419f759e1cSMatthias Seidel { 4429f759e1cSMatthias Seidel OSL_TRACE("unknown property: %s", 4439f759e1cSMatthias Seidel OUStringToOString( 4449f759e1cSMatthias Seidel rException.Message, 4459f759e1cSMatthias Seidel RTL_TEXTENCODING_ASCII_US).getStr()); 4469f759e1cSMatthias Seidel OSL_ASSERT(false); 4479f759e1cSMatthias Seidel } 448ff12d537SAndre Fischer } 449ff12d537SAndre Fischer 450ff12d537SAndre Fischer 451b9e67834SAndre Fischer void SAL_CALL Theme::disposing (void) 452ff12d537SAndre Fischer { 4539f759e1cSMatthias Seidel ChangeListeners aListeners; 4549f759e1cSMatthias Seidel maChangeListeners.swap(aListeners); 4559f759e1cSMatthias Seidel 4569f759e1cSMatthias Seidel const lang::EventObject aEvent (static_cast<XWeak*>(this)); 4579f759e1cSMatthias Seidel 4589f759e1cSMatthias Seidel for (ChangeListeners::const_iterator 4599f759e1cSMatthias Seidel iContainer(maChangeListeners.begin()), 4609f759e1cSMatthias Seidel iContainerEnd(maChangeListeners.end()); 4619f759e1cSMatthias Seidel iContainerEnd!=iContainerEnd; 4629f759e1cSMatthias Seidel ++iContainerEnd) 4639f759e1cSMatthias Seidel { 4649f759e1cSMatthias Seidel for (ChangeListenerContainer::const_iterator 4659f759e1cSMatthias Seidel iListener(iContainer->second.begin()), 4669f759e1cSMatthias Seidel iEnd(iContainer->second.end()); 4679f759e1cSMatthias Seidel iListener!=iEnd; 4689f759e1cSMatthias Seidel ++iListener) 4699f759e1cSMatthias Seidel { 4709f759e1cSMatthias Seidel try 4719f759e1cSMatthias Seidel { 4729f759e1cSMatthias Seidel (*iListener)->disposing(aEvent); 4739f759e1cSMatthias Seidel } 4749f759e1cSMatthias Seidel catch(const Exception&) 4759f759e1cSMatthias Seidel { 4769f759e1cSMatthias Seidel } 4779f759e1cSMatthias Seidel } 4789f759e1cSMatthias Seidel } 479ff12d537SAndre Fischer } 480ff12d537SAndre Fischer 481ff12d537SAndre Fischer 482b9e67834SAndre Fischer Reference<beans::XPropertySet> Theme::GetPropertySet (void) 483ff12d537SAndre Fischer { 4849f759e1cSMatthias Seidel return Reference<beans::XPropertySet>(static_cast<XWeak*>(&GetCurrentTheme()), UNO_QUERY); 485ff12d537SAndre Fischer } 486ff12d537SAndre Fischer 487ff12d537SAndre Fischer 488b9e67834SAndre Fischer Reference<beans::XPropertySetInfo> SAL_CALL Theme::getPropertySetInfo (void) 4899f759e1cSMatthias Seidel throw(cssu::RuntimeException) 490ff12d537SAndre Fischer { 4919f759e1cSMatthias Seidel return Reference<beans::XPropertySetInfo>(this); 492ff12d537SAndre Fischer } 493ff12d537SAndre Fischer 494ff12d537SAndre Fischer 495b9e67834SAndre Fischer void SAL_CALL Theme::setPropertyValue ( 4969f759e1cSMatthias Seidel const ::rtl::OUString& rsPropertyName, 4979f759e1cSMatthias Seidel const cssu::Any& rValue) 4989f759e1cSMatthias Seidel throw(cssu::RuntimeException) 499ff12d537SAndre Fischer { 5009f759e1cSMatthias Seidel PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName)); 5019f759e1cSMatthias Seidel if (iId == maPropertyNameToIdMap.end()) 5029f759e1cSMatthias Seidel throw beans::UnknownPropertyException(rsPropertyName, NULL); 5039f759e1cSMatthias Seidel 5049f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(iId->second)); 5059f759e1cSMatthias Seidel if (eType == PT_Invalid) 5069f759e1cSMatthias Seidel throw beans::UnknownPropertyException(rsPropertyName, NULL); 5079f759e1cSMatthias Seidel 5089f759e1cSMatthias Seidel const ThemeItem eItem (iId->second); 5099f759e1cSMatthias Seidel 5109f759e1cSMatthias Seidel if (rValue == maRawValues[eItem]) 5119f759e1cSMatthias Seidel { 5129f759e1cSMatthias Seidel // Value is not different from the one in the property 5139f759e1cSMatthias Seidel // set => nothing to do. 5149f759e1cSMatthias Seidel return; 5159f759e1cSMatthias Seidel } 5169f759e1cSMatthias Seidel 5179f759e1cSMatthias Seidel const Any aOldValue (maRawValues[eItem]); 5189f759e1cSMatthias Seidel 5199f759e1cSMatthias Seidel const beans::PropertyChangeEvent aEvent( 5209f759e1cSMatthias Seidel static_cast<XWeak*>(this), 5219f759e1cSMatthias Seidel rsPropertyName, 5229f759e1cSMatthias Seidel sal_False, 5239f759e1cSMatthias Seidel eItem, 5249f759e1cSMatthias Seidel aOldValue, 5259f759e1cSMatthias Seidel rValue); 5269f759e1cSMatthias Seidel 5279f759e1cSMatthias Seidel if (DoVetoableListenersVeto(GetVetoableListeners(__AnyItem, false), aEvent)) 5289f759e1cSMatthias Seidel return; 5299f759e1cSMatthias Seidel if (DoVetoableListenersVeto(GetVetoableListeners(eItem, false), aEvent)) 5309f759e1cSMatthias Seidel return; 5319f759e1cSMatthias Seidel 5329f759e1cSMatthias Seidel maRawValues[eItem] = rValue; 5339f759e1cSMatthias Seidel ProcessNewValue(rValue, eItem, eType); 5349f759e1cSMatthias Seidel 5359f759e1cSMatthias Seidel BroadcastPropertyChange(GetChangeListeners(__AnyItem, false), aEvent); 5369f759e1cSMatthias Seidel BroadcastPropertyChange(GetChangeListeners(eItem, false), aEvent); 537ff12d537SAndre Fischer } 538ff12d537SAndre Fischer 539ff12d537SAndre Fischer 540b9e67834SAndre Fischer Any SAL_CALL Theme::getPropertyValue ( 5419f759e1cSMatthias Seidel const ::rtl::OUString& rsPropertyName) 5429f759e1cSMatthias Seidel throw(css::beans::UnknownPropertyException, 5439f759e1cSMatthias Seidel css::lang::WrappedTargetException, 5449f759e1cSMatthias Seidel cssu::RuntimeException) 545ff12d537SAndre Fischer { 5469f759e1cSMatthias Seidel PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName)); 5479f759e1cSMatthias Seidel if (iId == maPropertyNameToIdMap.end()) 5489f759e1cSMatthias Seidel throw beans::UnknownPropertyException(); 549b9e67834SAndre Fischer 5509f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(iId->second)); 5519f759e1cSMatthias Seidel if (eType == PT_Invalid) 5529f759e1cSMatthias Seidel throw beans::UnknownPropertyException(); 553b9e67834SAndre Fischer 5549f759e1cSMatthias Seidel const ThemeItem eItem (iId->second); 555b9e67834SAndre Fischer 5569f759e1cSMatthias Seidel return maRawValues[eItem]; 557ff12d537SAndre Fischer } 558ff12d537SAndre Fischer 559ff12d537SAndre Fischer 560b9e67834SAndre Fischer void SAL_CALL Theme::addPropertyChangeListener( 5619f759e1cSMatthias Seidel const ::rtl::OUString& rsPropertyName, 5629f759e1cSMatthias Seidel const cssu::Reference<css::beans::XPropertyChangeListener>& rxListener) 5639f759e1cSMatthias Seidel throw(css::beans::UnknownPropertyException, 5649f759e1cSMatthias Seidel css::lang::WrappedTargetException, 5659f759e1cSMatthias Seidel cssu::RuntimeException) 566ff12d537SAndre Fischer { 5679f759e1cSMatthias Seidel ThemeItem eItem (__AnyItem); 5689f759e1cSMatthias Seidel if (rsPropertyName.getLength() > 0) 5699f759e1cSMatthias Seidel { 5709f759e1cSMatthias Seidel PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName)); 5719f759e1cSMatthias Seidel if (iId == maPropertyNameToIdMap.end()) 5729f759e1cSMatthias Seidel throw beans::UnknownPropertyException(); 5739f759e1cSMatthias Seidel 5749f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(iId->second)); 5759f759e1cSMatthias Seidel if (eType == PT_Invalid) 5769f759e1cSMatthias Seidel throw beans::UnknownPropertyException(); 5779f759e1cSMatthias Seidel 5789f759e1cSMatthias Seidel eItem = iId->second; 5799f759e1cSMatthias Seidel } 5809f759e1cSMatthias Seidel ChangeListenerContainer* pListeners = GetChangeListeners(eItem, true); 5819f759e1cSMatthias Seidel if (pListeners != NULL) 5829f759e1cSMatthias Seidel pListeners->push_back(rxListener); 583ff12d537SAndre Fischer } 584ff12d537SAndre Fischer 585ff12d537SAndre Fischer 586b9e67834SAndre Fischer void SAL_CALL Theme::removePropertyChangeListener( 5879f759e1cSMatthias Seidel const ::rtl::OUString& rsPropertyName, 5889f759e1cSMatthias Seidel const cssu::Reference<css::beans::XPropertyChangeListener>& rxListener) 5899f759e1cSMatthias Seidel throw(css::beans::UnknownPropertyException, 5909f759e1cSMatthias Seidel css::lang::WrappedTargetException, 5919f759e1cSMatthias Seidel cssu::RuntimeException) 592ff12d537SAndre Fischer { 5939f759e1cSMatthias Seidel ThemeItem eItem (__AnyItem); 5949f759e1cSMatthias Seidel if (rsPropertyName.getLength() > 0) 5959f759e1cSMatthias Seidel { 5969f759e1cSMatthias Seidel PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName)); 5979f759e1cSMatthias Seidel if (iId == maPropertyNameToIdMap.end()) 5989f759e1cSMatthias Seidel throw beans::UnknownPropertyException(); 5999f759e1cSMatthias Seidel 6009f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(iId->second)); 6019f759e1cSMatthias Seidel if (eType == PT_Invalid) 6029f759e1cSMatthias Seidel throw beans::UnknownPropertyException(); 6039f759e1cSMatthias Seidel 6049f759e1cSMatthias Seidel eItem = iId->second; 6059f759e1cSMatthias Seidel } 6069f759e1cSMatthias Seidel ChangeListenerContainer* pContainer = GetChangeListeners(eItem, false); 6079f759e1cSMatthias Seidel if (pContainer != NULL) 6089f759e1cSMatthias Seidel { 6099f759e1cSMatthias Seidel ChangeListenerContainer::iterator iListener (::std::find(pContainer->begin(), pContainer->end(), rxListener)); 6109f759e1cSMatthias Seidel if (iListener != pContainer->end()) 6119f759e1cSMatthias Seidel { 6129f759e1cSMatthias Seidel pContainer->erase(iListener); 6139f759e1cSMatthias Seidel 6149f759e1cSMatthias Seidel // Remove the listener container when empty. 6159f759e1cSMatthias Seidel if (pContainer->empty()) 6169f759e1cSMatthias Seidel maChangeListeners.erase(eItem); 6179f759e1cSMatthias Seidel } 6189f759e1cSMatthias Seidel } 619ff12d537SAndre Fischer } 620ff12d537SAndre Fischer 621ff12d537SAndre Fischer 622b9e67834SAndre Fischer void SAL_CALL Theme::addVetoableChangeListener( 6239f759e1cSMatthias Seidel const ::rtl::OUString& rsPropertyName, 6249f759e1cSMatthias Seidel const cssu::Reference<css::beans::XVetoableChangeListener>& rxListener) 6259f759e1cSMatthias Seidel throw(css::beans::UnknownPropertyException, 6269f759e1cSMatthias Seidel css::lang::WrappedTargetException, 6279f759e1cSMatthias Seidel cssu::RuntimeException) 628ff12d537SAndre Fischer { 6299f759e1cSMatthias Seidel ThemeItem eItem (__AnyItem); 6309f759e1cSMatthias Seidel if (rsPropertyName.getLength() > 0) 6319f759e1cSMatthias Seidel { 6329f759e1cSMatthias Seidel PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName)); 6339f759e1cSMatthias Seidel if (iId == maPropertyNameToIdMap.end()) 6349f759e1cSMatthias Seidel throw beans::UnknownPropertyException(); 6359f759e1cSMatthias Seidel 6369f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(iId->second)); 6379f759e1cSMatthias Seidel if (eType == PT_Invalid) 6389f759e1cSMatthias Seidel throw beans::UnknownPropertyException(); 6399f759e1cSMatthias Seidel 6409f759e1cSMatthias Seidel eItem = iId->second; 6419f759e1cSMatthias Seidel } 6429f759e1cSMatthias Seidel VetoableListenerContainer* pListeners = GetVetoableListeners(eItem, true); 6439f759e1cSMatthias Seidel if (pListeners != NULL) 6449f759e1cSMatthias Seidel pListeners->push_back(rxListener); 645ff12d537SAndre Fischer } 646ff12d537SAndre Fischer 647ff12d537SAndre Fischer 648b9e67834SAndre Fischer void SAL_CALL Theme::removeVetoableChangeListener( 6499f759e1cSMatthias Seidel const ::rtl::OUString& rsPropertyName, 6509f759e1cSMatthias Seidel const cssu::Reference<css::beans::XVetoableChangeListener>& rxListener) 6519f759e1cSMatthias Seidel throw(css::beans::UnknownPropertyException, 6529f759e1cSMatthias Seidel css::lang::WrappedTargetException, 6539f759e1cSMatthias Seidel cssu::RuntimeException) 654ff12d537SAndre Fischer { 6559f759e1cSMatthias Seidel ThemeItem eItem (__AnyItem); 6569f759e1cSMatthias Seidel if (rsPropertyName.getLength() > 0) 6579f759e1cSMatthias Seidel { 6589f759e1cSMatthias Seidel PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName)); 6599f759e1cSMatthias Seidel if (iId == maPropertyNameToIdMap.end()) 6609f759e1cSMatthias Seidel throw beans::UnknownPropertyException(); 6619f759e1cSMatthias Seidel 6629f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(iId->second)); 6639f759e1cSMatthias Seidel if (eType == PT_Invalid) 6649f759e1cSMatthias Seidel throw beans::UnknownPropertyException(); 6659f759e1cSMatthias Seidel 6669f759e1cSMatthias Seidel eItem = iId->second; 6679f759e1cSMatthias Seidel } 6689f759e1cSMatthias Seidel VetoableListenerContainer* pContainer = GetVetoableListeners(eItem, false); 6699f759e1cSMatthias Seidel if (pContainer != NULL) 6709f759e1cSMatthias Seidel { 6719f759e1cSMatthias Seidel VetoableListenerContainer::iterator iListener (::std::find(pContainer->begin(), pContainer->end(), rxListener)); 6729f759e1cSMatthias Seidel if (iListener != pContainer->end()) 6739f759e1cSMatthias Seidel { 6749f759e1cSMatthias Seidel pContainer->erase(iListener); 6759f759e1cSMatthias Seidel // Remove container when empty. 6769f759e1cSMatthias Seidel if (pContainer->empty()) 6779f759e1cSMatthias Seidel maVetoableListeners.erase(eItem); 6789f759e1cSMatthias Seidel } 6799f759e1cSMatthias Seidel } 680ff12d537SAndre Fischer } 681ff12d537SAndre Fischer 682ff12d537SAndre Fischer 68395a18594SAndre Fischer cssu::Sequence<css::beans::Property> SAL_CALL Theme::getProperties (void) 6849f759e1cSMatthias Seidel throw(cssu::RuntimeException) 68595a18594SAndre Fischer { 6869f759e1cSMatthias Seidel ::std::vector<beans::Property> aProperties; 6879f759e1cSMatthias Seidel 6889f759e1cSMatthias Seidel for (sal_Int32 nItem(__Begin),nEnd(__End); nItem!=nEnd; ++nItem) 6899f759e1cSMatthias Seidel { 6909f759e1cSMatthias Seidel const ThemeItem eItem (static_cast<ThemeItem>(nItem)); 6919f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(eItem)); 6929f759e1cSMatthias Seidel if (eType == PT_Invalid) 6939f759e1cSMatthias Seidel continue; 6949f759e1cSMatthias Seidel 6959f759e1cSMatthias Seidel const beans::Property aProperty( 6969f759e1cSMatthias Seidel maPropertyIdToNameMap[eItem], 6979f759e1cSMatthias Seidel eItem, 6989f759e1cSMatthias Seidel GetCppuType(eType), 6999f759e1cSMatthias Seidel 0); 7009f759e1cSMatthias Seidel aProperties.push_back(aProperty); 7019f759e1cSMatthias Seidel } 7029f759e1cSMatthias Seidel 7039f759e1cSMatthias Seidel return cssu::Sequence<css::beans::Property>( 7049f759e1cSMatthias Seidel &aProperties.front(), 7059f759e1cSMatthias Seidel aProperties.size()); 70695a18594SAndre Fischer } 70795a18594SAndre Fischer 70895a18594SAndre Fischer 70995a18594SAndre Fischer beans::Property SAL_CALL Theme::getPropertyByName (const ::rtl::OUString& rsPropertyName) 7109f759e1cSMatthias Seidel throw(css::beans::UnknownPropertyException, 7119f759e1cSMatthias Seidel cssu::RuntimeException) 71295a18594SAndre Fischer { 7139f759e1cSMatthias Seidel PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName)); 7149f759e1cSMatthias Seidel if (iId == maPropertyNameToIdMap.end()) 7159f759e1cSMatthias Seidel throw beans::UnknownPropertyException(); 71695a18594SAndre Fischer 7179f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(iId->second)); 7189f759e1cSMatthias Seidel if (eType == PT_Invalid) 7199f759e1cSMatthias Seidel throw beans::UnknownPropertyException(); 72095a18594SAndre Fischer 7219f759e1cSMatthias Seidel const ThemeItem eItem (iId->second); 72295a18594SAndre Fischer 7239f759e1cSMatthias Seidel return beans::Property( 7249f759e1cSMatthias Seidel rsPropertyName, 7259f759e1cSMatthias Seidel eItem, 7269f759e1cSMatthias Seidel GetCppuType(eType), 7279f759e1cSMatthias Seidel 0); 72895a18594SAndre Fischer } 72995a18594SAndre Fischer 73095a18594SAndre Fischer 73195a18594SAndre Fischer sal_Bool SAL_CALL Theme::hasPropertyByName (const ::rtl::OUString& rsPropertyName) 7329f759e1cSMatthias Seidel throw(cssu::RuntimeException) 73395a18594SAndre Fischer { 7349f759e1cSMatthias Seidel PropertyNameToIdMap::const_iterator iId (maPropertyNameToIdMap.find(rsPropertyName)); 7359f759e1cSMatthias Seidel if (iId == maPropertyNameToIdMap.end()) 7369f759e1cSMatthias Seidel return sal_False; 73795a18594SAndre Fischer 7389f759e1cSMatthias Seidel const PropertyType eType (GetPropertyType(iId->second)); 7399f759e1cSMatthias Seidel if (eType == PT_Invalid) 7409f759e1cSMatthias Seidel return sal_False; 74195a18594SAndre Fischer 7429f759e1cSMatthias Seidel return sal_True; 74395a18594SAndre Fischer } 74495a18594SAndre Fischer 74595a18594SAndre Fischer 746b9e67834SAndre Fischer void Theme::SetupPropertyMaps (void) 747ff12d537SAndre Fischer { 7489f759e1cSMatthias Seidel maPropertyIdToNameMap.resize(__Post_Rect); 7499f759e1cSMatthias Seidel maImages.resize(__Image_Color - __Pre_Image - 1); 7509f759e1cSMatthias Seidel maColors.resize(__Color_Paint - __Image_Color - 1); 7519f759e1cSMatthias Seidel maPaints.resize(__Paint_Int - __Color_Paint - 1); 7529f759e1cSMatthias Seidel maIntegers.resize(__Int_Bool - __Paint_Int - 1); 7539f759e1cSMatthias Seidel maBooleans.resize(__Bool_Rect - __Int_Bool - 1); 7549f759e1cSMatthias Seidel maRectangles.resize(__Post_Rect - __Bool_Rect - 1); 7559f759e1cSMatthias Seidel 7569f759e1cSMatthias Seidel #define AddEntry(e) maPropertyNameToIdMap[A2S(#e)]=e; maPropertyIdToNameMap[e]=A2S(#e) 7579f759e1cSMatthias Seidel 7589f759e1cSMatthias Seidel AddEntry(Image_Grip); 7599f759e1cSMatthias Seidel AddEntry(Image_Expand); 7609f759e1cSMatthias Seidel AddEntry(Image_Collapse); 7619f759e1cSMatthias Seidel AddEntry(Image_TabBarMenu); 7629f759e1cSMatthias Seidel AddEntry(Image_PanelMenu); 7639f759e1cSMatthias Seidel AddEntry(Image_ToolBoxItemSeparator); 7649f759e1cSMatthias Seidel AddEntry(Image_Closer); 7659f759e1cSMatthias Seidel AddEntry(Image_CloseIndicator); 7669f759e1cSMatthias Seidel 7679f759e1cSMatthias Seidel AddEntry(Color_DeckTitleFont); 7689f759e1cSMatthias Seidel AddEntry(Color_PanelTitleFont); 7699f759e1cSMatthias Seidel AddEntry(Color_TabMenuSeparator); 7709f759e1cSMatthias Seidel AddEntry(Color_TabItemBorder); 7719f759e1cSMatthias Seidel AddEntry(Color_DropDownBorder); 7729f759e1cSMatthias Seidel AddEntry(Color_Highlight); 7739f759e1cSMatthias Seidel AddEntry(Color_HighlightText); 7749f759e1cSMatthias Seidel 7759f759e1cSMatthias Seidel AddEntry(Paint_DeckBackground); 7769f759e1cSMatthias Seidel AddEntry(Paint_DeckTitleBarBackground); 7779f759e1cSMatthias Seidel AddEntry(Paint_PanelBackground); 7789f759e1cSMatthias Seidel AddEntry(Paint_PanelTitleBarBackground); 7799f759e1cSMatthias Seidel AddEntry(Paint_TabBarBackground); 7809f759e1cSMatthias Seidel AddEntry(Paint_TabItemBackgroundNormal); 7819f759e1cSMatthias Seidel AddEntry(Paint_TabItemBackgroundHighlight); 7829f759e1cSMatthias Seidel AddEntry(Paint_HorizontalBorder); 7839f759e1cSMatthias Seidel AddEntry(Paint_VerticalBorder); 7849f759e1cSMatthias Seidel AddEntry(Paint_ToolBoxBackground); 7859f759e1cSMatthias Seidel AddEntry(Paint_ToolBoxBorderTopLeft); 7869f759e1cSMatthias Seidel AddEntry(Paint_ToolBoxBorderCenterCorners); 7879f759e1cSMatthias Seidel AddEntry(Paint_ToolBoxBorderBottomRight); 7889f759e1cSMatthias Seidel AddEntry(Paint_DropDownBackground); 7899f759e1cSMatthias Seidel 7909f759e1cSMatthias Seidel AddEntry(Int_DeckTitleBarHeight); 7919f759e1cSMatthias Seidel AddEntry(Int_DeckBorderSize); 7929f759e1cSMatthias Seidel AddEntry(Int_DeckSeparatorHeight); 7939f759e1cSMatthias Seidel AddEntry(Int_PanelTitleBarHeight); 7949f759e1cSMatthias Seidel AddEntry(Int_TabMenuPadding); 7959f759e1cSMatthias Seidel AddEntry(Int_TabMenuSeparatorPadding); 7969f759e1cSMatthias Seidel AddEntry(Int_TabItemWidth); 7979f759e1cSMatthias Seidel AddEntry(Int_TabItemHeight); 7989f759e1cSMatthias Seidel AddEntry(Int_DeckLeftPadding); 7999f759e1cSMatthias Seidel AddEntry(Int_DeckTopPadding); 8009f759e1cSMatthias Seidel AddEntry(Int_DeckRightPadding); 8019f759e1cSMatthias Seidel AddEntry(Int_DeckBottomPadding); 8029f759e1cSMatthias Seidel AddEntry(Int_TabBarLeftPadding); 8039f759e1cSMatthias Seidel AddEntry(Int_TabBarTopPadding); 8049f759e1cSMatthias Seidel AddEntry(Int_TabBarRightPadding); 8059f759e1cSMatthias Seidel AddEntry(Int_TabBarBottomPadding); 8069f759e1cSMatthias Seidel AddEntry(Int_ButtonCornerRadius); 8079f759e1cSMatthias Seidel 8089f759e1cSMatthias Seidel AddEntry(Bool_UseSymphonyIcons); 8099f759e1cSMatthias Seidel AddEntry(Bool_UseSystemColors); 8109f759e1cSMatthias Seidel AddEntry(Bool_UseToolBoxItemSeparator); 8119f759e1cSMatthias Seidel AddEntry(Bool_IsHighContrastModeActive); 8129f759e1cSMatthias Seidel 8139f759e1cSMatthias Seidel AddEntry(Rect_ToolBoxPadding); 8149f759e1cSMatthias Seidel AddEntry(Rect_ToolBoxBorder); 8159f759e1cSMatthias Seidel 8169f759e1cSMatthias Seidel #undef AddEntry 8179f759e1cSMatthias Seidel 8189f759e1cSMatthias Seidel maRawValues.resize(maPropertyIdToNameMap.size()); 819ff12d537SAndre Fischer } 820ff12d537SAndre Fischer 821ff12d537SAndre Fischer 822b9e67834SAndre Fischer Theme::PropertyType Theme::GetPropertyType (const ThemeItem eItem) 823ff12d537SAndre Fischer { 8249f759e1cSMatthias Seidel switch(eItem) 8259f759e1cSMatthias Seidel { 8269f759e1cSMatthias Seidel case Image_Grip: 8279f759e1cSMatthias Seidel case Image_Expand: 8289f759e1cSMatthias Seidel case Image_Collapse: 8299f759e1cSMatthias Seidel case Image_TabBarMenu: 8309f759e1cSMatthias Seidel case Image_PanelMenu: 8319f759e1cSMatthias Seidel case Image_ToolBoxItemSeparator: 8329f759e1cSMatthias Seidel case Image_Closer: 8339f759e1cSMatthias Seidel case Image_CloseIndicator: 8349f759e1cSMatthias Seidel return PT_Image; 8359f759e1cSMatthias Seidel 8369f759e1cSMatthias Seidel case Color_DeckTitleFont: 8379f759e1cSMatthias Seidel case Color_PanelTitleFont: 8389f759e1cSMatthias Seidel case Color_TabMenuSeparator: 8399f759e1cSMatthias Seidel case Color_TabItemBorder: 8409f759e1cSMatthias Seidel case Color_DropDownBorder: 8419f759e1cSMatthias Seidel case Color_Highlight: 8429f759e1cSMatthias Seidel case Color_HighlightText: 8439f759e1cSMatthias Seidel return PT_Color; 8449f759e1cSMatthias Seidel 8459f759e1cSMatthias Seidel case Paint_DeckBackground: 8469f759e1cSMatthias Seidel case Paint_DeckTitleBarBackground: 8479f759e1cSMatthias Seidel case Paint_PanelBackground: 8489f759e1cSMatthias Seidel case Paint_PanelTitleBarBackground: 8499f759e1cSMatthias Seidel case Paint_TabBarBackground: 8509f759e1cSMatthias Seidel case Paint_TabItemBackgroundNormal: 8519f759e1cSMatthias Seidel case Paint_TabItemBackgroundHighlight: 8529f759e1cSMatthias Seidel case Paint_HorizontalBorder: 8539f759e1cSMatthias Seidel case Paint_VerticalBorder: 8549f759e1cSMatthias Seidel case Paint_ToolBoxBackground: 8559f759e1cSMatthias Seidel case Paint_ToolBoxBorderTopLeft: 8569f759e1cSMatthias Seidel case Paint_ToolBoxBorderCenterCorners: 8579f759e1cSMatthias Seidel case Paint_ToolBoxBorderBottomRight: 8589f759e1cSMatthias Seidel case Paint_DropDownBackground: 8599f759e1cSMatthias Seidel return PT_Paint; 8609f759e1cSMatthias Seidel 8619f759e1cSMatthias Seidel case Int_DeckTitleBarHeight: 8629f759e1cSMatthias Seidel case Int_DeckBorderSize: 8639f759e1cSMatthias Seidel case Int_DeckSeparatorHeight: 8649f759e1cSMatthias Seidel case Int_PanelTitleBarHeight: 8659f759e1cSMatthias Seidel case Int_TabMenuPadding: 8669f759e1cSMatthias Seidel case Int_TabMenuSeparatorPadding: 8679f759e1cSMatthias Seidel case Int_TabItemWidth: 8689f759e1cSMatthias Seidel case Int_TabItemHeight: 8699f759e1cSMatthias Seidel case Int_DeckLeftPadding: 8709f759e1cSMatthias Seidel case Int_DeckTopPadding: 8719f759e1cSMatthias Seidel case Int_DeckRightPadding: 8729f759e1cSMatthias Seidel case Int_DeckBottomPadding: 8739f759e1cSMatthias Seidel case Int_TabBarLeftPadding: 8749f759e1cSMatthias Seidel case Int_TabBarTopPadding: 8759f759e1cSMatthias Seidel case Int_TabBarRightPadding: 8769f759e1cSMatthias Seidel case Int_TabBarBottomPadding: 8779f759e1cSMatthias Seidel case Int_ButtonCornerRadius: 8789f759e1cSMatthias Seidel return PT_Integer; 8799f759e1cSMatthias Seidel 8809f759e1cSMatthias Seidel case Bool_UseSymphonyIcons: 8819f759e1cSMatthias Seidel case Bool_UseSystemColors: 8829f759e1cSMatthias Seidel case Bool_UseToolBoxItemSeparator: 8839f759e1cSMatthias Seidel case Bool_IsHighContrastModeActive: 8849f759e1cSMatthias Seidel return PT_Boolean; 8859f759e1cSMatthias Seidel 8869f759e1cSMatthias Seidel case Rect_ToolBoxBorder: 8879f759e1cSMatthias Seidel case Rect_ToolBoxPadding: 8889f759e1cSMatthias Seidel return PT_Rectangle; 8899f759e1cSMatthias Seidel 8909f759e1cSMatthias Seidel default: 8919f759e1cSMatthias Seidel return PT_Invalid; 8929f759e1cSMatthias Seidel } 893ff12d537SAndre Fischer } 894ff12d537SAndre Fischer 895ff12d537SAndre Fischer 89695a18594SAndre Fischer cssu::Type Theme::GetCppuType (const PropertyType eType) 89795a18594SAndre Fischer { 8989f759e1cSMatthias Seidel switch(eType) 8999f759e1cSMatthias Seidel { 9009f759e1cSMatthias Seidel case PT_Image: 9019f759e1cSMatthias Seidel return getCppuType((rtl::OUString*)NULL); 90295a18594SAndre Fischer 9039f759e1cSMatthias Seidel case PT_Color: 9049f759e1cSMatthias Seidel return getCppuType((sal_uInt32*)NULL); 90595a18594SAndre Fischer 9069f759e1cSMatthias Seidel case PT_Paint: 9079f759e1cSMatthias Seidel return getCppuVoidType(); 90895a18594SAndre Fischer 9099f759e1cSMatthias Seidel case PT_Integer: 9109f759e1cSMatthias Seidel return getCppuType((sal_Int32*)NULL); 91195a18594SAndre Fischer 9129f759e1cSMatthias Seidel case PT_Boolean: 9139f759e1cSMatthias Seidel return getCppuType((sal_Bool*)NULL); 91495a18594SAndre Fischer 9159f759e1cSMatthias Seidel case PT_Rectangle: 9169f759e1cSMatthias Seidel return getCppuType((awt::Rectangle*)NULL); 91795a18594SAndre Fischer 9189f759e1cSMatthias Seidel case PT_Invalid: 9199f759e1cSMatthias Seidel default: 9209f759e1cSMatthias Seidel return getCppuVoidType(); 9219f759e1cSMatthias Seidel } 92295a18594SAndre Fischer } 92395a18594SAndre Fischer 92495a18594SAndre Fischer 925b9e67834SAndre Fischer sal_Int32 Theme::GetIndex (const ThemeItem eItem, const PropertyType eType) 926ff12d537SAndre Fischer { 9279f759e1cSMatthias Seidel switch(eType) 9289f759e1cSMatthias Seidel { 9299f759e1cSMatthias Seidel case PT_Image: 9309f759e1cSMatthias Seidel return eItem - __Pre_Image-1; 9319f759e1cSMatthias Seidel case PT_Color: 9329f759e1cSMatthias Seidel return eItem - __Image_Color-1; 9339f759e1cSMatthias Seidel case PT_Paint: 9349f759e1cSMatthias Seidel return eItem - __Color_Paint-1; 9359f759e1cSMatthias Seidel case PT_Integer: 9369f759e1cSMatthias Seidel return eItem - __Paint_Int-1; 9379f759e1cSMatthias Seidel case PT_Boolean: 9389f759e1cSMatthias Seidel return eItem - __Int_Bool-1; 9399f759e1cSMatthias Seidel case PT_Rectangle: 9409f759e1cSMatthias Seidel return eItem - __Bool_Rect-1; 9419f759e1cSMatthias Seidel 9429f759e1cSMatthias Seidel default: 9439f759e1cSMatthias Seidel OSL_ASSERT(false); 9449f759e1cSMatthias Seidel return 0; 9459f759e1cSMatthias Seidel } 946ff12d537SAndre Fischer } 947ff12d537SAndre Fischer 948ff12d537SAndre Fischer 949b9e67834SAndre Fischer Theme::VetoableListenerContainer* Theme::GetVetoableListeners ( 9509f759e1cSMatthias Seidel const ThemeItem eItem, 9519f759e1cSMatthias Seidel const bool bCreate) 952ff12d537SAndre Fischer { 9539f759e1cSMatthias Seidel VetoableListeners::iterator iContainer (maVetoableListeners.find(eItem)); 9549f759e1cSMatthias Seidel if (iContainer != maVetoableListeners.end()) 9559f759e1cSMatthias Seidel return &iContainer->second; 9569f759e1cSMatthias Seidel else if (bCreate) 9579f759e1cSMatthias Seidel { 9589f759e1cSMatthias Seidel maVetoableListeners[eItem] = VetoableListenerContainer(); 9599f759e1cSMatthias Seidel return &maVetoableListeners[eItem]; 9609f759e1cSMatthias Seidel } 9619f759e1cSMatthias Seidel else 9629f759e1cSMatthias Seidel return NULL; 963ff12d537SAndre Fischer } 964ff12d537SAndre Fischer 965ff12d537SAndre Fischer 966b9e67834SAndre Fischer Theme::ChangeListenerContainer* Theme::GetChangeListeners ( 9679f759e1cSMatthias Seidel const ThemeItem eItem, 9689f759e1cSMatthias Seidel const bool bCreate) 969ff12d537SAndre Fischer { 9709f759e1cSMatthias Seidel ChangeListeners::iterator iContainer (maChangeListeners.find(eItem)); 9719f759e1cSMatthias Seidel if (iContainer != maChangeListeners.end()) 9729f759e1cSMatthias Seidel return &iContainer->second; 9739f759e1cSMatthias Seidel else if (bCreate) 9749f759e1cSMatthias Seidel { 9759f759e1cSMatthias Seidel maChangeListeners[eItem] = ChangeListenerContainer(); 9769f759e1cSMatthias Seidel return &maChangeListeners[eItem]; 9779f759e1cSMatthias Seidel } 9789f759e1cSMatthias Seidel else 9799f759e1cSMatthias Seidel return NULL; 980ff12d537SAndre Fischer } 981ff12d537SAndre Fischer 982ff12d537SAndre Fischer 983b9e67834SAndre Fischer bool Theme::DoVetoableListenersVeto ( 9849f759e1cSMatthias Seidel const VetoableListenerContainer* pListeners, 9859f759e1cSMatthias Seidel const beans::PropertyChangeEvent& rEvent) const 986ff12d537SAndre Fischer { 9879f759e1cSMatthias Seidel if (pListeners == NULL) 9889f759e1cSMatthias Seidel return false; 9899f759e1cSMatthias Seidel 9909f759e1cSMatthias Seidel VetoableListenerContainer aListeners (*pListeners); 9919f759e1cSMatthias Seidel try 9929f759e1cSMatthias Seidel { 9939f759e1cSMatthias Seidel for (VetoableListenerContainer::const_iterator 9949f759e1cSMatthias Seidel iListener(aListeners.begin()), 9959f759e1cSMatthias Seidel iEnd(aListeners.end()); 9969f759e1cSMatthias Seidel iListener!=iEnd; 9979f759e1cSMatthias Seidel ++iListener) 9989f759e1cSMatthias Seidel { 9999f759e1cSMatthias Seidel (*iListener)->vetoableChange(rEvent); 10009f759e1cSMatthias Seidel } 10019f759e1cSMatthias Seidel } 10029f759e1cSMatthias Seidel catch(const beans::PropertyVetoException&) 10039f759e1cSMatthias Seidel { 10049f759e1cSMatthias Seidel return true; 10059f759e1cSMatthias Seidel } 10069f759e1cSMatthias Seidel catch(const Exception&) 10079f759e1cSMatthias Seidel { 10089f759e1cSMatthias Seidel // Ignore any other errors (such as disposed listeners). 10099f759e1cSMatthias Seidel } 10109f759e1cSMatthias Seidel return false; 1011ff12d537SAndre Fischer } 1012ff12d537SAndre Fischer 1013ff12d537SAndre Fischer 1014b9e67834SAndre Fischer void Theme::BroadcastPropertyChange ( 10159f759e1cSMatthias Seidel const ChangeListenerContainer* pListeners, 10169f759e1cSMatthias Seidel const beans::PropertyChangeEvent& rEvent) const 1017ff12d537SAndre Fischer { 10189f759e1cSMatthias Seidel if (pListeners == NULL) 10199f759e1cSMatthias Seidel return; 10209f759e1cSMatthias Seidel 10219f759e1cSMatthias Seidel const ChangeListenerContainer aListeners (*pListeners); 10229f759e1cSMatthias Seidel try 10239f759e1cSMatthias Seidel { 10249f759e1cSMatthias Seidel for (ChangeListenerContainer::const_iterator 10259f759e1cSMatthias Seidel iListener(aListeners.begin()), 10269f759e1cSMatthias Seidel iEnd(aListeners.end()); 10279f759e1cSMatthias Seidel iListener!=iEnd; 10289f759e1cSMatthias Seidel ++iListener) 10299f759e1cSMatthias Seidel { 10309f759e1cSMatthias Seidel (*iListener)->propertyChange(rEvent); 10319f759e1cSMatthias Seidel } 10329f759e1cSMatthias Seidel } 10339f759e1cSMatthias Seidel catch(const Exception&) 10349f759e1cSMatthias Seidel { 10359f759e1cSMatthias Seidel // Ignore any errors (such as disposed listeners). 10369f759e1cSMatthias Seidel } 1037ff12d537SAndre Fischer } 1038ff12d537SAndre Fischer 1039ff12d537SAndre Fischer 1040b9e67834SAndre Fischer void Theme::ProcessNewValue ( 10419f759e1cSMatthias Seidel const Any& rValue, 10429f759e1cSMatthias Seidel const ThemeItem eItem, 10439f759e1cSMatthias Seidel const PropertyType eType) 1044ff12d537SAndre Fischer { 10459f759e1cSMatthias Seidel const sal_Int32 nIndex (GetIndex (eItem, eType)); 10469f759e1cSMatthias Seidel switch (eType) 10479f759e1cSMatthias Seidel { 10489f759e1cSMatthias Seidel case PT_Image: 10499f759e1cSMatthias Seidel { 10509f759e1cSMatthias Seidel ::rtl::OUString sURL; 10519f759e1cSMatthias Seidel if (rValue >>= sURL) 10529f759e1cSMatthias Seidel { 10539f759e1cSMatthias Seidel maImages[nIndex] = Tools::GetImage(sURL, NULL); 10549f759e1cSMatthias Seidel } 10559f759e1cSMatthias Seidel break; 10569f759e1cSMatthias Seidel } 10579f759e1cSMatthias Seidel case PT_Color: 10589f759e1cSMatthias Seidel { 10599f759e1cSMatthias Seidel sal_Int32 nColorValue (0); 10609f759e1cSMatthias Seidel if (rValue >>= nColorValue) 10619f759e1cSMatthias Seidel { 10629f759e1cSMatthias Seidel maColors[nIndex] = Color(nColorValue); 10639f759e1cSMatthias Seidel } 10649f759e1cSMatthias Seidel break; 10659f759e1cSMatthias Seidel } 10669f759e1cSMatthias Seidel case PT_Paint: 10679f759e1cSMatthias Seidel { 10689f759e1cSMatthias Seidel maPaints[nIndex] = Paint::Create(rValue); 10699f759e1cSMatthias Seidel break; 10709f759e1cSMatthias Seidel } 10719f759e1cSMatthias Seidel case PT_Integer: 10729f759e1cSMatthias Seidel { 10739f759e1cSMatthias Seidel sal_Int32 nValue (0); 10749f759e1cSMatthias Seidel if (rValue >>= nValue) 10759f759e1cSMatthias Seidel { 10769f759e1cSMatthias Seidel maIntegers[nIndex] = nValue; 10779f759e1cSMatthias Seidel } 10789f759e1cSMatthias Seidel break; 10799f759e1cSMatthias Seidel } 10809f759e1cSMatthias Seidel case PT_Boolean: 10819f759e1cSMatthias Seidel { 10829f759e1cSMatthias Seidel sal_Bool nValue (0); 10839f759e1cSMatthias Seidel if (rValue >>= nValue) 10849f759e1cSMatthias Seidel { 10859f759e1cSMatthias Seidel maBooleans[nIndex] = (nValue==sal_True); 10869f759e1cSMatthias Seidel if (eItem == Bool_IsHighContrastModeActive) 10879f759e1cSMatthias Seidel { 10889f759e1cSMatthias Seidel mbIsHighContrastModeSetManually = true; 10899f759e1cSMatthias Seidel mbIsHighContrastMode = maBooleans[nIndex]; 10909f759e1cSMatthias Seidel HandleDataChange(); 10919f759e1cSMatthias Seidel } 10929f759e1cSMatthias Seidel else if (eItem == Bool_UseSystemColors) 10939f759e1cSMatthias Seidel { 10949f759e1cSMatthias Seidel HandleDataChange(); 10959f759e1cSMatthias Seidel } 10969f759e1cSMatthias Seidel } 10979f759e1cSMatthias Seidel break; 10989f759e1cSMatthias Seidel } 10999f759e1cSMatthias Seidel case PT_Rectangle: 11009f759e1cSMatthias Seidel { 11019f759e1cSMatthias Seidel awt::Rectangle aBox; 11029f759e1cSMatthias Seidel if (rValue >>= aBox) 11039f759e1cSMatthias Seidel { 11049f759e1cSMatthias Seidel maRectangles[nIndex] = Rectangle( 11059f759e1cSMatthias Seidel aBox.X, 11069f759e1cSMatthias Seidel aBox.Y, 11079f759e1cSMatthias Seidel aBox.Width, 11089f759e1cSMatthias Seidel aBox.Height); 11099f759e1cSMatthias Seidel } 11109f759e1cSMatthias Seidel break; 11119f759e1cSMatthias Seidel } 11129f759e1cSMatthias Seidel case PT_Invalid: 11139f759e1cSMatthias Seidel OSL_ASSERT(eType != PT_Invalid); 11149f759e1cSMatthias Seidel throw RuntimeException(); 11159f759e1cSMatthias Seidel } 1116ff12d537SAndre Fischer } 1117ff12d537SAndre Fischer 1118ff12d537SAndre Fischer } } // end of namespace sfx2::sidebar 1119