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 10cdf0e10cSrcweir * 11*f6e50924SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 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. 19cdf0e10cSrcweir * 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 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 71cdf0e10cSrcweir SvxXConnectionPreview::~SvxXConnectionPreview() 72cdf0e10cSrcweir { 73cdf0e10cSrcweir delete pObjList; 74cdf0e10cSrcweir } 75cdf0e10cSrcweir 76cdf0e10cSrcweir /************************************************************************* 77cdf0e10cSrcweir |* 78cdf0e10cSrcweir |* Dtor SvxXConnectionPreview 79cdf0e10cSrcweir |* 80cdf0e10cSrcweir *************************************************************************/ 81cdf0e10cSrcweir 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 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 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 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 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 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 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