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