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