1*f6e50924SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*f6e50924SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*f6e50924SAndrew Rist * or more contributor license agreements. See the NOTICE file
5*f6e50924SAndrew Rist * distributed with this work for additional information
6*f6e50924SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*f6e50924SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*f6e50924SAndrew Rist * "License"); you may not use this file except in compliance
9*f6e50924SAndrew Rist * with the License. You may obtain a copy of the License at
10*f6e50924SAndrew Rist *
11*f6e50924SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*f6e50924SAndrew Rist *
13*f6e50924SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*f6e50924SAndrew Rist * software distributed under the License is distributed on an
15*f6e50924SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*f6e50924SAndrew Rist * KIND, either express or implied. See the License for the
17*f6e50924SAndrew Rist * specific language governing permissions and limitations
18*f6e50924SAndrew Rist * under the License.
19*f6e50924SAndrew Rist *
20*f6e50924SAndrew Rist *************************************************************/
21*f6e50924SAndrew Rist
22*f6e50924SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_svx.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir // include ---------------------------------------------------------------
28cdf0e10cSrcweir
29cdf0e10cSrcweir #include <svx/svdoedge.hxx>
30cdf0e10cSrcweir #include <svx/svdattrx.hxx>
31cdf0e10cSrcweir #include <svx/svdmark.hxx>
32cdf0e10cSrcweir #include <svx/svdview.hxx>
33cdf0e10cSrcweir
34cdf0e10cSrcweir #include <svx/svdpage.hxx> // SdrObjList
35cdf0e10cSrcweir
36cdf0e10cSrcweir #include "svx/connctrl.hxx"
37cdf0e10cSrcweir #include <svx/dialmgr.hxx>
38cdf0e10cSrcweir #include "svx/dlgutil.hxx"
39cdf0e10cSrcweir
40cdf0e10cSrcweir // #110094#
41cdf0e10cSrcweir #include <svx/sdr/contact/objectcontactofobjlistpainter.hxx>
42cdf0e10cSrcweir
43cdf0e10cSrcweir // #110094#
44cdf0e10cSrcweir #include <svx/sdr/contact/displayinfo.hxx>
45cdf0e10cSrcweir #include <vcl/svapp.hxx>
46cdf0e10cSrcweir
47cdf0e10cSrcweir /*************************************************************************
48cdf0e10cSrcweir |*
49cdf0e10cSrcweir |* Ctor SvxXConnectionPreview
50cdf0e10cSrcweir |*
51cdf0e10cSrcweir *************************************************************************/
52cdf0e10cSrcweir
SvxXConnectionPreview(Window * pParent,const ResId & rResId,const SfxItemSet & rInAttrs)53cdf0e10cSrcweir SvxXConnectionPreview::SvxXConnectionPreview( Window* pParent, const ResId& rResId,
54cdf0e10cSrcweir const SfxItemSet& rInAttrs ) :
55cdf0e10cSrcweir Control ( pParent, rResId ),
56cdf0e10cSrcweir rAttrs ( rInAttrs ),
57cdf0e10cSrcweir pEdgeObj( NULL ),
58cdf0e10cSrcweir pObjList( NULL ),
59cdf0e10cSrcweir pView ( NULL )
60cdf0e10cSrcweir {
61cdf0e10cSrcweir SetMapMode( MAP_100TH_MM );
62cdf0e10cSrcweir SetStyles();
63cdf0e10cSrcweir }
64cdf0e10cSrcweir
65cdf0e10cSrcweir /*************************************************************************
66cdf0e10cSrcweir |*
67cdf0e10cSrcweir |* Dtor SvxXConnectionPreview
68cdf0e10cSrcweir |*
69cdf0e10cSrcweir *************************************************************************/
70cdf0e10cSrcweir
~SvxXConnectionPreview()71cdf0e10cSrcweir SvxXConnectionPreview::~SvxXConnectionPreview()
72cdf0e10cSrcweir {
73cdf0e10cSrcweir delete pObjList;
74cdf0e10cSrcweir }
75cdf0e10cSrcweir
76cdf0e10cSrcweir /*************************************************************************
77cdf0e10cSrcweir |*
78cdf0e10cSrcweir |* Dtor SvxXConnectionPreview
79cdf0e10cSrcweir |*
80cdf0e10cSrcweir *************************************************************************/
81cdf0e10cSrcweir
Construct()82cdf0e10cSrcweir void SvxXConnectionPreview::Construct()
83cdf0e10cSrcweir {
84cdf0e10cSrcweir DBG_ASSERT( pView, "Keine gueltige View Uebergeben!" );
85cdf0e10cSrcweir
86cdf0e10cSrcweir const SdrMarkList& rMarkList = pView->GetMarkedObjectList();
87cdf0e10cSrcweir sal_uIntPtr nMarkCount = rMarkList.GetMarkCount();
88cdf0e10cSrcweir
89cdf0e10cSrcweir if( nMarkCount >= 1 )
90cdf0e10cSrcweir {
91cdf0e10cSrcweir sal_Bool bFound = sal_False;
92cdf0e10cSrcweir const SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
93cdf0e10cSrcweir
94cdf0e10cSrcweir
95cdf0e10cSrcweir for( sal_uInt16 i = 0; i < nMarkCount && !bFound; i++ )
96cdf0e10cSrcweir {
97cdf0e10cSrcweir pObj = rMarkList.GetMark( i )->GetMarkedSdrObj();
98cdf0e10cSrcweir sal_uInt32 nInv = pObj->GetObjInventor();
99cdf0e10cSrcweir sal_uInt16 nId = pObj->GetObjIdentifier();
100cdf0e10cSrcweir if( nInv == SdrInventor && nId == OBJ_EDGE )
101cdf0e10cSrcweir {
102cdf0e10cSrcweir bFound = sal_True;
103cdf0e10cSrcweir SdrEdgeObj* pTmpEdgeObj = (SdrEdgeObj*) pObj;
104cdf0e10cSrcweir pEdgeObj = (SdrEdgeObj*) pTmpEdgeObj->Clone();
105cdf0e10cSrcweir
106cdf0e10cSrcweir SdrObjConnection& rConn1 = (SdrObjConnection&)pEdgeObj->GetConnection( sal_True );
107cdf0e10cSrcweir SdrObjConnection& rConn2 = (SdrObjConnection&)pEdgeObj->GetConnection( sal_False );
108cdf0e10cSrcweir
109cdf0e10cSrcweir rConn1 = pTmpEdgeObj->GetConnection( sal_True );
110cdf0e10cSrcweir rConn2 = pTmpEdgeObj->GetConnection( sal_False );
111cdf0e10cSrcweir
112cdf0e10cSrcweir SdrObject* pTmpObj1 = pTmpEdgeObj->GetConnectedNode( sal_True );
113cdf0e10cSrcweir SdrObject* pTmpObj2 = pTmpEdgeObj->GetConnectedNode( sal_False );
114cdf0e10cSrcweir
115cdf0e10cSrcweir // #110094#
116cdf0e10cSrcweir // potential memory leak here (!). Create SdrObjList only when there is
117cdf0e10cSrcweir // not yet one.
118cdf0e10cSrcweir if(!pObjList)
119cdf0e10cSrcweir {
120cdf0e10cSrcweir pObjList = new SdrObjList( pView->GetModel(), NULL );
121cdf0e10cSrcweir }
122cdf0e10cSrcweir
123cdf0e10cSrcweir if( pTmpObj1 )
124cdf0e10cSrcweir {
125cdf0e10cSrcweir SdrObject* pObj1 = pTmpObj1->Clone();
126cdf0e10cSrcweir pObjList->InsertObject( pObj1 );
127cdf0e10cSrcweir pEdgeObj->ConnectToNode( sal_True, pObj1 );
128cdf0e10cSrcweir }
129cdf0e10cSrcweir if( pTmpObj2 )
130cdf0e10cSrcweir {
131cdf0e10cSrcweir SdrObject* pObj2 = pTmpObj2->Clone();
132cdf0e10cSrcweir pObjList->InsertObject( pObj2 );
133cdf0e10cSrcweir pEdgeObj->ConnectToNode( sal_False, pObj2 );
134cdf0e10cSrcweir }
135cdf0e10cSrcweir pObjList->InsertObject( pEdgeObj );
136cdf0e10cSrcweir }
137cdf0e10cSrcweir }
138cdf0e10cSrcweir }
139cdf0e10cSrcweir
140cdf0e10cSrcweir if( !pEdgeObj )
141cdf0e10cSrcweir pEdgeObj = new SdrEdgeObj();
142cdf0e10cSrcweir
143cdf0e10cSrcweir // Groesse anpassen
144cdf0e10cSrcweir if( pObjList )
145cdf0e10cSrcweir {
146cdf0e10cSrcweir OutputDevice* pOD = pView->GetFirstOutputDevice(); // GetWin( 0 );
147cdf0e10cSrcweir Rectangle aRect = pObjList->GetAllObjBoundRect();
148cdf0e10cSrcweir
149cdf0e10cSrcweir MapMode aMapMode = GetMapMode();
150cdf0e10cSrcweir aMapMode.SetMapUnit( pOD->GetMapMode().GetMapUnit() );
151cdf0e10cSrcweir SetMapMode( aMapMode );
152cdf0e10cSrcweir
153cdf0e10cSrcweir MapMode aDisplayMap( aMapMode );
154cdf0e10cSrcweir Point aNewPos;
155cdf0e10cSrcweir Size aNewSize;
156cdf0e10cSrcweir const Size aWinSize = PixelToLogic( GetOutputSizePixel(), aDisplayMap );
157cdf0e10cSrcweir const long nWidth = aWinSize.Width();
158cdf0e10cSrcweir const long nHeight = aWinSize.Height();
159cdf0e10cSrcweir double fRectWH = (double) aRect.GetWidth() / aRect.GetHeight();
160cdf0e10cSrcweir double fWinWH = (double) nWidth / nHeight;
161cdf0e10cSrcweir
162cdf0e10cSrcweir // Bitmap an Thumbgroesse anpassen (hier nicht!)
163cdf0e10cSrcweir if ( fRectWH < fWinWH)
164cdf0e10cSrcweir {
165cdf0e10cSrcweir aNewSize.Width() = (long) ( (double) nHeight * fRectWH );
166cdf0e10cSrcweir aNewSize.Height()= nHeight;
167cdf0e10cSrcweir }
168cdf0e10cSrcweir else
169cdf0e10cSrcweir {
170cdf0e10cSrcweir aNewSize.Width() = nWidth;
171cdf0e10cSrcweir aNewSize.Height()= (long) ( (double) nWidth / fRectWH );
172cdf0e10cSrcweir }
173cdf0e10cSrcweir
174cdf0e10cSrcweir Fraction aFrac1( aWinSize.Width(), aRect.GetWidth() );
175cdf0e10cSrcweir Fraction aFrac2( aWinSize.Height(), aRect.GetHeight() );
176cdf0e10cSrcweir Fraction aMinFrac( aFrac1 <= aFrac2 ? aFrac1 : aFrac2 );
177cdf0e10cSrcweir
178cdf0e10cSrcweir // MapMode umsetzen
179cdf0e10cSrcweir aDisplayMap.SetScaleX( aMinFrac );
180cdf0e10cSrcweir aDisplayMap.SetScaleY( aMinFrac );
181cdf0e10cSrcweir
182cdf0e10cSrcweir // Zentrierung
183cdf0e10cSrcweir aNewPos.X() = ( nWidth - aNewSize.Width() ) >> 1;
184cdf0e10cSrcweir aNewPos.Y() = ( nHeight - aNewSize.Height() ) >> 1;
185cdf0e10cSrcweir
186cdf0e10cSrcweir aDisplayMap.SetOrigin( LogicToLogic( aNewPos, aMapMode, aDisplayMap ) );
187cdf0e10cSrcweir SetMapMode( aDisplayMap );
188cdf0e10cSrcweir
189cdf0e10cSrcweir // Ursprung
190cdf0e10cSrcweir aNewPos = aDisplayMap.GetOrigin();
191cdf0e10cSrcweir aNewPos -= Point( aRect.TopLeft().X(), aRect.TopLeft().Y() );
192cdf0e10cSrcweir aDisplayMap.SetOrigin( aNewPos );
193cdf0e10cSrcweir SetMapMode( aDisplayMap );
194cdf0e10cSrcweir
195cdf0e10cSrcweir
196cdf0e10cSrcweir Point aPos;
197cdf0e10cSrcweir MouseEvent aMEvt( aPos, 1, 0, MOUSE_RIGHT );
198cdf0e10cSrcweir MouseButtonDown( aMEvt );
199cdf0e10cSrcweir /*
200cdf0e10cSrcweir Point aPt( -aRect.TopLeft().X(), -aRect.TopLeft().Y() );
201cdf0e10cSrcweir aMapMode.SetOrigin( aPt );
202cdf0e10cSrcweir
203cdf0e10cSrcweir // Skalierung
204cdf0e10cSrcweir Size aSize = GetOutputSize();
205cdf0e10cSrcweir Fraction aFrac1( aSize.Width(), aRect.GetWidth() );
206cdf0e10cSrcweir Fraction aFrac2( aSize.Height(), aRect.GetHeight() );
207cdf0e10cSrcweir Fraction aMaxFrac( aFrac1 > aFrac2 ? aFrac1 : aFrac2 );
208cdf0e10cSrcweir Fraction aMinFrac( aFrac1 <= aFrac2 ? aFrac1 : aFrac2 );
209cdf0e10cSrcweir sal_Bool bChange = (sal_Bool) ( (double)aMinFrac > 1.0 );
210cdf0e10cSrcweir aMapMode.SetScaleX( aMinFrac );
211cdf0e10cSrcweir aMapMode.SetScaleY( aMinFrac );
212cdf0e10cSrcweir
213cdf0e10cSrcweir // zentrieren
214cdf0e10cSrcweir long nXXL = aSize.Width() > aRect.GetWidth() ? aSize.Width() : aRect.GetWidth();
215cdf0e10cSrcweir long nXS = aSize.Width() <= aRect.GetWidth() ? aSize.Width() : aRect.GetWidth();
216cdf0e10cSrcweir if( bChange )
217cdf0e10cSrcweir {
218cdf0e10cSrcweir long nTmp = nXXL; nXXL = nXS; nXS = nTmp;
219cdf0e10cSrcweir }
220cdf0e10cSrcweir long nX = (long) ( (double)aMinFrac * (double)nXXL );
221cdf0e10cSrcweir nX = (long) ( (double)labs( nXS - nX ) / (double)aMinFrac / 2.0 );
222cdf0e10cSrcweir
223cdf0e10cSrcweir long nYXL = aSize.Height() > aRect.GetHeight() ? aSize.Height() : aRect.GetHeight();
224cdf0e10cSrcweir long nYS = aSize.Height() <= aRect.GetHeight() ? aSize.Height() : aRect.GetHeight();
225cdf0e10cSrcweir if( bChange )
226cdf0e10cSrcweir {
227cdf0e10cSrcweir long nTmp = nXXL; nXXL = nXS; nXS = nTmp;
228cdf0e10cSrcweir }
229cdf0e10cSrcweir long nY = (long) ( (double)aMinFrac * (double)nYXL );
230cdf0e10cSrcweir nY = (long) ( (double)labs( nYS - nY ) / (double)aMinFrac / 2.0 );
231cdf0e10cSrcweir
232cdf0e10cSrcweir aPt += Point( nX, nY );
233cdf0e10cSrcweir aMapMode.SetOrigin( aPt );
234cdf0e10cSrcweir
235cdf0e10cSrcweir SetMapMode( aMapMode );
236cdf0e10cSrcweir */
237cdf0e10cSrcweir }
238cdf0e10cSrcweir }
239cdf0e10cSrcweir
240cdf0e10cSrcweir /*************************************************************************
241cdf0e10cSrcweir |*
242cdf0e10cSrcweir |* SvxXConnectionPreview: Paint()
243cdf0e10cSrcweir |*
244cdf0e10cSrcweir *************************************************************************/
245cdf0e10cSrcweir
Paint(const Rectangle &)246cdf0e10cSrcweir void SvxXConnectionPreview::Paint( const Rectangle& )
247cdf0e10cSrcweir {
248cdf0e10cSrcweir if( pObjList )
249cdf0e10cSrcweir {
250cdf0e10cSrcweir // #110094#
251cdf0e10cSrcweir // This will not work anymore. To not start at Adam and Eve, i will
252cdf0e10cSrcweir // ATM not try to change all this stuff to really using an own model
253cdf0e10cSrcweir // and a view. I will just try to provide a mechanism to paint such
254cdf0e10cSrcweir // objects without own model and without a page/view with the new
255cdf0e10cSrcweir // mechanism.
256cdf0e10cSrcweir
257cdf0e10cSrcweir // New stuff: Use a ObjectContactOfObjListPainter.
258cdf0e10cSrcweir sdr::contact::SdrObjectVector aObjectVector;
259cdf0e10cSrcweir
260cdf0e10cSrcweir for(sal_uInt32 a(0L); a < pObjList->GetObjCount(); a++)
261cdf0e10cSrcweir {
262cdf0e10cSrcweir SdrObject* pObject = pObjList->GetObj(a);
263cdf0e10cSrcweir DBG_ASSERT(pObject,
264cdf0e10cSrcweir "SvxXConnectionPreview::Paint: Corrupt ObjectList (!)");
265cdf0e10cSrcweir aObjectVector.push_back(pObject);
266cdf0e10cSrcweir }
267cdf0e10cSrcweir
268cdf0e10cSrcweir sdr::contact::ObjectContactOfObjListPainter aPainter(*this, aObjectVector, 0);
269cdf0e10cSrcweir sdr::contact::DisplayInfo aDisplayInfo;
270cdf0e10cSrcweir
271cdf0e10cSrcweir // do processing
272cdf0e10cSrcweir aPainter.ProcessDisplay(aDisplayInfo);
273cdf0e10cSrcweir }
274cdf0e10cSrcweir }
275cdf0e10cSrcweir
276cdf0e10cSrcweir /*************************************************************************
277cdf0e10cSrcweir |*
278cdf0e10cSrcweir |* SvxXConnectionPreview: SetAttributes()
279cdf0e10cSrcweir |*
280cdf0e10cSrcweir *************************************************************************/
281cdf0e10cSrcweir
SetAttributes(const SfxItemSet & rInAttrs)282cdf0e10cSrcweir void SvxXConnectionPreview::SetAttributes( const SfxItemSet& rInAttrs )
283cdf0e10cSrcweir {
284cdf0e10cSrcweir //pEdgeObj->SetItemSetAndBroadcast(rInAttrs);
285cdf0e10cSrcweir pEdgeObj->SetMergedItemSetAndBroadcast(rInAttrs);
286cdf0e10cSrcweir
287cdf0e10cSrcweir Invalidate();
288cdf0e10cSrcweir }
289cdf0e10cSrcweir
290cdf0e10cSrcweir /*************************************************************************
291cdf0e10cSrcweir |*
292cdf0e10cSrcweir |* Ermittelt die Anzahl der Linienversaetze anhand des Preview-Objektes
293cdf0e10cSrcweir |*
294cdf0e10cSrcweir *************************************************************************/
295cdf0e10cSrcweir
GetLineDeltaAnz()296cdf0e10cSrcweir sal_uInt16 SvxXConnectionPreview::GetLineDeltaAnz()
297cdf0e10cSrcweir {
298cdf0e10cSrcweir const SfxItemSet& rSet = pEdgeObj->GetMergedItemSet();
299cdf0e10cSrcweir sal_uInt16 nCount(0);
300cdf0e10cSrcweir
301cdf0e10cSrcweir if(SFX_ITEM_DONTCARE != rSet.GetItemState(SDRATTR_EDGELINEDELTAANZ))
302cdf0e10cSrcweir nCount = ((const SdrEdgeLineDeltaAnzItem&)rSet.Get(SDRATTR_EDGELINEDELTAANZ)).GetValue();
303cdf0e10cSrcweir
304cdf0e10cSrcweir return nCount;
305cdf0e10cSrcweir }
306cdf0e10cSrcweir
307cdf0e10cSrcweir /*************************************************************************
308cdf0e10cSrcweir |*
309cdf0e10cSrcweir |* SvxXConnectionPreview: MouseButtonDown()
310cdf0e10cSrcweir |*
311cdf0e10cSrcweir *************************************************************************/
312cdf0e10cSrcweir
MouseButtonDown(const MouseEvent & rMEvt)313cdf0e10cSrcweir void SvxXConnectionPreview::MouseButtonDown( const MouseEvent& rMEvt )
314cdf0e10cSrcweir {
315cdf0e10cSrcweir sal_Bool bZoomIn = rMEvt.IsLeft() && !rMEvt.IsShift();
316cdf0e10cSrcweir sal_Bool bZoomOut = rMEvt.IsRight() || rMEvt.IsShift();
317cdf0e10cSrcweir sal_Bool bCtrl = rMEvt.IsMod1();
318cdf0e10cSrcweir
319cdf0e10cSrcweir if( bZoomIn || bZoomOut )
320cdf0e10cSrcweir {
321cdf0e10cSrcweir MapMode aMapMode = GetMapMode();
322cdf0e10cSrcweir Fraction aXFrac = aMapMode.GetScaleX();
323cdf0e10cSrcweir Fraction aYFrac = aMapMode.GetScaleY();
324cdf0e10cSrcweir Fraction* pMultFrac;
325cdf0e10cSrcweir
326cdf0e10cSrcweir if( bZoomIn )
327cdf0e10cSrcweir {
328cdf0e10cSrcweir if( bCtrl )
329cdf0e10cSrcweir pMultFrac = new Fraction( 3, 2 );
330cdf0e10cSrcweir else
331cdf0e10cSrcweir pMultFrac = new Fraction( 11, 10 );
332cdf0e10cSrcweir }
333cdf0e10cSrcweir else
334cdf0e10cSrcweir {
335cdf0e10cSrcweir if( bCtrl )
336cdf0e10cSrcweir pMultFrac = new Fraction( 2, 3 );
337cdf0e10cSrcweir else
338cdf0e10cSrcweir pMultFrac = new Fraction( 10, 11 );
339cdf0e10cSrcweir }
340cdf0e10cSrcweir
341cdf0e10cSrcweir aXFrac *= *pMultFrac;
342cdf0e10cSrcweir aYFrac *= *pMultFrac;
343cdf0e10cSrcweir if( (double)aXFrac > 0.001 && (double)aXFrac < 1000.0 &&
344cdf0e10cSrcweir (double)aYFrac > 0.001 && (double)aYFrac < 1000.0 )
345cdf0e10cSrcweir {
346cdf0e10cSrcweir aMapMode.SetScaleX( aXFrac );
347cdf0e10cSrcweir aMapMode.SetScaleY( aYFrac );
348cdf0e10cSrcweir SetMapMode( aMapMode );
349cdf0e10cSrcweir
350cdf0e10cSrcweir Size aOutSize( GetOutputSize() );
351cdf0e10cSrcweir
352cdf0e10cSrcweir Point aPt( aMapMode.GetOrigin() );
353cdf0e10cSrcweir long nX = (long)( ( (double)aOutSize.Width() - ( (double)aOutSize.Width() * (double)*pMultFrac ) ) / 2.0 + 0.5 );
354cdf0e10cSrcweir long nY = (long)( ( (double)aOutSize.Height() - ( (double)aOutSize.Height() * (double)*pMultFrac ) ) / 2.0 + 0.5 );
355cdf0e10cSrcweir aPt.X() += nX;
356cdf0e10cSrcweir aPt.Y() += nY;
357cdf0e10cSrcweir
358cdf0e10cSrcweir aMapMode.SetOrigin( aPt );
359cdf0e10cSrcweir SetMapMode( aMapMode );
360cdf0e10cSrcweir
361cdf0e10cSrcweir Invalidate();
362cdf0e10cSrcweir }
363cdf0e10cSrcweir delete pMultFrac;
364cdf0e10cSrcweir }
365cdf0e10cSrcweir }
366cdf0e10cSrcweir
SetStyles()367cdf0e10cSrcweir void SvxXConnectionPreview::SetStyles()
368cdf0e10cSrcweir {
369cdf0e10cSrcweir const StyleSettings& rStyles = Application::GetSettings().GetStyleSettings();
370cdf0e10cSrcweir SetDrawMode( GetSettings().GetStyleSettings().GetHighContrastMode() ? OUTPUT_DRAWMODE_CONTRAST : OUTPUT_DRAWMODE_COLOR );
371cdf0e10cSrcweir SetBackground( Wallpaper( Color( rStyles.GetFieldColor() ) ) );
372cdf0e10cSrcweir }
373cdf0e10cSrcweir
DataChanged(const DataChangedEvent & rDCEvt)374cdf0e10cSrcweir void SvxXConnectionPreview::DataChanged( const DataChangedEvent& rDCEvt )
375cdf0e10cSrcweir {
376cdf0e10cSrcweir Control::DataChanged( rDCEvt );
377cdf0e10cSrcweir
378cdf0e10cSrcweir if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) && (rDCEvt.GetFlags() & SETTINGS_STYLE) )
379cdf0e10cSrcweir {
380cdf0e10cSrcweir SetStyles();
381cdf0e10cSrcweir }
382cdf0e10cSrcweir }
383cdf0e10cSrcweir
384