Theme.cxx (ed484612) Theme.cxx (4e5e52c9)
1/**************************************************************
1/**************************************************************
2 *
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
19 *
20 *************************************************************/
21
22
23
24#include "precompiled_sfx2.hxx"
25
26#include "sfx2/sidebar/Theme.hxx"
27#include "Paint.hxx"

--- 12 unchanged lines hidden (view full) ---

40
41::rtl::Reference<Theme> Theme::mpInstance;
42
43
44
45
46Theme& Theme::GetCurrentTheme (void)
47{
20 *************************************************************/
21
22
23
24#include "precompiled_sfx2.hxx"
25
26#include "sfx2/sidebar/Theme.hxx"
27#include "Paint.hxx"

--- 12 unchanged lines hidden (view full) ---

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