Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <stdlib.h>
21 :
22 : #include <tools/urlobj.hxx>
23 : #include <sfx2/app.hxx>
24 : #include <sfx2/module.hxx>
25 : #include <svx/dialogs.hrc>
26 :
27 : #include "svx/xattr.hxx"
28 : #include <svx/xpool.hxx>
29 : #include <cuires.hrc>
30 : #include <svx/xflbckit.hxx>
31 : #include <svx/svdattr.hxx>
32 : #include <svx/xtable.hxx>
33 : #include <svx/xlineit0.hxx>
34 : #include "svx/drawitem.hxx"
35 : #include "cuitabarea.hxx"
36 : #include "dlgname.hxx"
37 : #include <dialmgr.hxx>
38 : #include "svx/dlgutil.hxx"
39 : #include <svl/intitem.hxx>
40 : #include <sfx2/request.hxx>
41 : #include "paragrph.hrc"
42 :
43 : //UUUU
44 : #include "sfx2/opengrf.hxx"
45 : #include <vcl/layout.hxx>
46 : #include <boost/scoped_ptr.hpp>
47 :
48 : using namespace com::sun::star;
49 :
50 : // static ----------------------------------------------------------------
51 :
52 : const sal_uInt16 SvxAreaTabPage::pAreaRanges[] =
53 : {
54 : XATTR_GRADIENTSTEPCOUNT,
55 : XATTR_GRADIENTSTEPCOUNT,
56 : SID_ATTR_FILL_STYLE,
57 : SID_ATTR_FILL_BITMAP,
58 : 0
59 : };
60 :
61 : const sal_uInt16 SvxTransparenceTabPage::pTransparenceRanges[] =
62 : {
63 : XATTR_FILLTRANSPARENCE,
64 : XATTR_FILLTRANSPARENCE,
65 : SDRATTR_SHADOWTRANSPARENCE,
66 : SDRATTR_SHADOWTRANSPARENCE,
67 : XATTR_FILLFLOATTRANSPARENCE,
68 : XATTR_FILLFLOATTRANSPARENCE,
69 : 0
70 : };
71 :
72 : /*************************************************************************
73 : |*
74 : |* Dialog for transparence
75 : |*
76 : \************************************************************************/
77 :
78 0 : IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransOffHdl_Impl)
79 : {
80 : // disable all other controls
81 0 : ActivateLinear(false);
82 0 : ActivateGradient(false);
83 :
84 : // Preview
85 0 : rXFSet.ClearItem (XATTR_FILLTRANSPARENCE);
86 0 : rXFSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE);
87 0 : m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
88 0 : m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
89 :
90 0 : InvalidatePreview( false );
91 :
92 0 : return 0L;
93 : }
94 :
95 0 : IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransLinearHdl_Impl)
96 : {
97 : // enable linear, disable other
98 0 : ActivateLinear(true);
99 0 : ActivateGradient(false);
100 :
101 : // preview
102 0 : rXFSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE);
103 0 : ModifyTransparentHdl_Impl (NULL);
104 :
105 0 : return 0L;
106 : }
107 :
108 0 : IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransGradientHdl_Impl)
109 : {
110 : // enable gradient, disable other
111 0 : ActivateLinear(false);
112 0 : ActivateGradient(true);
113 :
114 : // preview
115 0 : rXFSet.ClearItem (XATTR_FILLTRANSPARENCE);
116 0 : ModifiedTrgrHdl_Impl (NULL);
117 :
118 0 : return 0L;
119 : }
120 :
121 0 : SvxTransparenceTabPage::~SvxTransparenceTabPage()
122 : {
123 0 : disposeOnce();
124 0 : }
125 :
126 0 : void SvxTransparenceTabPage::dispose()
127 : {
128 0 : m_pRbtTransOff.clear();
129 0 : m_pRbtTransLinear.clear();
130 0 : m_pRbtTransGradient.clear();
131 0 : m_pMtrTransparent.clear();
132 0 : m_pGridGradient.clear();
133 0 : m_pLbTrgrGradientType.clear();
134 0 : m_pFtTrgrCenterX.clear();
135 0 : m_pMtrTrgrCenterX.clear();
136 0 : m_pFtTrgrCenterY.clear();
137 0 : m_pMtrTrgrCenterY.clear();
138 0 : m_pFtTrgrAngle.clear();
139 0 : m_pMtrTrgrAngle.clear();
140 0 : m_pMtrTrgrBorder.clear();
141 0 : m_pMtrTrgrStartValue.clear();
142 0 : m_pMtrTrgrEndValue.clear();
143 0 : m_pCtlBitmapPreview.clear();
144 0 : m_pCtlXRectPreview.clear();
145 0 : SvxTabPage::dispose();
146 0 : }
147 :
148 0 : void SvxTransparenceTabPage::ActivateLinear(bool bActivate)
149 : {
150 0 : m_pMtrTransparent->Enable(bActivate);
151 0 : }
152 :
153 0 : IMPL_LINK_NOARG(SvxTransparenceTabPage, ModifyTransparentHdl_Impl)
154 : {
155 0 : sal_uInt16 nPos = (sal_uInt16)m_pMtrTransparent->GetValue();
156 0 : XFillTransparenceItem aItem(nPos);
157 0 : rXFSet.Put(XFillTransparenceItem(aItem));
158 :
159 : // preview
160 0 : InvalidatePreview();
161 :
162 0 : return 0L;
163 : }
164 :
165 0 : IMPL_LINK(SvxTransparenceTabPage, ModifiedTrgrHdl_Impl, void *, pControl)
166 : {
167 0 : if(pControl == m_pLbTrgrGradientType || pControl == this)
168 : {
169 0 : css::awt::GradientStyle eXGS = (css::awt::GradientStyle)m_pLbTrgrGradientType->GetSelectEntryPos();
170 0 : SetControlState_Impl( eXGS );
171 : }
172 :
173 : // preview
174 0 : sal_uInt8 nStartCol = (sal_uInt8)(((sal_uInt16)m_pMtrTrgrStartValue->GetValue() * 255) / 100);
175 0 : sal_uInt8 nEndCol = (sal_uInt8)(((sal_uInt16)m_pMtrTrgrEndValue->GetValue() * 255) / 100);
176 : XGradient aTmpGradient(
177 : Color(nStartCol, nStartCol, nStartCol),
178 : Color(nEndCol, nEndCol, nEndCol),
179 0 : (css::awt::GradientStyle)m_pLbTrgrGradientType->GetSelectEntryPos(),
180 0 : (sal_uInt16)m_pMtrTrgrAngle->GetValue() * 10,
181 0 : (sal_uInt16)m_pMtrTrgrCenterX->GetValue(),
182 0 : (sal_uInt16)m_pMtrTrgrCenterY->GetValue(),
183 0 : (sal_uInt16)m_pMtrTrgrBorder->GetValue(),
184 0 : 100, 100);
185 :
186 0 : XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, aTmpGradient);
187 0 : rXFSet.Put ( aItem );
188 :
189 0 : InvalidatePreview();
190 :
191 0 : return 0L;
192 : }
193 :
194 0 : void SvxTransparenceTabPage::ActivateGradient(bool bActivate)
195 : {
196 0 : m_pGridGradient->Enable(bActivate);
197 :
198 0 : if(bActivate)
199 : {
200 0 : css::awt::GradientStyle eXGS = (css::awt::GradientStyle)m_pLbTrgrGradientType->GetSelectEntryPos();
201 0 : SetControlState_Impl( eXGS );
202 : }
203 0 : }
204 :
205 0 : void SvxTransparenceTabPage::SetControlState_Impl(css::awt::GradientStyle eXGS)
206 : {
207 0 : switch(eXGS)
208 : {
209 : case css::awt::GradientStyle_LINEAR:
210 : case css::awt::GradientStyle_AXIAL:
211 0 : m_pFtTrgrCenterX->Disable();
212 0 : m_pMtrTrgrCenterX->Disable();
213 0 : m_pFtTrgrCenterY->Disable();
214 0 : m_pMtrTrgrCenterY->Disable();
215 0 : m_pFtTrgrAngle->Enable();
216 0 : m_pMtrTrgrAngle->Enable();
217 0 : break;
218 :
219 : case css::awt::GradientStyle_RADIAL:
220 0 : m_pFtTrgrCenterX->Enable();
221 0 : m_pMtrTrgrCenterX->Enable();
222 0 : m_pFtTrgrCenterY->Enable();
223 0 : m_pMtrTrgrCenterY->Enable();
224 0 : m_pFtTrgrAngle->Disable();
225 0 : m_pMtrTrgrAngle->Disable();
226 0 : break;
227 :
228 : case css::awt::GradientStyle_ELLIPTICAL:
229 0 : m_pFtTrgrCenterX->Enable();
230 0 : m_pMtrTrgrCenterX->Enable();
231 0 : m_pFtTrgrCenterY->Enable();
232 0 : m_pMtrTrgrCenterY->Enable();
233 0 : m_pFtTrgrAngle->Enable();
234 0 : m_pMtrTrgrAngle->Enable();
235 0 : break;
236 :
237 : case css::awt::GradientStyle_SQUARE:
238 : case css::awt::GradientStyle_RECT:
239 0 : m_pFtTrgrCenterX->Enable();
240 0 : m_pMtrTrgrCenterX->Enable();
241 0 : m_pFtTrgrCenterY->Enable();
242 0 : m_pMtrTrgrCenterY->Enable();
243 0 : m_pFtTrgrAngle->Enable();
244 0 : m_pMtrTrgrAngle->Enable();
245 0 : break;
246 : default:
247 0 : break;
248 : }
249 0 : }
250 :
251 0 : SvxTransparenceTabPage::SvxTransparenceTabPage(vcl::Window* pParent, const SfxItemSet& rInAttrs)
252 : : SvxTabPage ( pParent,
253 : "TransparencyTabPage",
254 : "cui/ui/transparencytabpage.ui",
255 : rInAttrs),
256 : rOutAttrs ( rInAttrs ),
257 : eRP ( RP_LT ),
258 : nPageType (0),
259 : nDlgType (0),
260 : bBitmap ( false ),
261 0 : pXPool ( static_cast<XOutdevItemPool*>(rInAttrs.GetPool()) ),
262 : aXFillAttr ( pXPool ),
263 0 : rXFSet ( aXFillAttr.GetItemSet() )
264 : {
265 0 : get(m_pRbtTransOff,"RBT_TRANS_OFF");
266 0 : get(m_pRbtTransLinear,"RBT_TRANS_LINEAR");
267 0 : get(m_pRbtTransGradient,"RBT_TRANS_GRADIENT");
268 :
269 0 : get(m_pMtrTransparent,"MTR_TRANSPARENT");
270 :
271 0 : get(m_pGridGradient,"gridGradient");
272 0 : get(m_pLbTrgrGradientType,"LB_TRGR_GRADIENT_TYPES");
273 0 : get(m_pFtTrgrCenterX,"FT_TRGR_CENTER_X");
274 0 : get(m_pMtrTrgrCenterX,"MTR_TRGR_CENTER_X");
275 0 : get(m_pFtTrgrCenterY,"FT_TRGR_CENTER_Y");
276 0 : get(m_pMtrTrgrCenterY,"MTR_TRGR_CENTER_Y");
277 0 : get(m_pFtTrgrAngle,"FT_TRGR_ANGLE"),
278 0 : get(m_pMtrTrgrAngle,"MTR_TRGR_ANGLE");
279 0 : get(m_pMtrTrgrBorder,"MTR_TRGR_BORDER");
280 0 : get(m_pMtrTrgrStartValue,"MTR_TRGR_START_VALUE");
281 0 : get(m_pMtrTrgrEndValue,"MTR_TRGR_END_VALUE");
282 :
283 0 : get(m_pCtlBitmapPreview,"CTL_BITMAP_PREVIEW");
284 0 : get(m_pCtlXRectPreview,"CTL_TRANS_PREVIEW");
285 :
286 : // main selection
287 0 : m_pRbtTransOff->SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransOffHdl_Impl));
288 0 : m_pRbtTransLinear->SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransLinearHdl_Impl));
289 0 : m_pRbtTransGradient->SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransGradientHdl_Impl));
290 :
291 : // linear transparency
292 0 : m_pMtrTransparent->SetValue( 50 );
293 0 : m_pMtrTransparent->SetModifyHdl(LINK(this, SvxTransparenceTabPage, ModifyTransparentHdl_Impl));
294 :
295 : // gradient transparency
296 0 : m_pMtrTrgrEndValue->SetValue( 100 );
297 0 : m_pMtrTrgrStartValue->SetValue( 0 );
298 0 : Link<> aLink = LINK( this, SvxTransparenceTabPage, ModifiedTrgrHdl_Impl);
299 0 : m_pLbTrgrGradientType->SetSelectHdl( aLink );
300 0 : m_pMtrTrgrCenterX->SetModifyHdl( aLink );
301 0 : m_pMtrTrgrCenterY->SetModifyHdl( aLink );
302 0 : m_pMtrTrgrAngle->SetModifyHdl( aLink );
303 0 : m_pMtrTrgrBorder->SetModifyHdl( aLink );
304 0 : m_pMtrTrgrStartValue->SetModifyHdl( aLink );
305 0 : m_pMtrTrgrEndValue->SetModifyHdl( aLink );
306 :
307 : // this page needs ExchangeSupport
308 0 : SetExchangeSupport();
309 0 : }
310 :
311 0 : VclPtr<SfxTabPage> SvxTransparenceTabPage::Create(vcl::Window* pWindow, const SfxItemSet* rAttrs)
312 : {
313 0 : return VclPtr<SvxTransparenceTabPage>::Create(pWindow, *rAttrs);
314 : }
315 :
316 0 : bool SvxTransparenceTabPage::FillItemSet(SfxItemSet* rAttrs)
317 : {
318 0 : const SfxPoolItem* pGradientItem = NULL;
319 0 : const SfxPoolItem* pLinearItem = NULL;
320 0 : SfxItemState eStateGradient(rOutAttrs.GetItemState(XATTR_FILLFLOATTRANSPARENCE, true, &pGradientItem));
321 0 : SfxItemState eStateLinear(rOutAttrs.GetItemState(XATTR_FILLTRANSPARENCE, true, &pLinearItem));
322 0 : bool bGradActive = (eStateGradient == SfxItemState::SET && static_cast<const XFillFloatTransparenceItem*>(pGradientItem)->IsEnabled());
323 0 : bool bLinearActive = (eStateLinear == SfxItemState::SET && static_cast<const XFillTransparenceItem*>(pLinearItem)->GetValue() != 0);
324 :
325 : // #103765#
326 0 : bool bGradUsed = (eStateGradient == SfxItemState::DONTCARE);
327 0 : bool bLinearUsed = (eStateLinear == SfxItemState::DONTCARE);
328 :
329 0 : bool bModified(false);
330 0 : bool bSwitchOffLinear(false);
331 0 : bool bSwitchOffGradient(false);
332 :
333 0 : if(m_pMtrTransparent->IsEnabled())
334 : {
335 : // linear transparence
336 0 : sal_uInt16 nPos = (sal_uInt16)m_pMtrTransparent->GetValue();
337 0 : if(m_pMtrTransparent->IsValueChangedFromSaved() || !bLinearActive)
338 : {
339 0 : XFillTransparenceItem aItem(nPos);
340 0 : SdrPercentItem aShadowItem(makeSdrShadowTransparenceItem(nPos));
341 0 : const SfxPoolItem* pOld = GetOldItem(*rAttrs, XATTR_FILLTRANSPARENCE);
342 0 : if(!pOld || !(*static_cast<const XFillTransparenceItem*>(pOld) == aItem) || !bLinearActive)
343 : {
344 0 : rAttrs->Put(aItem);
345 0 : rAttrs->Put(aShadowItem);
346 0 : bModified = true;
347 0 : bSwitchOffGradient = true;
348 0 : }
349 : }
350 : }
351 0 : else if(m_pLbTrgrGradientType->IsEnabled())
352 : {
353 : // transparence gradient, fill ItemSet from values
354 0 : if(!bGradActive
355 0 : || m_pLbTrgrGradientType->IsValueChangedFromSaved()
356 0 : || m_pMtrTrgrAngle->IsValueChangedFromSaved()
357 0 : || m_pMtrTrgrCenterX->IsValueChangedFromSaved()
358 0 : || m_pMtrTrgrCenterY->IsValueChangedFromSaved()
359 0 : || m_pMtrTrgrBorder->IsValueChangedFromSaved()
360 0 : || m_pMtrTrgrStartValue->IsValueChangedFromSaved()
361 0 : || m_pMtrTrgrEndValue->IsValueChangedFromSaved() )
362 : {
363 0 : sal_uInt8 nStartCol = (sal_uInt8)(((sal_uInt16)m_pMtrTrgrStartValue->GetValue() * 255) / 100);
364 0 : sal_uInt8 nEndCol = (sal_uInt8)(((sal_uInt16)m_pMtrTrgrEndValue->GetValue() * 255) / 100);
365 : XGradient aTmpGradient(
366 : Color(nStartCol, nStartCol, nStartCol),
367 : Color(nEndCol, nEndCol, nEndCol),
368 0 : (css::awt::GradientStyle)m_pLbTrgrGradientType->GetSelectEntryPos(),
369 0 : (sal_uInt16)m_pMtrTrgrAngle->GetValue() * 10,
370 0 : (sal_uInt16)m_pMtrTrgrCenterX->GetValue(),
371 0 : (sal_uInt16)m_pMtrTrgrCenterY->GetValue(),
372 0 : (sal_uInt16)m_pMtrTrgrBorder->GetValue(),
373 0 : 100, 100);
374 :
375 0 : XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, aTmpGradient);
376 0 : const SfxPoolItem* pOld = GetOldItem(*rAttrs, XATTR_FILLFLOATTRANSPARENCE);
377 :
378 0 : if(!pOld || !(*static_cast<const XFillFloatTransparenceItem*>(pOld) == aItem) || !bGradActive)
379 : {
380 0 : rAttrs->Put(aItem);
381 0 : bModified = true;
382 0 : bSwitchOffLinear = true;
383 0 : }
384 : }
385 : }
386 : else
387 : {
388 : // no transparence
389 0 : bSwitchOffGradient = true;
390 0 : bSwitchOffLinear = true;
391 : }
392 :
393 : // disable unused XFillFloatTransparenceItem
394 0 : if(bSwitchOffGradient && (bGradActive || bGradUsed))
395 : {
396 0 : Color aColor(COL_BLACK);
397 0 : XGradient aGrad(aColor, Color(COL_WHITE));
398 0 : aGrad.SetStartIntens(100);
399 0 : aGrad.SetEndIntens(100);
400 0 : XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, aGrad);
401 0 : aItem.SetEnabled(false);
402 0 : rAttrs->Put(aItem);
403 0 : bModified = true;
404 : }
405 :
406 : // disable unused XFillFloatTransparenceItem
407 0 : if(bSwitchOffLinear && (bLinearActive || bLinearUsed))
408 : {
409 0 : XFillTransparenceItem aItem(0);
410 0 : SdrPercentItem aShadowItem(makeSdrShadowTransparenceItem(0));
411 0 : rAttrs->Put(aItem);
412 0 : rAttrs->Put(aShadowItem);
413 0 : bModified = true;
414 : }
415 0 : rAttrs->Put (CntUInt16Item(SID_PAGE_TYPE,nPageType));
416 0 : return bModified;
417 : }
418 :
419 0 : void SvxTransparenceTabPage::Reset(const SfxItemSet* rAttrs)
420 : {
421 0 : const SfxPoolItem* pGradientItem = NULL;
422 0 : SfxItemState eStateGradient(rAttrs->GetItemState(XATTR_FILLFLOATTRANSPARENCE, true, &pGradientItem));
423 0 : if(!pGradientItem)
424 0 : pGradientItem = &rAttrs->Get(XATTR_FILLFLOATTRANSPARENCE);
425 0 : bool bGradActive = (eStateGradient == SfxItemState::SET && static_cast<const XFillFloatTransparenceItem*>(pGradientItem)->IsEnabled());
426 :
427 0 : const SfxPoolItem* pLinearItem = NULL;
428 0 : SfxItemState eStateLinear(rAttrs->GetItemState(XATTR_FILLTRANSPARENCE, true, &pLinearItem));
429 0 : if(!pLinearItem)
430 0 : pLinearItem = &rAttrs->Get(XATTR_FILLTRANSPARENCE);
431 0 : bool bLinearActive = (eStateLinear == SfxItemState::SET && static_cast<const XFillTransparenceItem*>(pLinearItem)->GetValue() != 0);
432 :
433 : // transparence gradient
434 0 : const XGradient& rGradient = static_cast<const XFillFloatTransparenceItem*>(pGradientItem)->GetGradientValue();
435 0 : css::awt::GradientStyle eXGS(rGradient.GetGradientStyle());
436 0 : m_pLbTrgrGradientType->SelectEntryPos(sal::static_int_cast< sal_Int32 >(eXGS));
437 0 : m_pMtrTrgrAngle->SetValue(rGradient.GetAngle() / 10);
438 0 : m_pMtrTrgrBorder->SetValue(rGradient.GetBorder());
439 0 : m_pMtrTrgrCenterX->SetValue(rGradient.GetXOffset());
440 0 : m_pMtrTrgrCenterY->SetValue(rGradient.GetYOffset());
441 0 : m_pMtrTrgrStartValue->SetValue((sal_uInt16)((((sal_uInt16)rGradient.GetStartColor().GetRed() + 1) * 100) / 255));
442 0 : m_pMtrTrgrEndValue->SetValue((sal_uInt16)((((sal_uInt16)rGradient.GetEndColor().GetRed() + 1) * 100) / 255));
443 :
444 : // linear transparence
445 0 : sal_uInt16 nTransp = static_cast<const XFillTransparenceItem*>(pLinearItem)->GetValue();
446 0 : m_pMtrTransparent->SetValue(bLinearActive ? nTransp : 50);
447 0 : ModifyTransparentHdl_Impl(NULL);
448 :
449 : // select the correct radio button
450 0 : if(bGradActive)
451 : {
452 : // transparence gradient, set controls appropriate to item
453 0 : m_pRbtTransGradient->Check();
454 0 : ClickTransGradientHdl_Impl(NULL);
455 : }
456 0 : else if(bLinearActive)
457 : {
458 : // linear transparence
459 0 : m_pRbtTransLinear->Check();
460 0 : ClickTransLinearHdl_Impl(NULL);
461 : }
462 : else
463 : {
464 : // no transparence
465 0 : m_pRbtTransOff->Check();
466 0 : ClickTransOffHdl_Impl(NULL);
467 0 : ModifiedTrgrHdl_Impl(NULL);
468 : }
469 :
470 : // save values
471 0 : m_pMtrTransparent->SaveValue();
472 0 : m_pLbTrgrGradientType->SaveValue();
473 0 : m_pMtrTrgrCenterX->SaveValue();
474 0 : m_pMtrTrgrCenterY->SaveValue();
475 0 : m_pMtrTrgrAngle->SaveValue();
476 0 : m_pMtrTrgrBorder->SaveValue();
477 0 : m_pMtrTrgrStartValue->SaveValue();
478 0 : m_pMtrTrgrEndValue->SaveValue();
479 :
480 0 : bool bActive = InitPreview ( *rAttrs );
481 0 : InvalidatePreview ( bActive );
482 0 : }
483 :
484 0 : void SvxTransparenceTabPage::ActivatePage(const SfxItemSet& rSet)
485 : {
486 0 : SFX_ITEMSET_ARG (&rSet,pPageTypeItem,CntUInt16Item,SID_PAGE_TYPE,false);
487 0 : if (pPageTypeItem)
488 0 : SetPageType(pPageTypeItem->GetValue());
489 :
490 0 : if(nDlgType == 0) // area dialog
491 0 : nPageType = PT_TRANSPARENCE;
492 :
493 0 : InitPreview ( rSet );
494 0 : }
495 :
496 0 : SfxTabPage::sfxpg SvxTransparenceTabPage::DeactivatePage(SfxItemSet* _pSet)
497 : {
498 0 : if( _pSet )
499 0 : FillItemSet( _pSet );
500 0 : return LEAVE_PAGE;
501 : }
502 :
503 0 : void SvxTransparenceTabPage::PointChanged(vcl::Window* , RECT_POINT eRcPt)
504 : {
505 0 : eRP = eRcPt;
506 0 : }
507 :
508 :
509 : // Preview-Methods
510 :
511 0 : bool SvxTransparenceTabPage::InitPreview ( const SfxItemSet& rSet )
512 : {
513 : // set transparencetyp for preview
514 0 : if ( m_pRbtTransOff->IsChecked() )
515 : {
516 0 : ClickTransOffHdl_Impl(NULL);
517 0 : } else if ( m_pRbtTransLinear->IsChecked() )
518 : {
519 0 : ClickTransLinearHdl_Impl(NULL);
520 0 : } else if ( m_pRbtTransGradient->IsChecked() )
521 : {
522 0 : ClickTransGradientHdl_Impl(NULL);
523 : }
524 :
525 : // Get fillstyle for preview
526 0 : rXFSet.Put ( static_cast<const XFillStyleItem&>( rSet.Get(XATTR_FILLSTYLE)) );
527 0 : rXFSet.Put ( static_cast<const XFillColorItem&>( rSet.Get(XATTR_FILLCOLOR)) );
528 0 : rXFSet.Put ( static_cast<const XFillGradientItem&>( rSet.Get(XATTR_FILLGRADIENT)) );
529 0 : rXFSet.Put ( static_cast<const XFillHatchItem&>( rSet.Get(XATTR_FILLHATCH)) );
530 0 : rXFSet.Put ( static_cast<const XFillBackgroundItem&>(rSet.Get(XATTR_FILLBACKGROUND)) );
531 0 : rXFSet.Put ( static_cast<const XFillBitmapItem&>( rSet.Get(XATTR_FILLBITMAP)) );
532 :
533 0 : m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
534 0 : m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
535 :
536 0 : bBitmap = static_cast<const XFillStyleItem&>( rSet.Get(XATTR_FILLSTYLE) ).GetValue() == drawing::FillStyle_BITMAP;
537 :
538 : // show the right preview window
539 0 : if ( bBitmap )
540 : {
541 0 : m_pCtlBitmapPreview->Show();
542 0 : m_pCtlXRectPreview->Hide();
543 : }
544 : else
545 : {
546 0 : m_pCtlBitmapPreview->Hide();
547 0 : m_pCtlXRectPreview->Show();
548 : }
549 :
550 0 : return !m_pRbtTransOff->IsChecked();
551 : }
552 :
553 0 : void SvxTransparenceTabPage::InvalidatePreview (bool bEnable)
554 : {
555 0 : if ( bBitmap )
556 : {
557 0 : if ( bEnable )
558 : {
559 0 : m_pCtlBitmapPreview->Enable();
560 0 : m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
561 : }
562 : else
563 0 : m_pCtlBitmapPreview->Disable();
564 0 : m_pCtlBitmapPreview->Invalidate();
565 : }
566 : else
567 : {
568 0 : if ( bEnable )
569 : {
570 0 : m_pCtlXRectPreview->Enable();
571 0 : m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
572 : }
573 : else
574 0 : m_pCtlXRectPreview->Disable();
575 0 : m_pCtlXRectPreview->Invalidate();
576 : }
577 0 : }
578 :
579 0 : void SvxTransparenceTabPage::PageCreated(const SfxAllItemSet& aSet)
580 : {
581 0 : SFX_ITEMSET_ARG (&aSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,false);
582 0 : SFX_ITEMSET_ARG (&aSet,pDlgTypeItem,SfxUInt16Item,SID_DLG_TYPE,false);
583 :
584 0 : if (pPageTypeItem)
585 0 : SetPageType(pPageTypeItem->GetValue());
586 0 : if (pDlgTypeItem)
587 0 : SetDlgType(pDlgTypeItem->GetValue());
588 0 : }
589 :
590 : /*************************************************************************
591 : |*
592 : |* Dialog to modify fill-attributes
593 : |*
594 : \************************************************************************/
595 :
596 0 : SvxAreaTabPage::SvxAreaTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs ) :
597 :
598 : SvxTabPage( pParent,
599 : "AreaTabPage",
600 : "cui/ui/areatabpage.ui",
601 : rInAttrs ),
602 : rOutAttrs (rInAttrs ),
603 : eRP( RP_LT ),
604 :
605 : pColorList( NULL ),
606 : pGradientList( NULL ),
607 : pHatchingList( NULL ),
608 : pBitmapList( NULL ),
609 :
610 : // local fixed not o be changed values for local pointers
611 : maFixed_ChangeType(ChangeType::NONE),
612 : maFixed_sal_Bool(false),
613 :
614 : // init with pointers to fixed ChangeType
615 : pnColorListState(&maFixed_ChangeType),
616 : pnBitmapListState(&maFixed_ChangeType),
617 : pnGradientListState(&maFixed_ChangeType),
618 : pnHatchingListState(&maFixed_ChangeType),
619 :
620 : nPageType(0),
621 : nDlgType(0),
622 : nPos(0),
623 :
624 : // init with pointer to fixed bool
625 : pbAreaTP(&maFixed_sal_Bool),
626 :
627 0 : pXPool ( static_cast<XOutdevItemPool*>( rInAttrs.GetPool() ) ),
628 : aXFillAttr ( pXPool ),
629 0 : rXFSet ( aXFillAttr.GetItemSet() ),
630 :
631 : ePoolUnit(SFX_MAPUNIT_100TH_MM),
632 : eFUnit(FUNIT_NONE),
633 :
634 : //UUUU
635 : mbOfferImportButton(false),
636 : mbDirectGraphicSet(false),
637 0 : maDirectGraphic()
638 : {
639 0 : get(m_pTypeLB,"LB_AREA_TYPE");
640 0 : get(m_pFillLB,"boxLB_FILL");
641 0 : get(m_pLbColor,"LB_COLOR");
642 0 : get(m_pLbGradient,"LB_GRADIENT");
643 0 : get(m_pLbHatching,"LB_HATCHING");
644 0 : get(m_pLbBitmap,"LB_BITMAP");
645 0 : get(m_pCtlBitmapPreview,"CTL_BITMAP_PREVIEW");
646 :
647 0 : get(m_pTsbStepCount,"TSB_STEPCOUNT");
648 0 : get(m_pFlStepCount,"FL_STEPCOUNT");
649 0 : get(m_pNumFldStepCount,"NUM_FLD_STEPCOUNT");
650 :
651 0 : get(m_pFlHatchBckgrd,"FL_HATCHCOLORS");
652 0 : get(m_pLbHatchBckgrdColor,"LB_HATCHBCKGRDCOLOR");
653 0 : get(m_pCbxHatchBckgrd,"CB_HATCHBCKGRD");
654 :
655 0 : get(m_pBxBitmap,"boxBITMAP");
656 :
657 0 : get(m_pFlSize,"FL_SIZE");
658 0 : get(m_pGridX_Y,"gridX_Y");
659 0 : get(m_pTsbOriginal,"TSB_ORIGINAL");
660 0 : get(m_pTsbScale,"TSB_SCALE");
661 0 : get(m_pFtXSize,"FT_X_SIZE");
662 0 : get(m_pMtrFldXSize,"MTR_FLD_X_SIZE");
663 0 : get(m_pFtYSize,"FT_Y_SIZE");
664 0 : get(m_pMtrFldYSize,"MTR_FLD_Y_SIZE");
665 :
666 0 : get(m_pFlPosition,"framePOSITION");
667 0 : get(m_pCtlPosition,"CTL_POSITION");
668 0 : get(m_pGridOffset,"gridOFFSET");
669 0 : get(m_pMtrFldXOffset,"MTR_FLD_X_OFFSET");
670 0 : get(m_pMtrFldYOffset,"MTR_FLD_Y_OFFSET");
671 0 : get(m_pBxTile,"boxTILE");
672 0 : get(m_pTsbTile,"TSB_TILE");
673 0 : get(m_pTsbStretch,"TSB_STRETCH");
674 :
675 0 : get(m_pFlOffset,"FL_OFFSET");
676 0 : get(m_pRbtRow,"RBT_ROW");
677 0 : get(m_pRbtColumn,"RBT_COLUMN");
678 0 : get(m_pBtnImport, "btnimport");
679 0 : get(m_pMtrFldOffset,"MTR_FLD_OFFSET");
680 :
681 0 : get(m_pCtlXRectPreview,"CTL_COLOR_PREVIEW");
682 :
683 : //so that even for "none" the size requested is the largest
684 : //size required for any of the areas which might be selected
685 : //later, so that there's sufficient space
686 0 : VclContainer *pMainFrame = get<VclContainer>("mainframe");
687 0 : Size aIncrementsSize(m_pFlStepCount->get_preferred_size());
688 0 : Size aHatchSize(m_pFlHatchBckgrd->get_preferred_size());
689 0 : Size aBitmapSize(m_pBxBitmap->get_preferred_size());
690 : Size aMainFrame(
691 0 : std::max(std::max(aIncrementsSize.Width(), aHatchSize.Width()), aBitmapSize.Width()),
692 0 : std::max(std::max(aIncrementsSize.Height(), aHatchSize.Height()), aBitmapSize.Height()));
693 0 : pMainFrame->set_width_request(aMainFrame.Width());
694 0 : pMainFrame->set_height_request(aMainFrame.Height());
695 :
696 :
697 :
698 : // groups that overlay each other
699 0 : m_pLbBitmap->Hide();
700 0 : m_pCtlBitmapPreview->Hide();
701 :
702 0 : m_pFlStepCount->Hide();
703 :
704 0 : m_pBxBitmap->Hide();
705 :
706 : // Controls for Hatch-Background
707 0 : m_pFlHatchBckgrd->Hide();
708 :
709 0 : m_pTsbOriginal->EnableTriState( false );
710 :
711 : // this page needs ExchangeSupport
712 0 : SetExchangeSupport();
713 :
714 : // set Metrics
715 0 : eFUnit = GetModuleFieldUnit( rInAttrs );
716 :
717 0 : switch ( eFUnit )
718 : {
719 : case FUNIT_M:
720 : case FUNIT_KM:
721 0 : eFUnit = FUNIT_MM;
722 0 : break;
723 : default: ;//prevent warning
724 : }
725 0 : SetFieldUnit( *m_pMtrFldXSize, eFUnit, true );
726 0 : SetFieldUnit( *m_pMtrFldYSize, eFUnit, true );
727 :
728 : // get PoolUnit
729 0 : SfxItemPool* pPool = rOutAttrs.GetPool();
730 : DBG_ASSERT( pPool, "Wo ist der Pool?" );
731 0 : ePoolUnit = pPool->GetMetric( XATTR_FILLBMP_SIZEX );
732 :
733 : // setting the output device
734 0 : rXFSet.Put( XFillStyleItem( drawing::FillStyle_SOLID ) );
735 0 : rXFSet.Put( XFillColorItem( OUString(), COL_BLACK ) );
736 0 : m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
737 0 : m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
738 :
739 0 : m_pLbColor->SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyColorHdl_Impl ) );
740 0 : m_pLbHatchBckgrdColor->SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyHatchBckgrdColorHdl_Impl ) );
741 0 : m_pCbxHatchBckgrd->SetToggleHdl( LINK( this, SvxAreaTabPage, ToggleHatchBckgrdColorHdl_Impl ) );
742 : //UUUU
743 0 : m_pBtnImport->SetClickHdl(LINK(this, SvxAreaTabPage, ClickImportHdl_Impl));
744 :
745 0 : m_pLbGradient->SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyGradientHdl_Impl ) );
746 0 : m_pLbHatching->SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyHatchingHdl_Impl ) );
747 0 : m_pLbBitmap->SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyBitmapHdl_Impl ) );
748 :
749 0 : m_pTsbStepCount->SetClickHdl( LINK( this, SvxAreaTabPage, ModifyStepCountHdl_Impl ) );
750 0 : m_pNumFldStepCount->SetModifyHdl( LINK( this, SvxAreaTabPage, ModifyStepCountHdl_Impl ) );
751 :
752 0 : Link<> aLink( LINK( this, SvxAreaTabPage, ModifyTileHdl_Impl ) );
753 0 : m_pTsbTile->SetClickHdl( aLink );
754 0 : m_pTsbStretch->SetClickHdl( aLink );
755 0 : m_pTsbOriginal->SetClickHdl( aLink );
756 0 : m_pMtrFldXSize->SetModifyHdl( aLink );
757 0 : m_pMtrFldYSize->SetModifyHdl( aLink );
758 0 : m_pRbtRow->SetClickHdl( aLink );
759 0 : m_pRbtColumn->SetClickHdl( aLink );
760 0 : m_pMtrFldOffset->SetModifyHdl( aLink );
761 0 : m_pMtrFldXOffset->SetModifyHdl( aLink );
762 0 : m_pMtrFldYOffset->SetModifyHdl( aLink );
763 0 : m_pTsbScale->SetClickHdl( LINK( this, SvxAreaTabPage, ClickScaleHdl_Impl ) );
764 :
765 0 : m_pTypeLB->SetSelectHdl( LINK( this, SvxAreaTabPage, SelectDialogTypeHdl_Impl ) );
766 :
767 : // #i76307# always paint the preview in LTR, because this is what the document does
768 0 : m_pCtlXRectPreview->EnableRTL(false);
769 :
770 : // Calcualte size of dropdown listboxes
771 0 : Size aSize = LogicToPixel(Size(108, 103), MAP_APPFONT);
772 :
773 0 : m_pLbColor->set_width_request(aSize.Width());
774 0 : m_pLbColor->set_height_request(aSize.Height());
775 : //m_pLbColor->
776 :
777 0 : m_pLbGradient->set_width_request(aSize.Width());
778 0 : m_pLbGradient->set_height_request(aSize.Height());
779 0 : m_pLbHatching->set_width_request(aSize.Width());
780 0 : m_pLbHatching->set_height_request(aSize.Height());
781 0 : m_pLbBitmap->set_width_request(aSize.Width());
782 0 : m_pLbBitmap->set_height_request(aSize.Height());
783 :
784 : // Calculate size of display boxes
785 0 : Size aSize2 = LogicToPixel(Size(110, 42), MAP_APPFONT);
786 0 : m_pCtlBitmapPreview->set_width_request(aSize2.Width());
787 0 : m_pCtlBitmapPreview->set_height_request(aSize2.Height());
788 0 : m_pCtlXRectPreview->set_width_request(aSize2.Width());
789 0 : m_pCtlXRectPreview->set_height_request(aSize2.Height());
790 0 : }
791 :
792 0 : SvxAreaTabPage::~SvxAreaTabPage()
793 : {
794 0 : disposeOnce();
795 0 : }
796 :
797 0 : void SvxAreaTabPage::dispose()
798 : {
799 0 : m_pTypeLB.clear();
800 0 : m_pFillLB.clear();
801 0 : m_pLbColor.clear();
802 0 : m_pLbGradient.clear();
803 0 : m_pLbHatching.clear();
804 0 : m_pLbBitmap.clear();
805 0 : m_pCtlBitmapPreview.clear();
806 0 : m_pTsbStepCount.clear();
807 0 : m_pFlStepCount.clear();
808 0 : m_pNumFldStepCount.clear();
809 0 : m_pFlHatchBckgrd.clear();
810 0 : m_pCbxHatchBckgrd.clear();
811 0 : m_pLbHatchBckgrdColor.clear();
812 0 : m_pBxBitmap.clear();
813 0 : m_pFlSize.clear();
814 0 : m_pTsbOriginal.clear();
815 0 : m_pTsbScale.clear();
816 0 : m_pGridX_Y.clear();
817 0 : m_pFtXSize.clear();
818 0 : m_pMtrFldXSize.clear();
819 0 : m_pFtYSize.clear();
820 0 : m_pMtrFldYSize.clear();
821 0 : m_pFlPosition.clear();
822 0 : m_pCtlPosition.clear();
823 0 : m_pGridOffset.clear();
824 0 : m_pMtrFldXOffset.clear();
825 0 : m_pMtrFldYOffset.clear();
826 0 : m_pBxTile.clear();
827 0 : m_pTsbTile.clear();
828 0 : m_pTsbStretch.clear();
829 0 : m_pFlOffset.clear();
830 0 : m_pRbtRow.clear();
831 0 : m_pRbtColumn.clear();
832 0 : m_pMtrFldOffset.clear();
833 0 : m_pCtlXRectPreview.clear();
834 0 : m_pBtnImport.clear();
835 0 : SvxTabPage::dispose();
836 0 : }
837 :
838 :
839 0 : void SvxAreaTabPage::Construct()
840 : {
841 : // fill colortables / lists
842 0 : m_pLbColor->Fill( pColorList );
843 0 : m_pLbHatchBckgrdColor->Fill ( pColorList );
844 :
845 0 : m_pLbGradient->Fill( pGradientList );
846 0 : m_pLbHatching->Fill( pHatchingList );
847 0 : m_pLbBitmap->Fill( pBitmapList );
848 0 : }
849 :
850 :
851 :
852 0 : void SvxAreaTabPage::ActivatePage( const SfxItemSet& rSet )
853 : {
854 0 : sal_Int32 nCount(0);
855 0 : SFX_ITEMSET_ARG (&rSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,false);
856 0 : SFX_ITEMSET_ARG (&rSet,pPosItem,SfxUInt16Item,SID_TABPAGE_POS,false);
857 0 : if (pPageTypeItem)
858 0 : SetPageType(pPageTypeItem->GetValue());
859 0 : if (pPosItem)
860 0 : SetPos(pPosItem->GetValue());
861 0 : if( nDlgType == 0 ) // area dialog
862 : {
863 0 : *pbAreaTP = true;
864 :
865 0 : if( pColorList.is() )
866 : {
867 : //UUUU use evtl. previously selected entry to avoid changing values just by
868 : // switching TabPages in dialogs using this TabPage
869 0 : sal_Int32 _nPos(nPos);
870 :
871 0 : if( *pnBitmapListState != ChangeType::NONE )
872 : {
873 0 : if( *pnBitmapListState & ChangeType::CHANGED )
874 0 : pBitmapList = static_cast<SvxAreaTabDialog*>( GetParentDialog() )->GetNewBitmapList();
875 :
876 0 : _nPos = m_pLbBitmap->GetSelectEntryPos();
877 :
878 0 : m_pLbBitmap->Clear();
879 0 : m_pLbBitmap->Fill( pBitmapList );
880 0 : nCount = m_pLbBitmap->GetEntryCount();
881 0 : if( nCount == 0 )
882 : ; // This case should never occur
883 0 : else if( nCount <= _nPos )
884 0 : m_pLbBitmap->SelectEntryPos( 0 );
885 : else
886 0 : m_pLbBitmap->SelectEntryPos( _nPos );
887 0 : ModifyBitmapHdl_Impl( this );
888 : }
889 :
890 0 : if( *pnHatchingListState != ChangeType::NONE )
891 : {
892 0 : if( *pnHatchingListState & ChangeType::CHANGED )
893 0 : pHatchingList = static_cast<SvxAreaTabDialog*>( GetParentDialog() )->GetNewHatchingList();
894 :
895 0 : _nPos = m_pLbHatching->GetSelectEntryPos();
896 :
897 0 : m_pLbHatching->Clear();
898 0 : m_pLbHatching->Fill( pHatchingList );
899 0 : nCount = m_pLbHatching->GetEntryCount();
900 0 : if( nCount == 0 )
901 : ; // This case should never occur
902 0 : else if( nCount <= _nPos )
903 0 : m_pLbHatching->SelectEntryPos( 0 );
904 : else
905 0 : m_pLbHatching->SelectEntryPos( _nPos );
906 0 : ModifyHatchingHdl_Impl( this );
907 :
908 0 : ModifyHatchBckgrdColorHdl_Impl( this );
909 : }
910 :
911 0 : if( *pnGradientListState != ChangeType::NONE )
912 : {
913 0 : if( *pnGradientListState & ChangeType::CHANGED )
914 0 : pGradientList = static_cast<SvxAreaTabDialog*>( GetParentDialog() )->GetNewGradientList();
915 :
916 0 : _nPos = m_pLbGradient->GetSelectEntryPos();
917 :
918 0 : m_pLbGradient->Clear();
919 0 : m_pLbGradient->Fill( pGradientList );
920 0 : nCount = m_pLbGradient->GetEntryCount();
921 0 : if( nCount == 0 )
922 : ; // This case should never occur
923 0 : else if( nCount <= _nPos )
924 0 : m_pLbGradient->SelectEntryPos( 0 );
925 : else
926 0 : m_pLbGradient->SelectEntryPos( _nPos );
927 0 : ModifyGradientHdl_Impl( this );
928 : }
929 :
930 0 : if( *pnColorListState != ChangeType::NONE )
931 : {
932 0 : if( *pnColorListState & ChangeType::CHANGED )
933 0 : pColorList = static_cast<SvxAreaTabDialog*>( GetParentDialog() )->GetNewColorList();
934 : // aLbColor
935 0 : _nPos = m_pLbColor->GetSelectEntryPos();
936 0 : m_pLbColor->Clear();
937 0 : m_pLbColor->Fill( pColorList );
938 0 : nCount = m_pLbColor->GetEntryCount();
939 0 : if( nCount == 0 )
940 : ; // This case should never occur
941 0 : else if( nCount <= _nPos )
942 0 : m_pLbColor->SelectEntryPos( 0 );
943 : else
944 0 : m_pLbColor->SelectEntryPos( _nPos );
945 :
946 0 : ModifyColorHdl_Impl( this );
947 :
948 : // Backgroundcolor of hatch
949 0 : _nPos = m_pLbHatchBckgrdColor->GetSelectEntryPos();
950 0 : m_pLbHatchBckgrdColor->Clear();
951 0 : m_pLbHatchBckgrdColor->Fill( pColorList );
952 0 : nCount = m_pLbHatchBckgrdColor->GetEntryCount();
953 0 : if( nCount == 0 )
954 : ; // This case should never occur
955 0 : else if( nCount <= _nPos )
956 0 : m_pLbHatchBckgrdColor->SelectEntryPos( 0 );
957 : else
958 0 : m_pLbHatchBckgrdColor->SelectEntryPos( _nPos );
959 :
960 0 : ModifyHatchBckgrdColorHdl_Impl( this );
961 : }
962 :
963 : // evaluate if any other Tabpage set another filltype
964 0 : if( m_pTypeLB->GetSelectEntryPos() > drawing::FillStyle_NONE)
965 : {
966 0 : switch( nPageType )
967 : {
968 : case PT_GRADIENT:
969 0 : m_pTypeLB->SelectEntryPos( drawing::FillStyle_GRADIENT );
970 0 : m_pLbGradient->SelectEntryPos( _nPos );
971 0 : ClickGradientHdl_Impl();
972 0 : break;
973 :
974 : case PT_HATCH:
975 0 : m_pTypeLB->SelectEntryPos( drawing::FillStyle_HATCH );
976 0 : m_pLbHatching->SelectEntryPos( _nPos );
977 0 : ClickHatchingHdl_Impl();
978 0 : break;
979 :
980 : case PT_BITMAP:
981 0 : m_pTypeLB->SelectEntryPos( drawing::FillStyle_BITMAP );
982 0 : m_pLbBitmap->SelectEntryPos( _nPos );
983 0 : ClickBitmapHdl_Impl();
984 0 : break;
985 :
986 : case PT_COLOR:
987 0 : m_pTypeLB->SelectEntryPos( drawing::FillStyle_SOLID );
988 0 : m_pLbColor->SelectEntryPos( _nPos );
989 0 : m_pLbHatchBckgrdColor->SelectEntryPos( _nPos );
990 0 : ClickColorHdl_Impl();
991 0 : break;
992 : }
993 : }
994 0 : nPageType = PT_AREA;
995 : }
996 : }
997 0 : }
998 :
999 :
1000 :
1001 0 : SfxTabPage::sfxpg SvxAreaTabPage::DeactivatePage( SfxItemSet* _pSet )
1002 : {
1003 0 : if( nDlgType == 0 ) // area dialog
1004 : {
1005 0 : sal_Int32 nPosOrig = nPos;
1006 0 : drawing::FillStyle eStyle = (drawing::FillStyle) m_pTypeLB->GetSelectEntryPos();
1007 0 : switch( eStyle )
1008 : {
1009 : case drawing::FillStyle_GRADIENT:
1010 : {
1011 0 : nPageType = PT_GRADIENT;
1012 0 : nPos = m_pLbGradient->GetSelectEntryPos();
1013 0 : if( nPosOrig != nPos )
1014 0 : *pnGradientListState |= ChangeType::MODIFIED;
1015 : }
1016 0 : break;
1017 : case drawing::FillStyle_HATCH:
1018 : {
1019 0 : nPageType = PT_HATCH;
1020 0 : nPos = m_pLbHatching->GetSelectEntryPos();
1021 0 : if( nPosOrig != nPos )
1022 0 : *pnHatchingListState |= ChangeType::MODIFIED;
1023 : }
1024 0 : break;
1025 : case drawing::FillStyle_BITMAP:
1026 : {
1027 0 : nPageType = PT_BITMAP;
1028 0 : nPos = m_pLbBitmap->GetSelectEntryPos();
1029 0 : if( nPosOrig != nPos )
1030 0 : *pnBitmapListState |= ChangeType::MODIFIED;
1031 : }
1032 0 : break;
1033 : case drawing::FillStyle_SOLID:
1034 : {
1035 0 : nPageType = PT_COLOR;
1036 0 : nPos = m_pLbColor->GetSelectEntryPos();
1037 0 : if( nPosOrig != nPos )
1038 0 : *pnColorListState |= ChangeType::MODIFIED;
1039 : }
1040 0 : break;
1041 : default: ;//prevent warning
1042 : }
1043 : }
1044 :
1045 0 : if( _pSet )
1046 0 : FillItemSet( _pSet );
1047 :
1048 0 : return LEAVE_PAGE;
1049 : }
1050 :
1051 :
1052 :
1053 0 : bool SvxAreaTabPage::FillItemSet( SfxItemSet* rAttrs )
1054 : {
1055 : sal_Int32 _nPos;
1056 0 : bool bModified = false;
1057 :
1058 0 : if( nDlgType != 0 || *pbAreaTP )
1059 : {
1060 0 : const SfxPoolItem* pOld = NULL;
1061 0 : drawing::FillStyle eStyle = (drawing::FillStyle) m_pTypeLB->GetSelectEntryPos();
1062 0 : drawing::FillStyle eSavedStyle = (drawing::FillStyle) m_pTypeLB->GetSavedValue();
1063 0 : switch( eStyle )
1064 : {
1065 : default:
1066 : case drawing::FillStyle_NONE:
1067 : {
1068 0 : if( eSavedStyle != eStyle )
1069 : {
1070 0 : XFillStyleItem aStyleItem( drawing::FillStyle_NONE );
1071 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLSTYLE );
1072 0 : if ( !pOld || !( *static_cast<const XFillStyleItem*>(pOld) == aStyleItem ) )
1073 : {
1074 0 : rAttrs->Put( aStyleItem );
1075 0 : bModified = true;
1076 0 : }
1077 : }
1078 : }
1079 0 : break;
1080 : case drawing::FillStyle_SOLID:
1081 : {
1082 0 : _nPos = m_pLbColor->GetSelectEntryPos();
1083 0 : if( _nPos != LISTBOX_ENTRY_NOTFOUND &&
1084 0 : m_pLbColor->IsValueChangedFromSaved() )
1085 : {
1086 0 : XFillColorItem aItem( m_pLbColor->GetSelectEntry(),
1087 0 : m_pLbColor->GetSelectEntryColor() );
1088 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLCOLOR );
1089 0 : if ( !pOld || !( *static_cast<const XFillColorItem*>(pOld) == aItem ) )
1090 : {
1091 0 : rAttrs->Put( aItem );
1092 0 : bModified = true;
1093 0 : }
1094 : }
1095 : // NEW
1096 0 : if( (eSavedStyle != eStyle) &&
1097 0 : ( bModified ||
1098 0 : SfxItemState::SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), true ) ) )
1099 : {
1100 0 : XFillStyleItem aStyleItem( drawing::FillStyle_SOLID );
1101 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLSTYLE );
1102 0 : if ( !pOld || !( *static_cast<const XFillStyleItem*>(pOld) == aStyleItem ) )
1103 : {
1104 0 : rAttrs->Put( aStyleItem );
1105 0 : bModified = true;
1106 0 : }
1107 : }
1108 : }
1109 0 : break;
1110 : case drawing::FillStyle_GRADIENT:
1111 : {
1112 0 : _nPos = m_pLbGradient->GetSelectEntryPos();
1113 0 : if( _nPos != LISTBOX_ENTRY_NOTFOUND &&
1114 0 : m_pLbGradient->IsValueChangedFromSaved() )
1115 : {
1116 0 : XGradient aGradient = pGradientList->GetGradient( _nPos )->GetGradient();
1117 0 : OUString aString = m_pLbGradient->GetSelectEntry();
1118 0 : XFillGradientItem aItem( aString, aGradient );
1119 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLGRADIENT );
1120 0 : if ( !pOld || !( *static_cast<const XFillGradientItem*>(pOld) == aItem ) )
1121 : {
1122 0 : rAttrs->Put( aItem );
1123 0 : bModified = true;
1124 0 : }
1125 : }
1126 : // NEW
1127 0 : if( (eSavedStyle != eStyle) &&
1128 0 : ( bModified ||
1129 0 : SfxItemState::SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLGRADIENT ), true ) ) )
1130 : {
1131 0 : XFillStyleItem aStyleItem( drawing::FillStyle_GRADIENT );
1132 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLSTYLE );
1133 0 : if ( !pOld || !( *static_cast<const XFillStyleItem*>(pOld) == aStyleItem ) )
1134 : {
1135 0 : rAttrs->Put( aStyleItem );
1136 0 : bModified = true;
1137 0 : }
1138 : }
1139 : }
1140 0 : break;
1141 : case drawing::FillStyle_HATCH:
1142 : {
1143 0 : _nPos = m_pLbHatching->GetSelectEntryPos();
1144 0 : if( _nPos != LISTBOX_ENTRY_NOTFOUND &&
1145 0 : m_pLbHatching->IsValueChangedFromSaved() )
1146 : {
1147 0 : XHatch aHatching = pHatchingList->GetHatch( _nPos )->GetHatch();
1148 0 : OUString aString = m_pLbHatching->GetSelectEntry();
1149 0 : XFillHatchItem aItem( aString, aHatching );
1150 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLHATCH );
1151 0 : if ( !pOld || !( *static_cast<const XFillHatchItem*>(pOld) == aItem ) )
1152 : {
1153 0 : rAttrs->Put( aItem );
1154 0 : bModified = true;
1155 0 : }
1156 : }
1157 0 : XFillBackgroundItem aItem ( m_pCbxHatchBckgrd->IsChecked() );
1158 0 : rAttrs->Put( aItem );
1159 0 : nPos = m_pLbHatchBckgrdColor->GetSelectEntryPos();
1160 0 : if( nPos != LISTBOX_ENTRY_NOTFOUND &&
1161 0 : m_pLbHatchBckgrdColor->IsValueChangedFromSaved() )
1162 : {
1163 0 : XFillColorItem aFillColorItem( m_pLbHatchBckgrdColor->GetSelectEntry(),
1164 0 : m_pLbHatchBckgrdColor->GetSelectEntryColor() );
1165 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLCOLOR );
1166 0 : if ( !pOld || !( *static_cast<const XFillColorItem*>(pOld) == aFillColorItem ) )
1167 : {
1168 0 : rAttrs->Put( aFillColorItem );
1169 0 : bModified = true;
1170 0 : }
1171 : }
1172 : // NEW
1173 0 : if( (eSavedStyle != eStyle) &&
1174 0 : ( bModified ||
1175 0 : SfxItemState::SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLHATCH ), true ) ) )
1176 : {
1177 0 : XFillStyleItem aStyleItem( drawing::FillStyle_HATCH );
1178 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLSTYLE );
1179 0 : if ( !pOld || !( *static_cast<const XFillStyleItem*>(pOld) == aStyleItem ) )
1180 : {
1181 0 : rAttrs->Put( aStyleItem );
1182 0 : bModified = true;
1183 0 : }
1184 0 : }
1185 : }
1186 0 : break;
1187 : case drawing::FillStyle_BITMAP:
1188 : {
1189 : //UUUU
1190 0 : if(mbDirectGraphicSet && GRAPHIC_NONE != maDirectGraphic.GetType())
1191 : {
1192 0 : const XFillBitmapItem aXBmpItem(maDirectName, maDirectGraphic);
1193 0 : rAttrs->Put(XFillStyleItem(drawing::FillStyle_BITMAP));
1194 0 : rAttrs->Put(aXBmpItem);
1195 0 : bModified = true;
1196 : }
1197 : else
1198 : {
1199 0 : nPos = m_pLbBitmap->GetSelectEntryPos();
1200 0 : if( nPos != LISTBOX_ENTRY_NOTFOUND &&
1201 0 : m_pLbBitmap->IsValueChangedFromSaved() )
1202 : {
1203 0 : const XBitmapEntry* pXBitmapEntry = pBitmapList->GetBitmap(nPos);
1204 0 : const OUString aString(m_pLbBitmap->GetSelectEntry());
1205 0 : const XFillBitmapItem aFillBitmapItem(aString, pXBitmapEntry->GetGraphicObject());
1206 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLBITMAP );
1207 0 : if ( !pOld || !( *static_cast<const XFillBitmapItem*>(pOld) == aFillBitmapItem ) )
1208 : {
1209 0 : rAttrs->Put( aFillBitmapItem );
1210 0 : bModified = true;
1211 0 : }
1212 : }
1213 : // NEW
1214 0 : if( (eSavedStyle != eStyle) &&
1215 0 : ( bModified ||
1216 0 : SfxItemState::SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLBITMAP ), true ) ) )
1217 : {
1218 0 : XFillStyleItem aStyleItem( drawing::FillStyle_BITMAP );
1219 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLSTYLE );
1220 0 : if ( !pOld || !( *static_cast<const XFillStyleItem*>(pOld) == aStyleItem ) )
1221 : {
1222 0 : rAttrs->Put( aStyleItem );
1223 0 : bModified = true;
1224 0 : }
1225 : }
1226 : }
1227 : }
1228 0 : break;
1229 : }
1230 :
1231 : // step size
1232 0 : if( m_pTsbStepCount->IsEnabled() )
1233 : {
1234 0 : sal_uInt16 nValue = 0;
1235 0 : bool bValueModified = false;
1236 0 : TriState eState = m_pTsbStepCount->GetState();
1237 0 : if( eState == TRISTATE_TRUE )
1238 : {
1239 0 : if( m_pTsbStepCount->IsValueChangedFromSaved() )
1240 0 : bValueModified = true;
1241 : }
1242 : else
1243 : {
1244 : // condition != Disabled ?
1245 0 : if( !m_pNumFldStepCount->GetText().isEmpty() )
1246 : {
1247 0 : nValue = (sal_uInt16) m_pNumFldStepCount->GetValue();
1248 0 : if( m_pNumFldStepCount->IsValueChangedFromSaved() )
1249 0 : bValueModified = true;
1250 : }
1251 : }
1252 0 : if( bValueModified )
1253 : {
1254 0 : XGradientStepCountItem aFillBitmapItem( nValue );
1255 0 : pOld = GetOldItem( *rAttrs, XATTR_GRADIENTSTEPCOUNT );
1256 0 : if ( !pOld || !( *static_cast<const XGradientStepCountItem*>(pOld) == aFillBitmapItem ) )
1257 : {
1258 0 : rAttrs->Put( aFillBitmapItem );
1259 0 : bModified = true;
1260 0 : }
1261 : }
1262 : }
1263 :
1264 0 : if( m_pTsbTile->IsEnabled() )
1265 : {
1266 0 : TriState eState = m_pTsbTile->GetState();
1267 0 : if( m_pTsbTile->IsValueChangedFromSaved() )
1268 : {
1269 0 : XFillBmpTileItem aFillBmpTileItem( eState != TRISTATE_FALSE );
1270 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLBMP_TILE );
1271 0 : if ( !pOld || !( *static_cast<const XFillBmpTileItem*>(pOld) == aFillBmpTileItem ) )
1272 : {
1273 0 : rAttrs->Put( aFillBmpTileItem );
1274 0 : bModified = true;
1275 0 : }
1276 : }
1277 : }
1278 :
1279 0 : if( m_pTsbStretch->IsEnabled() )
1280 : {
1281 0 : TriState eState = m_pTsbStretch->GetState();
1282 0 : if( m_pTsbStretch->IsValueChangedFromSaved() )
1283 : {
1284 : XFillBmpStretchItem aFillBmpStretchItem(
1285 0 : eState != TRISTATE_FALSE );
1286 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLBMP_STRETCH );
1287 0 : if ( !pOld || !( *static_cast<const XFillBmpStretchItem*>(pOld) == aFillBmpStretchItem ) )
1288 : {
1289 0 : rAttrs->Put( aFillBmpStretchItem );
1290 0 : bModified = true;
1291 0 : }
1292 : }
1293 : }
1294 :
1295 : // Original size (in the UI) is used as follows:
1296 : // Controls are disabled, but have to be set.
1297 : // SizeX = 0; SizeY = 0; Log = sal_True
1298 :
1299 : //aTsbScale
1300 0 : TriState eState = m_pTsbScale->GetState();
1301 0 : if( m_pTsbScale->IsValueChangedFromSaved() ||
1302 0 : ( !m_pTsbScale->IsEnabled() &&
1303 0 : m_pTsbOriginal->IsEnabled() &&
1304 0 : m_pTsbScale->GetSavedValue() != TRISTATE_TRUE ) )
1305 : {
1306 0 : boost::scoped_ptr<XFillBmpSizeLogItem> pItem;
1307 0 : if( m_pTsbScale->IsEnabled() )
1308 0 : pItem.reset(new XFillBmpSizeLogItem( eState == TRISTATE_FALSE ));
1309 0 : else if( m_pTsbOriginal->IsEnabled() && m_pTsbOriginal->GetState() == TRISTATE_TRUE )
1310 0 : pItem.reset(new XFillBmpSizeLogItem( true ));
1311 :
1312 0 : if( pItem )
1313 : {
1314 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLBMP_SIZELOG );
1315 0 : if ( !pOld || !( *static_cast<const XFillBmpSizeLogItem*>(pOld) == *pItem ) )
1316 : {
1317 0 : rAttrs->Put( *pItem );
1318 0 : bModified = true;
1319 : }
1320 0 : }
1321 : }
1322 :
1323 : //aMtrFldXSize
1324 0 : OUString aStr = m_pMtrFldXSize->GetText();
1325 : {
1326 0 : boost::scoped_ptr<XFillBmpSizeXItem> pItem;
1327 0 : TriState eScaleState = m_pTsbScale->GetState();
1328 :
1329 0 : if( m_pMtrFldXSize->IsEnabled() &&
1330 0 : !aStr.isEmpty() &&
1331 0 : aStr != m_pMtrFldXSize->GetSavedValue() )
1332 : {
1333 0 : if( eScaleState == TRISTATE_FALSE )
1334 0 : pItem.reset(new XFillBmpSizeXItem( GetCoreValue( *m_pMtrFldXSize, ePoolUnit ) ));
1335 : else
1336 : {
1337 : // Percentage values are set negatively, so that
1338 : // they aren't scaled; this is considered in the item.
1339 0 : pItem.reset(new XFillBmpSizeXItem( -labs( static_cast<long>(m_pMtrFldXSize->GetValue()) ) ));
1340 : }
1341 : }
1342 0 : else if( m_pTsbOriginal->IsEnabled() &&
1343 0 : m_pTsbOriginal->GetState() == TRISTATE_TRUE &&
1344 0 : !m_pMtrFldXSize->GetSavedValue().isEmpty() )
1345 0 : pItem.reset(new XFillBmpSizeXItem( 0 ));
1346 :
1347 0 : if( pItem )
1348 : {
1349 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLBMP_SIZEX );
1350 0 : if ( !pOld || !( *static_cast<const XFillBmpSizeXItem*>(pOld) == *pItem ) )
1351 : {
1352 0 : rAttrs->Put( *pItem );
1353 0 : bModified = true;
1354 : }
1355 0 : }
1356 : }
1357 :
1358 : //aMtrFldYSize
1359 0 : aStr = m_pMtrFldYSize->GetText();
1360 : {
1361 0 : boost::scoped_ptr<XFillBmpSizeYItem> pItem;
1362 0 : TriState eScaleState = m_pTsbScale->GetState();
1363 :
1364 0 : if( m_pMtrFldYSize->IsEnabled() &&
1365 0 : !aStr.isEmpty() &&
1366 0 : aStr != m_pMtrFldYSize->GetSavedValue() )
1367 : {
1368 0 : if( eScaleState == TRISTATE_FALSE )
1369 0 : pItem.reset(new XFillBmpSizeYItem( GetCoreValue( *m_pMtrFldYSize, ePoolUnit ) ));
1370 : else
1371 : {
1372 : // Percentage values are set negatively, so that
1373 : // they aren't scaled by the MetricItem;
1374 : // this is considered in the item.
1375 0 : pItem.reset(new XFillBmpSizeYItem( -labs( static_cast<long>(m_pMtrFldYSize->GetValue()) ) ));
1376 : }
1377 : }
1378 0 : else if( m_pTsbOriginal->IsEnabled() &&
1379 0 : m_pTsbOriginal->GetState() == TRISTATE_TRUE &&
1380 0 : !m_pMtrFldYSize->GetSavedValue().isEmpty() )
1381 0 : pItem.reset(new XFillBmpSizeYItem( 0 ));
1382 :
1383 0 : if( pItem )
1384 : {
1385 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLBMP_SIZEY );
1386 0 : if ( !pOld || !( *static_cast<const XFillBmpSizeYItem*>(pOld) == *pItem ) )
1387 : {
1388 0 : rAttrs->Put( *pItem );
1389 0 : bModified = true;
1390 : }
1391 0 : }
1392 : }
1393 :
1394 : //aRbtRow
1395 : //aRbtColumn
1396 : //aMtrFldOffset
1397 0 : if( m_pMtrFldOffset->IsEnabled() )
1398 : {
1399 0 : OUString aMtrString = m_pMtrFldOffset->GetText();
1400 0 : if( ( !aMtrString.isEmpty() &&
1401 0 : aMtrString != m_pMtrFldOffset->GetSavedValue() ) ||
1402 0 : m_pRbtRow->IsValueChangedFromSaved() ||
1403 0 : m_pRbtColumn->IsValueChangedFromSaved() )
1404 : {
1405 0 : if( m_pRbtRow->IsChecked() )
1406 : {
1407 0 : XFillBmpTileOffsetXItem aFillBmpTileOffsetXItem( (sal_uInt16) m_pMtrFldOffset->GetValue() );
1408 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLBMP_TILEOFFSETX );
1409 0 : if ( !pOld || !( *static_cast<const XFillBmpTileOffsetXItem*>(pOld) == aFillBmpTileOffsetXItem ) )
1410 : {
1411 0 : rAttrs->Put( aFillBmpTileOffsetXItem );
1412 0 : rAttrs->Put( XFillBmpTileOffsetYItem( 0 ) );
1413 0 : bModified = true;
1414 0 : }
1415 : }
1416 0 : else if( m_pRbtColumn->IsChecked() )
1417 : {
1418 0 : XFillBmpTileOffsetYItem aFillBmpTileOffsetYItem( (sal_uInt16) m_pMtrFldOffset->GetValue() );
1419 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLBMP_TILEOFFSETY );
1420 0 : if ( !pOld || !( *static_cast<const XFillBmpTileOffsetYItem*>(pOld) == aFillBmpTileOffsetYItem ) )
1421 : {
1422 0 : rAttrs->Put( aFillBmpTileOffsetYItem );
1423 0 : rAttrs->Put( XFillBmpTileOffsetXItem( 0 ) );
1424 0 : bModified = true;
1425 0 : }
1426 : }
1427 0 : }
1428 : }
1429 :
1430 : //aCtlPosition
1431 0 : if( m_pCtlPosition->IsEnabled() )
1432 : {
1433 0 : bool bPut = false;
1434 0 : RECT_POINT _eRP = m_pCtlPosition->GetActualRP();
1435 :
1436 0 : if( SfxItemState::DONTCARE == rOutAttrs.GetItemState( XATTR_FILLBMP_POS ) )
1437 0 : bPut = true;
1438 : else
1439 : {
1440 0 : RECT_POINT eValue = static_cast<const XFillBmpPosItem&>( rOutAttrs.Get( XATTR_FILLBMP_POS ) ).GetValue();
1441 0 : if( eValue != _eRP )
1442 0 : bPut = true;
1443 : }
1444 0 : if( bPut )
1445 : {
1446 0 : XFillBmpPosItem aFillBmpPosItem( _eRP );
1447 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLBMP_POS );
1448 0 : if ( !pOld || !( *static_cast<const XFillBmpPosItem*>(pOld) == aFillBmpPosItem ) )
1449 : {
1450 0 : rAttrs->Put( aFillBmpPosItem );
1451 0 : bModified = true;
1452 0 : }
1453 : }
1454 : }
1455 :
1456 : //aMtrFldXOffset
1457 0 : if( m_pMtrFldXOffset->IsEnabled() )
1458 : {
1459 0 : OUString sMtrXOffset = m_pMtrFldXOffset->GetText();
1460 0 : if( !sMtrXOffset.isEmpty() &&
1461 0 : m_pMtrFldXOffset->IsValueChangedFromSaved() )
1462 : {
1463 0 : XFillBmpPosOffsetXItem aFillBmpPosOffsetXItem( (sal_uInt16) m_pMtrFldXOffset->GetValue() );
1464 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLBMP_POSOFFSETX );
1465 0 : if ( !pOld || !( *static_cast<const XFillBmpPosOffsetXItem*>(pOld) == aFillBmpPosOffsetXItem ) )
1466 : {
1467 0 : rAttrs->Put( aFillBmpPosOffsetXItem );
1468 0 : bModified = true;
1469 0 : }
1470 0 : }
1471 : }
1472 :
1473 : //aMtrFldYOffset
1474 0 : if( m_pMtrFldYOffset->IsEnabled() )
1475 : {
1476 0 : OUString sMtrYOffset = m_pMtrFldYOffset->GetText();
1477 0 : if( !sMtrYOffset.isEmpty() &&
1478 0 : m_pMtrFldYOffset->IsValueChangedFromSaved() )
1479 : {
1480 0 : XFillBmpPosOffsetYItem aFillBmpPosOffsetYItem( (sal_uInt16) m_pMtrFldYOffset->GetValue() );
1481 0 : pOld = GetOldItem( *rAttrs, XATTR_FILLBMP_POSOFFSETY );
1482 0 : if ( !pOld || !( *static_cast<const XFillBmpPosOffsetYItem*>(pOld) == aFillBmpPosOffsetYItem ) )
1483 : {
1484 0 : rAttrs->Put( aFillBmpPosOffsetYItem );
1485 0 : bModified = true;
1486 0 : }
1487 0 : }
1488 : }
1489 0 : rAttrs->Put (SfxUInt16Item(SID_PAGE_TYPE,nPageType));
1490 0 : rAttrs->Put (SfxUInt16Item(SID_TABPAGE_POS,nPos));
1491 : }
1492 :
1493 0 : return bModified;
1494 : }
1495 :
1496 :
1497 :
1498 0 : void SvxAreaTabPage::Reset( const SfxItemSet* rAttrs )
1499 : {
1500 0 : bool isMissingHatching(false);
1501 0 : bool isMissingGradient(false);
1502 0 : bool isMissingBitmap(false);
1503 : drawing::FillStyle eXFS;
1504 0 : if( rAttrs->GetItemState( XATTR_FILLSTYLE ) != SfxItemState::DONTCARE )
1505 : {
1506 : eXFS = (drawing::FillStyle) ( static_cast<const XFillStyleItem&>( rAttrs->
1507 0 : Get( GetWhich( XATTR_FILLSTYLE ) ) ).GetValue() );
1508 0 : m_pTypeLB->SelectEntryPos( sal::static_int_cast< sal_Int32 >( eXFS ) );
1509 :
1510 0 : if (SfxItemState::DONTCARE != rAttrs->GetItemState(XATTR_FILLCOLOR))
1511 : {
1512 : XFillColorItem const& rColorItem(static_cast<const XFillColorItem&>(
1513 0 : rAttrs->Get(XATTR_FILLCOLOR)) );
1514 0 : m_pLbColor->SelectEntry( rColorItem.GetColorValue() );
1515 0 : m_pLbHatchBckgrdColor->SelectEntry( rColorItem.GetColorValue() );
1516 : }
1517 :
1518 0 : SfxItemState const eGradState(rAttrs->GetItemState(XATTR_FILLGRADIENT));
1519 0 : XFillGradientItem const* pGradientItem(nullptr);
1520 0 : if (SfxItemState::DONTCARE != eGradState)
1521 : {
1522 : pGradientItem = &static_cast<const XFillGradientItem&>(
1523 0 : rAttrs->Get(XATTR_FILLGRADIENT));
1524 0 : OUString const aString( pGradientItem->GetName() );
1525 0 : XGradient const aGradient( pGradientItem->GetGradientValue() );
1526 0 : m_pLbGradient->SelectEntryByList(pGradientList, aString, aGradient);
1527 : }
1528 0 : if (!m_pLbGradient->GetSelectEntryCount()
1529 0 : && (SfxItemState::DEFAULT == eGradState
1530 0 : || (pGradientItem && pGradientItem->GetName().isEmpty())))
1531 : { // avoid relying on pool default - cannot export that
1532 0 : m_pLbGradient->SelectEntryPos(0); // anything better than nothing
1533 0 : isMissingGradient = true;
1534 : }
1535 :
1536 0 : SfxItemState const eHatchState(rAttrs->GetItemState(XATTR_FILLHATCH));
1537 0 : XFillHatchItem const* pHatch(nullptr);
1538 0 : if (SfxItemState::DONTCARE != eHatchState)
1539 : {
1540 : pHatch = &static_cast<const XFillHatchItem&>(
1541 0 : rAttrs->Get(XATTR_FILLHATCH));
1542 0 : m_pLbHatching->SelectEntry(pHatch->GetName());
1543 : }
1544 0 : if (!m_pLbHatching->GetSelectEntryCount()
1545 0 : && (SfxItemState::DEFAULT == eHatchState
1546 0 : || (pHatch && pHatch->GetName().isEmpty())))
1547 : { // avoid relying on pool default - cannot export that
1548 0 : m_pLbHatching->SelectEntryPos(0); // anything better than nothing
1549 0 : isMissingHatching = true;
1550 : }
1551 0 : if (SfxItemState::DONTCARE != rAttrs->GetItemState(XATTR_FILLBACKGROUND))
1552 : {
1553 : m_pCbxHatchBckgrd->Check( static_cast<const XFillBackgroundItem&>(
1554 0 : rAttrs->Get(XATTR_FILLBACKGROUND)).GetValue() );
1555 : }
1556 :
1557 0 : SfxItemState const eBitmapState(rAttrs->GetItemState(XATTR_FILLBITMAP));
1558 0 : XFillBitmapItem const* pBitmapItem(nullptr);
1559 0 : if (SfxItemState::DONTCARE != eBitmapState)
1560 : {
1561 : pBitmapItem = &static_cast<const XFillBitmapItem&>(
1562 0 : rAttrs->Get(XATTR_FILLBITMAP));
1563 0 : m_pLbBitmap->SelectEntry(pBitmapItem->GetName());
1564 : }
1565 0 : if (!m_pLbBitmap->GetSelectEntryCount()
1566 0 : && (SfxItemState::DEFAULT == eBitmapState
1567 0 : || (pBitmapItem && pBitmapItem->GetName().isEmpty())))
1568 : { // avoid relying on pool default - cannot export that
1569 0 : m_pLbBitmap->SelectEntryPos(0); // anything better than nothing
1570 0 : isMissingBitmap = true;
1571 : }
1572 :
1573 0 : switch( eXFS )
1574 : {
1575 : case drawing::FillStyle_NONE:
1576 0 : ClickInvisibleHdl_Impl();
1577 0 : break;
1578 :
1579 : case drawing::FillStyle_SOLID:
1580 0 : ClickColorHdl_Impl();
1581 0 : break;
1582 :
1583 : case drawing::FillStyle_GRADIENT:
1584 0 : ClickGradientHdl_Impl();
1585 0 : break;
1586 :
1587 : case drawing::FillStyle_HATCH:
1588 0 : ClickHatchingHdl_Impl();
1589 0 : ToggleHatchBckgrdColorHdl_Impl( this );
1590 0 : break;
1591 :
1592 : case drawing::FillStyle_BITMAP:
1593 : {
1594 0 : ClickBitmapHdl_Impl();
1595 : }
1596 0 : break;
1597 :
1598 : default:
1599 : assert(false);
1600 0 : break;
1601 : }
1602 : }
1603 : else
1604 : {
1605 : // make all LBs not accessible
1606 0 : m_pFillLB->Hide();
1607 :
1608 0 : m_pCtlBitmapPreview->Hide();
1609 0 : m_pLbColor->Disable();
1610 0 : m_pLbColor->Show();
1611 :
1612 : // so that Reset() also works correctly with Back
1613 0 : m_pTypeLB->SetNoSelection();
1614 : }
1615 :
1616 : // step size
1617 0 : if( ( rAttrs->GetItemState( XATTR_GRADIENTSTEPCOUNT ) != SfxItemState::DONTCARE ) ||
1618 0 : ( rAttrs->GetItemState( XATTR_FILLSTYLE ) != SfxItemState::DONTCARE ) )
1619 : {
1620 0 : m_pTsbStepCount->EnableTriState( false );
1621 0 : sal_uInt16 nValue = static_cast<const XGradientStepCountItem&>( rAttrs->Get( XATTR_GRADIENTSTEPCOUNT ) ).GetValue();
1622 0 : if( nValue == 0 )
1623 : {
1624 0 : m_pTsbStepCount->SetState( TRISTATE_TRUE );
1625 0 : m_pNumFldStepCount->SetText( "" );
1626 : }
1627 : else
1628 : {
1629 0 : m_pTsbStepCount->SetState( TRISTATE_FALSE );
1630 0 : m_pNumFldStepCount->SetValue( nValue );
1631 : }
1632 0 : ModifyStepCountHdl_Impl( m_pTsbStepCount );
1633 : }
1634 : else
1635 : {
1636 0 : m_pTsbStepCount->SetState( TRISTATE_INDET );
1637 0 : m_pNumFldStepCount->SetText( "" );
1638 : }
1639 :
1640 : // attributes for the bitmap filling
1641 :
1642 0 : if( rAttrs->GetItemState( XATTR_FILLBMP_TILE ) != SfxItemState::DONTCARE )
1643 : {
1644 0 : m_pTsbTile->EnableTriState( false );
1645 :
1646 0 : if( static_cast<const XFillBmpTileItem&>( rAttrs->Get( XATTR_FILLBMP_TILE ) ).GetValue() )
1647 0 : m_pTsbTile->SetState( TRISTATE_TRUE );
1648 : else
1649 0 : m_pTsbTile->SetState( TRISTATE_FALSE );
1650 : }
1651 : else
1652 0 : m_pTsbTile->SetState( TRISTATE_INDET );
1653 :
1654 0 : if( rAttrs->GetItemState( XATTR_FILLBMP_STRETCH ) != SfxItemState::DONTCARE )
1655 : {
1656 0 : m_pTsbStretch->EnableTriState( false );
1657 :
1658 0 : if( static_cast<const XFillBmpStretchItem&>( rAttrs->Get( XATTR_FILLBMP_STRETCH ) ).GetValue() )
1659 0 : m_pTsbStretch->SetState( TRISTATE_TRUE );
1660 : else
1661 0 : m_pTsbStretch->SetState( TRISTATE_FALSE );
1662 : }
1663 : else
1664 0 : m_pTsbStretch->SetState( TRISTATE_INDET );
1665 :
1666 :
1667 : //aTsbScale
1668 0 : if( rAttrs->GetItemState( XATTR_FILLBMP_SIZELOG ) != SfxItemState::DONTCARE )
1669 : {
1670 0 : m_pTsbScale->EnableTriState( false );
1671 :
1672 0 : if( static_cast<const XFillBmpSizeLogItem&>( rAttrs->Get( XATTR_FILLBMP_SIZELOG ) ).GetValue() )
1673 0 : m_pTsbScale->SetState( TRISTATE_FALSE );
1674 : else
1675 0 : m_pTsbScale->SetState( TRISTATE_TRUE );
1676 :
1677 0 : ClickScaleHdl_Impl( NULL );
1678 : }
1679 : else
1680 0 : m_pTsbScale->SetState( TRISTATE_INDET );
1681 :
1682 :
1683 : // determine status for the original size
1684 0 : TriState eOriginal = TRISTATE_FALSE;
1685 :
1686 : //aMtrFldXSize
1687 0 : if( rAttrs->GetItemState( XATTR_FILLBMP_SIZEX ) != SfxItemState::DONTCARE )
1688 : {
1689 0 : sal_Int32 nValue = static_cast<const XFillBmpSizeXItem&>( rAttrs->Get( XATTR_FILLBMP_SIZEX ) ).GetValue();
1690 0 : if( m_pTsbScale->GetState() == TRISTATE_TRUE )
1691 : {
1692 : // If there's a percentage value in the item,
1693 : // it is negative because of the MetricItems.
1694 0 : m_pMtrFldXSize->SetValue( labs( nValue ) );
1695 : }
1696 : else
1697 0 : SetMetricValue( *m_pMtrFldXSize, nValue, ePoolUnit );
1698 0 : m_pMtrFldXSize->SaveValue();
1699 :
1700 0 : if( nValue == 0 )
1701 : {
1702 0 : eOriginal = TRISTATE_TRUE;
1703 : // value would be too small otherwise when turning off the original size
1704 : // (performance problem)
1705 0 : m_pMtrFldXSize->SetValue( 100 );
1706 : }
1707 : }
1708 : else
1709 : {
1710 0 : m_pMtrFldXSize->SetText( "" );
1711 0 : m_pMtrFldXSize->SaveValue();
1712 : }
1713 :
1714 : //aMtrFldYSize
1715 0 : if( rAttrs->GetItemState( XATTR_FILLBMP_SIZEY ) != SfxItemState::DONTCARE )
1716 : {
1717 0 : sal_Int32 nValue = static_cast<const XFillBmpSizeYItem&>( rAttrs->Get( XATTR_FILLBMP_SIZEY ) ).GetValue();
1718 0 : if( m_pTsbScale->GetState() == TRISTATE_TRUE )
1719 : {
1720 : // If there's a percentage value in the item,
1721 : // it is negative because of the MetricItems.
1722 0 : m_pMtrFldYSize->SetValue( labs( nValue ) );
1723 : }
1724 : else
1725 0 : SetMetricValue( *m_pMtrFldYSize, nValue, ePoolUnit );
1726 0 : m_pMtrFldYSize->SaveValue();
1727 :
1728 0 : if( nValue == 0 )
1729 0 : m_pMtrFldYSize->SetValue( 100 ); //s.o.
1730 : else
1731 0 : eOriginal = TRISTATE_FALSE;
1732 : }
1733 : else
1734 : {
1735 0 : m_pMtrFldYSize->SetText( "" );
1736 0 : m_pMtrFldYSize->SaveValue();
1737 0 : eOriginal = TRISTATE_FALSE;
1738 : }
1739 :
1740 : // aTsbOriginal
1741 0 : m_pTsbOriginal->SetState( eOriginal );
1742 :
1743 : // #93372# Setting proper state after changing button
1744 0 : ModifyTileHdl_Impl( NULL );
1745 :
1746 : //aRbtRow
1747 : //aRbtColumn
1748 : //aMtrFldOffset
1749 0 : if( rAttrs->GetItemState( XATTR_FILLBMP_TILEOFFSETX ) != SfxItemState::DONTCARE )
1750 : {
1751 0 : sal_uInt16 nValue = static_cast<const XFillBmpTileOffsetXItem&>( rAttrs->Get( XATTR_FILLBMP_TILEOFFSETX ) ).GetValue();
1752 0 : if( nValue > 0 )
1753 : {
1754 0 : m_pMtrFldOffset->SetValue( nValue );
1755 0 : m_pRbtRow->Check();
1756 : }
1757 0 : else if( rAttrs->GetItemState( XATTR_FILLBMP_TILEOFFSETY ) != SfxItemState::DONTCARE )
1758 : {
1759 0 : nValue = static_cast<const XFillBmpTileOffsetYItem&>( rAttrs->Get( XATTR_FILLBMP_TILEOFFSETY ) ).GetValue();
1760 0 : if( nValue > 0 )
1761 : {
1762 0 : m_pMtrFldOffset->SetValue( nValue );
1763 0 : m_pRbtColumn->Check();
1764 : }
1765 : }
1766 : else
1767 0 : m_pMtrFldOffset->SetValue( 0 );
1768 : }
1769 : else
1770 0 : m_pMtrFldOffset->SetText( "" );
1771 :
1772 :
1773 : //aCtlPosition
1774 0 : if( rAttrs->GetItemState( XATTR_FILLBMP_POS ) != SfxItemState::DONTCARE )
1775 : {
1776 0 : RECT_POINT eValue = static_cast<const XFillBmpPosItem&>( rAttrs->Get( XATTR_FILLBMP_POS ) ).GetValue();
1777 0 : m_pCtlPosition->SetActualRP( eValue );
1778 : }
1779 : else
1780 0 : m_pCtlPosition->Reset();
1781 :
1782 : //aMtrFldXOffset
1783 0 : if( rAttrs->GetItemState( XATTR_FILLBMP_POSOFFSETX ) != SfxItemState::DONTCARE )
1784 : {
1785 0 : sal_Int32 nValue = static_cast<const XFillBmpPosOffsetXItem&>( rAttrs->Get( XATTR_FILLBMP_POSOFFSETX ) ).GetValue();
1786 0 : m_pMtrFldXOffset->SetValue( nValue );
1787 : }
1788 : else
1789 0 : m_pMtrFldXOffset->SetText( "" );
1790 :
1791 : //aMtrFldYOffset
1792 0 : if( rAttrs->GetItemState( XATTR_FILLBMP_POSOFFSETY ) != SfxItemState::DONTCARE )
1793 : {
1794 0 : sal_Int32 nValue = static_cast<const XFillBmpPosOffsetYItem&>( rAttrs->Get( XATTR_FILLBMP_POSOFFSETY ) ).GetValue();
1795 0 : m_pMtrFldYOffset->SetValue( nValue );
1796 : }
1797 : else
1798 0 : m_pMtrFldYOffset->SetText( "" );
1799 :
1800 : // not earlier so that tile and stretch are considered
1801 0 : if( m_pTypeLB->GetSelectEntryPos() == drawing::FillStyle_BITMAP )
1802 0 : ClickBitmapHdl_Impl();
1803 :
1804 0 : m_pTypeLB->SaveValue();
1805 0 : m_pLbColor->SaveValue();
1806 0 : if (!isMissingGradient)
1807 0 : m_pLbGradient->SaveValue();
1808 0 : if (!isMissingHatching)
1809 0 : m_pLbHatching->SaveValue();
1810 0 : m_pLbHatchBckgrdColor->SaveValue();
1811 0 : if (!isMissingBitmap)
1812 0 : m_pLbBitmap->SaveValue();
1813 0 : m_pTsbStepCount->SaveValue();
1814 0 : m_pNumFldStepCount->SaveValue();
1815 0 : m_pTsbTile->SaveValue();
1816 0 : m_pTsbStretch->SaveValue();
1817 0 : m_pTsbScale->SaveValue();
1818 0 : m_pRbtRow->SaveValue();
1819 0 : m_pRbtColumn->SaveValue();
1820 0 : m_pMtrFldOffset->SaveValue();
1821 0 : m_pMtrFldXOffset->SaveValue();
1822 0 : m_pMtrFldYOffset->SaveValue();
1823 0 : }
1824 :
1825 :
1826 :
1827 0 : VclPtr<SfxTabPage> SvxAreaTabPage::Create( vcl::Window* pWindow,
1828 : const SfxItemSet* rAttrs )
1829 : {
1830 0 : return VclPtr<SvxAreaTabPage>::Create( pWindow, *rAttrs );
1831 : }
1832 :
1833 :
1834 :
1835 0 : IMPL_LINK_NOARG(SvxAreaTabPage, SelectDialogTypeHdl_Impl)
1836 : {
1837 0 : switch( (drawing::FillStyle)m_pTypeLB->GetSelectEntryPos() )
1838 : {
1839 : default:
1840 0 : case drawing::FillStyle_NONE: ClickInvisibleHdl_Impl(); break;
1841 0 : case drawing::FillStyle_SOLID: ClickColorHdl_Impl(); break;
1842 0 : case drawing::FillStyle_GRADIENT: ClickGradientHdl_Impl(); break;
1843 0 : case drawing::FillStyle_HATCH: ClickHatchingHdl_Impl(); break;
1844 0 : case drawing::FillStyle_BITMAP: ClickBitmapHdl_Impl(); break;
1845 : }
1846 :
1847 0 : return 0;
1848 : }
1849 :
1850 0 : void SvxAreaTabPage::ClickInvisibleHdl_Impl()
1851 : {
1852 0 : m_pBxBitmap->Hide();
1853 :
1854 0 : m_pFillLB->Hide();
1855 :
1856 0 : m_pCtlXRectPreview->Hide();
1857 0 : m_pCtlBitmapPreview->Hide();
1858 :
1859 0 : m_pFlStepCount->Hide();
1860 :
1861 : // Controls for Hatch-Background
1862 0 : m_pFlHatchBckgrd->Hide();
1863 :
1864 0 : rXFSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) );
1865 0 : m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
1866 0 : m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
1867 :
1868 0 : m_pCtlXRectPreview->Invalidate();
1869 0 : m_pCtlBitmapPreview->Invalidate();
1870 0 : }
1871 :
1872 :
1873 :
1874 0 : void SvxAreaTabPage::ClickColorHdl_Impl()
1875 : {
1876 0 : m_pBxBitmap->Hide();
1877 :
1878 0 : m_pFillLB->Show();
1879 0 : m_pLbColor->Enable();
1880 0 : m_pLbColor->Show();
1881 0 : m_pLbGradient->Hide();
1882 0 : m_pLbHatching->Hide();
1883 0 : m_pLbBitmap->Hide();
1884 0 : m_pCtlXRectPreview->Enable();
1885 0 : m_pCtlXRectPreview->Show();
1886 0 : m_pCtlBitmapPreview->Hide();
1887 :
1888 0 : m_pFlStepCount->Hide();
1889 :
1890 : // Controls for Hatch-Background
1891 0 : m_pFlHatchBckgrd->Hide();
1892 :
1893 0 : ModifyColorHdl_Impl( this );
1894 0 : }
1895 :
1896 :
1897 :
1898 0 : IMPL_LINK_NOARG(SvxAreaTabPage, ModifyColorHdl_Impl)
1899 : {
1900 0 : const SfxPoolItem* pPoolItem = NULL;
1901 0 : sal_Int32 _nPos = m_pLbColor->GetSelectEntryPos();
1902 0 : m_pLbHatchBckgrdColor->SelectEntryPos( _nPos );
1903 0 : if( _nPos != LISTBOX_ENTRY_NOTFOUND )
1904 : {
1905 0 : rXFSet.Put( XFillStyleItem( drawing::FillStyle_SOLID ) );
1906 0 : rXFSet.Put( XFillColorItem( OUString(), m_pLbColor->GetSelectEntryColor() ) );
1907 : }
1908 : // NEW
1909 0 : else if( SfxItemState::SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), true, &pPoolItem ) )
1910 : {
1911 0 : rXFSet.Put( XFillStyleItem( drawing::FillStyle_SOLID ) );
1912 0 : Color aColor( static_cast<const XFillColorItem*>( pPoolItem )->GetColorValue() );
1913 0 : rXFSet.Put( XFillColorItem( OUString(), aColor ) );
1914 : }
1915 : else
1916 0 : rXFSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) );
1917 :
1918 0 : m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
1919 0 : m_pCtlXRectPreview->Invalidate();
1920 :
1921 0 : return 0L;
1922 : }
1923 :
1924 :
1925 0 : void SvxAreaTabPage::ClickGradientHdl_Impl()
1926 : {
1927 0 : m_pBxBitmap->Hide();
1928 :
1929 0 : m_pFillLB->Show();
1930 0 : m_pLbColor->Hide();
1931 0 : m_pLbGradient->Enable();
1932 0 : m_pLbGradient->Show();
1933 0 : m_pLbHatching->Hide();
1934 0 : m_pLbBitmap->Hide();
1935 0 : m_pCtlXRectPreview->Enable();
1936 0 : m_pCtlXRectPreview->Show();
1937 0 : m_pCtlBitmapPreview->Hide();
1938 :
1939 0 : m_pFlStepCount->Enable();
1940 0 : m_pFlStepCount->Show();
1941 0 : m_pTsbStepCount->Enable();
1942 0 : m_pTsbStepCount->Show();
1943 0 : m_pNumFldStepCount->Show();
1944 :
1945 : // Controls for Hatch-Background
1946 0 : m_pFlHatchBckgrd->Hide();
1947 :
1948 0 : ModifyGradientHdl_Impl( this );
1949 0 : ModifyStepCountHdl_Impl( m_pTsbStepCount );
1950 0 : }
1951 :
1952 :
1953 :
1954 0 : IMPL_LINK_NOARG(SvxAreaTabPage, ModifyGradientHdl_Impl)
1955 : {
1956 0 : const SfxPoolItem* pPoolItem = NULL;
1957 0 : sal_Int32 _nPos = m_pLbGradient->GetSelectEntryPos();
1958 0 : if( _nPos != LISTBOX_ENTRY_NOTFOUND )
1959 : {
1960 : // fill ItemSet and pass it on to aCtlXRectPreview
1961 0 : XGradientEntry* pEntry = pGradientList->GetGradient( _nPos );
1962 :
1963 0 : rXFSet.Put( XFillStyleItem( drawing::FillStyle_GRADIENT ) );
1964 0 : rXFSet.Put( XFillGradientItem( OUString(), pEntry->GetGradient() ) );
1965 : }
1966 0 : else if( SfxItemState::SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLGRADIENT ), true, &pPoolItem ) )
1967 : {
1968 0 : rXFSet.Put( XFillStyleItem( drawing::FillStyle_GRADIENT ) );
1969 0 : rXFSet.Put( XFillGradientItem( OUString(), static_cast<const XFillGradientItem*>( pPoolItem )->GetGradientValue() ) );
1970 : }
1971 : else
1972 0 : rXFSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) );
1973 :
1974 0 : m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
1975 0 : m_pCtlXRectPreview->Invalidate();
1976 :
1977 0 : return 0L;
1978 : }
1979 :
1980 :
1981 :
1982 0 : void SvxAreaTabPage::ClickHatchingHdl_Impl()
1983 : {
1984 0 : m_pFillLB->Show();
1985 0 : m_pLbColor->Hide();
1986 0 : m_pLbGradient->Hide();
1987 0 : m_pLbHatching->Enable();
1988 0 : m_pLbHatching->Show();
1989 0 : m_pLbBitmap->Hide();
1990 0 : m_pCtlXRectPreview->Enable();
1991 0 : m_pCtlXRectPreview->Show();
1992 0 : m_pCtlBitmapPreview->Hide();
1993 :
1994 0 : m_pFlStepCount->Hide();
1995 :
1996 0 : m_pBxBitmap->Hide();
1997 :
1998 : // Controls for Hatch-Background
1999 0 : m_pFlHatchBckgrd->Show();
2000 0 : m_pCbxHatchBckgrd->Enable();
2001 0 : m_pLbHatchBckgrdColor->Enable();
2002 :
2003 0 : ModifyHatchingHdl_Impl( this );
2004 0 : ModifyHatchBckgrdColorHdl_Impl( this );
2005 0 : ToggleHatchBckgrdColorHdl_Impl( this );
2006 0 : }
2007 :
2008 :
2009 :
2010 0 : IMPL_LINK_NOARG(SvxAreaTabPage, ModifyHatchingHdl_Impl)
2011 : {
2012 0 : const SfxPoolItem* pPoolItem = NULL;
2013 0 : sal_Int32 _nPos = m_pLbHatching->GetSelectEntryPos();
2014 0 : if( _nPos != LISTBOX_ENTRY_NOTFOUND )
2015 : {
2016 : // fill ItemSet and pass it on to aCtlXRectPreview
2017 0 : XHatchEntry* pEntry = pHatchingList->GetHatch( _nPos );
2018 :
2019 0 : rXFSet.Put( XFillStyleItem( drawing::FillStyle_HATCH ) );
2020 0 : rXFSet.Put( XFillHatchItem( OUString(), pEntry->GetHatch() ) );
2021 : }
2022 0 : else if( SfxItemState::SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLHATCH ), true, &pPoolItem ) )
2023 : {
2024 0 : rXFSet.Put( XFillStyleItem( drawing::FillStyle_HATCH ) );
2025 0 : rXFSet.Put( XFillHatchItem( OUString(), static_cast<const XFillHatchItem*>( pPoolItem )->GetHatchValue() ) );
2026 : }
2027 : else
2028 0 : rXFSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) );
2029 :
2030 0 : m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
2031 0 : m_pCtlXRectPreview->Invalidate();
2032 :
2033 0 : return 0L;
2034 : }
2035 :
2036 :
2037 :
2038 0 : IMPL_LINK_NOARG(SvxAreaTabPage, ModifyHatchBckgrdColorHdl_Impl)
2039 : {
2040 0 : const SfxPoolItem* pPoolItem = NULL;
2041 0 : sal_Int32 _nPos = m_pLbHatchBckgrdColor->GetSelectEntryPos();
2042 0 : m_pLbColor->SelectEntryPos( _nPos );
2043 0 : if( _nPos != LISTBOX_ENTRY_NOTFOUND )
2044 : {
2045 0 : rXFSet.Put( XFillColorItem( OUString(), m_pLbHatchBckgrdColor->GetSelectEntryColor() ) );
2046 : }
2047 0 : else if( SfxItemState::SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), true, &pPoolItem ) )
2048 : {
2049 0 : Color aColor( static_cast<const XFillColorItem*>( pPoolItem )->GetColorValue() );
2050 0 : rXFSet.Put( XFillColorItem( OUString(), aColor ) );
2051 : }
2052 : else
2053 0 : rXFSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) );
2054 :
2055 0 : m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
2056 0 : m_pCtlXRectPreview->Invalidate();
2057 :
2058 0 : return 0L;
2059 : }
2060 :
2061 :
2062 :
2063 0 : IMPL_LINK_NOARG(SvxAreaTabPage, ToggleHatchBckgrdColorHdl_Impl)
2064 : {
2065 : // switch on/off backgroundcolor for hatches
2066 0 : m_pLbHatchBckgrdColor->Enable( m_pCbxHatchBckgrd->IsChecked() );
2067 :
2068 0 : XFillBackgroundItem aItem( m_pCbxHatchBckgrd->IsChecked() );
2069 0 : rXFSet.Put ( aItem, XATTR_FILLBACKGROUND );
2070 :
2071 0 : m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
2072 0 : m_pCtlXRectPreview->Invalidate();
2073 :
2074 0 : if( m_pLbHatchBckgrdColor->GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND )
2075 : {
2076 0 : if ( SfxItemState::SET == rOutAttrs.GetItemState( XATTR_FILLCOLOR ) )//>= SfxItemState::DEFAULT )
2077 : {
2078 0 : XFillColorItem aColorItem( static_cast<const XFillColorItem&>(rOutAttrs.Get( XATTR_FILLCOLOR )) );
2079 0 : m_pLbHatchBckgrdColor->SelectEntry( aColorItem.GetColorValue() );
2080 : }
2081 : }
2082 :
2083 0 : return 0L;
2084 : }
2085 :
2086 :
2087 :
2088 0 : void SvxAreaTabPage::ClickBitmapHdl_Impl()
2089 : {
2090 0 : m_pFillLB->Show();
2091 0 : m_pLbColor->Hide();
2092 0 : m_pLbGradient->Hide();
2093 0 : m_pLbHatching->Hide();
2094 :
2095 : //UUUU
2096 0 : if(mbOfferImportButton)
2097 : {
2098 0 : m_pBtnImport->Show();
2099 0 : m_pBtnImport->Enable();
2100 : }
2101 : else
2102 : {
2103 0 : m_pBtnImport->Hide();
2104 0 : m_pBtnImport->Disable();
2105 : }
2106 :
2107 0 : m_pLbBitmap->Enable();
2108 0 : m_pLbBitmap->Show();
2109 0 : m_pCtlBitmapPreview->Enable();
2110 0 : m_pCtlBitmapPreview->Show();
2111 0 : m_pCtlXRectPreview->Hide();
2112 :
2113 0 : m_pFlStepCount->Hide();
2114 :
2115 0 : m_pBxTile->Enable();
2116 :
2117 0 : m_pFlSize->Enable();
2118 0 : m_pFlPosition->Enable();
2119 0 : m_pFlOffset->Enable();
2120 :
2121 0 : if (!m_pRbtRow->IsChecked() && !m_pRbtColumn->IsChecked())
2122 0 : m_pRbtRow->Check();
2123 :
2124 : // Controls for Hatch-Background
2125 0 : m_pFlHatchBckgrd->Hide();
2126 :
2127 0 : m_pBxBitmap->Show();
2128 :
2129 0 : ModifyBitmapHdl_Impl( this );
2130 0 : ModifyTileHdl_Impl( m_pTsbOriginal );
2131 0 : }
2132 :
2133 :
2134 :
2135 0 : IMPL_LINK_NOARG(SvxAreaTabPage, ModifyBitmapHdl_Impl)
2136 : {
2137 : //UUUU
2138 0 : mbDirectGraphicSet = false;
2139 0 : maDirectGraphic.Clear();
2140 0 : maDirectName.clear();
2141 :
2142 0 : const SfxPoolItem* pPoolItem = NULL;
2143 0 : sal_Int32 _nPos = m_pLbBitmap->GetSelectEntryPos();
2144 0 : if( _nPos != LISTBOX_ENTRY_NOTFOUND )
2145 : {
2146 : // fill ItemSet and pass it on to aCtlXRectPreview
2147 0 : const XBitmapEntry* pEntry = pBitmapList->GetBitmap(_nPos);
2148 :
2149 0 : rXFSet.Put(XFillStyleItem(drawing::FillStyle_BITMAP));
2150 0 : rXFSet.Put(XFillBitmapItem(OUString(), pEntry->GetGraphicObject()));
2151 : }
2152 0 : else if( SfxItemState::SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLBITMAP ), true, &pPoolItem ) )
2153 : {
2154 0 : rXFSet.Put(XFillStyleItem(drawing::FillStyle_BITMAP));
2155 0 : rXFSet.Put(XFillBitmapItem(OUString(), static_cast<const XFillBitmapItem*>(pPoolItem)->GetGraphicObject()));
2156 : }
2157 : else
2158 0 : rXFSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) );
2159 :
2160 0 : m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
2161 0 : m_pCtlBitmapPreview->Invalidate();
2162 :
2163 0 : return 0L;
2164 : }
2165 :
2166 :
2167 :
2168 0 : IMPL_LINK( SvxAreaTabPage, ModifyStepCountHdl_Impl, void *, p )
2169 : {
2170 0 : if( p == m_pTsbStepCount )
2171 : {
2172 0 : if( m_pTsbStepCount->GetState() == TRISTATE_FALSE )
2173 : {
2174 0 : if( m_pNumFldStepCount->GetText().isEmpty() )
2175 0 : m_pNumFldStepCount->SetText("64");
2176 :
2177 0 : m_pNumFldStepCount->Enable();
2178 : }
2179 : else
2180 0 : m_pNumFldStepCount->Disable();
2181 : }
2182 :
2183 0 : sal_uInt16 nValue = 0;
2184 0 : if( m_pTsbStepCount->GetState() != TRISTATE_TRUE )
2185 : {
2186 : // condition != Disabled ?
2187 0 : if( !m_pNumFldStepCount->GetText().isEmpty() )
2188 0 : nValue = (sal_uInt16) m_pNumFldStepCount->GetValue();
2189 : }
2190 0 : rXFSet.Put( XGradientStepCountItem( nValue ) );
2191 0 : m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
2192 0 : m_pCtlXRectPreview->Invalidate();
2193 :
2194 0 : return 0L;
2195 : }
2196 :
2197 0 : IMPL_LINK_NOARG( SvxAreaTabPage, ClickImportHdl_Impl )
2198 : {
2199 0 : ResMgr& rMgr = CUI_MGR();
2200 0 : SvxOpenGraphicDialog aDlg("Import");
2201 0 : aDlg.EnableLink(false);
2202 :
2203 0 : if(!aDlg.Execute())
2204 : {
2205 0 : EnterWait();
2206 0 : const int nError(aDlg.GetGraphic(maDirectGraphic));
2207 0 : LeaveWait();
2208 :
2209 0 : if(!nError && GRAPHIC_NONE != maDirectGraphic.GetType())
2210 : {
2211 : // extract name from filename
2212 0 : const INetURLObject aURL(aDlg.GetPath());
2213 0 : maDirectName = aURL.GetName().getToken( 0, '.' );
2214 :
2215 : // use loaded graphic
2216 0 : const XFillBitmapItem aXBmpItem(maDirectName, maDirectGraphic);
2217 0 : rXFSet.Put(XFillStyleItem(drawing::FillStyle_BITMAP));
2218 0 : rXFSet.Put(aXBmpItem);
2219 :
2220 : // trigger state flag for directly loaded graphic
2221 0 : mbDirectGraphicSet = true;
2222 :
2223 : // preview
2224 0 : m_pCtlBitmapPreview->SetAttributes(aXFillAttr.GetItemSet());
2225 0 : m_pCtlBitmapPreview->Invalidate();
2226 : }
2227 : else
2228 : {
2229 : // graphic could not be loaded
2230 0 : ScopedVclPtrInstance<MessageDialog>::Create (this, OUString(ResId(RID_SVXSTR_READ_DATA_ERROR, rMgr)))->Execute();
2231 : }
2232 : }
2233 :
2234 0 : return 0L;
2235 : }
2236 :
2237 : //------------------------------------------------------------------------
2238 :
2239 0 : IMPL_LINK_NOARG(SvxAreaTabPage, ModifyTileHdl_Impl)
2240 : {
2241 0 : TriState eState = m_pTsbTile->GetState();
2242 0 : if( eState == TRISTATE_TRUE )
2243 : {
2244 : // tiled
2245 : // disable stretched for tiled graphic
2246 0 : m_pTsbStretch->Disable();
2247 0 : m_pFlOffset->Enable();
2248 :
2249 : // allow positioning
2250 0 : m_pCtlPosition->Invalidate();
2251 : // allow 'Position" title
2252 0 : m_pFlPosition->Enable();
2253 :
2254 : // allow size definitions
2255 0 : m_pFlSize->Enable();
2256 : }
2257 0 : else if( eState == TRISTATE_FALSE )
2258 : {
2259 : // non-tiled
2260 : // enable stretch selection
2261 0 : m_pTsbStretch->Enable();
2262 : // no need for offsets, only position is supported in non-tiled
2263 0 : m_pFlOffset->Disable();
2264 :
2265 0 : if( m_pTsbStretch->GetState() != TRISTATE_FALSE )
2266 : {
2267 : // non-tiled, stretched
2268 : // no need for positioning
2269 0 : m_pCtlPosition->Invalidate();
2270 : // no need for 'Position" title, all deactivated
2271 0 : m_pFlPosition->Disable();
2272 :
2273 : // no need for size definitions
2274 0 : m_pFlSize->Disable();
2275 : }
2276 : else
2277 : {
2278 : // non-tiled, non-stretched
2279 : // allow positioning
2280 0 : m_pCtlPosition->Enable();
2281 0 : m_pCtlPosition->Invalidate();
2282 : // allow 'Position" title, positioning is active
2283 0 : m_pFlPosition->Enable();
2284 0 : m_pFlSize->Enable();
2285 : }
2286 : }
2287 : else
2288 : {
2289 : // disable all when tiling is undefined
2290 0 : m_pTsbStretch->Disable();
2291 0 : m_pFlOffset->Disable();
2292 :
2293 0 : m_pCtlPosition->Invalidate();
2294 0 : m_pFlPosition->Disable();
2295 :
2296 0 : m_pFlSize->Disable();
2297 : }
2298 :
2299 0 : if( m_pTsbOriginal->GetState() == TRISTATE_TRUE )
2300 : {
2301 0 : m_pMtrFldXSize->SetText( "" );
2302 0 : m_pMtrFldYSize->SetText( "" );
2303 0 : m_pGridX_Y->Disable();
2304 0 : m_pTsbScale->Disable();
2305 : }
2306 : else
2307 : {
2308 0 : m_pMtrFldXSize->SetValue( m_pMtrFldXSize->GetValue() );
2309 0 : m_pMtrFldYSize->SetValue( m_pMtrFldYSize->GetValue() );
2310 : }
2311 :
2312 0 : rXFSet.Put( XFillBmpTileItem( eState != TRISTATE_FALSE ) );
2313 :
2314 0 : if( m_pTsbStretch->IsEnabled() )
2315 : rXFSet.Put(
2316 : XFillBmpStretchItem(
2317 0 : m_pTsbStretch->GetState() != TRISTATE_FALSE ) );
2318 :
2319 0 : if( m_pTsbScale->IsEnabled() )
2320 0 : rXFSet.Put( XFillBmpSizeLogItem( m_pTsbScale->GetState() == TRISTATE_FALSE ) );
2321 :
2322 0 : if( m_pMtrFldXSize->IsEnabled() )
2323 : {
2324 0 : boost::scoped_ptr<XFillBmpSizeXItem> pItem;
2325 0 : TriState eScaleState = m_pTsbScale->GetState();
2326 :
2327 0 : if( eScaleState == TRISTATE_FALSE )
2328 0 : pItem.reset(new XFillBmpSizeXItem( GetCoreValue( *m_pMtrFldXSize, ePoolUnit ) ));
2329 : else
2330 0 : pItem.reset(new XFillBmpSizeXItem( -labs( static_cast<long>(m_pMtrFldXSize->GetValue()) ) ));
2331 :
2332 0 : rXFSet.Put( *pItem );
2333 : }
2334 0 : else if( m_pTsbOriginal->IsEnabled() && m_pTsbOriginal->GetState() == TRISTATE_TRUE )
2335 : {
2336 : // original size -> size == 0
2337 0 : rXFSet.Put( XFillBmpSizeXItem( 0 ) );
2338 0 : rXFSet.Put( XFillBmpSizeLogItem( true ) );
2339 : }
2340 :
2341 0 : if( m_pMtrFldYSize->IsEnabled() )
2342 : {
2343 0 : boost::scoped_ptr<XFillBmpSizeYItem> pItem;
2344 0 : TriState eScaleState = m_pTsbScale->GetState();
2345 :
2346 0 : if( eScaleState == TRISTATE_FALSE )
2347 0 : pItem.reset(new XFillBmpSizeYItem( GetCoreValue( *m_pMtrFldYSize, ePoolUnit ) ));
2348 : else
2349 0 : pItem.reset(new XFillBmpSizeYItem( -labs( static_cast<long>(m_pMtrFldYSize->GetValue()) ) ));
2350 :
2351 0 : rXFSet.Put( *pItem );
2352 : }
2353 0 : else if( m_pTsbOriginal->IsEnabled() && m_pTsbOriginal->GetState() == TRISTATE_TRUE )
2354 : {
2355 : // original size -> size == 0
2356 0 : rXFSet.Put( XFillBmpSizeYItem( 0 ) );
2357 0 : rXFSet.Put( XFillBmpSizeLogItem( true ) );
2358 : }
2359 :
2360 0 : if( m_pMtrFldOffset->IsEnabled() )
2361 : {
2362 0 : if( m_pRbtRow->IsChecked() )
2363 : {
2364 0 : rXFSet.Put( XFillBmpTileOffsetXItem( (sal_uInt16) m_pMtrFldOffset->GetValue() ) );
2365 0 : rXFSet.Put( XFillBmpTileOffsetYItem( (sal_uInt16) 0 ) );
2366 : }
2367 0 : else if( m_pRbtColumn->IsChecked() )
2368 : {
2369 0 : rXFSet.Put( XFillBmpTileOffsetXItem( (sal_uInt16) 0 ) );
2370 0 : rXFSet.Put( XFillBmpTileOffsetYItem( (sal_uInt16) m_pMtrFldOffset->GetValue() ) );
2371 : }
2372 : }
2373 :
2374 0 : if( m_pCtlPosition->IsEnabled() )
2375 0 : rXFSet.Put( XFillBmpPosItem( m_pCtlPosition->GetActualRP() ) );
2376 :
2377 0 : if( m_pMtrFldXOffset->IsEnabled() )
2378 0 : rXFSet.Put( XFillBmpPosOffsetXItem( (sal_uInt16) m_pMtrFldXOffset->GetValue() ) );
2379 :
2380 0 : if( m_pMtrFldYOffset->IsEnabled() )
2381 0 : rXFSet.Put( XFillBmpPosOffsetYItem( (sal_uInt16) m_pMtrFldYOffset->GetValue() ) );
2382 :
2383 :
2384 0 : m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
2385 0 : m_pCtlBitmapPreview->Invalidate();
2386 :
2387 0 : return 0L;
2388 : }
2389 :
2390 :
2391 :
2392 0 : IMPL_LINK_NOARG(SvxAreaTabPage, ClickScaleHdl_Impl)
2393 : {
2394 0 : if( m_pTsbScale->GetState() == TRISTATE_TRUE )
2395 : {
2396 0 : m_pMtrFldXSize->SetDecimalDigits( 0 );
2397 0 : m_pMtrFldXSize->SetUnit(FUNIT_PERCENT);
2398 0 : m_pMtrFldXSize->SetValue( 100 );
2399 0 : m_pMtrFldXSize->SetMax( 100 );
2400 0 : m_pMtrFldXSize->SetLast( 100 );
2401 :
2402 0 : m_pMtrFldYSize->SetDecimalDigits( 0 );
2403 0 : m_pMtrFldYSize->SetUnit(FUNIT_PERCENT);
2404 0 : m_pMtrFldYSize->SetValue( 100 );
2405 0 : m_pMtrFldYSize->SetMax( 100 );
2406 0 : m_pMtrFldYSize->SetLast( 100 );
2407 : }
2408 : else
2409 : {
2410 0 : m_pMtrFldXSize->SetDecimalDigits( 2 );
2411 0 : m_pMtrFldXSize->SetUnit( eFUnit );
2412 0 : m_pMtrFldXSize->SetValue( 100 );
2413 0 : m_pMtrFldXSize->SetMax( 999900 );
2414 0 : m_pMtrFldXSize->SetLast( 100000 );
2415 :
2416 0 : m_pMtrFldYSize->SetDecimalDigits( 2 );
2417 0 : m_pMtrFldYSize->SetUnit( eFUnit );
2418 0 : m_pMtrFldYSize->SetValue( 100 );
2419 0 : m_pMtrFldYSize->SetMax( 999900 );
2420 0 : m_pMtrFldYSize->SetLast( 100000 );
2421 : }
2422 :
2423 0 : ModifyTileHdl_Impl( NULL );
2424 :
2425 0 : return 0L;
2426 : }
2427 :
2428 :
2429 :
2430 0 : void SvxAreaTabPage::PointChanged( vcl::Window* pWindow, RECT_POINT eRcPt )
2431 : {
2432 0 : eRP = eRcPt;
2433 :
2434 : // alignment of the bitmap fill
2435 0 : ModifyTileHdl_Impl( pWindow );
2436 0 : }
2437 :
2438 0 : void SvxAreaTabPage::PageCreated(const SfxAllItemSet& aSet)
2439 : {
2440 0 : SFX_ITEMSET_ARG (&aSet,pColorListItem,SvxColorListItem,SID_COLOR_TABLE,false);
2441 0 : SFX_ITEMSET_ARG (&aSet,pGradientListItem,SvxGradientListItem,SID_GRADIENT_LIST,false);
2442 0 : SFX_ITEMSET_ARG (&aSet,pHatchingListItem,SvxHatchListItem,SID_HATCH_LIST,false);
2443 0 : SFX_ITEMSET_ARG (&aSet,pBitmapListItem,SvxBitmapListItem,SID_BITMAP_LIST,false);
2444 0 : SFX_ITEMSET_ARG (&aSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,false);
2445 0 : SFX_ITEMSET_ARG (&aSet,pDlgTypeItem,SfxUInt16Item,SID_DLG_TYPE,false);
2446 0 : SFX_ITEMSET_ARG (&aSet,pPosItem,SfxUInt16Item,SID_TABPAGE_POS,false);
2447 :
2448 : //UUUU
2449 0 : SFX_ITEMSET_ARG (&aSet, pOfferImportItem, SfxBoolItem, SID_OFFER_IMPORT, false);
2450 :
2451 0 : if (pColorListItem)
2452 0 : SetColorList(pColorListItem->GetColorList());
2453 0 : if (pGradientListItem)
2454 0 : SetGradientList(pGradientListItem->GetGradientList());
2455 0 : if (pHatchingListItem)
2456 0 : SetHatchingList(pHatchingListItem->GetHatchList());
2457 0 : if (pBitmapListItem)
2458 0 : SetBitmapList(pBitmapListItem->GetBitmapList());
2459 0 : if (pPageTypeItem)
2460 0 : SetPageType(pPageTypeItem->GetValue());
2461 0 : if (pDlgTypeItem)
2462 0 : SetDlgType(pDlgTypeItem->GetValue());
2463 0 : if (pPosItem)
2464 0 : SetPos(pPosItem->GetValue());
2465 :
2466 : //UUUU
2467 0 : if(pOfferImportItem)
2468 : {
2469 0 : const bool bNew(pOfferImportItem->GetValue());
2470 :
2471 0 : if(mbOfferImportButton != bNew)
2472 : {
2473 0 : mbOfferImportButton = bNew;
2474 : }
2475 : }
2476 :
2477 0 : Construct();
2478 0 : }
2479 :
2480 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|