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_sd.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir #include "OutlineViewShell.hxx" 32*cdf0e10cSrcweir 33*cdf0e10cSrcweir #include <com/sun/star/presentation/XPresentation2.hpp> 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir #include "app.hrc" 36*cdf0e10cSrcweir #include <svx/hlnkitem.hxx> 37*cdf0e10cSrcweir #include <sfx2/docfile.hxx> 38*cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 39*cdf0e10cSrcweir #include <sfx2/request.hxx> 40*cdf0e10cSrcweir #include <svl/eitem.hxx> 41*cdf0e10cSrcweir #ifndef _ZOOMITEM_HXX //autogen 42*cdf0e10cSrcweir #include <svx/zoomitem.hxx> 43*cdf0e10cSrcweir #endif 44*cdf0e10cSrcweir #include <vcl/msgbox.hxx> 45*cdf0e10cSrcweir #include <editeng/eeitem.hxx> 46*cdf0e10cSrcweir #include <editeng/flditem.hxx> 47*cdf0e10cSrcweir #include <editeng/editstat.hxx> 48*cdf0e10cSrcweir #include "optsitem.hxx" 49*cdf0e10cSrcweir #include <unotools/useroptions.hxx> 50*cdf0e10cSrcweir 51*cdf0e10cSrcweir #include <sfx2/viewfrm.hxx> 52*cdf0e10cSrcweir #include "Outliner.hxx" 53*cdf0e10cSrcweir #include "Window.hxx" 54*cdf0e10cSrcweir #include "OutlineViewShell.hxx" 55*cdf0e10cSrcweir #include "fubullet.hxx" 56*cdf0e10cSrcweir #include "fuolbull.hxx" 57*cdf0e10cSrcweir #include "FrameView.hxx" 58*cdf0e10cSrcweir #include "fuzoom.hxx" 59*cdf0e10cSrcweir #include "fuscale.hxx" 60*cdf0e10cSrcweir #include "fuchar.hxx" 61*cdf0e10cSrcweir #include "fuinsfil.hxx" 62*cdf0e10cSrcweir #include "fuprobjs.hxx" 63*cdf0e10cSrcweir #include "futhes.hxx" 64*cdf0e10cSrcweir #include "futempl.hxx" 65*cdf0e10cSrcweir #include "fusldlg.hxx" 66*cdf0e10cSrcweir #include "zoomlist.hxx" 67*cdf0e10cSrcweir #include "fuexpand.hxx" 68*cdf0e10cSrcweir #include "fusumry.hxx" 69*cdf0e10cSrcweir #include "fucushow.hxx" 70*cdf0e10cSrcweir #include "drawdoc.hxx" 71*cdf0e10cSrcweir #include "sdattr.hxx" 72*cdf0e10cSrcweir #include "ViewShellBase.hxx" 73*cdf0e10cSrcweir #include "sdabstdlg.hxx" 74*cdf0e10cSrcweir #include "framework/FrameworkHelper.hxx" 75*cdf0e10cSrcweir #include "DrawViewShell.hxx" 76*cdf0e10cSrcweir 77*cdf0e10cSrcweir using namespace ::com::sun::star::uno; 78*cdf0e10cSrcweir using namespace ::com::sun::star::presentation; 79*cdf0e10cSrcweir 80*cdf0e10cSrcweir namespace sd { 81*cdf0e10cSrcweir 82*cdf0e10cSrcweir 83*cdf0e10cSrcweir /************************************************************************/ 84*cdf0e10cSrcweir 85*cdf0e10cSrcweir /************************************************************************* 86*cdf0e10cSrcweir |* 87*cdf0e10cSrcweir |* SfxRequests fuer temporaere Funktionen 88*cdf0e10cSrcweir |* 89*cdf0e10cSrcweir \************************************************************************/ 90*cdf0e10cSrcweir 91*cdf0e10cSrcweir void OutlineViewShell::FuTemporary(SfxRequest &rReq) 92*cdf0e10cSrcweir { 93*cdf0e10cSrcweir DeactivateCurrentFunction(); 94*cdf0e10cSrcweir 95*cdf0e10cSrcweir OutlinerView* pOutlinerView = pOlView->GetViewByWindow( GetActiveWindow() ); 96*cdf0e10cSrcweir sal_uInt16 nSId = rReq.GetSlot(); 97*cdf0e10cSrcweir 98*cdf0e10cSrcweir switch( nSId ) 99*cdf0e10cSrcweir { 100*cdf0e10cSrcweir case SID_ATTR_ZOOM: 101*cdf0e10cSrcweir { 102*cdf0e10cSrcweir const SfxItemSet* pArgs = rReq.GetArgs(); 103*cdf0e10cSrcweir 104*cdf0e10cSrcweir if ( pArgs ) 105*cdf0e10cSrcweir { 106*cdf0e10cSrcweir SvxZoomType eZT = ( ( const SvxZoomItem& ) pArgs-> 107*cdf0e10cSrcweir Get( SID_ATTR_ZOOM ) ).GetType(); 108*cdf0e10cSrcweir switch( eZT ) 109*cdf0e10cSrcweir { 110*cdf0e10cSrcweir case SVX_ZOOM_PERCENT: 111*cdf0e10cSrcweir SetZoom( (long) ( ( const SvxZoomItem& ) pArgs-> 112*cdf0e10cSrcweir Get( SID_ATTR_ZOOM ) ).GetValue() ); 113*cdf0e10cSrcweir Invalidate( SID_ATTR_ZOOM ); 114*cdf0e10cSrcweir Invalidate( SID_ATTR_ZOOMSLIDER ); 115*cdf0e10cSrcweir break; 116*cdf0e10cSrcweir default: 117*cdf0e10cSrcweir break; 118*cdf0e10cSrcweir } 119*cdf0e10cSrcweir rReq.Done(); 120*cdf0e10cSrcweir } 121*cdf0e10cSrcweir else 122*cdf0e10cSrcweir { 123*cdf0e10cSrcweir // hier den Zoom-Dialog oeffnen 124*cdf0e10cSrcweir SetCurrentFunction( FuScale::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) ); 125*cdf0e10cSrcweir } 126*cdf0e10cSrcweir Cancel(); 127*cdf0e10cSrcweir } 128*cdf0e10cSrcweir break; 129*cdf0e10cSrcweir 130*cdf0e10cSrcweir case SID_ATTR_ZOOMSLIDER: 131*cdf0e10cSrcweir { 132*cdf0e10cSrcweir const SfxItemSet* pArgs = rReq.GetArgs(); 133*cdf0e10cSrcweir 134*cdf0e10cSrcweir if (pArgs && pArgs->Count () == 1 ) 135*cdf0e10cSrcweir { 136*cdf0e10cSrcweir SFX_REQUEST_ARG (rReq, pScale, SfxUInt16Item, SID_ATTR_ZOOMSLIDER, sal_False); 137*cdf0e10cSrcweir if (CHECK_RANGE (5, pScale->GetValue (), 3000)) 138*cdf0e10cSrcweir { 139*cdf0e10cSrcweir SetZoom (pScale->GetValue ()); 140*cdf0e10cSrcweir 141*cdf0e10cSrcweir SfxBindings& rBindings = GetViewFrame()->GetBindings(); 142*cdf0e10cSrcweir rBindings.Invalidate( SID_ATTR_ZOOM ); 143*cdf0e10cSrcweir rBindings.Invalidate( SID_ZOOM_IN ); 144*cdf0e10cSrcweir rBindings.Invalidate( SID_ZOOM_OUT ); 145*cdf0e10cSrcweir rBindings.Invalidate( SID_ATTR_ZOOMSLIDER ); 146*cdf0e10cSrcweir 147*cdf0e10cSrcweir } 148*cdf0e10cSrcweir } 149*cdf0e10cSrcweir 150*cdf0e10cSrcweir Cancel(); 151*cdf0e10cSrcweir rReq.Done (); 152*cdf0e10cSrcweir break; 153*cdf0e10cSrcweir } 154*cdf0e10cSrcweir 155*cdf0e10cSrcweir case SID_ZOOM_OUT: 156*cdf0e10cSrcweir { 157*cdf0e10cSrcweir SetCurrentFunction( FuZoom::Create(this, GetActiveWindow(), pOlView, GetDoc(), rReq) ); 158*cdf0e10cSrcweir // Beendet sich selbst, kein Cancel() notwendig! 159*cdf0e10cSrcweir rReq.Done(); 160*cdf0e10cSrcweir } 161*cdf0e10cSrcweir break; 162*cdf0e10cSrcweir 163*cdf0e10cSrcweir case SID_SIZE_REAL: 164*cdf0e10cSrcweir { 165*cdf0e10cSrcweir SetZoom( 100 ); 166*cdf0e10cSrcweir Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0), 167*cdf0e10cSrcweir GetActiveWindow()->GetOutputSizePixel()) ); 168*cdf0e10cSrcweir mpZoomList->InsertZoomRect(aVisAreaWin); 169*cdf0e10cSrcweir Invalidate( SID_ATTR_ZOOM ); 170*cdf0e10cSrcweir Invalidate( SID_ATTR_ZOOMSLIDER ); 171*cdf0e10cSrcweir Cancel(); 172*cdf0e10cSrcweir rReq.Done(); 173*cdf0e10cSrcweir } 174*cdf0e10cSrcweir break; 175*cdf0e10cSrcweir 176*cdf0e10cSrcweir case SID_ZOOM_IN: 177*cdf0e10cSrcweir { 178*cdf0e10cSrcweir SetZoom( Max( (long) ( GetActiveWindow()->GetZoom() / 2 ), (long) GetActiveWindow()->GetMinZoom() ) ); 179*cdf0e10cSrcweir Rectangle aVisAreaWin = GetActiveWindow()->PixelToLogic( Rectangle( Point(0,0), 180*cdf0e10cSrcweir GetActiveWindow()->GetOutputSizePixel()) ); 181*cdf0e10cSrcweir mpZoomList->InsertZoomRect(aVisAreaWin); 182*cdf0e10cSrcweir Invalidate( SID_ATTR_ZOOM ); 183*cdf0e10cSrcweir Invalidate( SID_ZOOM_OUT); 184*cdf0e10cSrcweir Invalidate( SID_ZOOM_IN ); 185*cdf0e10cSrcweir Invalidate( SID_ATTR_ZOOMSLIDER ); 186*cdf0e10cSrcweir Cancel(); 187*cdf0e10cSrcweir rReq.Done(); 188*cdf0e10cSrcweir } 189*cdf0e10cSrcweir break; 190*cdf0e10cSrcweir 191*cdf0e10cSrcweir case SID_OUTLINE_COLLAPSE_ALL: 192*cdf0e10cSrcweir { 193*cdf0e10cSrcweir pOutlinerView->CollapseAll(); 194*cdf0e10cSrcweir Cancel(); 195*cdf0e10cSrcweir rReq.Done(); 196*cdf0e10cSrcweir } 197*cdf0e10cSrcweir break; 198*cdf0e10cSrcweir 199*cdf0e10cSrcweir case SID_OUTLINE_COLLAPSE: 200*cdf0e10cSrcweir { 201*cdf0e10cSrcweir pOutlinerView->Collapse(); 202*cdf0e10cSrcweir Cancel(); 203*cdf0e10cSrcweir rReq.Done(); 204*cdf0e10cSrcweir } 205*cdf0e10cSrcweir break; 206*cdf0e10cSrcweir 207*cdf0e10cSrcweir case SID_OUTLINE_EXPAND_ALL: 208*cdf0e10cSrcweir { 209*cdf0e10cSrcweir pOutlinerView->ExpandAll(); 210*cdf0e10cSrcweir Cancel(); 211*cdf0e10cSrcweir rReq.Done(); 212*cdf0e10cSrcweir } 213*cdf0e10cSrcweir break; 214*cdf0e10cSrcweir 215*cdf0e10cSrcweir case SID_OUTLINE_EXPAND: 216*cdf0e10cSrcweir { 217*cdf0e10cSrcweir pOutlinerView->Expand(); 218*cdf0e10cSrcweir Cancel(); 219*cdf0e10cSrcweir rReq.Done(); 220*cdf0e10cSrcweir } 221*cdf0e10cSrcweir break; 222*cdf0e10cSrcweir 223*cdf0e10cSrcweir case SID_OUTLINE_FORMAT: 224*cdf0e10cSrcweir { 225*cdf0e10cSrcweir ::Outliner* pOutl = pOutlinerView->GetOutliner(); 226*cdf0e10cSrcweir pOutl->SetFlatMode( !pOutl->IsFlatMode() ); 227*cdf0e10cSrcweir Invalidate( SID_COLORVIEW ); 228*cdf0e10cSrcweir Cancel(); 229*cdf0e10cSrcweir rReq.Done(); 230*cdf0e10cSrcweir } 231*cdf0e10cSrcweir break; 232*cdf0e10cSrcweir 233*cdf0e10cSrcweir case SID_SELECTALL: 234*cdf0e10cSrcweir { 235*cdf0e10cSrcweir ::Outliner* pOutl = pOlView->GetOutliner(); 236*cdf0e10cSrcweir sal_uLong nParaCount = pOutl->GetParagraphCount(); 237*cdf0e10cSrcweir if (nParaCount > 0) 238*cdf0e10cSrcweir { 239*cdf0e10cSrcweir pOutlinerView->SelectRange( 0, (sal_uInt16) nParaCount ); 240*cdf0e10cSrcweir } 241*cdf0e10cSrcweir Cancel(); 242*cdf0e10cSrcweir } 243*cdf0e10cSrcweir break; 244*cdf0e10cSrcweir 245*cdf0e10cSrcweir case SID_PRESENTATION: 246*cdf0e10cSrcweir case SID_REHEARSE_TIMINGS: 247*cdf0e10cSrcweir { 248*cdf0e10cSrcweir pOlView->PrepareClose(); 249*cdf0e10cSrcweir 250*cdf0e10cSrcweir Reference< XPresentation2 > xPresentation( GetDoc()->getPresentation() ); 251*cdf0e10cSrcweir if( xPresentation.is() ) 252*cdf0e10cSrcweir { 253*cdf0e10cSrcweir if( ( SID_REHEARSE_TIMINGS != rReq.GetSlot() ) ) 254*cdf0e10cSrcweir xPresentation->start(); 255*cdf0e10cSrcweir else 256*cdf0e10cSrcweir xPresentation->rehearseTimings(); 257*cdf0e10cSrcweir } 258*cdf0e10cSrcweir rReq.Done(); 259*cdf0e10cSrcweir } 260*cdf0e10cSrcweir break; 261*cdf0e10cSrcweir 262*cdf0e10cSrcweir case SID_COLORVIEW: 263*cdf0e10cSrcweir { 264*cdf0e10cSrcweir ::Outliner* pOutl = pOutlinerView->GetOutliner(); 265*cdf0e10cSrcweir sal_uLong nCntrl = pOutl->GetControlWord(); 266*cdf0e10cSrcweir 267*cdf0e10cSrcweir if ( !(nCntrl & EE_CNTRL_NOCOLORS) ) 268*cdf0e10cSrcweir { 269*cdf0e10cSrcweir // Farbansicht ist eingeschaltet: ausschalten 270*cdf0e10cSrcweir pOutl->SetControlWord(nCntrl | EE_CNTRL_NOCOLORS); 271*cdf0e10cSrcweir } 272*cdf0e10cSrcweir else 273*cdf0e10cSrcweir { 274*cdf0e10cSrcweir // Farbansicht ist ausgeschaltet: einschalten 275*cdf0e10cSrcweir pOutl->SetControlWord(nCntrl & ~EE_CNTRL_NOCOLORS); 276*cdf0e10cSrcweir } 277*cdf0e10cSrcweir 278*cdf0e10cSrcweir InvalidateWindows(); 279*cdf0e10cSrcweir Invalidate( SID_COLORVIEW ); 280*cdf0e10cSrcweir Cancel(); 281*cdf0e10cSrcweir rReq.Done(); 282*cdf0e10cSrcweir } 283*cdf0e10cSrcweir break; 284*cdf0e10cSrcweir 285*cdf0e10cSrcweir case SID_STYLE_EDIT: 286*cdf0e10cSrcweir case SID_STYLE_UPDATE_BY_EXAMPLE: 287*cdf0e10cSrcweir { 288*cdf0e10cSrcweir if( rReq.GetArgs() ) 289*cdf0e10cSrcweir { 290*cdf0e10cSrcweir SetCurrentFunction( FuTemplate::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) ); 291*cdf0e10cSrcweir Cancel(); 292*cdf0e10cSrcweir } 293*cdf0e10cSrcweir 294*cdf0e10cSrcweir rReq.Ignore (); 295*cdf0e10cSrcweir } 296*cdf0e10cSrcweir break; 297*cdf0e10cSrcweir 298*cdf0e10cSrcweir case SID_PRESENTATION_DLG: 299*cdf0e10cSrcweir { 300*cdf0e10cSrcweir SetCurrentFunction( FuSlideShowDlg::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) ); 301*cdf0e10cSrcweir Cancel(); 302*cdf0e10cSrcweir } 303*cdf0e10cSrcweir break; 304*cdf0e10cSrcweir 305*cdf0e10cSrcweir case SID_CUSTOMSHOW_DLG: 306*cdf0e10cSrcweir { 307*cdf0e10cSrcweir SetCurrentFunction( FuCustomShowDlg::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) ); 308*cdf0e10cSrcweir Cancel(); 309*cdf0e10cSrcweir } 310*cdf0e10cSrcweir break; 311*cdf0e10cSrcweir } 312*cdf0e10cSrcweir 313*cdf0e10cSrcweir if(HasCurrentFunction()) 314*cdf0e10cSrcweir GetCurrentFunction()->Activate(); 315*cdf0e10cSrcweir 316*cdf0e10cSrcweir Invalidate( SID_OUTLINE_COLLAPSE_ALL ); 317*cdf0e10cSrcweir Invalidate( SID_OUTLINE_COLLAPSE ); 318*cdf0e10cSrcweir Invalidate( SID_OUTLINE_EXPAND_ALL ); 319*cdf0e10cSrcweir Invalidate( SID_OUTLINE_EXPAND ); 320*cdf0e10cSrcweir 321*cdf0e10cSrcweir SfxBindings& rBindings = GetViewFrame()->GetBindings(); 322*cdf0e10cSrcweir rBindings.Invalidate( SID_OUTLINE_LEFT ); 323*cdf0e10cSrcweir rBindings.Invalidate( SID_OUTLINE_RIGHT ); 324*cdf0e10cSrcweir rBindings.Invalidate( SID_OUTLINE_UP ); 325*cdf0e10cSrcweir rBindings.Invalidate( SID_OUTLINE_DOWN ); 326*cdf0e10cSrcweir 327*cdf0e10cSrcweir Invalidate( SID_OUTLINE_FORMAT ); 328*cdf0e10cSrcweir Invalidate( SID_COLORVIEW ); 329*cdf0e10cSrcweir Invalidate(SID_CUT); 330*cdf0e10cSrcweir Invalidate(SID_COPY); 331*cdf0e10cSrcweir Invalidate(SID_PASTE); 332*cdf0e10cSrcweir } 333*cdf0e10cSrcweir 334*cdf0e10cSrcweir void OutlineViewShell::FuTemporaryModify(SfxRequest &rReq) 335*cdf0e10cSrcweir { 336*cdf0e10cSrcweir OutlineViewModelChangeGuard aGuard( *pOlView ); 337*cdf0e10cSrcweir 338*cdf0e10cSrcweir DeactivateCurrentFunction(); 339*cdf0e10cSrcweir 340*cdf0e10cSrcweir OutlinerView* pOutlinerView = pOlView->GetViewByWindow( GetActiveWindow() ); 341*cdf0e10cSrcweir sal_uInt16 nSId = rReq.GetSlot(); 342*cdf0e10cSrcweir 343*cdf0e10cSrcweir switch( nSId ) 344*cdf0e10cSrcweir { 345*cdf0e10cSrcweir case SID_HYPERLINK_SETLINK: 346*cdf0e10cSrcweir { 347*cdf0e10cSrcweir const SfxItemSet* pReqArgs = rReq.GetArgs(); 348*cdf0e10cSrcweir 349*cdf0e10cSrcweir if (pReqArgs) 350*cdf0e10cSrcweir { 351*cdf0e10cSrcweir SvxHyperlinkItem* pHLItem = 352*cdf0e10cSrcweir (SvxHyperlinkItem*) &pReqArgs->Get(SID_HYPERLINK_SETLINK); 353*cdf0e10cSrcweir 354*cdf0e10cSrcweir SvxFieldItem aURLItem(SvxURLField(pHLItem->GetURL(), 355*cdf0e10cSrcweir pHLItem->GetName(), 356*cdf0e10cSrcweir SVXURLFORMAT_REPR), EE_FEATURE_FIELD); 357*cdf0e10cSrcweir ESelection aSel( pOutlinerView->GetSelection() ); 358*cdf0e10cSrcweir pOutlinerView->InsertField(aURLItem); 359*cdf0e10cSrcweir if ( aSel.nStartPos <= aSel.nEndPos ) 360*cdf0e10cSrcweir aSel.nEndPos = aSel.nStartPos + 1; 361*cdf0e10cSrcweir else 362*cdf0e10cSrcweir aSel.nStartPos = aSel.nEndPos + 1; 363*cdf0e10cSrcweir pOutlinerView->SetSelection( aSel ); 364*cdf0e10cSrcweir } 365*cdf0e10cSrcweir 366*cdf0e10cSrcweir Cancel(); 367*cdf0e10cSrcweir rReq.Ignore (); 368*cdf0e10cSrcweir } 369*cdf0e10cSrcweir break; 370*cdf0e10cSrcweir 371*cdf0e10cSrcweir case FN_INSERT_SOFT_HYPHEN: 372*cdf0e10cSrcweir case FN_INSERT_HARDHYPHEN: 373*cdf0e10cSrcweir case FN_INSERT_HARD_SPACE: 374*cdf0e10cSrcweir case SID_INSERT_RLM : 375*cdf0e10cSrcweir case SID_INSERT_LRM : 376*cdf0e10cSrcweir case SID_INSERT_ZWNBSP : 377*cdf0e10cSrcweir case SID_INSERT_ZWSP: 378*cdf0e10cSrcweir case SID_CHARMAP: 379*cdf0e10cSrcweir { 380*cdf0e10cSrcweir SetCurrentFunction( FuBullet::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) ); 381*cdf0e10cSrcweir Cancel(); 382*cdf0e10cSrcweir } 383*cdf0e10cSrcweir break; 384*cdf0e10cSrcweir 385*cdf0e10cSrcweir case SID_OUTLINE_BULLET: 386*cdf0e10cSrcweir { 387*cdf0e10cSrcweir SetCurrentFunction( FuOutlineBullet::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) ); 388*cdf0e10cSrcweir Cancel(); 389*cdf0e10cSrcweir } 390*cdf0e10cSrcweir break; 391*cdf0e10cSrcweir 392*cdf0e10cSrcweir case SID_THESAURUS: 393*cdf0e10cSrcweir { 394*cdf0e10cSrcweir SetCurrentFunction( FuThesaurus::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) ); 395*cdf0e10cSrcweir Cancel(); 396*cdf0e10cSrcweir rReq.Ignore (); 397*cdf0e10cSrcweir } 398*cdf0e10cSrcweir break; 399*cdf0e10cSrcweir 400*cdf0e10cSrcweir case SID_CHAR_DLG: 401*cdf0e10cSrcweir { 402*cdf0e10cSrcweir SetCurrentFunction( FuChar::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) ); 403*cdf0e10cSrcweir Cancel(); 404*cdf0e10cSrcweir } 405*cdf0e10cSrcweir break; 406*cdf0e10cSrcweir 407*cdf0e10cSrcweir case SID_INSERTFILE: 408*cdf0e10cSrcweir { 409*cdf0e10cSrcweir SetCurrentFunction( FuInsertFile::Create(this, GetActiveWindow(), pOlView, GetDoc(), rReq) ); 410*cdf0e10cSrcweir Cancel(); 411*cdf0e10cSrcweir } 412*cdf0e10cSrcweir break; 413*cdf0e10cSrcweir 414*cdf0e10cSrcweir case SID_PRESENTATIONOBJECT: 415*cdf0e10cSrcweir { 416*cdf0e10cSrcweir SetCurrentFunction( FuPresentationObjects::Create(this, GetActiveWindow(), pOlView, GetDoc(), rReq) ); 417*cdf0e10cSrcweir Cancel(); 418*cdf0e10cSrcweir } 419*cdf0e10cSrcweir break; 420*cdf0e10cSrcweir 421*cdf0e10cSrcweir case SID_SET_DEFAULT: 422*cdf0e10cSrcweir { 423*cdf0e10cSrcweir // 1. Selektion merken (kriegt die eselige EditEngine nicht selbst 424*cdf0e10cSrcweir // auf die Reihe!) 425*cdf0e10cSrcweir // 2. Update auf False (sonst flackert's noch staerker 426*cdf0e10cSrcweir // an allen selektierten Absaetzen: 427*cdf0e10cSrcweir // a. deren Vorlage nochmal setzen, um absatzweite harte Attribute 428*cdf0e10cSrcweir // zu entfernen 429*cdf0e10cSrcweir // b. harte Zeichenattribute loeschen 430*cdf0e10cSrcweir // 3. Update auf True und Selektion wieder setzen 431*cdf0e10cSrcweir /* 432*cdf0e10cSrcweir ESelection aEsel= pOutlinerView->GetSelection(); 433*cdf0e10cSrcweir Outliner* pOutl = pOutlinerView->GetOutliner(); 434*cdf0e10cSrcweir pOutl->SetUpdateMode(sal_False); 435*cdf0e10cSrcweir List* pSelectedParas = pOutlinerView->CreateSelectionList(); 436*cdf0e10cSrcweir Paragraph* pPara = (Paragraph*)pSelectedParas->First(); 437*cdf0e10cSrcweir while (pPara) 438*cdf0e10cSrcweir { 439*cdf0e10cSrcweir sal_uLong nParaPos = pOutl->GetAbsPos(pPara); 440*cdf0e10cSrcweir String aName; 441*cdf0e10cSrcweir SfxStyleFamily aFamily; 442*cdf0e10cSrcweir pOutl->GetStyleSheet(nParaPos, aName, aFamily); 443*cdf0e10cSrcweir pOutl->SetStyleSheet(nParaPos, aName, aFamily); 444*cdf0e10cSrcweir pOutl->QuickRemoveCharAttribs(nParaPos); 445*cdf0e10cSrcweir pPara = (Paragraph*)pSelectedParas->Next(); 446*cdf0e10cSrcweir } 447*cdf0e10cSrcweir delete pSelectedParas; 448*cdf0e10cSrcweir pOutl->SetUpdateMode(sal_True); 449*cdf0e10cSrcweir pOutlinerView->SetSelection(aEsel); 450*cdf0e10cSrcweir */ 451*cdf0e10cSrcweir pOutlinerView->RemoveAttribs(sal_True); // sal_True = auch Absatzattribute 452*cdf0e10cSrcweir Cancel(); 453*cdf0e10cSrcweir rReq.Done(); 454*cdf0e10cSrcweir } 455*cdf0e10cSrcweir break; 456*cdf0e10cSrcweir 457*cdf0e10cSrcweir case SID_SUMMARY_PAGE: 458*cdf0e10cSrcweir { 459*cdf0e10cSrcweir pOlView->SetSelectedPages(); 460*cdf0e10cSrcweir SetCurrentFunction( FuSummaryPage::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) ); 461*cdf0e10cSrcweir pOlView->GetOutliner()->Clear(); 462*cdf0e10cSrcweir pOlView->FillOutliner(); 463*cdf0e10cSrcweir pOlView->GetActualPage(); 464*cdf0e10cSrcweir Cancel(); 465*cdf0e10cSrcweir } 466*cdf0e10cSrcweir break; 467*cdf0e10cSrcweir 468*cdf0e10cSrcweir case SID_EXPAND_PAGE: 469*cdf0e10cSrcweir { 470*cdf0e10cSrcweir pOlView->SetSelectedPages(); 471*cdf0e10cSrcweir SetCurrentFunction( FuExpandPage::Create( this, GetActiveWindow(), pOlView, GetDoc(), rReq ) ); 472*cdf0e10cSrcweir pOlView->GetOutliner()->Clear(); 473*cdf0e10cSrcweir pOlView->FillOutliner(); 474*cdf0e10cSrcweir pOlView->GetActualPage(); 475*cdf0e10cSrcweir Cancel(); 476*cdf0e10cSrcweir } 477*cdf0e10cSrcweir break; 478*cdf0e10cSrcweir 479*cdf0e10cSrcweir case SID_INSERT_FLD_DATE_FIX: 480*cdf0e10cSrcweir case SID_INSERT_FLD_DATE_VAR: 481*cdf0e10cSrcweir case SID_INSERT_FLD_TIME_FIX: 482*cdf0e10cSrcweir case SID_INSERT_FLD_TIME_VAR: 483*cdf0e10cSrcweir case SID_INSERT_FLD_AUTHOR: 484*cdf0e10cSrcweir case SID_INSERT_FLD_PAGE: 485*cdf0e10cSrcweir case SID_INSERT_FLD_PAGES: 486*cdf0e10cSrcweir case SID_INSERT_FLD_FILE: 487*cdf0e10cSrcweir { 488*cdf0e10cSrcweir SvxFieldItem* pFieldItem = 0; 489*cdf0e10cSrcweir 490*cdf0e10cSrcweir switch( nSId ) 491*cdf0e10cSrcweir { 492*cdf0e10cSrcweir case SID_INSERT_FLD_DATE_FIX: 493*cdf0e10cSrcweir pFieldItem = new SvxFieldItem( 494*cdf0e10cSrcweir SvxDateField( Date(), SVXDATETYPE_FIX ), EE_FEATURE_FIELD ); 495*cdf0e10cSrcweir break; 496*cdf0e10cSrcweir 497*cdf0e10cSrcweir case SID_INSERT_FLD_DATE_VAR: 498*cdf0e10cSrcweir pFieldItem = new SvxFieldItem( SvxDateField(), EE_FEATURE_FIELD ); 499*cdf0e10cSrcweir break; 500*cdf0e10cSrcweir 501*cdf0e10cSrcweir case SID_INSERT_FLD_TIME_FIX: 502*cdf0e10cSrcweir pFieldItem = new SvxFieldItem( 503*cdf0e10cSrcweir SvxExtTimeField( Time(), SVXTIMETYPE_FIX ), EE_FEATURE_FIELD ); 504*cdf0e10cSrcweir break; 505*cdf0e10cSrcweir 506*cdf0e10cSrcweir case SID_INSERT_FLD_TIME_VAR: 507*cdf0e10cSrcweir pFieldItem = new SvxFieldItem( SvxExtTimeField(), EE_FEATURE_FIELD ); 508*cdf0e10cSrcweir break; 509*cdf0e10cSrcweir 510*cdf0e10cSrcweir case SID_INSERT_FLD_AUTHOR: 511*cdf0e10cSrcweir { 512*cdf0e10cSrcweir SvtUserOptions aUserOptions; 513*cdf0e10cSrcweir pFieldItem = new SvxFieldItem( 514*cdf0e10cSrcweir SvxAuthorField( 515*cdf0e10cSrcweir aUserOptions.GetFirstName(), aUserOptions.GetLastName(), aUserOptions.GetID() ) 516*cdf0e10cSrcweir , EE_FEATURE_FIELD ); 517*cdf0e10cSrcweir } 518*cdf0e10cSrcweir break; 519*cdf0e10cSrcweir 520*cdf0e10cSrcweir case SID_INSERT_FLD_PAGE: 521*cdf0e10cSrcweir pFieldItem = new SvxFieldItem( SvxPageField(), EE_FEATURE_FIELD ); 522*cdf0e10cSrcweir break; 523*cdf0e10cSrcweir 524*cdf0e10cSrcweir case SID_INSERT_FLD_PAGES: 525*cdf0e10cSrcweir pFieldItem = new SvxFieldItem( SvxPagesField(), EE_FEATURE_FIELD ); 526*cdf0e10cSrcweir break; 527*cdf0e10cSrcweir 528*cdf0e10cSrcweir case SID_INSERT_FLD_FILE: 529*cdf0e10cSrcweir { 530*cdf0e10cSrcweir String aName; 531*cdf0e10cSrcweir if( GetDocSh()->HasName() ) 532*cdf0e10cSrcweir aName = GetDocSh()->GetMedium()->GetName(); 533*cdf0e10cSrcweir //else 534*cdf0e10cSrcweir // aName = GetDocSh()->GetName(); 535*cdf0e10cSrcweir pFieldItem = new SvxFieldItem( SvxExtFileField( aName ), EE_FEATURE_FIELD ); 536*cdf0e10cSrcweir } 537*cdf0e10cSrcweir break; 538*cdf0e10cSrcweir } 539*cdf0e10cSrcweir 540*cdf0e10cSrcweir const SvxFieldItem* pOldFldItem = pOutlinerView->GetFieldAtSelection(); 541*cdf0e10cSrcweir 542*cdf0e10cSrcweir if( pOldFldItem && ( pOldFldItem->GetField()->ISA( SvxURLField ) || 543*cdf0e10cSrcweir pOldFldItem->GetField()->ISA( SvxDateField ) || 544*cdf0e10cSrcweir pOldFldItem->GetField()->ISA( SvxTimeField ) || 545*cdf0e10cSrcweir pOldFldItem->GetField()->ISA( SvxExtTimeField ) || 546*cdf0e10cSrcweir pOldFldItem->GetField()->ISA( SvxExtFileField ) || 547*cdf0e10cSrcweir pOldFldItem->GetField()->ISA( SvxAuthorField ) || 548*cdf0e10cSrcweir pOldFldItem->GetField()->ISA( SvxPageField ) || 549*cdf0e10cSrcweir pOldFldItem->GetField()->ISA( SvxPagesField )) ) 550*cdf0e10cSrcweir { 551*cdf0e10cSrcweir // Feld selektieren, so dass es beim Insert geloescht wird 552*cdf0e10cSrcweir ESelection aSel = pOutlinerView->GetSelection(); 553*cdf0e10cSrcweir if( aSel.nStartPos == aSel.nEndPos ) 554*cdf0e10cSrcweir aSel.nEndPos++; 555*cdf0e10cSrcweir pOutlinerView->SetSelection( aSel ); 556*cdf0e10cSrcweir } 557*cdf0e10cSrcweir 558*cdf0e10cSrcweir if( pFieldItem ) 559*cdf0e10cSrcweir pOutlinerView->InsertField( *pFieldItem ); 560*cdf0e10cSrcweir 561*cdf0e10cSrcweir delete pFieldItem; 562*cdf0e10cSrcweir 563*cdf0e10cSrcweir Cancel(); 564*cdf0e10cSrcweir rReq.Ignore (); 565*cdf0e10cSrcweir } 566*cdf0e10cSrcweir break; 567*cdf0e10cSrcweir 568*cdf0e10cSrcweir case SID_MODIFY_FIELD: 569*cdf0e10cSrcweir { 570*cdf0e10cSrcweir const SvxFieldItem* pFldItem = pOutlinerView->GetFieldAtSelection(); 571*cdf0e10cSrcweir 572*cdf0e10cSrcweir if( pFldItem && (pFldItem->GetField()->ISA( SvxDateField ) || 573*cdf0e10cSrcweir pFldItem->GetField()->ISA( SvxAuthorField ) || 574*cdf0e10cSrcweir pFldItem->GetField()->ISA( SvxExtFileField ) || 575*cdf0e10cSrcweir pFldItem->GetField()->ISA( SvxExtTimeField ) ) ) 576*cdf0e10cSrcweir { 577*cdf0e10cSrcweir // Dialog... 578*cdf0e10cSrcweir SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create(); 579*cdf0e10cSrcweir AbstractSdModifyFieldDlg* pDlg = pFact ? pFact->CreateSdModifyFieldDlg(GetActiveWindow(), pFldItem->GetField(), pOutlinerView->GetAttribs() ) : 0; 580*cdf0e10cSrcweir if( pDlg && (pDlg->Execute() == RET_OK) ) 581*cdf0e10cSrcweir { 582*cdf0e10cSrcweir SvxFieldData* pField = pDlg->GetField(); 583*cdf0e10cSrcweir if( pField ) 584*cdf0e10cSrcweir { 585*cdf0e10cSrcweir SvxFieldItem aFieldItem( *pField, EE_FEATURE_FIELD ); 586*cdf0e10cSrcweir //pOLV->DeleteSelected(); <-- fehlt leider ! 587*cdf0e10cSrcweir // Feld selektieren, so dass es beim Insert geloescht wird 588*cdf0e10cSrcweir ESelection aSel = pOutlinerView->GetSelection(); 589*cdf0e10cSrcweir sal_Bool bSel = sal_True; 590*cdf0e10cSrcweir if( aSel.nStartPos == aSel.nEndPos ) 591*cdf0e10cSrcweir { 592*cdf0e10cSrcweir bSel = sal_False; 593*cdf0e10cSrcweir aSel.nEndPos++; 594*cdf0e10cSrcweir } 595*cdf0e10cSrcweir pOutlinerView->SetSelection( aSel ); 596*cdf0e10cSrcweir 597*cdf0e10cSrcweir pOutlinerView->InsertField( aFieldItem ); 598*cdf0e10cSrcweir 599*cdf0e10cSrcweir // Selektion wird wieder in den Ursprungszustand gebracht 600*cdf0e10cSrcweir if( !bSel ) 601*cdf0e10cSrcweir aSel.nEndPos--; 602*cdf0e10cSrcweir pOutlinerView->SetSelection( aSel ); 603*cdf0e10cSrcweir 604*cdf0e10cSrcweir delete pField; 605*cdf0e10cSrcweir } 606*cdf0e10cSrcweir 607*cdf0e10cSrcweir SfxItemSet aSet( pDlg->GetItemSet() ); 608*cdf0e10cSrcweir if( aSet.Count() ) 609*cdf0e10cSrcweir { 610*cdf0e10cSrcweir pOutlinerView->SetAttribs( aSet ); 611*cdf0e10cSrcweir 612*cdf0e10cSrcweir ::Outliner* pOutliner = pOutlinerView->GetOutliner(); 613*cdf0e10cSrcweir if( pOutliner ) 614*cdf0e10cSrcweir pOutliner->UpdateFields(); 615*cdf0e10cSrcweir } 616*cdf0e10cSrcweir } 617*cdf0e10cSrcweir delete pDlg; 618*cdf0e10cSrcweir } 619*cdf0e10cSrcweir 620*cdf0e10cSrcweir Cancel(); 621*cdf0e10cSrcweir rReq.Ignore (); 622*cdf0e10cSrcweir } 623*cdf0e10cSrcweir break; 624*cdf0e10cSrcweir } 625*cdf0e10cSrcweir 626*cdf0e10cSrcweir if(HasCurrentFunction()) 627*cdf0e10cSrcweir GetCurrentFunction()->Activate(); 628*cdf0e10cSrcweir 629*cdf0e10cSrcweir Invalidate( SID_OUTLINE_COLLAPSE_ALL ); 630*cdf0e10cSrcweir Invalidate( SID_OUTLINE_COLLAPSE ); 631*cdf0e10cSrcweir Invalidate( SID_OUTLINE_EXPAND_ALL ); 632*cdf0e10cSrcweir Invalidate( SID_OUTLINE_EXPAND ); 633*cdf0e10cSrcweir 634*cdf0e10cSrcweir SfxBindings& rBindings = GetViewFrame()->GetBindings(); 635*cdf0e10cSrcweir rBindings.Invalidate( SID_OUTLINE_LEFT ); 636*cdf0e10cSrcweir rBindings.Invalidate( SID_OUTLINE_RIGHT ); 637*cdf0e10cSrcweir rBindings.Invalidate( SID_OUTLINE_UP ); 638*cdf0e10cSrcweir rBindings.Invalidate( SID_OUTLINE_DOWN ); 639*cdf0e10cSrcweir 640*cdf0e10cSrcweir Invalidate( SID_OUTLINE_FORMAT ); 641*cdf0e10cSrcweir Invalidate( SID_COLORVIEW ); 642*cdf0e10cSrcweir Invalidate(SID_CUT); 643*cdf0e10cSrcweir Invalidate(SID_COPY); 644*cdf0e10cSrcweir Invalidate(SID_PASTE); 645*cdf0e10cSrcweir } 646*cdf0e10cSrcweir 647*cdf0e10cSrcweir 648*cdf0e10cSrcweir } // end of namespace sd 649