Line data Source code
1 : /*
2 : * This file is part of the LibreOffice project.
3 : *
4 : * This Source Code Form is subject to the terms of the Mozilla Public
5 : * License, v. 2.0. If a copy of the MPL was not distributed with this
6 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 : *
8 : * This file incorporates work covered by the following license notice:
9 : *
10 : * Licensed to the Apache Software Foundation (ASF) under one or more
11 : * contributor license agreements. See the NOTICE file distributed
12 : * with this work for additional information regarding copyright
13 : * ownership. The ASF licenses this file to you under the Apache
14 : * License, Version 2.0 (the "License"); you may not use this file
15 : * except in compliance with the License. You may obtain a copy of
16 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
17 : */
18 : #include <sfx2/sidebar/ResourceDefinitions.hrc>
19 : #include <sfx2/sidebar/Theme.hxx>
20 : #include <sfx2/sidebar/ControlFactory.hxx>
21 : #include <GraphicPropertyPanel.hxx>
22 : #include <svx/dialogs.hrc>
23 : #include <svx/dialmgr.hxx>
24 : #include <vcl/field.hxx>
25 : #include <vcl/lstbox.hxx>
26 : #include <svl/intitem.hxx>
27 : #include <sfx2/bindings.hxx>
28 : #include <sfx2/dispatch.hxx>
29 :
30 : using namespace css;
31 : using namespace cssu;
32 : using ::sfx2::sidebar::Theme;
33 :
34 :
35 : // namespace open
36 :
37 : namespace svx { namespace sidebar {
38 :
39 :
40 :
41 0 : GraphicPropertyPanel::GraphicPropertyPanel(
42 : Window* pParent,
43 : const cssu::Reference<css::frame::XFrame>& rxFrame,
44 : SfxBindings* pBindings)
45 : : PanelLayout(pParent, "GraphicPropertyPanel", "svx/ui/sidebargraphic.ui", rxFrame),
46 : maBrightControl(SID_ATTR_GRAF_LUMINANCE, *pBindings, *this),
47 : maContrastControl(SID_ATTR_GRAF_CONTRAST, *pBindings, *this),
48 : maTransparenceControl(SID_ATTR_GRAF_TRANSPARENCE, *pBindings, *this),
49 : maRedControl(SID_ATTR_GRAF_RED, *pBindings, *this),
50 : maGreenControl(SID_ATTR_GRAF_GREEN, *pBindings, *this),
51 : maBlueControl(SID_ATTR_GRAF_BLUE, *pBindings, *this),
52 : maGammaControl(SID_ATTR_GRAF_GAMMA, *pBindings, *this),
53 : maModeControl(SID_ATTR_GRAF_MODE, *pBindings, *this),
54 : mxFrame(rxFrame),
55 0 : mpBindings(pBindings)
56 : {
57 0 : get(mpMtrBrightness, "setbrightness");
58 0 : get(mpMtrContrast, "setcontrast");
59 0 : get(mpLBColorMode, "setcolormode");
60 0 : get(mpMtrTrans, "settransparency");
61 0 : get(mpMtrRed, "setred");
62 0 : get(mpMtrGreen, "setgreen");
63 0 : get(mpMtrBlue, "setblue");
64 0 : get(mpMtrGamma, "setgamma");
65 0 : Initialize();
66 0 : }
67 :
68 :
69 :
70 0 : GraphicPropertyPanel::~GraphicPropertyPanel()
71 : {
72 0 : }
73 :
74 :
75 :
76 0 : void GraphicPropertyPanel::Initialize()
77 : {
78 0 : mpMtrBrightness->SetModifyHdl( LINK( this, GraphicPropertyPanel, ModifyBrightnessHdl ) );
79 0 : mpMtrBrightness->SetAccessibleName(::rtl::OUString( "Brightness"));
80 0 : mpMtrContrast->SetModifyHdl( LINK( this, GraphicPropertyPanel, ModifyContrastHdl ) );
81 0 : mpMtrContrast->SetAccessibleName(::rtl::OUString( "Contrast"));
82 0 : mpMtrTrans->SetModifyHdl( LINK( this, GraphicPropertyPanel, ModifyTransHdl ) );
83 0 : mpMtrTrans->SetAccessibleName(::rtl::OUString( "Transparency"));
84 :
85 0 : mpLBColorMode->InsertEntry(SVX_RESSTR(RID_SVXSTR_GRAFMODE_STANDARD));
86 0 : mpLBColorMode->InsertEntry(SVX_RESSTR(RID_SVXSTR_GRAFMODE_GREYS));
87 0 : mpLBColorMode->InsertEntry(SVX_RESSTR(RID_SVXSTR_GRAFMODE_MONO));
88 0 : mpLBColorMode->InsertEntry(SVX_RESSTR(RID_SVXSTR_GRAFMODE_WATERMARK));
89 0 : mpLBColorMode->SetSelectHdl( LINK( this, GraphicPropertyPanel, ClickColorModeHdl ));
90 0 : mpLBColorMode->SetAccessibleName(::rtl::OUString( "Color mode"));
91 :
92 0 : mpMtrRed->SetModifyHdl( LINK( this, GraphicPropertyPanel, RedHdl ) );
93 0 : mpMtrGreen->SetModifyHdl( LINK( this, GraphicPropertyPanel, GreenHdl ) );
94 0 : mpMtrBlue->SetModifyHdl( LINK( this, GraphicPropertyPanel, BlueHdl ) );
95 0 : mpMtrGamma->SetModifyHdl( LINK( this, GraphicPropertyPanel, GammaHdl ) );
96 0 : mpMtrRed->SetAccessibleName(mpMtrRed->GetQuickHelpText());
97 0 : mpMtrGreen->SetAccessibleName(mpMtrGreen->GetQuickHelpText());
98 0 : mpMtrBlue->SetAccessibleName(mpMtrBlue->GetQuickHelpText());
99 0 : mpMtrGamma->SetAccessibleName(::rtl::OUString( "Gamma value"));
100 :
101 0 : mpMtrRed->SetAccessibleRelationLabeledBy(mpMtrRed);
102 0 : mpMtrGreen->SetAccessibleRelationLabeledBy(mpMtrGreen);
103 0 : mpMtrBlue->SetAccessibleRelationLabeledBy(mpMtrBlue);
104 0 : mpMtrGamma->SetAccessibleRelationLabeledBy(mpMtrGamma);
105 :
106 : // Fix left position of some controls that may be wrong due to
107 : // rounding errors.
108 0 : const sal_Int32 nRight0 (mpLBColorMode->GetPosPixel().X() + mpLBColorMode->GetSizePixel().Width());
109 0 : const sal_Int32 nRight1 (mpMtrTrans->GetPosPixel().X() + mpMtrTrans->GetSizePixel().Width());
110 : mpMtrRed->SetPosPixel(Point(
111 0 : nRight0 - mpMtrRed->GetSizePixel().Width(),
112 0 : mpMtrRed->GetPosPixel().Y()));
113 : mpMtrBlue->SetPosPixel(Point(
114 0 : nRight0 - mpMtrBlue->GetSizePixel().Width(),
115 0 : mpMtrBlue->GetPosPixel().Y()));
116 : mpMtrGreen->SetPosPixel(Point(
117 0 : nRight1 - mpMtrGreen->GetSizePixel().Width(),
118 0 : mpMtrGreen->GetPosPixel().Y()));
119 : mpMtrGamma->SetPosPixel(Point(
120 0 : nRight1 - mpMtrGamma->GetSizePixel().Width(),
121 0 : mpMtrGamma->GetPosPixel().Y()));
122 0 : }
123 :
124 :
125 :
126 :
127 :
128 :
129 0 : IMPL_LINK( GraphicPropertyPanel, ModifyBrightnessHdl, void *, EMPTYARG )
130 : {
131 0 : const sal_Int16 nBright = mpMtrBrightness->GetValue();
132 0 : const SfxInt16Item aBrightItem( SID_ATTR_GRAF_LUMINANCE, nBright );
133 0 : GetBindings()->GetDispatcher()->Execute(SID_ATTR_GRAF_LUMINANCE, SFX_CALLMODE_RECORD, &aBrightItem, 0L);
134 0 : return 0L;
135 : }
136 :
137 :
138 :
139 0 : IMPL_LINK( GraphicPropertyPanel, ModifyContrastHdl, void *, EMPTYARG )
140 : {
141 0 : const sal_Int16 nContrast = mpMtrContrast->GetValue();
142 0 : const SfxInt16Item aContrastItem( SID_ATTR_GRAF_CONTRAST, nContrast );
143 0 : GetBindings()->GetDispatcher()->Execute(SID_ATTR_GRAF_CONTRAST, SFX_CALLMODE_RECORD, &aContrastItem, 0L);
144 0 : return 0L;
145 : }
146 :
147 :
148 :
149 0 : IMPL_LINK( GraphicPropertyPanel, ModifyTransHdl, void *, EMPTYARG )
150 : {
151 0 : const sal_Int16 nTrans = mpMtrTrans->GetValue();
152 0 : const SfxInt16Item aTransItem( SID_ATTR_GRAF_TRANSPARENCE, nTrans );
153 0 : GetBindings()->GetDispatcher()->Execute(SID_ATTR_GRAF_TRANSPARENCE, SFX_CALLMODE_RECORD, &aTransItem, 0L);
154 0 : return 0L;
155 : }
156 :
157 :
158 :
159 0 : IMPL_LINK_NOARG( GraphicPropertyPanel, ClickColorModeHdl )
160 : {
161 0 : const sal_Int16 nTrans = mpLBColorMode->GetSelectEntryPos();
162 0 : const SfxInt16Item aTransItem( SID_ATTR_GRAF_MODE, nTrans );
163 0 : GetBindings()->GetDispatcher()->Execute(SID_ATTR_GRAF_MODE, SFX_CALLMODE_RECORD, &aTransItem, 0L);
164 0 : return 0L;
165 : }
166 :
167 :
168 :
169 0 : IMPL_LINK( GraphicPropertyPanel, RedHdl, void*, EMPTYARG )
170 : {
171 0 : const sal_Int16 nRed = mpMtrRed->GetValue();
172 0 : const SfxInt16Item aRedItem( SID_ATTR_GRAF_RED, nRed );
173 0 : GetBindings()->GetDispatcher()->Execute(SID_ATTR_GRAF_RED, SFX_CALLMODE_RECORD, &aRedItem, 0L);
174 0 : return 0L;
175 : }
176 :
177 :
178 :
179 0 : IMPL_LINK( GraphicPropertyPanel, GreenHdl, void*, EMPTYARG )
180 : {
181 0 : const sal_Int16 nGreen = mpMtrGreen->GetValue();
182 0 : const SfxInt16Item aGreenItem( SID_ATTR_GRAF_GREEN, nGreen );
183 0 : GetBindings()->GetDispatcher()->Execute(SID_ATTR_GRAF_GREEN, SFX_CALLMODE_RECORD, &aGreenItem, 0L);
184 0 : return 0L;
185 : }
186 :
187 :
188 :
189 0 : IMPL_LINK(GraphicPropertyPanel, BlueHdl, void *, EMPTYARG)
190 : {
191 0 : const sal_Int16 nBlue = mpMtrBlue->GetValue();
192 0 : const SfxInt16Item aBlueItem( SID_ATTR_GRAF_BLUE, nBlue );
193 0 : GetBindings()->GetDispatcher()->Execute(SID_ATTR_GRAF_BLUE, SFX_CALLMODE_RECORD, &aBlueItem, 0L);
194 0 : return 0L;
195 : }
196 :
197 :
198 :
199 0 : IMPL_LINK(GraphicPropertyPanel, GammaHdl, void *, EMPTYARG)
200 : {
201 0 : const sal_Int32 nGamma = mpMtrGamma->GetValue();
202 0 : const SfxInt32Item nGammaItem( SID_ATTR_GRAF_GAMMA, nGamma );
203 0 : GetBindings()->GetDispatcher()->Execute(SID_ATTR_GRAF_GAMMA, SFX_CALLMODE_RECORD, &nGammaItem, 0L);
204 0 : return 0L;
205 : }
206 :
207 :
208 :
209 0 : void GraphicPropertyPanel::SetupIcons(void)
210 : {
211 0 : if(Theme::GetBoolean(Theme::Bool_UseSymphonyIcons))
212 : {
213 : // todo
214 : }
215 : else
216 : {
217 : // todo
218 : }
219 0 : }
220 :
221 :
222 :
223 0 : GraphicPropertyPanel* GraphicPropertyPanel::Create (
224 : Window* pParent,
225 : const cssu::Reference<css::frame::XFrame>& rxFrame,
226 : SfxBindings* pBindings)
227 : {
228 0 : if (pParent == NULL)
229 0 : throw lang::IllegalArgumentException("no parent Window given to GraphicPropertyPanel::Create", NULL, 0);
230 0 : if ( ! rxFrame.is())
231 0 : throw lang::IllegalArgumentException("no XFrame given to GraphicPropertyPanel::Create", NULL, 1);
232 0 : if (pBindings == NULL)
233 0 : throw lang::IllegalArgumentException("no SfxBindings given to GraphicPropertyPanel::Create", NULL, 2);
234 :
235 : return new GraphicPropertyPanel(
236 : pParent,
237 : rxFrame,
238 0 : pBindings);
239 : }
240 :
241 :
242 :
243 0 : void GraphicPropertyPanel::DataChanged(
244 : const DataChangedEvent& rEvent)
245 : {
246 : (void)rEvent;
247 :
248 0 : SetupIcons();
249 0 : }
250 :
251 :
252 :
253 0 : void GraphicPropertyPanel::NotifyItemUpdate(
254 : sal_uInt16 nSID,
255 : SfxItemState eState,
256 : const SfxPoolItem* pState,
257 : const bool bIsEnabled)
258 : {
259 : (void)bIsEnabled;
260 :
261 0 : switch( nSID )
262 : {
263 : case SID_ATTR_GRAF_LUMINANCE:
264 : {
265 0 : if(eState >= SFX_ITEM_AVAILABLE)
266 : {
267 0 : mpMtrBrightness->Enable();
268 0 : const SfxInt16Item* pItem = dynamic_cast< const SfxInt16Item* >(pState);
269 :
270 0 : if(pItem)
271 : {
272 0 : const sal_Int64 nBright = pItem->GetValue();
273 0 : mpMtrBrightness->SetValue(nBright);
274 : }
275 : }
276 0 : else if(SFX_ITEM_DISABLED == eState)
277 : {
278 0 : mpMtrBrightness->Disable();
279 : }
280 : else
281 : {
282 0 : mpMtrBrightness->Enable();
283 0 : mpMtrBrightness->SetText(OUString());
284 : }
285 0 : break;
286 : }
287 : case SID_ATTR_GRAF_CONTRAST:
288 : {
289 0 : if(eState >= SFX_ITEM_AVAILABLE)
290 : {
291 0 : mpMtrContrast->Enable();
292 0 : const SfxInt16Item* pItem = dynamic_cast< const SfxInt16Item* >(pState);
293 :
294 0 : if(pItem)
295 : {
296 0 : const sal_Int64 nContrast = pItem->GetValue();
297 0 : mpMtrContrast->SetValue(nContrast);
298 : }
299 : }
300 0 : else if(SFX_ITEM_DISABLED == eState)
301 : {
302 0 : mpMtrContrast->Disable();
303 : }
304 : else
305 : {
306 0 : mpMtrContrast->Enable();
307 0 : mpMtrContrast->SetText(OUString());
308 : }
309 0 : break;
310 : }
311 : case SID_ATTR_GRAF_TRANSPARENCE:
312 : {
313 0 : if(eState >= SFX_ITEM_AVAILABLE)
314 : {
315 0 : mpMtrTrans->Enable();
316 0 : const SfxUInt16Item* pItem = dynamic_cast< const SfxUInt16Item* >(pState);
317 :
318 0 : if(pItem)
319 : {
320 0 : const sal_Int64 nTrans = pItem->GetValue();
321 0 : mpMtrTrans->SetValue(nTrans);
322 : }
323 : }
324 0 : else if(SFX_ITEM_DISABLED == eState)
325 : {
326 0 : mpMtrTrans->Disable();
327 : }
328 : else
329 : {
330 0 : mpMtrTrans->Enable();
331 0 : mpMtrTrans->SetText(OUString());
332 : }
333 0 : break;
334 : }
335 : case SID_ATTR_GRAF_MODE:
336 : {
337 0 : if(eState >= SFX_ITEM_AVAILABLE)
338 : {
339 0 : mpLBColorMode->Enable();
340 0 : const SfxUInt16Item* pItem = dynamic_cast< const SfxUInt16Item* >(pState);
341 :
342 0 : if(pItem)
343 : {
344 0 : const sal_Int64 nTrans = pItem->GetValue();
345 0 : mpLBColorMode->SelectEntryPos(nTrans);
346 : }
347 : }
348 0 : else if(SFX_ITEM_DISABLED == eState)
349 : {
350 0 : mpLBColorMode->Disable();
351 : }
352 : else
353 : {
354 0 : mpLBColorMode->Enable();
355 0 : mpLBColorMode->SetNoSelection();
356 : }
357 0 : break;
358 : }
359 : case SID_ATTR_GRAF_RED:
360 : {
361 0 : if(eState >= SFX_ITEM_AVAILABLE)
362 : {
363 0 : mpMtrRed->Enable();
364 0 : const SfxInt16Item* pItem = dynamic_cast< const SfxInt16Item* >(pState);
365 :
366 0 : if(pItem)
367 : {
368 0 : const sal_Int64 nRed = pItem->GetValue();
369 0 : mpMtrRed->SetValue( nRed );
370 : }
371 : }
372 0 : else if(SFX_ITEM_DISABLED == eState)
373 : {
374 0 : mpMtrRed->Disable();
375 : }
376 : else
377 : {
378 0 : mpMtrRed->Enable();
379 0 : mpMtrRed->SetText(OUString());
380 : }
381 0 : break;
382 : }
383 : case SID_ATTR_GRAF_GREEN:
384 : {
385 0 : if(eState >= SFX_ITEM_AVAILABLE)
386 : {
387 0 : mpMtrGreen->Enable();
388 0 : const SfxInt16Item* pItem = dynamic_cast< const SfxInt16Item* >(pState);
389 :
390 0 : if(pItem)
391 : {
392 0 : const sal_Int64 nGreen = pItem->GetValue();
393 0 : mpMtrGreen->SetValue( nGreen );
394 : }
395 : }
396 0 : else if(SFX_ITEM_DISABLED == eState)
397 : {
398 0 : mpMtrGreen->Disable();
399 : }
400 : else
401 : {
402 0 : mpMtrGreen->Enable();
403 0 : mpMtrGreen->SetText(OUString());
404 : }
405 0 : break;
406 : }
407 : case SID_ATTR_GRAF_BLUE:
408 : {
409 0 : if(eState >= SFX_ITEM_AVAILABLE)
410 : {
411 0 : mpMtrBlue->Enable();
412 0 : const SfxInt16Item* pItem = dynamic_cast< const SfxInt16Item* >(pState);
413 :
414 0 : if(pItem)
415 : {
416 0 : const sal_Int64 nBlue = pItem->GetValue();
417 0 : mpMtrBlue->SetValue( nBlue );
418 : }
419 : }
420 0 : else if(SFX_ITEM_DISABLED == eState)
421 : {
422 0 : mpMtrBlue->Disable();
423 : }
424 : else
425 : {
426 0 : mpMtrBlue->Enable();
427 0 : mpMtrBlue->SetText(OUString());
428 : }
429 0 : break;
430 : }
431 : case SID_ATTR_GRAF_GAMMA:
432 : {
433 0 : if(eState >= SFX_ITEM_AVAILABLE)
434 : {
435 0 : mpMtrGamma->Enable();
436 0 : const SfxUInt32Item* pItem = dynamic_cast< const SfxUInt32Item* >(pState);
437 :
438 0 : if(pItem)
439 : {
440 0 : const sal_Int64 nGamma = pItem->GetValue();
441 0 : mpMtrGamma->SetValue( nGamma );
442 : }
443 : }
444 0 : else if(SFX_ITEM_DISABLED == eState)
445 : {
446 0 : mpMtrGamma->Disable();
447 : }
448 : else
449 : {
450 0 : mpMtrGamma->Enable();
451 0 : mpMtrGamma->SetText(OUString());
452 : }
453 0 : break;
454 : }
455 : }
456 0 : }
457 :
458 :
459 :
460 :
461 :
462 :
463 0 : SfxBindings* GraphicPropertyPanel::GetBindings()
464 : {
465 0 : return mpBindings;
466 : }
467 :
468 :
469 : // namespace close
470 :
471 : }} // end of namespace ::svx::sidebar
472 :
473 :
474 : // eof
|