xref: /aoo42x/main/cui/source/tabpages/backgrnd.cxx (revision cdf0e10c)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_cui.hxx"
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir // include ---------------------------------------------------------------
32*cdf0e10cSrcweir #include <unotools/pathoptions.hxx>
33*cdf0e10cSrcweir #include <svl/intitem.hxx>
34*cdf0e10cSrcweir #include <vcl/msgbox.hxx>
35*cdf0e10cSrcweir #include <tools/urlobj.hxx>
36*cdf0e10cSrcweir #include <sfx2/objsh.hxx>
37*cdf0e10cSrcweir #include <sfx2/docfile.hxx>
38*cdf0e10cSrcweir #include <svtools/wallitem.hxx>
39*cdf0e10cSrcweir #include <svl/cntwall.hxx>
40*cdf0e10cSrcweir #include <sfx2/cntids.hrc>
41*cdf0e10cSrcweir #include <svx/dialogs.hrc>
42*cdf0e10cSrcweir 
43*cdf0e10cSrcweir #define _SVX_BACKGRND_CXX
44*cdf0e10cSrcweir 
45*cdf0e10cSrcweir #include <cuires.hrc>
46*cdf0e10cSrcweir #include "backgrnd.hrc"
47*cdf0e10cSrcweir #include <svx/dialmgr.hxx>
48*cdf0e10cSrcweir #include <editeng/memberids.hrc>
49*cdf0e10cSrcweir #include <editeng/editrids.hrc>
50*cdf0e10cSrcweir #include <editeng/eerdll.hxx>
51*cdf0e10cSrcweir 
52*cdf0e10cSrcweir // Tabellenhintergrund
53*cdf0e10cSrcweir #define TBL_DEST_CELL 	0
54*cdf0e10cSrcweir #define TBL_DEST_ROW 	1
55*cdf0e10cSrcweir #define TBL_DEST_TBL	2
56*cdf0e10cSrcweir 
57*cdf0e10cSrcweir #include <editeng/brshitem.hxx>
58*cdf0e10cSrcweir #include "backgrnd.hxx"
59*cdf0e10cSrcweir 
60*cdf0e10cSrcweir #include <svx/xtable.hxx>
61*cdf0e10cSrcweir #include <sfx2/opengrf.hxx>
62*cdf0e10cSrcweir #include <svx/svxerr.hxx>
63*cdf0e10cSrcweir #include <svx/drawitem.hxx>
64*cdf0e10cSrcweir #include <dialmgr.hxx>
65*cdf0e10cSrcweir #include <svx/htmlmode.hxx>
66*cdf0e10cSrcweir #include <svtools/controldims.hrc>
67*cdf0e10cSrcweir #include <svx/flagsdef.hxx>	//CHINA001
68*cdf0e10cSrcweir #include <svl/intitem.hxx> //CHINA001
69*cdf0e10cSrcweir #include <sfx2/request.hxx> //CHINA001
70*cdf0e10cSrcweir using namespace ::com::sun::star;
71*cdf0e10cSrcweir // static ----------------------------------------------------------------
72*cdf0e10cSrcweir 
73*cdf0e10cSrcweir static sal_uInt16 pRanges[] =
74*cdf0e10cSrcweir {
75*cdf0e10cSrcweir 	SID_VIEW_FLD_PIC, SID_VIEW_FLD_PIC,
76*cdf0e10cSrcweir 	SID_ATTR_BRUSH, SID_ATTR_BRUSH,
77*cdf0e10cSrcweir 	SID_ATTR_BRUSH_CHAR, SID_ATTR_BRUSH_CHAR,
78*cdf0e10cSrcweir 	0
79*cdf0e10cSrcweir };
80*cdf0e10cSrcweir 
81*cdf0e10cSrcweir struct SvxBackgroundTable_Impl
82*cdf0e10cSrcweir {
83*cdf0e10cSrcweir 	SvxBrushItem*	pCellBrush;
84*cdf0e10cSrcweir 	SvxBrushItem*	pRowBrush;
85*cdf0e10cSrcweir 	SvxBrushItem*	pTableBrush;
86*cdf0e10cSrcweir     sal_uInt16          nCellWhich;
87*cdf0e10cSrcweir     sal_uInt16          nRowWhich;
88*cdf0e10cSrcweir     sal_uInt16          nTableWhich;
89*cdf0e10cSrcweir     sal_uInt16          nActPos;
90*cdf0e10cSrcweir 
91*cdf0e10cSrcweir 	SvxBackgroundTable_Impl() :
92*cdf0e10cSrcweir         pCellBrush(NULL), pRowBrush(NULL), pTableBrush(NULL),
93*cdf0e10cSrcweir         nCellWhich(0), nRowWhich(0), nTableWhich(0) {}
94*cdf0e10cSrcweir };
95*cdf0e10cSrcweir 
96*cdf0e10cSrcweir struct SvxBackgroundPara_Impl
97*cdf0e10cSrcweir {
98*cdf0e10cSrcweir 	SvxBrushItem*	pParaBrush;
99*cdf0e10cSrcweir 	SvxBrushItem*	pCharBrush;
100*cdf0e10cSrcweir 
101*cdf0e10cSrcweir 	sal_uInt16 			nActPos;
102*cdf0e10cSrcweir 
103*cdf0e10cSrcweir 	SvxBackgroundPara_Impl() :
104*cdf0e10cSrcweir 		pParaBrush(NULL), pCharBrush(NULL) {}
105*cdf0e10cSrcweir };
106*cdf0e10cSrcweir 
107*cdf0e10cSrcweir struct SvxBackgroundPage_Impl
108*cdf0e10cSrcweir {
109*cdf0e10cSrcweir 	Timer*          pLoadTimer;
110*cdf0e10cSrcweir 	sal_Bool            bIsImportDlgInExecute;
111*cdf0e10cSrcweir 
112*cdf0e10cSrcweir 	SvxBackgroundPage_Impl() :
113*cdf0e10cSrcweir 		pLoadTimer(NULL), bIsImportDlgInExecute(sal_False) {}
114*cdf0e10cSrcweir };
115*cdf0e10cSrcweir /* -----------------------------15.08.2002 12:21------------------------------
116*cdf0e10cSrcweir 
117*cdf0e10cSrcweir  ---------------------------------------------------------------------------*/
118*cdf0e10cSrcweir inline sal_uInt8 lcl_PercentToTransparency(long nPercent)
119*cdf0e10cSrcweir {
120*cdf0e10cSrcweir     //0xff must not be returned!
121*cdf0e10cSrcweir     return sal_uInt8(nPercent ? (50 + 0xfe * nPercent) / 100 : 0);
122*cdf0e10cSrcweir }
123*cdf0e10cSrcweir inline sal_uInt8 lcl_TransparencyToPercent(sal_uInt8 nTrans)
124*cdf0e10cSrcweir {
125*cdf0e10cSrcweir     return (nTrans * 100 + 127) / 254;
126*cdf0e10cSrcweir }
127*cdf0e10cSrcweir void lcl_SetTransparency(SvxBrushItem& rBrush, long nTransparency)
128*cdf0e10cSrcweir {
129*cdf0e10cSrcweir     uno::Any aTransparency;
130*cdf0e10cSrcweir     aTransparency <<= (sal_Int8)nTransparency;
131*cdf0e10cSrcweir     rBrush.PutValue(aTransparency, MID_GRAPHIC_TRANSPARENCY);
132*cdf0e10cSrcweir }
133*cdf0e10cSrcweir //-------------------------------------------------------------------------
134*cdf0e10cSrcweir 
135*cdf0e10cSrcweir /*	[Beschreibung]
136*cdf0e10cSrcweir 
137*cdf0e10cSrcweir */
138*cdf0e10cSrcweir 
139*cdf0e10cSrcweir sal_uInt16 GetItemId_Impl( ValueSet& rValueSet, const Color& rCol )
140*cdf0e10cSrcweir {
141*cdf0e10cSrcweir 	sal_Bool	bFound = sal_False;
142*cdf0e10cSrcweir 	sal_uInt16	nCount = rValueSet.GetItemCount();
143*cdf0e10cSrcweir 	sal_uInt16	n	   = 1;
144*cdf0e10cSrcweir 
145*cdf0e10cSrcweir 	while ( !bFound && n <= nCount )
146*cdf0e10cSrcweir 	{
147*cdf0e10cSrcweir 		Color aValCol = rValueSet.GetItemColor(n);
148*cdf0e10cSrcweir 
149*cdf0e10cSrcweir 		bFound = (   aValCol.GetRed()   == rCol.GetRed()
150*cdf0e10cSrcweir 				  && aValCol.GetGreen() == rCol.GetGreen()
151*cdf0e10cSrcweir 				  && aValCol.GetBlue()  == rCol.GetBlue() );
152*cdf0e10cSrcweir 
153*cdf0e10cSrcweir 		if ( !bFound )
154*cdf0e10cSrcweir 			n++;
155*cdf0e10cSrcweir 	}
156*cdf0e10cSrcweir 	return bFound ? n : 0;
157*cdf0e10cSrcweir }
158*cdf0e10cSrcweir 
159*cdf0e10cSrcweir // class BackgroundPreview -----------------------------------------------
160*cdf0e10cSrcweir 
161*cdf0e10cSrcweir /*	[Beschreibung]
162*cdf0e10cSrcweir 
163*cdf0e10cSrcweir 	Vorschaufenster f"ur Brush oder Bitmap
164*cdf0e10cSrcweir */
165*cdf0e10cSrcweir 
166*cdf0e10cSrcweir class BackgroundPreviewImpl : public Window
167*cdf0e10cSrcweir {
168*cdf0e10cSrcweir public:
169*cdf0e10cSrcweir 	BackgroundPreviewImpl( Window* pParent,
170*cdf0e10cSrcweir 						   const ResId& rResId, sal_Bool bIsBmpPreview );
171*cdf0e10cSrcweir 	~BackgroundPreviewImpl();
172*cdf0e10cSrcweir 
173*cdf0e10cSrcweir 	void			NotifyChange( const Color&  rColor );
174*cdf0e10cSrcweir 	void			NotifyChange( const Bitmap* pBitmap );
175*cdf0e10cSrcweir 
176*cdf0e10cSrcweir protected:
177*cdf0e10cSrcweir 	virtual void	Paint( const Rectangle& rRect );
178*cdf0e10cSrcweir     virtual void    DataChanged( const DataChangedEvent& rDCEvt );
179*cdf0e10cSrcweir 
180*cdf0e10cSrcweir private:
181*cdf0e10cSrcweir 	const sal_Bool		bIsBmp;
182*cdf0e10cSrcweir 	Bitmap*			pBitmap;
183*cdf0e10cSrcweir 	Point			aDrawPos;
184*cdf0e10cSrcweir 	Size			aDrawSize;
185*cdf0e10cSrcweir 	Rectangle		aDrawRect;
186*cdf0e10cSrcweir     sal_uInt8            nTransparency;
187*cdf0e10cSrcweir };
188*cdf0e10cSrcweir 
189*cdf0e10cSrcweir //-----------------------------------------------------------------------
190*cdf0e10cSrcweir 
191*cdf0e10cSrcweir BackgroundPreviewImpl::BackgroundPreviewImpl
192*cdf0e10cSrcweir (
193*cdf0e10cSrcweir 	Window* pParent,
194*cdf0e10cSrcweir 	const ResId& rResId,
195*cdf0e10cSrcweir 	sal_Bool bIsBmpPreview
196*cdf0e10cSrcweir ) :
197*cdf0e10cSrcweir 
198*cdf0e10cSrcweir /*	[Beschreibung]
199*cdf0e10cSrcweir 
200*cdf0e10cSrcweir */
201*cdf0e10cSrcweir 
202*cdf0e10cSrcweir 	Window( pParent, rResId ),
203*cdf0e10cSrcweir 
204*cdf0e10cSrcweir 	bIsBmp	 ( bIsBmpPreview ),
205*cdf0e10cSrcweir 	pBitmap	 ( NULL ),
206*cdf0e10cSrcweir     aDrawRect( Point(0,0), GetOutputSizePixel() ),
207*cdf0e10cSrcweir     nTransparency(0)
208*cdf0e10cSrcweir 
209*cdf0e10cSrcweir {
210*cdf0e10cSrcweir     SetBorderStyle(WINDOW_BORDER_MONO);
211*cdf0e10cSrcweir     Paint( aDrawRect );
212*cdf0e10cSrcweir }
213*cdf0e10cSrcweir 
214*cdf0e10cSrcweir //-----------------------------------------------------------------------
215*cdf0e10cSrcweir 
216*cdf0e10cSrcweir BackgroundPreviewImpl::~BackgroundPreviewImpl()
217*cdf0e10cSrcweir 
218*cdf0e10cSrcweir /*	[Beschreibung]
219*cdf0e10cSrcweir 
220*cdf0e10cSrcweir */
221*cdf0e10cSrcweir 
222*cdf0e10cSrcweir {
223*cdf0e10cSrcweir 	delete pBitmap;
224*cdf0e10cSrcweir }
225*cdf0e10cSrcweir 
226*cdf0e10cSrcweir //-----------------------------------------------------------------------
227*cdf0e10cSrcweir void BackgroundPreviewImpl::NotifyChange( const Color& rColor )
228*cdf0e10cSrcweir {
229*cdf0e10cSrcweir 	if ( !bIsBmp )
230*cdf0e10cSrcweir 	{
231*cdf0e10cSrcweir 		const static Color aTranspCol( COL_TRANSPARENT );
232*cdf0e10cSrcweir 
233*cdf0e10cSrcweir         nTransparency = lcl_TransparencyToPercent( rColor.GetTransparency() );
234*cdf0e10cSrcweir 
235*cdf0e10cSrcweir 		SetFillColor( rColor == aTranspCol ? GetSettings().GetStyleSettings().GetFieldColor() : (Color) rColor.GetRGBColor() );
236*cdf0e10cSrcweir         Paint( aDrawRect );
237*cdf0e10cSrcweir 	}
238*cdf0e10cSrcweir }
239*cdf0e10cSrcweir 
240*cdf0e10cSrcweir //-----------------------------------------------------------------------
241*cdf0e10cSrcweir 
242*cdf0e10cSrcweir void BackgroundPreviewImpl::NotifyChange( const Bitmap* pNewBitmap )
243*cdf0e10cSrcweir /*	[Beschreibung]
244*cdf0e10cSrcweir 
245*cdf0e10cSrcweir */
246*cdf0e10cSrcweir 
247*cdf0e10cSrcweir {
248*cdf0e10cSrcweir     if ( bIsBmp && (pNewBitmap || pBitmap) )
249*cdf0e10cSrcweir 	{
250*cdf0e10cSrcweir         if ( pNewBitmap && pBitmap )
251*cdf0e10cSrcweir 			*pBitmap = *pNewBitmap;
252*cdf0e10cSrcweir 		else if ( pNewBitmap && !pBitmap )
253*cdf0e10cSrcweir 			pBitmap = new Bitmap( *pNewBitmap );
254*cdf0e10cSrcweir 		else if ( !pNewBitmap )
255*cdf0e10cSrcweir 			DELETEZ( pBitmap );
256*cdf0e10cSrcweir 
257*cdf0e10cSrcweir 		if ( pBitmap )
258*cdf0e10cSrcweir 		{
259*cdf0e10cSrcweir 			Size aSize = GetOutputSizePixel();
260*cdf0e10cSrcweir 			// InnerSize == Size without one pixel border
261*cdf0e10cSrcweir 			Size aInnerSize = aSize;
262*cdf0e10cSrcweir 			aInnerSize.Width() -= 2;
263*cdf0e10cSrcweir 			aInnerSize.Height() -= 2;
264*cdf0e10cSrcweir 			aDrawSize = pBitmap->GetSizePixel();
265*cdf0e10cSrcweir 
266*cdf0e10cSrcweir 			// bitmap bigger than preview window?
267*cdf0e10cSrcweir 			if ( aDrawSize.Width() > aInnerSize.Width() )
268*cdf0e10cSrcweir 			{
269*cdf0e10cSrcweir 				aDrawSize.Height() = aDrawSize.Height() * aInnerSize.Width() / aDrawSize.Width();
270*cdf0e10cSrcweir 				if ( aDrawSize.Height() > aInnerSize.Height() )
271*cdf0e10cSrcweir 				{
272*cdf0e10cSrcweir 					aDrawSize.Width() = aDrawSize.Height();
273*cdf0e10cSrcweir 					aDrawSize.Height() = aInnerSize.Height();
274*cdf0e10cSrcweir 				}
275*cdf0e10cSrcweir 				else
276*cdf0e10cSrcweir 					aDrawSize.Width() = aInnerSize.Width();
277*cdf0e10cSrcweir 			}
278*cdf0e10cSrcweir 			else if ( aDrawSize.Height() > aInnerSize.Height() )
279*cdf0e10cSrcweir 			{
280*cdf0e10cSrcweir 				aDrawSize.Width() = aDrawSize.Width() * aInnerSize.Height() / aDrawSize.Height();
281*cdf0e10cSrcweir 				if ( aDrawSize.Width() > aInnerSize.Width() )
282*cdf0e10cSrcweir 				{
283*cdf0e10cSrcweir 					aDrawSize.Height() = aDrawSize.Width();
284*cdf0e10cSrcweir 					aDrawSize.Width() = aInnerSize.Width();
285*cdf0e10cSrcweir 				}
286*cdf0e10cSrcweir 				else
287*cdf0e10cSrcweir 					aDrawSize.Height() = aInnerSize.Height();
288*cdf0e10cSrcweir 			}
289*cdf0e10cSrcweir 
290*cdf0e10cSrcweir 			aDrawPos.X() = (aSize.Width()  - aDrawSize.Width())  / 2;
291*cdf0e10cSrcweir 			aDrawPos.Y() = (aSize.Height() - aDrawSize.Height()) / 2;
292*cdf0e10cSrcweir 		}
293*cdf0e10cSrcweir 		Invalidate( aDrawRect );
294*cdf0e10cSrcweir 		Update();
295*cdf0e10cSrcweir 	}
296*cdf0e10cSrcweir }
297*cdf0e10cSrcweir 
298*cdf0e10cSrcweir //-----------------------------------------------------------------------
299*cdf0e10cSrcweir 
300*cdf0e10cSrcweir void BackgroundPreviewImpl::Paint( const Rectangle& )
301*cdf0e10cSrcweir {
302*cdf0e10cSrcweir     const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
303*cdf0e10cSrcweir     SetBackground(Wallpaper(rStyleSettings.GetWindowColor()));
304*cdf0e10cSrcweir     SetLineColor();
305*cdf0e10cSrcweir     if(bIsBmp)
306*cdf0e10cSrcweir         SetFillColor( Color(COL_TRANSPARENT) );
307*cdf0e10cSrcweir     DrawRect( aDrawRect );
308*cdf0e10cSrcweir 	if ( bIsBmp )
309*cdf0e10cSrcweir 	{
310*cdf0e10cSrcweir 		if ( pBitmap )
311*cdf0e10cSrcweir 			DrawBitmap( aDrawPos, aDrawSize, *pBitmap );
312*cdf0e10cSrcweir 		else
313*cdf0e10cSrcweir 		{
314*cdf0e10cSrcweir 			Size aSize = GetOutputSizePixel();
315*cdf0e10cSrcweir             DrawLine( Point(0,0),               Point(aSize.Width(),aSize.Height()) );
316*cdf0e10cSrcweir 			DrawLine( Point(0,aSize.Height()),	Point(aSize.Width(),0) );
317*cdf0e10cSrcweir 		}
318*cdf0e10cSrcweir 	}
319*cdf0e10cSrcweir }
320*cdf0e10cSrcweir /* -----------------------------27.02.2002 11:07------------------------------
321*cdf0e10cSrcweir 
322*cdf0e10cSrcweir  ---------------------------------------------------------------------------*/
323*cdf0e10cSrcweir void BackgroundPreviewImpl::DataChanged( const DataChangedEvent& rDCEvt )
324*cdf0e10cSrcweir {
325*cdf0e10cSrcweir 	if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
326*cdf0e10cSrcweir          (rDCEvt.GetFlags() & SETTINGS_STYLE) )
327*cdf0e10cSrcweir     {
328*cdf0e10cSrcweir         Invalidate();
329*cdf0e10cSrcweir     }
330*cdf0e10cSrcweir     Window::DataChanged( rDCEvt );
331*cdf0e10cSrcweir }
332*cdf0e10cSrcweir 
333*cdf0e10cSrcweir // class SvxBackgroundTabPage --------------------------------------------
334*cdf0e10cSrcweir 
335*cdf0e10cSrcweir #define HDL(hdl) LINK(this,SvxBackgroundTabPage,hdl)
336*cdf0e10cSrcweir 
337*cdf0e10cSrcweir SvxBackgroundTabPage::SvxBackgroundTabPage( Window* pParent,
338*cdf0e10cSrcweir 											const SfxItemSet& rCoreSet ) :
339*cdf0e10cSrcweir 
340*cdf0e10cSrcweir /*	[Beschreibung]
341*cdf0e10cSrcweir 
342*cdf0e10cSrcweir */
343*cdf0e10cSrcweir 
344*cdf0e10cSrcweir 	SvxTabPage( pParent, CUI_RES( RID_SVXPAGE_BACKGROUND ), rCoreSet ),
345*cdf0e10cSrcweir 
346*cdf0e10cSrcweir 	aSelectTxt			( this, CUI_RES( FT_SELECTOR ) ),
347*cdf0e10cSrcweir 	aLbSelect			( this, CUI_RES( LB_SELECTOR ) ),
348*cdf0e10cSrcweir     aStrBrowse          ( CUI_RES( STR_BROWSE ) ),
349*cdf0e10cSrcweir     aStrUnlinked        ( CUI_RES( STR_UNLINKED ) ),
350*cdf0e10cSrcweir     aTblDesc            ( this, CUI_RES( FT_TBL_DESC ) ),
351*cdf0e10cSrcweir 	aTblLBox            ( this, CUI_RES( LB_TBL_BOX ) ),
352*cdf0e10cSrcweir 	aParaLBox           ( this, CUI_RES( LB_PARA_BOX ) ),
353*cdf0e10cSrcweir 
354*cdf0e10cSrcweir 	aBorderWin			( this, CUI_RES(CT_BORDER) ),
355*cdf0e10cSrcweir 	aBackgroundColorSet ( &aBorderWin, CUI_RES( SET_BGDCOLOR ) ),
356*cdf0e10cSrcweir 	aBackgroundColorBox ( this, CUI_RES( GB_BGDCOLOR ) ),
357*cdf0e10cSrcweir 	pPreviewWin1        ( new BackgroundPreviewImpl( this, CUI_RES( WIN_PREVIEW1 ), sal_False ) ),
358*cdf0e10cSrcweir 
359*cdf0e10cSrcweir     aColTransFT         ( this, CUI_RES( FT_COL_TRANS ) ),
360*cdf0e10cSrcweir     aColTransMF         ( this, CUI_RES( MF_COL_TRANS ) ),
361*cdf0e10cSrcweir 	aBtnPreview	        ( this, CUI_RES( BTN_PREVIEW ) ),
362*cdf0e10cSrcweir 	aGbFile		        ( this, CUI_RES( GB_FILE ) ),
363*cdf0e10cSrcweir 	aBtnBrowse	        ( this, CUI_RES( BTN_BROWSE ) ),
364*cdf0e10cSrcweir 	aBtnLink	        ( this, CUI_RES( BTN_LINK ) ),
365*cdf0e10cSrcweir 	aGbPosition			( this, CUI_RES( GB_POSITION ) ),
366*cdf0e10cSrcweir 	aBtnPosition        ( this, CUI_RES( BTN_POSITION ) ),
367*cdf0e10cSrcweir 	aBtnArea	        ( this, CUI_RES( BTN_AREA ) ),
368*cdf0e10cSrcweir 	aBtnTile	        ( this, CUI_RES( BTN_TILE ) ),
369*cdf0e10cSrcweir 	aWndPosition		( this, CUI_RES( WND_POSITION ), RP_MM ),
370*cdf0e10cSrcweir 	aFtFile		        ( this, CUI_RES( FT_FILE ) ),
371*cdf0e10cSrcweir     aGraphTransFL       ( this, CUI_RES( FL_GRAPH_TRANS ) ),
372*cdf0e10cSrcweir     aGraphTransMF       ( this, CUI_RES( MF_GRAPH_TRANS ) ),
373*cdf0e10cSrcweir     pPreviewWin2        ( new BackgroundPreviewImpl(
374*cdf0e10cSrcweir 							this, CUI_RES( WIN_PREVIEW2 ), sal_True ) ),
375*cdf0e10cSrcweir 
376*cdf0e10cSrcweir     nHtmlMode           ( 0 ),
377*cdf0e10cSrcweir 	bAllowShowSelector	( sal_True ),
378*cdf0e10cSrcweir 	bIsGraphicValid		( sal_False ),
379*cdf0e10cSrcweir 	bLinkOnly			( sal_False ),
380*cdf0e10cSrcweir     bResized            ( sal_False ),
381*cdf0e10cSrcweir     bColTransparency    ( sal_False ),
382*cdf0e10cSrcweir     bGraphTransparency  ( sal_False ),
383*cdf0e10cSrcweir 
384*cdf0e10cSrcweir 	pPageImpl           ( new SvxBackgroundPage_Impl ),
385*cdf0e10cSrcweir 	pImportDlg			( NULL ),
386*cdf0e10cSrcweir 	pTableBck_Impl		( NULL ),
387*cdf0e10cSrcweir 	pParaBck_Impl       ( NULL )
388*cdf0e10cSrcweir 
389*cdf0e10cSrcweir {
390*cdf0e10cSrcweir 	// diese Page braucht ExchangeSupport
391*cdf0e10cSrcweir 	SetExchangeSupport();
392*cdf0e10cSrcweir 
393*cdf0e10cSrcweir 	const SfxPoolItem* pItem;
394*cdf0e10cSrcweir 	SfxObjectShell* pShell;
395*cdf0e10cSrcweir 
396*cdf0e10cSrcweir 	if ( SFX_ITEM_SET == rCoreSet.GetItemState( SID_HTML_MODE, sal_False, &pItem )
397*cdf0e10cSrcweir 		 || ( 0 != ( pShell = SfxObjectShell::Current()) &&
398*cdf0e10cSrcweir 			  0 != ( pItem = pShell->GetItem( SID_HTML_MODE ) ) ) )
399*cdf0e10cSrcweir 	{
400*cdf0e10cSrcweir 		nHtmlMode = ((SfxUInt16Item*)pItem)->GetValue();
401*cdf0e10cSrcweir 	}
402*cdf0e10cSrcweir 
403*cdf0e10cSrcweir 	FillColorValueSets_Impl();
404*cdf0e10cSrcweir 
405*cdf0e10cSrcweir 	aBackgroundColorSet.SetSelectHdl( HDL(BackgroundColorHdl_Impl) );
406*cdf0e10cSrcweir 	FreeResource();
407*cdf0e10cSrcweir 
408*cdf0e10cSrcweir 	aBtnBrowse.SetAccessibleRelationMemberOf(&aGbFile);
409*cdf0e10cSrcweir 	aWndPosition.SetAccessibleRelationMemberOf(&aGbPosition);
410*cdf0e10cSrcweir 	aWndPosition.SetAccessibleRelationLabeledBy(&aBtnPosition);
411*cdf0e10cSrcweir     aBackgroundColorSet.SetAccessibleRelationLabeledBy(&aBackgroundColorBox);
412*cdf0e10cSrcweir }
413*cdf0e10cSrcweir 
414*cdf0e10cSrcweir //------------------------------------------------------------------------
415*cdf0e10cSrcweir 
416*cdf0e10cSrcweir SvxBackgroundTabPage::~SvxBackgroundTabPage()
417*cdf0e10cSrcweir 
418*cdf0e10cSrcweir /*	[Beschreibung]
419*cdf0e10cSrcweir 
420*cdf0e10cSrcweir */
421*cdf0e10cSrcweir 
422*cdf0e10cSrcweir {
423*cdf0e10cSrcweir 	delete pPreviewWin1;
424*cdf0e10cSrcweir 	delete pPreviewWin2;
425*cdf0e10cSrcweir 	delete pPageImpl->pLoadTimer;
426*cdf0e10cSrcweir 	delete pPageImpl;
427*cdf0e10cSrcweir 	delete pImportDlg;
428*cdf0e10cSrcweir 
429*cdf0e10cSrcweir 	if( pTableBck_Impl)
430*cdf0e10cSrcweir 	{
431*cdf0e10cSrcweir 		delete pTableBck_Impl->pCellBrush;
432*cdf0e10cSrcweir 		delete pTableBck_Impl->pRowBrush;
433*cdf0e10cSrcweir 		delete pTableBck_Impl->pTableBrush;
434*cdf0e10cSrcweir 		delete pTableBck_Impl;
435*cdf0e10cSrcweir 	}
436*cdf0e10cSrcweir 
437*cdf0e10cSrcweir 	if(pParaBck_Impl)
438*cdf0e10cSrcweir 	{
439*cdf0e10cSrcweir 		delete pParaBck_Impl->pParaBrush;
440*cdf0e10cSrcweir 		delete pParaBck_Impl->pCharBrush;
441*cdf0e10cSrcweir 		delete pParaBck_Impl;
442*cdf0e10cSrcweir 	}
443*cdf0e10cSrcweir }
444*cdf0e10cSrcweir 
445*cdf0e10cSrcweir //------------------------------------------------------------------------
446*cdf0e10cSrcweir 
447*cdf0e10cSrcweir sal_uInt16* SvxBackgroundTabPage::GetRanges()
448*cdf0e10cSrcweir 
449*cdf0e10cSrcweir /*	[Beschreibung]
450*cdf0e10cSrcweir 
451*cdf0e10cSrcweir 	gibt den Bereich der Which-Werte zur"uck
452*cdf0e10cSrcweir */
453*cdf0e10cSrcweir 
454*cdf0e10cSrcweir {
455*cdf0e10cSrcweir 	return pRanges;
456*cdf0e10cSrcweir }
457*cdf0e10cSrcweir 
458*cdf0e10cSrcweir //------------------------------------------------------------------------
459*cdf0e10cSrcweir 
460*cdf0e10cSrcweir SfxTabPage* SvxBackgroundTabPage::Create( Window* pParent,
461*cdf0e10cSrcweir 										  const SfxItemSet& rAttrSet )
462*cdf0e10cSrcweir 
463*cdf0e10cSrcweir /*	[Beschreibung]
464*cdf0e10cSrcweir 
465*cdf0e10cSrcweir 	Create-Methode f"ur den TabDialog
466*cdf0e10cSrcweir */
467*cdf0e10cSrcweir 
468*cdf0e10cSrcweir {
469*cdf0e10cSrcweir 	return ( new SvxBackgroundTabPage( pParent, rAttrSet ) );
470*cdf0e10cSrcweir }
471*cdf0e10cSrcweir 
472*cdf0e10cSrcweir //------------------------------------------------------------------------
473*cdf0e10cSrcweir 
474*cdf0e10cSrcweir void SvxBackgroundTabPage::Reset( const SfxItemSet& rSet )
475*cdf0e10cSrcweir 
476*cdf0e10cSrcweir /*	[Beschreibung]
477*cdf0e10cSrcweir 
478*cdf0e10cSrcweir */
479*cdf0e10cSrcweir 
480*cdf0e10cSrcweir {
481*cdf0e10cSrcweir // os: So ein Unsinn! Irgendwo laesst sich so ein Item immer finden,
482*cdf0e10cSrcweir //		es muss aber im rSet vorhanden sein!
483*cdf0e10cSrcweir //	const SfxPoolItem* pX = GetOldItem( rSet, SID_VIEW_FLD_PIC );
484*cdf0e10cSrcweir // 	if( pX && pX->ISA(SfxWallpaperItem))
485*cdf0e10cSrcweir 	if(SFX_ITEM_AVAILABLE <= rSet.GetItemState(GetWhich(SID_VIEW_FLD_PIC), sal_False))
486*cdf0e10cSrcweir 	{
487*cdf0e10cSrcweir 		ResetFromWallpaperItem( rSet );
488*cdf0e10cSrcweir 		return;
489*cdf0e10cSrcweir 	}
490*cdf0e10cSrcweir 
491*cdf0e10cSrcweir 	// Zustand des Vorschau-Buttons durch UserData persistent
492*cdf0e10cSrcweir 	String aUserData = GetUserData();
493*cdf0e10cSrcweir 	aBtnPreview.Check( aUserData.Len() && sal_Unicode('1') == aUserData.GetChar( 0 ) );
494*cdf0e10cSrcweir 
495*cdf0e10cSrcweir 	// nach Reset kein ShowSelector() mehr aufrufen d"urfen
496*cdf0e10cSrcweir 	bAllowShowSelector = sal_False;
497*cdf0e10cSrcweir 
498*cdf0e10cSrcweir 
499*cdf0e10cSrcweir 	// Input-BrushItem besorgen und auswerten
500*cdf0e10cSrcweir 	const SvxBrushItem* pBgdAttr = NULL;
501*cdf0e10cSrcweir 	sal_uInt16 nSlot = SID_ATTR_BRUSH;
502*cdf0e10cSrcweir 	const SfxPoolItem* pItem;
503*cdf0e10cSrcweir 	sal_uInt16 nDestValue = USHRT_MAX;
504*cdf0e10cSrcweir 
505*cdf0e10cSrcweir 	if ( SFX_ITEM_SET == rSet.GetItemState(	SID_BACKGRND_DESTINATION,
506*cdf0e10cSrcweir 											sal_False, &pItem ) )
507*cdf0e10cSrcweir 	{
508*cdf0e10cSrcweir 		nDestValue = ((const SfxUInt16Item*)pItem)->GetValue();
509*cdf0e10cSrcweir 		aTblLBox.SelectEntryPos(nDestValue);
510*cdf0e10cSrcweir 
511*cdf0e10cSrcweir 		switch ( nDestValue )
512*cdf0e10cSrcweir 		{
513*cdf0e10cSrcweir 			case TBL_DEST_CELL:
514*cdf0e10cSrcweir 				nSlot = SID_ATTR_BRUSH;
515*cdf0e10cSrcweir 			break;
516*cdf0e10cSrcweir 			case TBL_DEST_ROW:
517*cdf0e10cSrcweir 				nSlot = SID_ATTR_BRUSH_ROW;
518*cdf0e10cSrcweir 			break;
519*cdf0e10cSrcweir 			case TBL_DEST_TBL:
520*cdf0e10cSrcweir 				nSlot = SID_ATTR_BRUSH_TABLE;
521*cdf0e10cSrcweir 			break;
522*cdf0e10cSrcweir 		}
523*cdf0e10cSrcweir 	}
524*cdf0e10cSrcweir 	else if( SFX_ITEM_SET == rSet.GetItemState(
525*cdf0e10cSrcweir 				SID_PARA_BACKGRND_DESTINATION, sal_False, &pItem ) )
526*cdf0e10cSrcweir 	{
527*cdf0e10cSrcweir 		nDestValue = ((const SfxUInt16Item*)pItem)->GetValue();
528*cdf0e10cSrcweir 		// ist gerade Zeichen aktiviert?
529*cdf0e10cSrcweir 		sal_uInt16 nParaSel  = aParaLBox.GetSelectEntryPos();
530*cdf0e10cSrcweir 		if(1 == nParaSel)
531*cdf0e10cSrcweir 		{
532*cdf0e10cSrcweir 			// dann war das ein "Standard" - Aufruf
533*cdf0e10cSrcweir 			nDestValue = nParaSel;
534*cdf0e10cSrcweir 		}
535*cdf0e10cSrcweir 		aParaLBox.SelectEntryPos(nDestValue);
536*cdf0e10cSrcweir 
537*cdf0e10cSrcweir 		switch ( nDestValue )
538*cdf0e10cSrcweir 		{
539*cdf0e10cSrcweir 			case PARA_DEST_PARA:
540*cdf0e10cSrcweir 				nSlot = SID_ATTR_BRUSH;
541*cdf0e10cSrcweir 			break;
542*cdf0e10cSrcweir 			case PARA_DEST_CHAR:
543*cdf0e10cSrcweir 				nSlot = SID_ATTR_BRUSH_CHAR;
544*cdf0e10cSrcweir 			break;
545*cdf0e10cSrcweir 		}
546*cdf0e10cSrcweir 	}
547*cdf0e10cSrcweir     //#111173# the destination item is missing when the parent style has been changed
548*cdf0e10cSrcweir     if(USHRT_MAX == nDestValue && (aParaLBox.IsVisible()||aTblLBox.IsVisible()))
549*cdf0e10cSrcweir         nDestValue = 0;
550*cdf0e10cSrcweir 	sal_uInt16 nWhich = GetWhich( nSlot );
551*cdf0e10cSrcweir 
552*cdf0e10cSrcweir 	if ( rSet.GetItemState( nWhich, sal_False ) >= SFX_ITEM_AVAILABLE )
553*cdf0e10cSrcweir 		pBgdAttr = (const SvxBrushItem*)&( rSet.Get( nWhich ) );
554*cdf0e10cSrcweir 
555*cdf0e10cSrcweir 	aBtnTile.Check();
556*cdf0e10cSrcweir 
557*cdf0e10cSrcweir 	if ( pBgdAttr )
558*cdf0e10cSrcweir 	{
559*cdf0e10cSrcweir 		FillControls_Impl(*pBgdAttr, aUserData);
560*cdf0e10cSrcweir 		aBgdColor = ( (SvxBrushItem*)pBgdAttr )->GetColor();
561*cdf0e10cSrcweir 	}
562*cdf0e10cSrcweir 	else
563*cdf0e10cSrcweir 	{
564*cdf0e10cSrcweir 		aSelectTxt.Hide();
565*cdf0e10cSrcweir 		aLbSelect.Hide();
566*cdf0e10cSrcweir 		aLbSelect.SelectEntryPos( 0 );
567*cdf0e10cSrcweir 		ShowColorUI_Impl();
568*cdf0e10cSrcweir 
569*cdf0e10cSrcweir 		const SfxPoolItem* pOld = GetOldItem( rSet, SID_ATTR_BRUSH );
570*cdf0e10cSrcweir 
571*cdf0e10cSrcweir 		if ( pOld )
572*cdf0e10cSrcweir 			aBgdColor = ( (SvxBrushItem*)pOld )->GetColor();
573*cdf0e10cSrcweir 	}
574*cdf0e10cSrcweir 
575*cdf0e10cSrcweir 	if ( nDestValue != USHRT_MAX )
576*cdf0e10cSrcweir 	{
577*cdf0e10cSrcweir 		if(aTblLBox.IsVisible())
578*cdf0e10cSrcweir 		{
579*cdf0e10cSrcweir 			sal_uInt16 nValue = aTblLBox.GetSelectEntryPos();
580*cdf0e10cSrcweir 
581*cdf0e10cSrcweir 			if ( pTableBck_Impl )
582*cdf0e10cSrcweir 			{
583*cdf0e10cSrcweir                 DELETEZ( pTableBck_Impl->pCellBrush);
584*cdf0e10cSrcweir                 DELETEZ( pTableBck_Impl->pRowBrush);
585*cdf0e10cSrcweir                 DELETEZ( pTableBck_Impl->pTableBrush);
586*cdf0e10cSrcweir 			}
587*cdf0e10cSrcweir 			else
588*cdf0e10cSrcweir 				pTableBck_Impl = new SvxBackgroundTable_Impl();
589*cdf0e10cSrcweir 
590*cdf0e10cSrcweir 			pTableBck_Impl->nActPos = nValue;
591*cdf0e10cSrcweir 
592*cdf0e10cSrcweir 			nWhich = GetWhich( SID_ATTR_BRUSH );
593*cdf0e10cSrcweir 			if ( rSet.GetItemState( nWhich, sal_False ) >= SFX_ITEM_AVAILABLE )
594*cdf0e10cSrcweir             {
595*cdf0e10cSrcweir 				pBgdAttr = (const SvxBrushItem*)&( rSet.Get( nWhich ) );
596*cdf0e10cSrcweir                 pTableBck_Impl->pCellBrush = new SvxBrushItem(*pBgdAttr);
597*cdf0e10cSrcweir             }
598*cdf0e10cSrcweir             pTableBck_Impl->nCellWhich = nWhich;
599*cdf0e10cSrcweir 
600*cdf0e10cSrcweir 			if ( rSet.GetItemState( SID_ATTR_BRUSH_ROW, sal_False ) >= SFX_ITEM_AVAILABLE )
601*cdf0e10cSrcweir             {
602*cdf0e10cSrcweir 				pBgdAttr = (const SvxBrushItem*)&( rSet.Get( SID_ATTR_BRUSH_ROW ) );
603*cdf0e10cSrcweir                 pTableBck_Impl->pRowBrush = new SvxBrushItem(*pBgdAttr);
604*cdf0e10cSrcweir             }
605*cdf0e10cSrcweir             pTableBck_Impl->nRowWhich = SID_ATTR_BRUSH_ROW;
606*cdf0e10cSrcweir 
607*cdf0e10cSrcweir 			if ( rSet.GetItemState( SID_ATTR_BRUSH_TABLE, sal_False ) >= SFX_ITEM_AVAILABLE )
608*cdf0e10cSrcweir             {
609*cdf0e10cSrcweir 				pBgdAttr = (const SvxBrushItem*)&( rSet.Get( SID_ATTR_BRUSH_TABLE ) );
610*cdf0e10cSrcweir                 pTableBck_Impl->pTableBrush = new SvxBrushItem(*pBgdAttr);
611*cdf0e10cSrcweir             }
612*cdf0e10cSrcweir             pTableBck_Impl->nTableWhich = SID_ATTR_BRUSH_TABLE;
613*cdf0e10cSrcweir 
614*cdf0e10cSrcweir 			TblDestinationHdl_Impl(&aTblLBox);
615*cdf0e10cSrcweir 			aTblLBox.SaveValue();
616*cdf0e10cSrcweir 		}
617*cdf0e10cSrcweir 		else
618*cdf0e10cSrcweir 		{
619*cdf0e10cSrcweir 			sal_uInt16 nValue = aParaLBox.GetSelectEntryPos();
620*cdf0e10cSrcweir 
621*cdf0e10cSrcweir 			if ( pParaBck_Impl )
622*cdf0e10cSrcweir 			{
623*cdf0e10cSrcweir 				delete pParaBck_Impl->pParaBrush;
624*cdf0e10cSrcweir 				delete pParaBck_Impl->pCharBrush;
625*cdf0e10cSrcweir 			}
626*cdf0e10cSrcweir 			else
627*cdf0e10cSrcweir 				pParaBck_Impl = new SvxBackgroundPara_Impl();
628*cdf0e10cSrcweir 
629*cdf0e10cSrcweir 			pParaBck_Impl->nActPos = nValue;
630*cdf0e10cSrcweir 
631*cdf0e10cSrcweir 			nWhich = GetWhich( SID_ATTR_BRUSH );
632*cdf0e10cSrcweir 			if ( rSet.GetItemState( nWhich, sal_False ) >= SFX_ITEM_AVAILABLE )
633*cdf0e10cSrcweir             {
634*cdf0e10cSrcweir 				pBgdAttr = (const SvxBrushItem*)&( rSet.Get( nWhich ) );
635*cdf0e10cSrcweir 			    pParaBck_Impl->pParaBrush = new SvxBrushItem(*pBgdAttr);
636*cdf0e10cSrcweir             }
637*cdf0e10cSrcweir 
638*cdf0e10cSrcweir 			nWhich = GetWhich( SID_ATTR_BRUSH_CHAR );
639*cdf0e10cSrcweir 			SfxItemState eState = rSet.GetItemState( nWhich, sal_True );
640*cdf0e10cSrcweir 			eState = rSet.GetItemState( nWhich, sal_False );
641*cdf0e10cSrcweir 			if ( rSet.GetItemState( nWhich, sal_True ) > SFX_ITEM_AVAILABLE )
642*cdf0e10cSrcweir 			{
643*cdf0e10cSrcweir 				pBgdAttr = (const SvxBrushItem*)&( rSet.Get( nWhich ) );
644*cdf0e10cSrcweir 				pParaBck_Impl->pCharBrush = new SvxBrushItem(*pBgdAttr);
645*cdf0e10cSrcweir 			}
646*cdf0e10cSrcweir 			else
647*cdf0e10cSrcweir 				pParaBck_Impl->pCharBrush = new SvxBrushItem(SID_ATTR_BRUSH_CHAR);
648*cdf0e10cSrcweir 
649*cdf0e10cSrcweir 			ParaDestinationHdl_Impl(&aParaLBox);
650*cdf0e10cSrcweir 			aParaLBox.SaveValue();
651*cdf0e10cSrcweir 		}
652*cdf0e10cSrcweir 	}
653*cdf0e10cSrcweir     if(!bResized)
654*cdf0e10cSrcweir     {
655*cdf0e10cSrcweir         if(!aLbSelect.IsVisible() && !aTblLBox.IsVisible() && !aParaLBox.IsVisible())
656*cdf0e10cSrcweir         {
657*cdf0e10cSrcweir 			long nY(LogicToPixel(Point(11,14), MAP_APPFONT).X());
658*cdf0e10cSrcweir 			long nX(LogicToPixel(Point(11,14), MAP_APPFONT).Y());
659*cdf0e10cSrcweir             Point aPos(aBorderWin.GetPosPixel());
660*cdf0e10cSrcweir 			aPos.X() = nX;
661*cdf0e10cSrcweir             aPos.Y() = nY;
662*cdf0e10cSrcweir             aBorderWin.SetPosPixel(aPos);
663*cdf0e10cSrcweir             aPos = pPreviewWin1->GetPosPixel();
664*cdf0e10cSrcweir             aPos.Y()  = nY;
665*cdf0e10cSrcweir             pPreviewWin1->SetPosPixel(aPos);
666*cdf0e10cSrcweir             aBackgroundColorBox.Hide();
667*cdf0e10cSrcweir             aBackgroundColorSet.SetAccessibleRelationLabeledBy(&aBackgroundColorSet);
668*cdf0e10cSrcweir         }
669*cdf0e10cSrcweir     }
670*cdf0e10cSrcweir }
671*cdf0e10cSrcweir 
672*cdf0e10cSrcweir void SvxBackgroundTabPage::ResetFromWallpaperItem( const SfxItemSet& rSet )
673*cdf0e10cSrcweir {
674*cdf0e10cSrcweir 	ShowSelector();
675*cdf0e10cSrcweir 
676*cdf0e10cSrcweir 	// Zustand des Vorschau-Buttons durch UserData persistent
677*cdf0e10cSrcweir 	String aUserData = GetUserData();
678*cdf0e10cSrcweir 	aBtnPreview.Check( aUserData.Len() && sal_Unicode('1') == aUserData.GetChar( 0 ) );
679*cdf0e10cSrcweir 
680*cdf0e10cSrcweir 	// Input-BrushItem besorgen und auswerten
681*cdf0e10cSrcweir 	const SvxBrushItem* pBgdAttr = NULL;
682*cdf0e10cSrcweir 	sal_uInt16 nSlot = SID_VIEW_FLD_PIC;
683*cdf0e10cSrcweir 	sal_uInt16 nWhich = GetWhich( nSlot );
684*cdf0e10cSrcweir 	SvxBrushItem* pTemp = 0;
685*cdf0e10cSrcweir 	const CntWallpaperItem* pItem = 0;
686*cdf0e10cSrcweir 
687*cdf0e10cSrcweir 	if ( rSet.GetItemState( nWhich, sal_False ) >= SFX_ITEM_AVAILABLE )
688*cdf0e10cSrcweir 	{
689*cdf0e10cSrcweir 		pItem = (const CntWallpaperItem*)&rSet.Get( nWhich );
690*cdf0e10cSrcweir 		pTemp = new SvxBrushItem( *pItem, nWhich );
691*cdf0e10cSrcweir 		pBgdAttr = pTemp;
692*cdf0e10cSrcweir 	}
693*cdf0e10cSrcweir 
694*cdf0e10cSrcweir 	aBtnTile.Check();
695*cdf0e10cSrcweir 
696*cdf0e10cSrcweir 	if ( pBgdAttr )
697*cdf0e10cSrcweir 	{
698*cdf0e10cSrcweir 		FillControls_Impl(*pBgdAttr, aUserData);
699*cdf0e10cSrcweir 		// Auch bei Anzeige der Grafik, soll die Brush erhalten bleiben
700*cdf0e10cSrcweir 		if( aBgdColor != pBgdAttr->GetColor() )
701*cdf0e10cSrcweir 		{
702*cdf0e10cSrcweir 			aBgdColor = pBgdAttr->GetColor();
703*cdf0e10cSrcweir 			sal_uInt16 nCol = GetItemId_Impl( aBackgroundColorSet, aBgdColor );
704*cdf0e10cSrcweir 			aBackgroundColorSet.SelectItem( nCol );
705*cdf0e10cSrcweir 			pPreviewWin1->NotifyChange( aBgdColor );
706*cdf0e10cSrcweir 		}
707*cdf0e10cSrcweir 	}
708*cdf0e10cSrcweir 	else
709*cdf0e10cSrcweir 	{
710*cdf0e10cSrcweir 		aLbSelect.SelectEntryPos( 0 );
711*cdf0e10cSrcweir 		ShowColorUI_Impl();
712*cdf0e10cSrcweir 
713*cdf0e10cSrcweir 		const SfxPoolItem* pOld = GetOldItem( rSet, SID_VIEW_FLD_PIC );
714*cdf0e10cSrcweir 		if ( pOld )
715*cdf0e10cSrcweir 			aBgdColor = Color( ((CntWallpaperItem*)pOld)->GetColor() );
716*cdf0e10cSrcweir 	}
717*cdf0e10cSrcweir 
718*cdf0e10cSrcweir 	// We now have always a link to the background
719*cdf0e10cSrcweir 	bLinkOnly = sal_True;
720*cdf0e10cSrcweir 	aBtnLink.Check( sal_True );
721*cdf0e10cSrcweir 	aBtnLink.Show( sal_False );
722*cdf0e10cSrcweir //	if( !pItem || !pItem->GetWallpaper(sal_False).IsBitmap() )
723*cdf0e10cSrcweir //		aBtnLink.Check();
724*cdf0e10cSrcweir 
725*cdf0e10cSrcweir 	delete pTemp;
726*cdf0e10cSrcweir }
727*cdf0e10cSrcweir 
728*cdf0e10cSrcweir 
729*cdf0e10cSrcweir 
730*cdf0e10cSrcweir //------------------------------------------------------------------------
731*cdf0e10cSrcweir 
732*cdf0e10cSrcweir void SvxBackgroundTabPage::FillUserData()
733*cdf0e10cSrcweir 
734*cdf0e10cSrcweir /*	[Beschreibung]
735*cdf0e10cSrcweir 
736*cdf0e10cSrcweir 	Beim Destruieren einer SfxTabPage wird diese virtuelle Methode gerufen,
737*cdf0e10cSrcweir 	damit die TabPage interne Informationen sichern kann.
738*cdf0e10cSrcweir 
739*cdf0e10cSrcweir 	In diesem Fall wird der Zustand des Vorschau-Buttons gesichert.
740*cdf0e10cSrcweir */
741*cdf0e10cSrcweir 
742*cdf0e10cSrcweir {
743*cdf0e10cSrcweir 	SetUserData( String( aBtnPreview.IsChecked() ? sal_Unicode('1') : sal_Unicode('0') ) );
744*cdf0e10cSrcweir }
745*cdf0e10cSrcweir 
746*cdf0e10cSrcweir //------------------------------------------------------------------------
747*cdf0e10cSrcweir 
748*cdf0e10cSrcweir sal_Bool SvxBackgroundTabPage::FillItemSet( SfxItemSet& rCoreSet )
749*cdf0e10cSrcweir 
750*cdf0e10cSrcweir /*	[Beschreibung]
751*cdf0e10cSrcweir 
752*cdf0e10cSrcweir */
753*cdf0e10cSrcweir 
754*cdf0e10cSrcweir {
755*cdf0e10cSrcweir 	if ( pPageImpl->pLoadTimer && pPageImpl->pLoadTimer->IsActive() )
756*cdf0e10cSrcweir 	{
757*cdf0e10cSrcweir 		pPageImpl->pLoadTimer->Stop();
758*cdf0e10cSrcweir 		LoadTimerHdl_Impl( pPageImpl->pLoadTimer );
759*cdf0e10cSrcweir 	}
760*cdf0e10cSrcweir // os: So ein Unsinn! Irgendwo laesst sich so ein Item immer finden,
761*cdf0e10cSrcweir //		es muss aber im rSet vorhanden sein!
762*cdf0e10cSrcweir 
763*cdf0e10cSrcweir //	const SfxPoolItem* pX = GetOldItem( rCoreSet, SID_VIEW_FLD_PIC );
764*cdf0e10cSrcweir //	if( pX && pX->ISA(SfxWallpaperItem))
765*cdf0e10cSrcweir 	if(SFX_ITEM_AVAILABLE <= rCoreSet.GetItemState(GetWhich(SID_VIEW_FLD_PIC), sal_False))
766*cdf0e10cSrcweir 		return FillItemSetWithWallpaperItem( rCoreSet, SID_VIEW_FLD_PIC );
767*cdf0e10cSrcweir 
768*cdf0e10cSrcweir 	sal_Bool bModified = sal_False;
769*cdf0e10cSrcweir 	sal_uInt16 nSlot = SID_ATTR_BRUSH;
770*cdf0e10cSrcweir 
771*cdf0e10cSrcweir 	if ( aTblLBox.IsVisible() )
772*cdf0e10cSrcweir 	{
773*cdf0e10cSrcweir 		switch( aTblLBox.GetSelectEntryPos() )
774*cdf0e10cSrcweir 		{
775*cdf0e10cSrcweir 			case TBL_DEST_CELL:
776*cdf0e10cSrcweir 				nSlot = SID_ATTR_BRUSH;
777*cdf0e10cSrcweir 			break;
778*cdf0e10cSrcweir 			case TBL_DEST_ROW:
779*cdf0e10cSrcweir 				nSlot = SID_ATTR_BRUSH_ROW;
780*cdf0e10cSrcweir 			break;
781*cdf0e10cSrcweir 			case TBL_DEST_TBL:
782*cdf0e10cSrcweir 				nSlot = SID_ATTR_BRUSH_TABLE;
783*cdf0e10cSrcweir 			break;
784*cdf0e10cSrcweir 		}
785*cdf0e10cSrcweir 	}
786*cdf0e10cSrcweir 	else if(aParaLBox.GetData() == &aParaLBox)
787*cdf0e10cSrcweir 	{
788*cdf0e10cSrcweir 		switch(aParaLBox.GetSelectEntryPos())
789*cdf0e10cSrcweir 		{
790*cdf0e10cSrcweir 			case PARA_DEST_PARA:
791*cdf0e10cSrcweir 				nSlot = SID_ATTR_BRUSH;
792*cdf0e10cSrcweir 			break;
793*cdf0e10cSrcweir 			case PARA_DEST_CHAR:
794*cdf0e10cSrcweir 				nSlot = SID_ATTR_BRUSH_CHAR;
795*cdf0e10cSrcweir 			break;
796*cdf0e10cSrcweir 		}
797*cdf0e10cSrcweir 	}
798*cdf0e10cSrcweir 	sal_uInt16 nWhich = GetWhich( nSlot );
799*cdf0e10cSrcweir 
800*cdf0e10cSrcweir 	const SfxPoolItem* pOld = GetOldItem( rCoreSet, nSlot );
801*cdf0e10cSrcweir 	SfxItemState eOldItemState = rCoreSet.GetItemState(nSlot, sal_False);
802*cdf0e10cSrcweir 	const SfxItemSet& rOldSet = GetItemSet();
803*cdf0e10cSrcweir 
804*cdf0e10cSrcweir     sal_Bool bGraphTransparencyChanged = bGraphTransparency && (aGraphTransMF.GetText() != aGraphTransMF.GetSavedValue());
805*cdf0e10cSrcweir     if ( pOld )
806*cdf0e10cSrcweir 	{
807*cdf0e10cSrcweir 		const SvxBrushItem& rOldItem	= (const SvxBrushItem&)*pOld;
808*cdf0e10cSrcweir 		SvxGraphicPosition	eOldPos		= rOldItem.GetGraphicPos();
809*cdf0e10cSrcweir 		const sal_Bool 			bIsBrush	= ( 0 == aLbSelect.GetSelectEntryPos() );
810*cdf0e10cSrcweir 
811*cdf0e10cSrcweir         // transparency has to be set if enabled, the color not already set to "No fill" and
812*cdf0e10cSrcweir         if( bColTransparency &&
813*cdf0e10cSrcweir             aBgdColor.GetTransparency() < 0xff)
814*cdf0e10cSrcweir         {
815*cdf0e10cSrcweir             aBgdColor.SetTransparency(lcl_PercentToTransparency(static_cast<long>(aColTransMF.GetValue())));
816*cdf0e10cSrcweir         }
817*cdf0e10cSrcweir         if (   ( (GPOS_NONE == eOldPos) && bIsBrush  )
818*cdf0e10cSrcweir 			|| ( (GPOS_NONE != eOldPos) && !bIsBrush ) ) // Brush <-> Bitmap gewechselt?
819*cdf0e10cSrcweir 		{
820*cdf0e10cSrcweir 			// Hintergrund-Art wurde nicht gewechselt:
821*cdf0e10cSrcweir 
822*cdf0e10cSrcweir 			if ( (GPOS_NONE == eOldPos) || !aLbSelect.IsVisible() )
823*cdf0e10cSrcweir 			{
824*cdf0e10cSrcweir 				// Brush-Behandlung:
825*cdf0e10cSrcweir 				if ( rOldItem.GetColor() != aBgdColor ||
826*cdf0e10cSrcweir 						(SFX_ITEM_AVAILABLE >= eOldItemState && !aBackgroundColorSet.IsNoSelection()))
827*cdf0e10cSrcweir 				{
828*cdf0e10cSrcweir 					bModified = sal_True;
829*cdf0e10cSrcweir 					rCoreSet.Put( SvxBrushItem( aBgdColor, nWhich ) );
830*cdf0e10cSrcweir 				}
831*cdf0e10cSrcweir 				else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
832*cdf0e10cSrcweir 					rCoreSet.ClearItem( nWhich );
833*cdf0e10cSrcweir 			}
834*cdf0e10cSrcweir 			else
835*cdf0e10cSrcweir 			{
836*cdf0e10cSrcweir 				// Bitmap-Behandlung:
837*cdf0e10cSrcweir 
838*cdf0e10cSrcweir 				SvxGraphicPosition	eNewPos  = GetGraphicPosition_Impl();
839*cdf0e10cSrcweir 				const sal_Bool			bIsLink  = aBtnLink.IsChecked();
840*cdf0e10cSrcweir 				const sal_Bool			bWasLink = (NULL != rOldItem.GetGraphicLink() );
841*cdf0e10cSrcweir 
842*cdf0e10cSrcweir 
843*cdf0e10cSrcweir 				if ( !bIsLink && !bIsGraphicValid )
844*cdf0e10cSrcweir 					bIsGraphicValid = LoadLinkedGraphic_Impl();
845*cdf0e10cSrcweir 
846*cdf0e10cSrcweir                 if (    bGraphTransparencyChanged ||
847*cdf0e10cSrcweir                         eNewPos != eOldPos
848*cdf0e10cSrcweir 					|| bIsLink != bWasLink
849*cdf0e10cSrcweir 					|| ( bWasLink  &&    *rOldItem.GetGraphicLink()
850*cdf0e10cSrcweir 									  != aBgdGraphicPath )
851*cdf0e10cSrcweir 					|| ( !bWasLink &&    rOldItem.GetGraphic()->GetBitmap()
852*cdf0e10cSrcweir 									  != aBgdGraphic.GetBitmap() )
853*cdf0e10cSrcweir 				   )
854*cdf0e10cSrcweir 				{
855*cdf0e10cSrcweir 					bModified = sal_True;
856*cdf0e10cSrcweir 
857*cdf0e10cSrcweir                     SvxBrushItem aTmpBrush(nWhich);
858*cdf0e10cSrcweir                     if ( bIsLink )
859*cdf0e10cSrcweir 					{
860*cdf0e10cSrcweir                         aTmpBrush = SvxBrushItem( aBgdGraphicPath,
861*cdf0e10cSrcweir                                                 aBgdGraphicFilter,
862*cdf0e10cSrcweir                                                 eNewPos,
863*cdf0e10cSrcweir                                                 nWhich );
864*cdf0e10cSrcweir 					}
865*cdf0e10cSrcweir 					else
866*cdf0e10cSrcweir                         aTmpBrush = SvxBrushItem( aBgdGraphic,
867*cdf0e10cSrcweir                                         eNewPos,
868*cdf0e10cSrcweir                                         nWhich );
869*cdf0e10cSrcweir                     lcl_SetTransparency(aTmpBrush, static_cast<long>(aGraphTransMF.GetValue()));
870*cdf0e10cSrcweir 
871*cdf0e10cSrcweir                     rCoreSet.Put(aTmpBrush);
872*cdf0e10cSrcweir 				}
873*cdf0e10cSrcweir 				else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
874*cdf0e10cSrcweir 					rCoreSet.ClearItem( nWhich );
875*cdf0e10cSrcweir 			}
876*cdf0e10cSrcweir 		}
877*cdf0e10cSrcweir 		else // Brush <-> Bitmap gewechselt!
878*cdf0e10cSrcweir 		{
879*cdf0e10cSrcweir 			if ( bIsBrush )
880*cdf0e10cSrcweir 				rCoreSet.Put( SvxBrushItem( aBgdColor, nWhich ) );
881*cdf0e10cSrcweir 			else
882*cdf0e10cSrcweir 			{
883*cdf0e10cSrcweir                 SvxBrushItem* pTmpBrush = 0;
884*cdf0e10cSrcweir                 if ( aBtnLink.IsChecked() )
885*cdf0e10cSrcweir 				{
886*cdf0e10cSrcweir                     pTmpBrush = new SvxBrushItem( aBgdGraphicPath,
887*cdf0e10cSrcweir 												aBgdGraphicFilter,
888*cdf0e10cSrcweir 												GetGraphicPosition_Impl(),
889*cdf0e10cSrcweir                                                 nWhich );
890*cdf0e10cSrcweir 				}
891*cdf0e10cSrcweir 				else
892*cdf0e10cSrcweir 				{
893*cdf0e10cSrcweir 					if ( !bIsGraphicValid )
894*cdf0e10cSrcweir 						bIsGraphicValid = LoadLinkedGraphic_Impl();
895*cdf0e10cSrcweir 
896*cdf0e10cSrcweir 					if ( bIsGraphicValid )
897*cdf0e10cSrcweir                         pTmpBrush = new SvxBrushItem( aBgdGraphic,
898*cdf0e10cSrcweir 													GetGraphicPosition_Impl(),
899*cdf0e10cSrcweir                                                     nWhich );
900*cdf0e10cSrcweir 				}
901*cdf0e10cSrcweir                 if(pTmpBrush)
902*cdf0e10cSrcweir                 {
903*cdf0e10cSrcweir                     lcl_SetTransparency(*pTmpBrush, static_cast<long>(aGraphTransMF.GetValue()));
904*cdf0e10cSrcweir                     rCoreSet.Put(*pTmpBrush);
905*cdf0e10cSrcweir                     delete pTmpBrush;
906*cdf0e10cSrcweir                 }
907*cdf0e10cSrcweir 			}
908*cdf0e10cSrcweir 			bModified = ( bIsBrush || aBtnLink.IsChecked() || bIsGraphicValid );
909*cdf0e10cSrcweir 		}
910*cdf0e10cSrcweir 	}
911*cdf0e10cSrcweir 	else if ( SID_ATTR_BRUSH_CHAR == nSlot && aBgdColor != Color( COL_WHITE ) )
912*cdf0e10cSrcweir 	{
913*cdf0e10cSrcweir 		rCoreSet.Put( SvxBrushItem( aBgdColor, nWhich ) );
914*cdf0e10cSrcweir 		bModified = sal_True;
915*cdf0e10cSrcweir 	}
916*cdf0e10cSrcweir 
917*cdf0e10cSrcweir 	if( aTblLBox.IsVisible() )
918*cdf0e10cSrcweir 	{
919*cdf0e10cSrcweir 		// Der aktuelle Zustand wurde bereits geputtet
920*cdf0e10cSrcweir         if( nSlot != SID_ATTR_BRUSH && pTableBck_Impl->pCellBrush)
921*cdf0e10cSrcweir 		{
922*cdf0e10cSrcweir 			const SfxPoolItem* pOldCell =
923*cdf0e10cSrcweir 				GetOldItem( rCoreSet, SID_ATTR_BRUSH );
924*cdf0e10cSrcweir 
925*cdf0e10cSrcweir             if ( *pTableBck_Impl->pCellBrush != *pOldCell )
926*cdf0e10cSrcweir 			{
927*cdf0e10cSrcweir 				rCoreSet.Put( *pTableBck_Impl->pCellBrush );
928*cdf0e10cSrcweir 				bModified |= sal_True;
929*cdf0e10cSrcweir 			}
930*cdf0e10cSrcweir 		}
931*cdf0e10cSrcweir 
932*cdf0e10cSrcweir         if( nSlot != SID_ATTR_BRUSH_ROW && pTableBck_Impl->pRowBrush)
933*cdf0e10cSrcweir 		{
934*cdf0e10cSrcweir 			const SfxPoolItem* pOldRow =
935*cdf0e10cSrcweir 				GetOldItem( rCoreSet, SID_ATTR_BRUSH_ROW );
936*cdf0e10cSrcweir 
937*cdf0e10cSrcweir             if ( *pTableBck_Impl->pRowBrush != *pOldRow )
938*cdf0e10cSrcweir 			{
939*cdf0e10cSrcweir 				rCoreSet.Put( *pTableBck_Impl->pRowBrush );
940*cdf0e10cSrcweir 				bModified |= sal_True;
941*cdf0e10cSrcweir 			}
942*cdf0e10cSrcweir 		}
943*cdf0e10cSrcweir 
944*cdf0e10cSrcweir         if( nSlot != SID_ATTR_BRUSH_TABLE && pTableBck_Impl->pTableBrush)
945*cdf0e10cSrcweir 		{
946*cdf0e10cSrcweir 			const SfxPoolItem* pOldTable =
947*cdf0e10cSrcweir 				GetOldItem( rCoreSet, SID_ATTR_BRUSH_TABLE );
948*cdf0e10cSrcweir 
949*cdf0e10cSrcweir 			if ( *pTableBck_Impl->pTableBrush != *pOldTable )
950*cdf0e10cSrcweir 			{
951*cdf0e10cSrcweir 				rCoreSet.Put( *pTableBck_Impl->pTableBrush );
952*cdf0e10cSrcweir 				bModified |= sal_True;
953*cdf0e10cSrcweir 			}
954*cdf0e10cSrcweir 		}
955*cdf0e10cSrcweir 
956*cdf0e10cSrcweir 		if( aTblLBox.GetSavedValue() != aTblLBox.GetSelectEntryPos() )
957*cdf0e10cSrcweir 		{
958*cdf0e10cSrcweir 			rCoreSet.Put( SfxUInt16Item( SID_BACKGRND_DESTINATION,
959*cdf0e10cSrcweir 										 aTblLBox.GetSelectEntryPos() ) );
960*cdf0e10cSrcweir 			bModified |= sal_True;
961*cdf0e10cSrcweir 		}
962*cdf0e10cSrcweir 	}
963*cdf0e10cSrcweir 	else if(aParaLBox.GetData() == &aParaLBox)
964*cdf0e10cSrcweir 	{
965*cdf0e10cSrcweir 		// Der aktuelle Zustand wurde bereits geputtet
966*cdf0e10cSrcweir 		if( nSlot != SID_ATTR_BRUSH && aParaLBox.IsVisible()) // nicht im Suchen-Format-Dialog
967*cdf0e10cSrcweir 		{
968*cdf0e10cSrcweir 			const SfxPoolItem* pOldPara =
969*cdf0e10cSrcweir 				GetOldItem( rCoreSet, SID_ATTR_BRUSH );
970*cdf0e10cSrcweir 
971*cdf0e10cSrcweir 			if ( *pParaBck_Impl->pParaBrush != *pOldPara )
972*cdf0e10cSrcweir 			{
973*cdf0e10cSrcweir 				rCoreSet.Put( *pParaBck_Impl->pParaBrush );
974*cdf0e10cSrcweir 				bModified |= sal_True;
975*cdf0e10cSrcweir 			}
976*cdf0e10cSrcweir 		}
977*cdf0e10cSrcweir 
978*cdf0e10cSrcweir 		if( nSlot != SID_ATTR_BRUSH_CHAR )
979*cdf0e10cSrcweir 		{
980*cdf0e10cSrcweir 			const SfxPoolItem* pOldChar =
981*cdf0e10cSrcweir 				GetOldItem( rCoreSet, SID_ATTR_BRUSH_CHAR );
982*cdf0e10cSrcweir             DBG_ASSERT(pParaBck_Impl, "pParaBck_Impl == NULL ?");
983*cdf0e10cSrcweir             if ( pOldChar &&
984*cdf0e10cSrcweir                     //#111173#  crash report shows that pParaBck_Impl can be NULL, the cause is unknown
985*cdf0e10cSrcweir                     pParaBck_Impl &&
986*cdf0e10cSrcweir                         (*pParaBck_Impl->pCharBrush != *pOldChar ||
987*cdf0e10cSrcweir                 *pParaBck_Impl->pCharBrush != SvxBrushItem(SID_ATTR_BRUSH_CHAR)))
988*cdf0e10cSrcweir 			{
989*cdf0e10cSrcweir 				rCoreSet.Put( *pParaBck_Impl->pCharBrush );
990*cdf0e10cSrcweir 				bModified |= sal_True;
991*cdf0e10cSrcweir 			}
992*cdf0e10cSrcweir 		}
993*cdf0e10cSrcweir 
994*cdf0e10cSrcweir 		if( aParaLBox.GetSavedValue() != aParaLBox.GetSelectEntryPos() )
995*cdf0e10cSrcweir 		{
996*cdf0e10cSrcweir 			rCoreSet.Put( SfxUInt16Item( SID_BACKGRND_DESTINATION,
997*cdf0e10cSrcweir 										 aParaLBox.GetSelectEntryPos() ) );
998*cdf0e10cSrcweir 			bModified |= sal_True;
999*cdf0e10cSrcweir 		}
1000*cdf0e10cSrcweir 	}
1001*cdf0e10cSrcweir 	return bModified;
1002*cdf0e10cSrcweir }
1003*cdf0e10cSrcweir 
1004*cdf0e10cSrcweir sal_Bool SvxBackgroundTabPage::FillItemSetWithWallpaperItem( SfxItemSet& rCoreSet, sal_uInt16 nSlot)
1005*cdf0e10cSrcweir {
1006*cdf0e10cSrcweir 	sal_uInt16 nWhich = GetWhich( nSlot );
1007*cdf0e10cSrcweir 	const SfxPoolItem* pOld = GetOldItem( rCoreSet, nSlot );
1008*cdf0e10cSrcweir 	const SfxItemSet& rOldSet = GetItemSet();
1009*cdf0e10cSrcweir 	DBG_ASSERT(pOld,"FillItemSetWithWallpaperItem: Item not found");
1010*cdf0e10cSrcweir 
1011*cdf0e10cSrcweir 	SvxBrushItem 		rOldItem( (const CntWallpaperItem&)*pOld, nWhich );
1012*cdf0e10cSrcweir 	SvxGraphicPosition	eOldPos		= rOldItem.GetGraphicPos();
1013*cdf0e10cSrcweir 	const sal_Bool 			bIsBrush	= ( 0 == aLbSelect.GetSelectEntryPos() );
1014*cdf0e10cSrcweir 	sal_Bool				bModified = sal_False;
1015*cdf0e10cSrcweir 
1016*cdf0e10cSrcweir 	if (   ( (GPOS_NONE == eOldPos) && bIsBrush  )
1017*cdf0e10cSrcweir 		|| ( (GPOS_NONE != eOldPos) && !bIsBrush ) ) // Brush <-> Bitmap gewechselt?
1018*cdf0e10cSrcweir 	{
1019*cdf0e10cSrcweir 		// Hintergrund-Art wurde nicht gewechselt:
1020*cdf0e10cSrcweir 
1021*cdf0e10cSrcweir 		if ( (GPOS_NONE == eOldPos) || !aLbSelect.IsVisible() )
1022*cdf0e10cSrcweir 		{
1023*cdf0e10cSrcweir 			// Brush-Behandlung:
1024*cdf0e10cSrcweir 			if ( rOldItem.GetColor() != aBgdColor )
1025*cdf0e10cSrcweir 			{
1026*cdf0e10cSrcweir 				bModified = sal_True;
1027*cdf0e10cSrcweir 				CntWallpaperItem aItem( nWhich );
1028*cdf0e10cSrcweir 				aItem.SetColor( aBgdColor );
1029*cdf0e10cSrcweir 				rCoreSet.Put( aItem );
1030*cdf0e10cSrcweir 			}
1031*cdf0e10cSrcweir 			else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
1032*cdf0e10cSrcweir 				rCoreSet.ClearItem( nWhich );
1033*cdf0e10cSrcweir 		}
1034*cdf0e10cSrcweir 		else
1035*cdf0e10cSrcweir 		{
1036*cdf0e10cSrcweir 			// Bitmap-Behandlung:
1037*cdf0e10cSrcweir 			SvxGraphicPosition	eNewPos  = GetGraphicPosition_Impl();
1038*cdf0e10cSrcweir 
1039*cdf0e10cSrcweir 			int bBitmapChanged = ( ( eNewPos != eOldPos ) ||
1040*cdf0e10cSrcweir 								   ( *rOldItem.GetGraphicLink() != aBgdGraphicPath ) );
1041*cdf0e10cSrcweir 			int bBrushChanged = ( rOldItem.GetColor() != aBgdColor );
1042*cdf0e10cSrcweir 			if( bBitmapChanged || bBrushChanged )
1043*cdf0e10cSrcweir 			{
1044*cdf0e10cSrcweir 				bModified = sal_True;
1045*cdf0e10cSrcweir 
1046*cdf0e10cSrcweir 				CntWallpaperItem aItem( nWhich );
1047*cdf0e10cSrcweir 				WallpaperStyle eWallStyle = SvxBrushItem::GraphicPos2WallpaperStyle(eNewPos);
1048*cdf0e10cSrcweir 				aItem.SetStyle( sal::static_int_cast< sal_uInt16 >( eWallStyle ) );
1049*cdf0e10cSrcweir 				aItem.SetColor( aBgdColor );
1050*cdf0e10cSrcweir                 aItem.SetBitmapURL( aBgdGraphicPath );
1051*cdf0e10cSrcweir 				rCoreSet.Put( aItem );
1052*cdf0e10cSrcweir 			}
1053*cdf0e10cSrcweir 			else if ( SFX_ITEM_DEFAULT == rOldSet.GetItemState( nWhich, sal_False ) )
1054*cdf0e10cSrcweir 				rCoreSet.ClearItem( nWhich );
1055*cdf0e10cSrcweir 		}
1056*cdf0e10cSrcweir 	}
1057*cdf0e10cSrcweir 	else // Brush <-> Bitmap gewechselt!
1058*cdf0e10cSrcweir 	{
1059*cdf0e10cSrcweir 		CntWallpaperItem aItem( nWhich );
1060*cdf0e10cSrcweir 		if ( bIsBrush )
1061*cdf0e10cSrcweir 		{
1062*cdf0e10cSrcweir 			aItem.SetColor( aBgdColor );
1063*cdf0e10cSrcweir 			rCoreSet.Put( aItem );
1064*cdf0e10cSrcweir 		}
1065*cdf0e10cSrcweir 		else
1066*cdf0e10cSrcweir 		{
1067*cdf0e10cSrcweir 			WallpaperStyle eWallStyle =
1068*cdf0e10cSrcweir 				SvxBrushItem::GraphicPos2WallpaperStyle( GetGraphicPosition_Impl() );
1069*cdf0e10cSrcweir 			aItem.SetStyle( sal::static_int_cast< sal_uInt16 >( eWallStyle ) );
1070*cdf0e10cSrcweir 			aItem.SetColor( aBgdColor );
1071*cdf0e10cSrcweir             aItem.SetBitmapURL( aBgdGraphicPath );
1072*cdf0e10cSrcweir 			rCoreSet.Put( aItem );
1073*cdf0e10cSrcweir 		}
1074*cdf0e10cSrcweir 
1075*cdf0e10cSrcweir 		bModified = sal_True;
1076*cdf0e10cSrcweir 	}
1077*cdf0e10cSrcweir 	return bModified;
1078*cdf0e10cSrcweir }
1079*cdf0e10cSrcweir 
1080*cdf0e10cSrcweir //-----------------------------------------------------------------------
1081*cdf0e10cSrcweir 
1082*cdf0e10cSrcweir int SvxBackgroundTabPage::DeactivatePage( SfxItemSet* _pSet )
1083*cdf0e10cSrcweir 
1084*cdf0e10cSrcweir /*	[Beschreibung]
1085*cdf0e10cSrcweir 
1086*cdf0e10cSrcweir 	virtuelle Methode, wird beim Deaktivieren gerufen
1087*cdf0e10cSrcweir */
1088*cdf0e10cSrcweir 
1089*cdf0e10cSrcweir {
1090*cdf0e10cSrcweir 	if ( pPageImpl->bIsImportDlgInExecute )
1091*cdf0e10cSrcweir 		return KEEP_PAGE;
1092*cdf0e10cSrcweir 
1093*cdf0e10cSrcweir     if ( _pSet )
1094*cdf0e10cSrcweir         FillItemSet( *_pSet );
1095*cdf0e10cSrcweir 
1096*cdf0e10cSrcweir     return LEAVE_PAGE;
1097*cdf0e10cSrcweir }
1098*cdf0e10cSrcweir 
1099*cdf0e10cSrcweir //-----------------------------------------------------------------------
1100*cdf0e10cSrcweir 
1101*cdf0e10cSrcweir void SvxBackgroundTabPage::PointChanged( Window* , RECT_POINT  )
1102*cdf0e10cSrcweir 
1103*cdf0e10cSrcweir /*	[Beschreibung]
1104*cdf0e10cSrcweir 
1105*cdf0e10cSrcweir */
1106*cdf0e10cSrcweir 
1107*cdf0e10cSrcweir {
1108*cdf0e10cSrcweir 	// muss implementiert werden, damit Position-Control funktioniert
1109*cdf0e10cSrcweir }
1110*cdf0e10cSrcweir 
1111*cdf0e10cSrcweir //-----------------------------------------------------------------------
1112*cdf0e10cSrcweir 
1113*cdf0e10cSrcweir void SvxBackgroundTabPage::ShowSelector()
1114*cdf0e10cSrcweir 
1115*cdf0e10cSrcweir /*	[Beschreibung]
1116*cdf0e10cSrcweir 
1117*cdf0e10cSrcweir */
1118*cdf0e10cSrcweir 
1119*cdf0e10cSrcweir {
1120*cdf0e10cSrcweir 	if( bAllowShowSelector)
1121*cdf0e10cSrcweir 	{
1122*cdf0e10cSrcweir 		aSelectTxt.Show();
1123*cdf0e10cSrcweir 		aLbSelect.Show();
1124*cdf0e10cSrcweir 		aLbSelect.SetSelectHdl( HDL(SelectHdl_Impl) );
1125*cdf0e10cSrcweir 		aBtnLink.SetClickHdl( HDL(FileClickHdl_Impl) );
1126*cdf0e10cSrcweir 		aBtnPreview.SetClickHdl( HDL(FileClickHdl_Impl) );
1127*cdf0e10cSrcweir 		aBtnBrowse.SetClickHdl( HDL(BrowseHdl_Impl) );
1128*cdf0e10cSrcweir 		aBtnArea.SetClickHdl( HDL(RadioClickHdl_Impl) );
1129*cdf0e10cSrcweir 		aBtnTile.SetClickHdl( HDL(RadioClickHdl_Impl) );
1130*cdf0e10cSrcweir 		aBtnPosition.SetClickHdl( HDL(RadioClickHdl_Impl) );
1131*cdf0e10cSrcweir 
1132*cdf0e10cSrcweir 		// Verz"ogertes Laden "uber Timer (wg. UI-Update)
1133*cdf0e10cSrcweir 		pPageImpl->pLoadTimer = new Timer;
1134*cdf0e10cSrcweir 		pPageImpl->pLoadTimer->SetTimeout( 500 ); // 500ms verz"ogern
1135*cdf0e10cSrcweir 		pPageImpl->pLoadTimer->SetTimeoutHdl(
1136*cdf0e10cSrcweir 			LINK( this, SvxBackgroundTabPage, LoadTimerHdl_Impl ) );
1137*cdf0e10cSrcweir 
1138*cdf0e10cSrcweir 		bAllowShowSelector = sal_False;
1139*cdf0e10cSrcweir 
1140*cdf0e10cSrcweir 		if(nHtmlMode & HTMLMODE_ON)
1141*cdf0e10cSrcweir 		{
1142*cdf0e10cSrcweir 			if(!(nHtmlMode & HTMLMODE_GRAPH_POS))
1143*cdf0e10cSrcweir 				aBtnPosition.Enable(sal_False);
1144*cdf0e10cSrcweir 			aBtnArea.Enable(sal_False);
1145*cdf0e10cSrcweir 		}
1146*cdf0e10cSrcweir 	}
1147*cdf0e10cSrcweir }
1148*cdf0e10cSrcweir 
1149*cdf0e10cSrcweir //------------------------------------------------------------------------
1150*cdf0e10cSrcweir 
1151*cdf0e10cSrcweir 
1152*cdf0e10cSrcweir void SvxBackgroundTabPage::RaiseLoadError_Impl()
1153*cdf0e10cSrcweir 
1154*cdf0e10cSrcweir /*	[Beschreibung]
1155*cdf0e10cSrcweir 
1156*cdf0e10cSrcweir */
1157*cdf0e10cSrcweir 
1158*cdf0e10cSrcweir {
1159*cdf0e10cSrcweir 	SfxErrorContext aContext( ERRCTX_SVX_BACKGROUND,
1160*cdf0e10cSrcweir 							  String(),
1161*cdf0e10cSrcweir 							  this,
1162*cdf0e10cSrcweir 							  RID_SVXERRCTX,
1163*cdf0e10cSrcweir 							  &CUI_MGR() );
1164*cdf0e10cSrcweir 
1165*cdf0e10cSrcweir 	ErrorHandler::HandleError(
1166*cdf0e10cSrcweir 		*new StringErrorInfo( ERRCODE_SVX_GRAPHIC_NOTREADABLE,
1167*cdf0e10cSrcweir 							  aBgdGraphicPath ) );
1168*cdf0e10cSrcweir }
1169*cdf0e10cSrcweir 
1170*cdf0e10cSrcweir //------------------------------------------------------------------------
1171*cdf0e10cSrcweir 
1172*cdf0e10cSrcweir sal_Bool SvxBackgroundTabPage::LoadLinkedGraphic_Impl()
1173*cdf0e10cSrcweir 
1174*cdf0e10cSrcweir /*	[Beschreibung]
1175*cdf0e10cSrcweir 
1176*cdf0e10cSrcweir */
1177*cdf0e10cSrcweir 
1178*cdf0e10cSrcweir {
1179*cdf0e10cSrcweir 	sal_Bool bResult = ( aBgdGraphicPath.Len() > 0 ) &&
1180*cdf0e10cSrcweir 				   ( GRFILTER_OK == GraphicFilter::LoadGraphic( aBgdGraphicPath,
1181*cdf0e10cSrcweir 												 aBgdGraphicFilter,
1182*cdf0e10cSrcweir 												 aBgdGraphic ) );
1183*cdf0e10cSrcweir 	return bResult;
1184*cdf0e10cSrcweir }
1185*cdf0e10cSrcweir 
1186*cdf0e10cSrcweir //------------------------------------------------------------------------
1187*cdf0e10cSrcweir 
1188*cdf0e10cSrcweir 
1189*cdf0e10cSrcweir void SvxBackgroundTabPage::FillColorValueSets_Impl()
1190*cdf0e10cSrcweir 
1191*cdf0e10cSrcweir /*	[Beschreibung]
1192*cdf0e10cSrcweir 
1193*cdf0e10cSrcweir 	F"ullen des Farb-Sets
1194*cdf0e10cSrcweir */
1195*cdf0e10cSrcweir 
1196*cdf0e10cSrcweir {
1197*cdf0e10cSrcweir 	SfxObjectShell* pDocSh = SfxObjectShell::Current();
1198*cdf0e10cSrcweir 	const SfxPoolItem* pItem = NULL;
1199*cdf0e10cSrcweir 	XColorTable* pColorTable = NULL;
1200*cdf0e10cSrcweir 	const Size aSize15x15 = Size( 15, 15 );
1201*cdf0e10cSrcweir 	FASTBOOL bOwn = sal_False;
1202*cdf0e10cSrcweir 
1203*cdf0e10cSrcweir 	if ( pDocSh && ( 0 != ( pItem = pDocSh->GetItem( SID_COLOR_TABLE ) ) ) )
1204*cdf0e10cSrcweir 		pColorTable = ( (SvxColorTableItem*)pItem )->GetColorTable();
1205*cdf0e10cSrcweir 
1206*cdf0e10cSrcweir 	if ( !pColorTable )
1207*cdf0e10cSrcweir 	{
1208*cdf0e10cSrcweir 		bOwn = sal_True;
1209*cdf0e10cSrcweir 		pColorTable = new XColorTable( SvtPathOptions().GetPalettePath() );
1210*cdf0e10cSrcweir 	}
1211*cdf0e10cSrcweir 
1212*cdf0e10cSrcweir 	if ( pColorTable )
1213*cdf0e10cSrcweir 	{
1214*cdf0e10cSrcweir 		short i	= 0;
1215*cdf0e10cSrcweir 		long nCount	= pColorTable->Count();
1216*cdf0e10cSrcweir 		XColorEntry* pEntry	= NULL;
1217*cdf0e10cSrcweir 		Color aColWhite( COL_WHITE );
1218*cdf0e10cSrcweir 		String aStrWhite( EditResId( RID_SVXITEMS_COLOR_WHITE ) );
1219*cdf0e10cSrcweir 		WinBits nBits = ( aBackgroundColorSet.GetStyle() | WB_ITEMBORDER | WB_NAMEFIELD | WB_NONEFIELD );
1220*cdf0e10cSrcweir 		aBackgroundColorSet.SetText( SVX_RESSTR( RID_SVXSTR_TRANSPARENT ) );
1221*cdf0e10cSrcweir 		aBackgroundColorSet.SetStyle( nBits );
1222*cdf0e10cSrcweir 		aBackgroundColorSet.SetAccessibleName(aBackgroundColorBox.GetText());
1223*cdf0e10cSrcweir 		for ( i = 0; i < nCount; i++ )
1224*cdf0e10cSrcweir 		{
1225*cdf0e10cSrcweir             pEntry = pColorTable->GetColor(i);
1226*cdf0e10cSrcweir 			aBackgroundColorSet.InsertItem(	i + 1, pEntry->GetColor(), pEntry->GetName() );
1227*cdf0e10cSrcweir 		}
1228*cdf0e10cSrcweir 
1229*cdf0e10cSrcweir 		while ( i < 80 )
1230*cdf0e10cSrcweir 		{
1231*cdf0e10cSrcweir 			aBackgroundColorSet.InsertItem( i + 1, aColWhite, aStrWhite );
1232*cdf0e10cSrcweir 			i++;
1233*cdf0e10cSrcweir 		}
1234*cdf0e10cSrcweir 
1235*cdf0e10cSrcweir 		if ( nCount > 80 )
1236*cdf0e10cSrcweir 		{
1237*cdf0e10cSrcweir 			aBackgroundColorSet.SetStyle( nBits | WB_VSCROLL );
1238*cdf0e10cSrcweir 		}
1239*cdf0e10cSrcweir 	}
1240*cdf0e10cSrcweir 
1241*cdf0e10cSrcweir 	if ( bOwn )
1242*cdf0e10cSrcweir 		delete pColorTable;
1243*cdf0e10cSrcweir 
1244*cdf0e10cSrcweir 	aBackgroundColorSet.SetColCount( 10 );
1245*cdf0e10cSrcweir 	aBackgroundColorSet.SetLineCount( 10 );
1246*cdf0e10cSrcweir 	aBackgroundColorSet.CalcWindowSizePixel( aSize15x15 );
1247*cdf0e10cSrcweir 
1248*cdf0e10cSrcweir }
1249*cdf0e10cSrcweir 
1250*cdf0e10cSrcweir //------------------------------------------------------------------------
1251*cdf0e10cSrcweir 
1252*cdf0e10cSrcweir 
1253*cdf0e10cSrcweir 
1254*cdf0e10cSrcweir //------------------------------------------------------------------------
1255*cdf0e10cSrcweir 
1256*cdf0e10cSrcweir void SvxBackgroundTabPage::ShowColorUI_Impl()
1257*cdf0e10cSrcweir 
1258*cdf0e10cSrcweir /*	[Beschreibung]
1259*cdf0e10cSrcweir 
1260*cdf0e10cSrcweir 	Die Controls f"ur das Einstellen der Grafik ausblenden und die
1261*cdf0e10cSrcweir 	Controls f"ur die Farbeinstellung einblenden.
1262*cdf0e10cSrcweir */
1263*cdf0e10cSrcweir 
1264*cdf0e10cSrcweir {
1265*cdf0e10cSrcweir 	if( !aBackgroundColorSet.IsVisible() )
1266*cdf0e10cSrcweir 	{
1267*cdf0e10cSrcweir 		aBackgroundColorSet.Show();
1268*cdf0e10cSrcweir 		aBackgroundColorBox.Show();
1269*cdf0e10cSrcweir 		aBorderWin.Show();
1270*cdf0e10cSrcweir 		pPreviewWin1->Show();
1271*cdf0e10cSrcweir 		aBtnBrowse.Hide();
1272*cdf0e10cSrcweir 		aFtFile.Hide();
1273*cdf0e10cSrcweir 		aBtnLink.Hide();
1274*cdf0e10cSrcweir 		aBtnPreview.Hide();
1275*cdf0e10cSrcweir 		aGbFile.Hide();
1276*cdf0e10cSrcweir 		aBtnPosition.Hide();
1277*cdf0e10cSrcweir 		aBtnArea.Hide();
1278*cdf0e10cSrcweir 		aBtnTile.Hide();
1279*cdf0e10cSrcweir 		aWndPosition.Hide();
1280*cdf0e10cSrcweir 		aGbPosition.Hide();
1281*cdf0e10cSrcweir 		pPreviewWin2->Hide();
1282*cdf0e10cSrcweir         aGraphTransFL.Show(sal_False);
1283*cdf0e10cSrcweir         aGraphTransMF.Show(sal_False);
1284*cdf0e10cSrcweir         if(bColTransparency)
1285*cdf0e10cSrcweir 		{
1286*cdf0e10cSrcweir 			aColTransFT.Show();
1287*cdf0e10cSrcweir 			aColTransMF.Show();
1288*cdf0e10cSrcweir 		}
1289*cdf0e10cSrcweir     }
1290*cdf0e10cSrcweir }
1291*cdf0e10cSrcweir 
1292*cdf0e10cSrcweir //------------------------------------------------------------------------
1293*cdf0e10cSrcweir 
1294*cdf0e10cSrcweir void SvxBackgroundTabPage::ShowBitmapUI_Impl()
1295*cdf0e10cSrcweir 
1296*cdf0e10cSrcweir /*	[Beschreibung]
1297*cdf0e10cSrcweir 
1298*cdf0e10cSrcweir 	Die Controls f"ur die Farbeinstellung ausblenden und die
1299*cdf0e10cSrcweir 	Controls f"ur das Einstellen der Grafik einblenden.
1300*cdf0e10cSrcweir */
1301*cdf0e10cSrcweir 
1302*cdf0e10cSrcweir {
1303*cdf0e10cSrcweir 	if ( aLbSelect.IsVisible() &&
1304*cdf0e10cSrcweir 		 (
1305*cdf0e10cSrcweir 		aBackgroundColorSet.IsVisible()
1306*cdf0e10cSrcweir 		 || !aBtnBrowse.IsVisible() ) )
1307*cdf0e10cSrcweir 	{
1308*cdf0e10cSrcweir 		aBackgroundColorSet.Hide();
1309*cdf0e10cSrcweir 		aBackgroundColorBox.Hide();
1310*cdf0e10cSrcweir 		aBorderWin.Hide();
1311*cdf0e10cSrcweir 		pPreviewWin1->Hide();
1312*cdf0e10cSrcweir 		aBtnBrowse.Show();
1313*cdf0e10cSrcweir 		aFtFile.Show();
1314*cdf0e10cSrcweir 
1315*cdf0e10cSrcweir 		if ( !bLinkOnly && ! nHtmlMode & HTMLMODE_ON )
1316*cdf0e10cSrcweir 			aBtnLink.Show();
1317*cdf0e10cSrcweir 		aBtnPreview.Show();
1318*cdf0e10cSrcweir 		aGbFile.Show();
1319*cdf0e10cSrcweir 		aBtnPosition.Show();
1320*cdf0e10cSrcweir 		aBtnArea.Show();
1321*cdf0e10cSrcweir 		aBtnTile.Show();
1322*cdf0e10cSrcweir 		aWndPosition.Show();
1323*cdf0e10cSrcweir 		aGbPosition.Show();
1324*cdf0e10cSrcweir 		pPreviewWin2->Show();
1325*cdf0e10cSrcweir         if(bGraphTransparency)
1326*cdf0e10cSrcweir 		{
1327*cdf0e10cSrcweir 			aGraphTransFL.Show();
1328*cdf0e10cSrcweir 			aGraphTransMF.Show();
1329*cdf0e10cSrcweir 		}
1330*cdf0e10cSrcweir         aColTransFT.Show(sal_False);
1331*cdf0e10cSrcweir         aColTransMF.Show(sal_False);
1332*cdf0e10cSrcweir     }
1333*cdf0e10cSrcweir }
1334*cdf0e10cSrcweir 
1335*cdf0e10cSrcweir //------------------------------------------------------------------------
1336*cdf0e10cSrcweir 
1337*cdf0e10cSrcweir void SvxBackgroundTabPage::SetGraphicPosition_Impl( SvxGraphicPosition ePos )
1338*cdf0e10cSrcweir 
1339*cdf0e10cSrcweir /*	[Beschreibung]
1340*cdf0e10cSrcweir 
1341*cdf0e10cSrcweir 	Die Controls f"ur die Grafikposition einstellen.
1342*cdf0e10cSrcweir */
1343*cdf0e10cSrcweir 
1344*cdf0e10cSrcweir {
1345*cdf0e10cSrcweir 	switch ( ePos )
1346*cdf0e10cSrcweir 	{
1347*cdf0e10cSrcweir 		case GPOS_AREA:
1348*cdf0e10cSrcweir 		{
1349*cdf0e10cSrcweir 			aBtnArea.Check();
1350*cdf0e10cSrcweir 			aWndPosition.Disable();
1351*cdf0e10cSrcweir 		}
1352*cdf0e10cSrcweir 		break;
1353*cdf0e10cSrcweir 
1354*cdf0e10cSrcweir 		case GPOS_TILED:
1355*cdf0e10cSrcweir 		{
1356*cdf0e10cSrcweir 			aBtnTile.Check();
1357*cdf0e10cSrcweir 			aWndPosition.Disable();
1358*cdf0e10cSrcweir 		}
1359*cdf0e10cSrcweir 		break;
1360*cdf0e10cSrcweir 
1361*cdf0e10cSrcweir 		default:
1362*cdf0e10cSrcweir 		{
1363*cdf0e10cSrcweir 			aBtnPosition.Check();
1364*cdf0e10cSrcweir 			aWndPosition.Enable();
1365*cdf0e10cSrcweir 			RECT_POINT eNewPos = RP_MM;
1366*cdf0e10cSrcweir 
1367*cdf0e10cSrcweir 			switch ( ePos )
1368*cdf0e10cSrcweir 			{
1369*cdf0e10cSrcweir 				case GPOS_MM:	break;
1370*cdf0e10cSrcweir 				case GPOS_LT:	eNewPos = RP_LT; break;
1371*cdf0e10cSrcweir 				case GPOS_MT:	eNewPos = RP_MT; break;
1372*cdf0e10cSrcweir 				case GPOS_RT:	eNewPos = RP_RT; break;
1373*cdf0e10cSrcweir 				case GPOS_LM:	eNewPos = RP_LM; break;
1374*cdf0e10cSrcweir 				case GPOS_RM:	eNewPos = RP_RM; break;
1375*cdf0e10cSrcweir 				case GPOS_LB:	eNewPos = RP_LB; break;
1376*cdf0e10cSrcweir 				case GPOS_MB:	eNewPos = RP_MB; break;
1377*cdf0e10cSrcweir 				case GPOS_RB:	eNewPos = RP_RB; break;
1378*cdf0e10cSrcweir                 default: ;//prevent warning
1379*cdf0e10cSrcweir 			}
1380*cdf0e10cSrcweir 			aWndPosition.SetActualRP( eNewPos );
1381*cdf0e10cSrcweir 		}
1382*cdf0e10cSrcweir 		break;
1383*cdf0e10cSrcweir 	}
1384*cdf0e10cSrcweir 	aWndPosition.Invalidate();
1385*cdf0e10cSrcweir }
1386*cdf0e10cSrcweir 
1387*cdf0e10cSrcweir //------------------------------------------------------------------------
1388*cdf0e10cSrcweir 
1389*cdf0e10cSrcweir SvxGraphicPosition SvxBackgroundTabPage::GetGraphicPosition_Impl()
1390*cdf0e10cSrcweir 
1391*cdf0e10cSrcweir /*	[Beschreibung]
1392*cdf0e10cSrcweir 
1393*cdf0e10cSrcweir 	Die Position der Grafik zur"uckgeben.
1394*cdf0e10cSrcweir */
1395*cdf0e10cSrcweir 
1396*cdf0e10cSrcweir {
1397*cdf0e10cSrcweir 	if ( aBtnTile.IsChecked() )
1398*cdf0e10cSrcweir 		return GPOS_TILED;
1399*cdf0e10cSrcweir 	else if ( aBtnArea.IsChecked() )
1400*cdf0e10cSrcweir 		return GPOS_AREA;
1401*cdf0e10cSrcweir 	else
1402*cdf0e10cSrcweir 	{
1403*cdf0e10cSrcweir 		switch ( aWndPosition.GetActualRP() )
1404*cdf0e10cSrcweir 		{
1405*cdf0e10cSrcweir 			case RP_LT:	return GPOS_LT;
1406*cdf0e10cSrcweir 			case RP_MT:	return GPOS_MT;
1407*cdf0e10cSrcweir 			case RP_RT:	return GPOS_RT;
1408*cdf0e10cSrcweir 			case RP_LM:	return GPOS_LM;
1409*cdf0e10cSrcweir 			case RP_MM:	return GPOS_MM;
1410*cdf0e10cSrcweir 			case RP_RM:	return GPOS_RM;
1411*cdf0e10cSrcweir 			case RP_LB:	return GPOS_LB;
1412*cdf0e10cSrcweir 			case RP_MB:	return GPOS_MB;
1413*cdf0e10cSrcweir 			case RP_RB:	return GPOS_RB;
1414*cdf0e10cSrcweir 		}
1415*cdf0e10cSrcweir 	}
1416*cdf0e10cSrcweir 	return GPOS_MM;
1417*cdf0e10cSrcweir }
1418*cdf0e10cSrcweir 
1419*cdf0e10cSrcweir //-----------------------------------------------------------------------
1420*cdf0e10cSrcweir // Handler
1421*cdf0e10cSrcweir //-----------------------------------------------------------------------
1422*cdf0e10cSrcweir 
1423*cdf0e10cSrcweir IMPL_LINK( SvxBackgroundTabPage, BackgroundColorHdl_Impl, ValueSet*, EMPTYARG )
1424*cdf0e10cSrcweir /*
1425*cdf0e10cSrcweir     Handler, called when color selection is changed
1426*cdf0e10cSrcweir */
1427*cdf0e10cSrcweir {
1428*cdf0e10cSrcweir 	sal_uInt16 nItemId = aBackgroundColorSet.GetSelectItemId();
1429*cdf0e10cSrcweir 	Color aColor = nItemId ? ( aBackgroundColorSet.GetItemColor( nItemId ) ) : Color( COL_TRANSPARENT );
1430*cdf0e10cSrcweir 	aBgdColor = aColor;
1431*cdf0e10cSrcweir 	pPreviewWin1->NotifyChange( aBgdColor );
1432*cdf0e10cSrcweir     sal_Bool bEnableTransp = aBgdColor.GetTransparency() < 0xff;
1433*cdf0e10cSrcweir     aColTransFT.Enable(bEnableTransp);
1434*cdf0e10cSrcweir     aColTransMF.Enable(bEnableTransp);
1435*cdf0e10cSrcweir     return 0;
1436*cdf0e10cSrcweir }
1437*cdf0e10cSrcweir 
1438*cdf0e10cSrcweir //------------------------------------------------------------------------
1439*cdf0e10cSrcweir 
1440*cdf0e10cSrcweir IMPL_LINK( SvxBackgroundTabPage, SelectHdl_Impl, ListBox*, EMPTYARG )
1441*cdf0e10cSrcweir 
1442*cdf0e10cSrcweir /*	[Beschreibung]
1443*cdf0e10cSrcweir 
1444*cdf0e10cSrcweir */
1445*cdf0e10cSrcweir 
1446*cdf0e10cSrcweir {
1447*cdf0e10cSrcweir 	if ( 0 == aLbSelect.GetSelectEntryPos() )
1448*cdf0e10cSrcweir 	{
1449*cdf0e10cSrcweir 		ShowColorUI_Impl();
1450*cdf0e10cSrcweir 		aParaLBox.Enable(); // Zeichenhintergrund kann keine Bitmap sein
1451*cdf0e10cSrcweir 	}
1452*cdf0e10cSrcweir 	else
1453*cdf0e10cSrcweir 	{
1454*cdf0e10cSrcweir 		ShowBitmapUI_Impl();
1455*cdf0e10cSrcweir 		aParaLBox.Enable(sal_False);// Zeichenhintergrund kann keine Bitmap sein
1456*cdf0e10cSrcweir 	}
1457*cdf0e10cSrcweir 	return 0;
1458*cdf0e10cSrcweir }
1459*cdf0e10cSrcweir 
1460*cdf0e10cSrcweir //------------------------------------------------------------------------
1461*cdf0e10cSrcweir 
1462*cdf0e10cSrcweir IMPL_LINK( SvxBackgroundTabPage, FileClickHdl_Impl, CheckBox*, pBox )
1463*cdf0e10cSrcweir 
1464*cdf0e10cSrcweir /*	[Beschreibung]
1465*cdf0e10cSrcweir 
1466*cdf0e10cSrcweir */
1467*cdf0e10cSrcweir 
1468*cdf0e10cSrcweir {
1469*cdf0e10cSrcweir 	if ( &aBtnLink == pBox )
1470*cdf0e10cSrcweir 	{
1471*cdf0e10cSrcweir 		if ( aBtnLink.IsChecked() )
1472*cdf0e10cSrcweir 		{
1473*cdf0e10cSrcweir             INetURLObject aObj( aBgdGraphicPath );
1474*cdf0e10cSrcweir 			String aFilePath;
1475*cdf0e10cSrcweir 			if ( aObj.GetProtocol() == INET_PROT_FILE )
1476*cdf0e10cSrcweir 				aFilePath = aObj.getFSysPath( INetURLObject::FSYS_DETECT );
1477*cdf0e10cSrcweir 			else
1478*cdf0e10cSrcweir 				aFilePath = aBgdGraphicPath;
1479*cdf0e10cSrcweir 			aFtFile.SetText( aFilePath );
1480*cdf0e10cSrcweir 		}
1481*cdf0e10cSrcweir 		else
1482*cdf0e10cSrcweir 			aFtFile.SetText( aStrUnlinked );
1483*cdf0e10cSrcweir 	}
1484*cdf0e10cSrcweir 	else if ( &aBtnPreview == pBox )
1485*cdf0e10cSrcweir 	{
1486*cdf0e10cSrcweir 		if ( aBtnPreview.IsChecked() )
1487*cdf0e10cSrcweir 		{
1488*cdf0e10cSrcweir 			if ( !bIsGraphicValid )
1489*cdf0e10cSrcweir 				bIsGraphicValid = LoadLinkedGraphic_Impl();
1490*cdf0e10cSrcweir 
1491*cdf0e10cSrcweir 			if ( bIsGraphicValid )
1492*cdf0e10cSrcweir 			{
1493*cdf0e10cSrcweir 				Bitmap aBmp = aBgdGraphic.GetBitmap();
1494*cdf0e10cSrcweir 				pPreviewWin2->NotifyChange( &aBmp );
1495*cdf0e10cSrcweir 			}
1496*cdf0e10cSrcweir 			else
1497*cdf0e10cSrcweir 			{
1498*cdf0e10cSrcweir 				if ( aBgdGraphicPath.Len() > 0 ) // nur bei gelinkter Grafik
1499*cdf0e10cSrcweir 					RaiseLoadError_Impl();		 // ein Fehler
1500*cdf0e10cSrcweir 				pPreviewWin2->NotifyChange( NULL );
1501*cdf0e10cSrcweir 			}
1502*cdf0e10cSrcweir 		}
1503*cdf0e10cSrcweir 		else
1504*cdf0e10cSrcweir 			pPreviewWin2->NotifyChange( NULL );
1505*cdf0e10cSrcweir 	}
1506*cdf0e10cSrcweir 	return 0;
1507*cdf0e10cSrcweir }
1508*cdf0e10cSrcweir 
1509*cdf0e10cSrcweir //------------------------------------------------------------------------
1510*cdf0e10cSrcweir 
1511*cdf0e10cSrcweir IMPL_LINK( SvxBackgroundTabPage, RadioClickHdl_Impl, RadioButton*, pBtn )
1512*cdf0e10cSrcweir 
1513*cdf0e10cSrcweir /*	[Beschreibung]
1514*cdf0e10cSrcweir 
1515*cdf0e10cSrcweir */
1516*cdf0e10cSrcweir 
1517*cdf0e10cSrcweir {
1518*cdf0e10cSrcweir 	if ( pBtn == &aBtnPosition )
1519*cdf0e10cSrcweir 	{
1520*cdf0e10cSrcweir 		if ( !aWndPosition.IsEnabled() )
1521*cdf0e10cSrcweir 		{
1522*cdf0e10cSrcweir 			aWndPosition.Enable();
1523*cdf0e10cSrcweir 			aWndPosition.Invalidate();
1524*cdf0e10cSrcweir 		}
1525*cdf0e10cSrcweir 	}
1526*cdf0e10cSrcweir 	else if ( aWndPosition.IsEnabled() )
1527*cdf0e10cSrcweir 	{
1528*cdf0e10cSrcweir 		aWndPosition.Disable();
1529*cdf0e10cSrcweir 		aWndPosition.Invalidate();
1530*cdf0e10cSrcweir 	}
1531*cdf0e10cSrcweir 	return 0;
1532*cdf0e10cSrcweir }
1533*cdf0e10cSrcweir 
1534*cdf0e10cSrcweir //------------------------------------------------------------------------
1535*cdf0e10cSrcweir 
1536*cdf0e10cSrcweir IMPL_LINK( SvxBackgroundTabPage, BrowseHdl_Impl, PushButton* , EMPTYARG )
1537*cdf0e10cSrcweir 
1538*cdf0e10cSrcweir /*	[Beschreibung]
1539*cdf0e10cSrcweir 
1540*cdf0e10cSrcweir 	Handler, gerufen durch das Dr"ucken des Durchsuchen-Buttons.
1541*cdf0e10cSrcweir 	Grafik/Einf"ugen-Dialog erzeugen, Pfad setzen und starten.
1542*cdf0e10cSrcweir */
1543*cdf0e10cSrcweir 
1544*cdf0e10cSrcweir {
1545*cdf0e10cSrcweir 	if ( pPageImpl->pLoadTimer->IsActive() )
1546*cdf0e10cSrcweir 		return 0;
1547*cdf0e10cSrcweir 	sal_Bool bHtml = 0 != ( nHtmlMode & HTMLMODE_ON );
1548*cdf0e10cSrcweir 
1549*cdf0e10cSrcweir 	pImportDlg = new SvxOpenGraphicDialog( aStrBrowse );
1550*cdf0e10cSrcweir 	if ( bHtml || bLinkOnly )
1551*cdf0e10cSrcweir 		pImportDlg->EnableLink(sal_False);
1552*cdf0e10cSrcweir 	pImportDlg->SetPath( aBgdGraphicPath, aBtnLink.IsChecked() );
1553*cdf0e10cSrcweir 
1554*cdf0e10cSrcweir 	pPageImpl->bIsImportDlgInExecute = sal_True;
1555*cdf0e10cSrcweir 	short nErr = pImportDlg->Execute();
1556*cdf0e10cSrcweir 	pPageImpl->bIsImportDlgInExecute = sal_False;
1557*cdf0e10cSrcweir 
1558*cdf0e10cSrcweir 	if( !nErr )
1559*cdf0e10cSrcweir 	{
1560*cdf0e10cSrcweir 		if ( bHtml )
1561*cdf0e10cSrcweir 			aBtnLink.Check();
1562*cdf0e10cSrcweir 		// wenn Verkn"upfen nicht gecheckt ist und die Vorschau auch nicht,
1563*cdf0e10cSrcweir 		// dann die Vorschau aktivieren, damit der Anwender sieht,
1564*cdf0e10cSrcweir 		// welche Grafik er ausgew"ahlt hat
1565*cdf0e10cSrcweir 		if ( !aBtnLink.IsChecked() && !aBtnPreview.IsChecked() )
1566*cdf0e10cSrcweir 			aBtnPreview.Check( sal_True );
1567*cdf0e10cSrcweir 		// timer-verz"ogertes Laden der Grafik
1568*cdf0e10cSrcweir 		pPageImpl->pLoadTimer->Start();
1569*cdf0e10cSrcweir 	}
1570*cdf0e10cSrcweir 	else
1571*cdf0e10cSrcweir 		DELETEZ( pImportDlg );
1572*cdf0e10cSrcweir 	return 0;
1573*cdf0e10cSrcweir }
1574*cdf0e10cSrcweir 
1575*cdf0e10cSrcweir //-----------------------------------------------------------------------
1576*cdf0e10cSrcweir 
1577*cdf0e10cSrcweir IMPL_LINK( SvxBackgroundTabPage, LoadTimerHdl_Impl, Timer* , pTimer )
1578*cdf0e10cSrcweir 
1579*cdf0e10cSrcweir /*	[Beschreibung]
1580*cdf0e10cSrcweir 
1581*cdf0e10cSrcweir 	Verz"ogertes Laden der Grafik.
1582*cdf0e10cSrcweir 	Grafik wird nur dann geladen, wenn sie unterschiedlich zur
1583*cdf0e10cSrcweir 	aktuellen Grafik ist.
1584*cdf0e10cSrcweir */
1585*cdf0e10cSrcweir 
1586*cdf0e10cSrcweir {
1587*cdf0e10cSrcweir 	if ( pTimer == pPageImpl->pLoadTimer )
1588*cdf0e10cSrcweir 	{
1589*cdf0e10cSrcweir 		pPageImpl->pLoadTimer->Stop();
1590*cdf0e10cSrcweir 
1591*cdf0e10cSrcweir 		if ( pImportDlg )
1592*cdf0e10cSrcweir 		{
1593*cdf0e10cSrcweir             INetURLObject aOld( aBgdGraphicPath );
1594*cdf0e10cSrcweir 			INetURLObject aNew( pImportDlg->GetPath() );
1595*cdf0e10cSrcweir 			if ( !aBgdGraphicPath.Len() || aNew != aOld )
1596*cdf0e10cSrcweir 			{
1597*cdf0e10cSrcweir 				// neue Datei gew"ahlt
1598*cdf0e10cSrcweir 				aBgdGraphicPath   = pImportDlg->GetPath();
1599*cdf0e10cSrcweir 				aBgdGraphicFilter =	pImportDlg->GetCurrentFilter();
1600*cdf0e10cSrcweir 				sal_Bool bLink = ( nHtmlMode & HTMLMODE_ON ) || bLinkOnly ? sal_True : pImportDlg->IsAsLink();
1601*cdf0e10cSrcweir 				aBtnLink.Check( bLink );
1602*cdf0e10cSrcweir 				aBtnLink.Enable();
1603*cdf0e10cSrcweir 
1604*cdf0e10cSrcweir 				if ( aBtnPreview.IsChecked() )
1605*cdf0e10cSrcweir 				{
1606*cdf0e10cSrcweir 					if( !pImportDlg->GetGraphic(aBgdGraphic) )
1607*cdf0e10cSrcweir 					{
1608*cdf0e10cSrcweir 						bIsGraphicValid = sal_True;
1609*cdf0e10cSrcweir 					}
1610*cdf0e10cSrcweir 					else
1611*cdf0e10cSrcweir 					{
1612*cdf0e10cSrcweir 						aBgdGraphicFilter.Erase();
1613*cdf0e10cSrcweir 						aBgdGraphicPath.Erase();
1614*cdf0e10cSrcweir 						bIsGraphicValid = sal_False;
1615*cdf0e10cSrcweir 					}
1616*cdf0e10cSrcweir 				}
1617*cdf0e10cSrcweir 				else
1618*cdf0e10cSrcweir 					bIsGraphicValid = sal_False; // Grafik erst beim Preview-Click laden
1619*cdf0e10cSrcweir 
1620*cdf0e10cSrcweir 				if ( aBtnPreview.IsChecked() && bIsGraphicValid )
1621*cdf0e10cSrcweir 				{
1622*cdf0e10cSrcweir 					Bitmap aBmp = aBgdGraphic.GetBitmap();
1623*cdf0e10cSrcweir 					pPreviewWin2->NotifyChange( &aBmp );
1624*cdf0e10cSrcweir 				}
1625*cdf0e10cSrcweir 				else
1626*cdf0e10cSrcweir 					pPreviewWin2->NotifyChange( NULL );
1627*cdf0e10cSrcweir 			}
1628*cdf0e10cSrcweir 
1629*cdf0e10cSrcweir 			FileClickHdl_Impl( &aBtnLink );
1630*cdf0e10cSrcweir 			DELETEZ( pImportDlg );
1631*cdf0e10cSrcweir 		}
1632*cdf0e10cSrcweir 	}
1633*cdf0e10cSrcweir 	return 0;
1634*cdf0e10cSrcweir }
1635*cdf0e10cSrcweir 
1636*cdf0e10cSrcweir //-----------------------------------------------------------------------
1637*cdf0e10cSrcweir 
1638*cdf0e10cSrcweir void SvxBackgroundTabPage::ShowTblControl()
1639*cdf0e10cSrcweir 
1640*cdf0e10cSrcweir /*	[Beschreibung]
1641*cdf0e10cSrcweir 
1642*cdf0e10cSrcweir */
1643*cdf0e10cSrcweir 
1644*cdf0e10cSrcweir {
1645*cdf0e10cSrcweir 	aTblLBox			.SetSelectHdl( HDL(TblDestinationHdl_Impl) );
1646*cdf0e10cSrcweir 	aTblLBox			.SelectEntryPos(0);
1647*cdf0e10cSrcweir 	aTblDesc.Show();
1648*cdf0e10cSrcweir 	aTblLBox.Show();
1649*cdf0e10cSrcweir }
1650*cdf0e10cSrcweir 
1651*cdf0e10cSrcweir //-----------------------------------------------------------------------
1652*cdf0e10cSrcweir 
1653*cdf0e10cSrcweir void SvxBackgroundTabPage::ShowParaControl(sal_Bool bCharOnly)
1654*cdf0e10cSrcweir {
1655*cdf0e10cSrcweir 	aParaLBox.SetSelectHdl(HDL(ParaDestinationHdl_Impl));
1656*cdf0e10cSrcweir 	aParaLBox.SelectEntryPos(0);
1657*cdf0e10cSrcweir 	if(!bCharOnly)
1658*cdf0e10cSrcweir 	{
1659*cdf0e10cSrcweir 		aTblDesc.Show();
1660*cdf0e10cSrcweir 		aParaLBox.Show();
1661*cdf0e10cSrcweir 	}
1662*cdf0e10cSrcweir 	aParaLBox.SetData(&aParaLBox); // hier erkennt man, dass dieser Mode eingeschaltet ist
1663*cdf0e10cSrcweir }
1664*cdf0e10cSrcweir //-----------------------------------------------------------------------
1665*cdf0e10cSrcweir 
1666*cdf0e10cSrcweir IMPL_LINK( SvxBackgroundTabPage, TblDestinationHdl_Impl, ListBox*, pBox )
1667*cdf0e10cSrcweir 
1668*cdf0e10cSrcweir /*	[Beschreibung]
1669*cdf0e10cSrcweir 
1670*cdf0e10cSrcweir */
1671*cdf0e10cSrcweir 
1672*cdf0e10cSrcweir {
1673*cdf0e10cSrcweir 	sal_uInt16 nSelPos = pBox->GetSelectEntryPos();
1674*cdf0e10cSrcweir 	if( pTableBck_Impl && pTableBck_Impl->nActPos != nSelPos)
1675*cdf0e10cSrcweir 	{
1676*cdf0e10cSrcweir 		SvxBrushItem** pActItem = new (SvxBrushItem*);
1677*cdf0e10cSrcweir         sal_uInt16 nWhich = 0;
1678*cdf0e10cSrcweir         switch(pTableBck_Impl->nActPos)
1679*cdf0e10cSrcweir 		{
1680*cdf0e10cSrcweir 			case TBL_DEST_CELL:
1681*cdf0e10cSrcweir                 *pActItem = pTableBck_Impl->pCellBrush;
1682*cdf0e10cSrcweir                 nWhich = pTableBck_Impl->nCellWhich;
1683*cdf0e10cSrcweir 			break;
1684*cdf0e10cSrcweir 			case TBL_DEST_ROW:
1685*cdf0e10cSrcweir                 *pActItem = pTableBck_Impl->pRowBrush;
1686*cdf0e10cSrcweir                 nWhich = pTableBck_Impl->nRowWhich;
1687*cdf0e10cSrcweir 			break;
1688*cdf0e10cSrcweir 			case TBL_DEST_TBL:
1689*cdf0e10cSrcweir                 *pActItem = pTableBck_Impl->pTableBrush;
1690*cdf0e10cSrcweir                 nWhich = pTableBck_Impl->nTableWhich;
1691*cdf0e10cSrcweir 			break;
1692*cdf0e10cSrcweir 		}
1693*cdf0e10cSrcweir 		pTableBck_Impl->nActPos = nSelPos;
1694*cdf0e10cSrcweir         if(!*pActItem)
1695*cdf0e10cSrcweir             *pActItem = new SvxBrushItem(nWhich);
1696*cdf0e10cSrcweir         if(0 == aLbSelect.GetSelectEntryPos())  // Brush ausgewaehlt
1697*cdf0e10cSrcweir 		{
1698*cdf0e10cSrcweir             **pActItem = SvxBrushItem( aBgdColor, nWhich );
1699*cdf0e10cSrcweir 		}
1700*cdf0e10cSrcweir 		else
1701*cdf0e10cSrcweir 		{
1702*cdf0e10cSrcweir 				SvxGraphicPosition	eNewPos  = GetGraphicPosition_Impl();
1703*cdf0e10cSrcweir 				const sal_Bool			bIsLink  = aBtnLink.IsChecked();
1704*cdf0e10cSrcweir 
1705*cdf0e10cSrcweir 				if ( !bIsLink && !bIsGraphicValid )
1706*cdf0e10cSrcweir 					bIsGraphicValid = LoadLinkedGraphic_Impl();
1707*cdf0e10cSrcweir 
1708*cdf0e10cSrcweir 				if ( bIsLink )
1709*cdf0e10cSrcweir 					**pActItem = SvxBrushItem( aBgdGraphicPath,
1710*cdf0e10cSrcweir 												aBgdGraphicFilter,
1711*cdf0e10cSrcweir 												eNewPos,
1712*cdf0e10cSrcweir 												(*pActItem)->Which() );
1713*cdf0e10cSrcweir 				else
1714*cdf0e10cSrcweir 					**pActItem = SvxBrushItem( aBgdGraphic,
1715*cdf0e10cSrcweir 												eNewPos,
1716*cdf0e10cSrcweir 												(*pActItem)->Which() );
1717*cdf0e10cSrcweir 		}
1718*cdf0e10cSrcweir 		switch(nSelPos)
1719*cdf0e10cSrcweir 		{
1720*cdf0e10cSrcweir 			case TBL_DEST_CELL:
1721*cdf0e10cSrcweir 				*pActItem = pTableBck_Impl->pCellBrush;
1722*cdf0e10cSrcweir 				aLbSelect.Enable();
1723*cdf0e10cSrcweir                 nWhich = pTableBck_Impl->nCellWhich;
1724*cdf0e10cSrcweir             break;
1725*cdf0e10cSrcweir 			case TBL_DEST_ROW:
1726*cdf0e10cSrcweir 			{
1727*cdf0e10cSrcweir 				if((nHtmlMode & HTMLMODE_ON) && !(nHtmlMode & HTMLMODE_SOME_STYLES))
1728*cdf0e10cSrcweir 					aLbSelect.Disable();
1729*cdf0e10cSrcweir 				*pActItem = pTableBck_Impl->pRowBrush;
1730*cdf0e10cSrcweir                 nWhich = pTableBck_Impl->nRowWhich;
1731*cdf0e10cSrcweir             }
1732*cdf0e10cSrcweir 			break;
1733*cdf0e10cSrcweir 			case TBL_DEST_TBL:
1734*cdf0e10cSrcweir 				*pActItem = pTableBck_Impl->pTableBrush;
1735*cdf0e10cSrcweir 				aLbSelect.Enable();
1736*cdf0e10cSrcweir                 nWhich = pTableBck_Impl->nTableWhich;
1737*cdf0e10cSrcweir             break;
1738*cdf0e10cSrcweir 		}
1739*cdf0e10cSrcweir 		String aUserData = GetUserData();
1740*cdf0e10cSrcweir         if(!*pActItem)
1741*cdf0e10cSrcweir             *pActItem = new SvxBrushItem(nWhich);
1742*cdf0e10cSrcweir         FillControls_Impl(**pActItem, aUserData);
1743*cdf0e10cSrcweir 		delete pActItem;
1744*cdf0e10cSrcweir 	}
1745*cdf0e10cSrcweir 	return 0;
1746*cdf0e10cSrcweir }
1747*cdf0e10cSrcweir 
1748*cdf0e10cSrcweir //-----------------------------------------------------------------------
1749*cdf0e10cSrcweir 
1750*cdf0e10cSrcweir IMPL_LINK( SvxBackgroundTabPage, ParaDestinationHdl_Impl, ListBox*, pBox )
1751*cdf0e10cSrcweir {
1752*cdf0e10cSrcweir 	sal_uInt16 nSelPos = pBox->GetSelectEntryPos();
1753*cdf0e10cSrcweir 	if( pParaBck_Impl && pParaBck_Impl->nActPos != nSelPos)
1754*cdf0e10cSrcweir 	{
1755*cdf0e10cSrcweir 		SvxBrushItem** pActItem = new (SvxBrushItem*);
1756*cdf0e10cSrcweir 		switch(pParaBck_Impl->nActPos)
1757*cdf0e10cSrcweir 		{
1758*cdf0e10cSrcweir 			case PARA_DEST_PARA:
1759*cdf0e10cSrcweir 				*pActItem = pParaBck_Impl->pParaBrush;
1760*cdf0e10cSrcweir 			break;
1761*cdf0e10cSrcweir 			case PARA_DEST_CHAR:
1762*cdf0e10cSrcweir 				*pActItem = pParaBck_Impl->pCharBrush;
1763*cdf0e10cSrcweir 			break;
1764*cdf0e10cSrcweir 		}
1765*cdf0e10cSrcweir 		pParaBck_Impl->nActPos = nSelPos;
1766*cdf0e10cSrcweir 		if(0 == aLbSelect.GetSelectEntryPos())  // Brush ausgewaehlt
1767*cdf0e10cSrcweir 		{
1768*cdf0e10cSrcweir 			sal_uInt16 nWhich = (*pActItem)->Which();
1769*cdf0e10cSrcweir             **pActItem = SvxBrushItem( aBgdColor, nWhich );
1770*cdf0e10cSrcweir 		}
1771*cdf0e10cSrcweir 		else
1772*cdf0e10cSrcweir 		{
1773*cdf0e10cSrcweir 				SvxGraphicPosition	eNewPos  = GetGraphicPosition_Impl();
1774*cdf0e10cSrcweir 				const sal_Bool			bIsLink  = aBtnLink.IsChecked();
1775*cdf0e10cSrcweir 
1776*cdf0e10cSrcweir 				if ( !bIsLink && !bIsGraphicValid )
1777*cdf0e10cSrcweir 					bIsGraphicValid = LoadLinkedGraphic_Impl();
1778*cdf0e10cSrcweir 
1779*cdf0e10cSrcweir 				if ( bIsLink )
1780*cdf0e10cSrcweir 					**pActItem = SvxBrushItem( aBgdGraphicPath,
1781*cdf0e10cSrcweir 												aBgdGraphicFilter,
1782*cdf0e10cSrcweir 												eNewPos,
1783*cdf0e10cSrcweir 												(*pActItem)->Which() );
1784*cdf0e10cSrcweir 				else
1785*cdf0e10cSrcweir 					**pActItem = SvxBrushItem( aBgdGraphic,
1786*cdf0e10cSrcweir 												eNewPos,
1787*cdf0e10cSrcweir 												(*pActItem)->Which() );
1788*cdf0e10cSrcweir 		}
1789*cdf0e10cSrcweir 		switch(nSelPos)
1790*cdf0e10cSrcweir 		{
1791*cdf0e10cSrcweir 			case PARA_DEST_PARA:
1792*cdf0e10cSrcweir 				*pActItem = pParaBck_Impl->pParaBrush;
1793*cdf0e10cSrcweir 				aLbSelect.Enable();
1794*cdf0e10cSrcweir 			break;
1795*cdf0e10cSrcweir 			case PARA_DEST_CHAR:
1796*cdf0e10cSrcweir 			{
1797*cdf0e10cSrcweir 				*pActItem = pParaBck_Impl->pCharBrush;
1798*cdf0e10cSrcweir 				aLbSelect.Enable(sal_False);
1799*cdf0e10cSrcweir 			}
1800*cdf0e10cSrcweir 			break;
1801*cdf0e10cSrcweir 		}
1802*cdf0e10cSrcweir 		String aUserData = GetUserData();
1803*cdf0e10cSrcweir 		FillControls_Impl(**pActItem, aUserData);
1804*cdf0e10cSrcweir 		delete pActItem;
1805*cdf0e10cSrcweir 	}
1806*cdf0e10cSrcweir 	return 0;
1807*cdf0e10cSrcweir }
1808*cdf0e10cSrcweir 
1809*cdf0e10cSrcweir //-----------------------------------------------------------------------
1810*cdf0e10cSrcweir 
1811*cdf0e10cSrcweir void SvxBackgroundTabPage::FillControls_Impl( const SvxBrushItem& rBgdAttr,
1812*cdf0e10cSrcweir 											  const String& rUserData )
1813*cdf0e10cSrcweir 
1814*cdf0e10cSrcweir /*	[Beschreibung]
1815*cdf0e10cSrcweir 
1816*cdf0e10cSrcweir */
1817*cdf0e10cSrcweir 
1818*cdf0e10cSrcweir {
1819*cdf0e10cSrcweir 	SvxGraphicPosition	ePos = rBgdAttr.GetGraphicPos();
1820*cdf0e10cSrcweir 	const Color& rColor = rBgdAttr.GetColor();
1821*cdf0e10cSrcweir     if(bColTransparency)
1822*cdf0e10cSrcweir     {
1823*cdf0e10cSrcweir         aColTransMF.SetValue(lcl_TransparencyToPercent(rColor.GetTransparency()));
1824*cdf0e10cSrcweir         aColTransMF.SaveValue();
1825*cdf0e10cSrcweir 		sal_Bool bEnableTransp = rColor.GetTransparency() < 0xff;
1826*cdf0e10cSrcweir 		aColTransFT.Enable(bEnableTransp);
1827*cdf0e10cSrcweir 		aColTransMF.Enable(bEnableTransp);
1828*cdf0e10cSrcweir 		//the default setting should be "no transparency"
1829*cdf0e10cSrcweir 		if(!bEnableTransp)
1830*cdf0e10cSrcweir 			aColTransMF.SetValue(0);
1831*cdf0e10cSrcweir     }
1832*cdf0e10cSrcweir 
1833*cdf0e10cSrcweir     if ( GPOS_NONE == ePos || !aLbSelect.IsVisible() )
1834*cdf0e10cSrcweir 	{
1835*cdf0e10cSrcweir 		aLbSelect.SelectEntryPos( 0 );
1836*cdf0e10cSrcweir 		ShowColorUI_Impl();
1837*cdf0e10cSrcweir 		Color aTrColor( COL_TRANSPARENT );
1838*cdf0e10cSrcweir 		aBgdColor = rColor;
1839*cdf0e10cSrcweir 
1840*cdf0e10cSrcweir 		sal_uInt16 nCol = ( aTrColor != aBgdColor ) ?
1841*cdf0e10cSrcweir 			GetItemId_Impl( aBackgroundColorSet, aBgdColor ) : 0;
1842*cdf0e10cSrcweir 
1843*cdf0e10cSrcweir 		if( aTrColor != aBgdColor && nCol == 0)
1844*cdf0e10cSrcweir 		{
1845*cdf0e10cSrcweir 			aBackgroundColorSet.SetNoSelection();
1846*cdf0e10cSrcweir 		}
1847*cdf0e10cSrcweir 		else
1848*cdf0e10cSrcweir 		{
1849*cdf0e10cSrcweir 			aBackgroundColorSet.SelectItem( nCol );
1850*cdf0e10cSrcweir 		}
1851*cdf0e10cSrcweir 
1852*cdf0e10cSrcweir 		pPreviewWin1->NotifyChange( aBgdColor );
1853*cdf0e10cSrcweir 		if ( aLbSelect.IsVisible() ) // Grafikteil initialisieren
1854*cdf0e10cSrcweir 		{
1855*cdf0e10cSrcweir 			aBgdGraphicFilter.Erase();
1856*cdf0e10cSrcweir 			aBgdGraphicPath.Erase();
1857*cdf0e10cSrcweir 
1858*cdf0e10cSrcweir 			if ( !rUserData.Len() )
1859*cdf0e10cSrcweir 				aBtnPreview.Check( sal_False );
1860*cdf0e10cSrcweir 			aBtnLink.Check( sal_False );
1861*cdf0e10cSrcweir 			aBtnLink.Disable();
1862*cdf0e10cSrcweir 			pPreviewWin2->NotifyChange( NULL );
1863*cdf0e10cSrcweir 			SetGraphicPosition_Impl( GPOS_TILED );	// Kacheln als Default
1864*cdf0e10cSrcweir 		}
1865*cdf0e10cSrcweir 	}
1866*cdf0e10cSrcweir 	else
1867*cdf0e10cSrcweir 	{
1868*cdf0e10cSrcweir 		const String*	pStrLink   = rBgdAttr.GetGraphicLink();
1869*cdf0e10cSrcweir 		const String*	pStrFilter = rBgdAttr.GetGraphicFilter();
1870*cdf0e10cSrcweir 
1871*cdf0e10cSrcweir 		aLbSelect.SelectEntryPos( 1 );
1872*cdf0e10cSrcweir 		ShowBitmapUI_Impl();
1873*cdf0e10cSrcweir 
1874*cdf0e10cSrcweir 		if ( pStrLink )
1875*cdf0e10cSrcweir 		{
1876*cdf0e10cSrcweir #ifdef DBG_UTIL
1877*cdf0e10cSrcweir             INetURLObject aObj( *pStrLink );
1878*cdf0e10cSrcweir             DBG_ASSERT( aObj.GetProtocol() != INET_PROT_NOT_VALID, "Invalid URL!" );
1879*cdf0e10cSrcweir #endif
1880*cdf0e10cSrcweir 			aBgdGraphicPath = *pStrLink;
1881*cdf0e10cSrcweir 			aBtnLink.Check( sal_True );
1882*cdf0e10cSrcweir 			aBtnLink.Enable();
1883*cdf0e10cSrcweir 		}
1884*cdf0e10cSrcweir 		else
1885*cdf0e10cSrcweir 		{
1886*cdf0e10cSrcweir 			aBgdGraphicPath.Erase();
1887*cdf0e10cSrcweir 			aBtnLink.Check( sal_False );
1888*cdf0e10cSrcweir 			aBtnLink.Disable();
1889*cdf0e10cSrcweir 		}
1890*cdf0e10cSrcweir 
1891*cdf0e10cSrcweir         if(bGraphTransparency)
1892*cdf0e10cSrcweir         {
1893*cdf0e10cSrcweir             const GraphicObject* pObject = rBgdAttr.GetGraphicObject();
1894*cdf0e10cSrcweir             if(pObject)
1895*cdf0e10cSrcweir                 aGraphTransMF.SetValue(lcl_TransparencyToPercent(pObject->GetAttr().GetTransparency()));
1896*cdf0e10cSrcweir             else
1897*cdf0e10cSrcweir                 aGraphTransMF.SetValue(0);
1898*cdf0e10cSrcweir             aGraphTransMF.SaveValue();
1899*cdf0e10cSrcweir         }
1900*cdf0e10cSrcweir 
1901*cdf0e10cSrcweir         FileClickHdl_Impl( &aBtnLink );
1902*cdf0e10cSrcweir 
1903*cdf0e10cSrcweir 		if ( pStrFilter )
1904*cdf0e10cSrcweir 			aBgdGraphicFilter = *pStrFilter;
1905*cdf0e10cSrcweir 		else
1906*cdf0e10cSrcweir 			aBgdGraphicFilter.Erase();
1907*cdf0e10cSrcweir 
1908*cdf0e10cSrcweir 		if ( !pStrLink || aBtnPreview.IsChecked() )
1909*cdf0e10cSrcweir 		{
1910*cdf0e10cSrcweir 			// Grafik ist im Item vorhanden und muss nicht
1911*cdf0e10cSrcweir 			// geladen werden:
1912*cdf0e10cSrcweir 
1913*cdf0e10cSrcweir 			const Graphic* pGraphic = rBgdAttr.GetGraphic();
1914*cdf0e10cSrcweir 
1915*cdf0e10cSrcweir 			if ( !pGraphic && aBtnPreview.IsChecked() )
1916*cdf0e10cSrcweir 				bIsGraphicValid = LoadLinkedGraphic_Impl();
1917*cdf0e10cSrcweir 			else if ( pGraphic )
1918*cdf0e10cSrcweir 			{
1919*cdf0e10cSrcweir 				aBgdGraphic = *pGraphic;
1920*cdf0e10cSrcweir 				bIsGraphicValid = sal_True;
1921*cdf0e10cSrcweir 
1922*cdf0e10cSrcweir 				if ( !rUserData.Len() )
1923*cdf0e10cSrcweir 					aBtnPreview.Check();
1924*cdf0e10cSrcweir 			}
1925*cdf0e10cSrcweir 			else
1926*cdf0e10cSrcweir 			{
1927*cdf0e10cSrcweir 				RaiseLoadError_Impl();
1928*cdf0e10cSrcweir 				bIsGraphicValid = sal_False;
1929*cdf0e10cSrcweir 
1930*cdf0e10cSrcweir 				if ( !rUserData.Len() )
1931*cdf0e10cSrcweir 					aBtnPreview.Check( sal_False );
1932*cdf0e10cSrcweir 			}
1933*cdf0e10cSrcweir 		}
1934*cdf0e10cSrcweir 
1935*cdf0e10cSrcweir 		if ( aBtnPreview.IsChecked() && bIsGraphicValid )
1936*cdf0e10cSrcweir 		{
1937*cdf0e10cSrcweir 			Bitmap aBmp = aBgdGraphic.GetBitmap();
1938*cdf0e10cSrcweir 			pPreviewWin2->NotifyChange( &aBmp );
1939*cdf0e10cSrcweir 		}
1940*cdf0e10cSrcweir 		else
1941*cdf0e10cSrcweir 			pPreviewWin2->NotifyChange( NULL );
1942*cdf0e10cSrcweir 
1943*cdf0e10cSrcweir 		SetGraphicPosition_Impl( ePos );
1944*cdf0e10cSrcweir 	}
1945*cdf0e10cSrcweir }
1946*cdf0e10cSrcweir /* -----------------------------09.08.2002 14:04------------------------------
1947*cdf0e10cSrcweir 
1948*cdf0e10cSrcweir  ---------------------------------------------------------------------------*/
1949*cdf0e10cSrcweir void SvxBackgroundTabPage::EnableTransparency(sal_Bool bColor, sal_Bool bGraphic)
1950*cdf0e10cSrcweir {
1951*cdf0e10cSrcweir     bColTransparency  = bColor;
1952*cdf0e10cSrcweir     bGraphTransparency = bGraphic;
1953*cdf0e10cSrcweir     if(bColor)
1954*cdf0e10cSrcweir     {
1955*cdf0e10cSrcweir         aColTransFT.Show();
1956*cdf0e10cSrcweir         aColTransMF.Show();
1957*cdf0e10cSrcweir     }
1958*cdf0e10cSrcweir     if(bGraphic)
1959*cdf0e10cSrcweir     {
1960*cdf0e10cSrcweir         Size aRectSize(aWndPosition.GetSizePixel());
1961*cdf0e10cSrcweir         Point aRectPos(aWndPosition.GetPosPixel());
1962*cdf0e10cSrcweir         Point aFLPos(aGraphTransFL.GetPosPixel());
1963*cdf0e10cSrcweir         Size aTmp(LogicToPixel(Size(RSC_SP_FLGR_SPACE_Y, RSC_SP_FLGR_SPACE_Y), MAP_APPFONT));
1964*cdf0e10cSrcweir         long nRectHeight = aFLPos.Y() - aRectPos.Y() - aTmp.Height();
1965*cdf0e10cSrcweir         aRectSize.Height() = nRectHeight;
1966*cdf0e10cSrcweir         aWndPosition.SetSizePixel(aRectSize);
1967*cdf0e10cSrcweir         aWndPosition.Invalidate();
1968*cdf0e10cSrcweir     }
1969*cdf0e10cSrcweir }
1970*cdf0e10cSrcweir 
1971*cdf0e10cSrcweir void SvxBackgroundTabPage::PageCreated (SfxAllItemSet aSet) //add CHINA001
1972*cdf0e10cSrcweir {
1973*cdf0e10cSrcweir 	SFX_ITEMSET_ARG (&aSet,pFlagItem,SfxUInt32Item,SID_FLAG_TYPE,sal_False);
1974*cdf0e10cSrcweir 	if (pFlagItem)
1975*cdf0e10cSrcweir 	{
1976*cdf0e10cSrcweir 		sal_uInt32 nFlags=pFlagItem->GetValue();
1977*cdf0e10cSrcweir 		if ( ( nFlags & SVX_SHOW_TBLCTL ) == SVX_SHOW_TBLCTL )
1978*cdf0e10cSrcweir 			ShowTblControl();
1979*cdf0e10cSrcweir 		if ( ( nFlags & SVX_SHOW_PARACTL ) == SVX_SHOW_PARACTL )
1980*cdf0e10cSrcweir 			ShowParaControl();
1981*cdf0e10cSrcweir 		if ( ( nFlags & SVX_SHOW_SELECTOR ) == SVX_SHOW_SELECTOR )
1982*cdf0e10cSrcweir 			ShowSelector();
1983*cdf0e10cSrcweir 		if ( ( nFlags & SVX_ENABLE_TRANSPARENCY ) == SVX_ENABLE_TRANSPARENCY )
1984*cdf0e10cSrcweir 			EnableTransparency(sal_True, sal_True);
1985*cdf0e10cSrcweir 	}
1986*cdf0e10cSrcweir }
1987