1efeef26fSAndrew Rist /************************************************************** 2efeef26fSAndrew Rist * 3efeef26fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4efeef26fSAndrew Rist * or more contributor license agreements. See the NOTICE file 5efeef26fSAndrew Rist * distributed with this work for additional information 6efeef26fSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7efeef26fSAndrew Rist * to you under the Apache License, Version 2.0 (the 8efeef26fSAndrew Rist * "License"); you may not use this file except in compliance 9efeef26fSAndrew Rist * with the License. You may obtain a copy of the License at 10efeef26fSAndrew Rist * 11efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12efeef26fSAndrew Rist * 13efeef26fSAndrew Rist * Unless required by applicable law or agreed to in writing, 14efeef26fSAndrew Rist * software distributed under the License is distributed on an 15efeef26fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16efeef26fSAndrew Rist * KIND, either express or implied. See the License for the 17efeef26fSAndrew Rist * specific language governing permissions and limitations 18efeef26fSAndrew Rist * under the License. 19efeef26fSAndrew Rist * 20efeef26fSAndrew Rist *************************************************************/ 21efeef26fSAndrew Rist 22cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 23cdf0e10cSrcweir #include "precompiled_sw.hxx" 24cdf0e10cSrcweir 25cdf0e10cSrcweir #include <crsskip.hxx> 26cdf0e10cSrcweir #include <hintids.hxx> //_immer_ vor den solar-Items 27cdf0e10cSrcweir #include <sfx2/lnkbase.hxx> 28cdf0e10cSrcweir #include <fmtfld.hxx> 29cdf0e10cSrcweir #include <tools/urlobj.hxx> 30cdf0e10cSrcweir #include <vcl/msgbox.hxx> 31cdf0e10cSrcweir #include <svl/itempool.hxx> 32cdf0e10cSrcweir #include <unotools/useroptions.hxx> 33cdf0e10cSrcweir #include <svl/whiter.hxx> 34cdf0e10cSrcweir #include <svl/eitem.hxx> 35cdf0e10cSrcweir #include <svl/macitem.hxx> 36cdf0e10cSrcweir #include <sfx2/viewfrm.hxx> 37cdf0e10cSrcweir #include <sfx2/request.hxx> 38cdf0e10cSrcweir #include <svx/postattr.hxx> 39cdf0e10cSrcweir #include <svx/hlnkitem.hxx> 40cdf0e10cSrcweir #include <svx/svxdlg.hxx> 41cdf0e10cSrcweir #include <sfx2/linkmgr.hxx> 42cdf0e10cSrcweir #include <unotools/localedatawrapper.hxx> 43cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 44cdf0e10cSrcweir #include <fmtinfmt.hxx> 45cdf0e10cSrcweir #include <fldwrap.hxx> 46cdf0e10cSrcweir #include <redline.hxx> 47cdf0e10cSrcweir #include <view.hxx> 4869a74367SOliver-Rainer Wittmann #include <viewopt.hxx> 49cdf0e10cSrcweir #include <wrtsh.hxx> 50cdf0e10cSrcweir #include <basesh.hxx> 51cdf0e10cSrcweir #include <wrtsh.hxx> 52cdf0e10cSrcweir #include <flddat.hxx> 53cdf0e10cSrcweir #include <numrule.hxx> 54cdf0e10cSrcweir #include <textsh.hxx> 55cdf0e10cSrcweir #include <docsh.hxx> 56cdf0e10cSrcweir #include <docufld.hxx> 57cdf0e10cSrcweir #include <usrfld.hxx> 58cdf0e10cSrcweir #include <ddefld.hxx> 59cdf0e10cSrcweir #include <expfld.hxx> 60cdf0e10cSrcweir #include <fldmgr.hxx> 61cdf0e10cSrcweir #include <uitool.hxx> 62cdf0e10cSrcweir #include <cmdid.h> 63cdf0e10cSrcweir #include <shells.hrc> 64cdf0e10cSrcweir #include <sfx2/app.hxx> 65cdf0e10cSrcweir #include <svx/svxdlg.hxx> 66cdf0e10cSrcweir #include <svx/dialogs.hrc> 67cdf0e10cSrcweir #include "swabstdlg.hxx" 68cdf0e10cSrcweir #include "dialog.hrc" 69cdf0e10cSrcweir #include <fldui.hrc> 70cdf0e10cSrcweir #include <doc.hxx> 71cdf0e10cSrcweir #include <app.hrc> 724e0030b2SArmin Le Grand #include <edtwin.hxx> 73cdf0e10cSrcweir #include <PostItMgr.hxx> 74cdf0e10cSrcweir #include <switerator.hxx> 75cdf0e10cSrcweir 76cdf0e10cSrcweir using namespace nsSwDocInfoSubType; 77cdf0e10cSrcweir 78cdf0e10cSrcweir extern sal_Bool bNoInterrupt; // in mainwn.cxx 79cdf0e10cSrcweir 80cdf0e10cSrcweir String& lcl_AppendRedlineStr( String& rStr, sal_uInt16 nRedlId ) 81cdf0e10cSrcweir { 82cdf0e10cSrcweir sal_uInt16 nResId = 0; 83cdf0e10cSrcweir switch( nRedlId ) 84cdf0e10cSrcweir { 85cdf0e10cSrcweir case nsRedlineType_t::REDLINE_INSERT: nResId = STR_REDLINE_INSERTED; break; 86cdf0e10cSrcweir case nsRedlineType_t::REDLINE_DELETE: nResId = STR_REDLINE_DELETED; break; 87cdf0e10cSrcweir case nsRedlineType_t::REDLINE_FORMAT: nResId = STR_REDLINE_FORMATED; break; 88cdf0e10cSrcweir case nsRedlineType_t::REDLINE_TABLE: nResId = STR_REDLINE_TABLECHG; break; 89cdf0e10cSrcweir case nsRedlineType_t::REDLINE_FMTCOLL: nResId = STR_REDLINE_FMTCOLLSET; break; 90cdf0e10cSrcweir } 91cdf0e10cSrcweir if( nResId ) 92cdf0e10cSrcweir rStr += SW_RESSTR( nResId ); 93cdf0e10cSrcweir return rStr; 94cdf0e10cSrcweir } 95cdf0e10cSrcweir 96cdf0e10cSrcweir // STATIC DATA ----------------------------------------------------------- 97cdf0e10cSrcweir 98cdf0e10cSrcweir void SwTextShell::ExecField(SfxRequest &rReq) 99cdf0e10cSrcweir { 100cdf0e10cSrcweir SwWrtShell& rSh = GetShell(); 101cdf0e10cSrcweir const SfxPoolItem* pItem = 0; 102cdf0e10cSrcweir 103cdf0e10cSrcweir sal_uInt16 nSlot = rReq.GetSlot(); 104cdf0e10cSrcweir const SfxItemSet* pArgs = rReq.GetArgs(); 105cdf0e10cSrcweir if(pArgs) 106cdf0e10cSrcweir pArgs->GetItemState(GetPool().GetWhich(nSlot), sal_False, &pItem); 107cdf0e10cSrcweir 108cdf0e10cSrcweir Window *pMDI = &GetView().GetViewFrame()->GetWindow(); 109cdf0e10cSrcweir sal_Bool bMore = sal_False; 110cdf0e10cSrcweir sal_Bool bIsText = sal_True; 111cdf0e10cSrcweir sal_uInt16 nInsertType = 0; 112cdf0e10cSrcweir sal_uInt16 nInsertSubType = 0; 113cdf0e10cSrcweir sal_uLong nInsertFormat = 0; 114cdf0e10cSrcweir 115cdf0e10cSrcweir switch(nSlot) 116cdf0e10cSrcweir { 117cdf0e10cSrcweir case FN_EDIT_FIELD: 118cdf0e10cSrcweir { 119cdf0e10cSrcweir SwField* pFld = rSh.GetCurFld(); 120cdf0e10cSrcweir if( pFld ) 121cdf0e10cSrcweir { 122cdf0e10cSrcweir switch ( pFld->GetTypeId() ) 123cdf0e10cSrcweir { 124cdf0e10cSrcweir case TYP_DDEFLD: 125cdf0e10cSrcweir { 126cdf0e10cSrcweir ::sfx2::SvBaseLink& rLink = ((SwDDEFieldType*)pFld->GetTyp())-> 127cdf0e10cSrcweir GetBaseLink(); 128cdf0e10cSrcweir if(rLink.IsVisible()) 129cdf0e10cSrcweir { 130cdf0e10cSrcweir SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); 131cdf0e10cSrcweir SfxAbstractLinksDialog* pDlg = pFact->CreateLinksDialog( pMDI, &rSh.GetLinkManager(), sal_False, &rLink ); 132cdf0e10cSrcweir if ( pDlg ) 133cdf0e10cSrcweir { 134cdf0e10cSrcweir pDlg->Execute(); 135cdf0e10cSrcweir delete pDlg; 136cdf0e10cSrcweir } 137cdf0e10cSrcweir } 138cdf0e10cSrcweir break; 139cdf0e10cSrcweir } 140cdf0e10cSrcweir default: 141cdf0e10cSrcweir { 142cdf0e10cSrcweir SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); 143cdf0e10cSrcweir DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!"); 144cdf0e10cSrcweir 145cdf0e10cSrcweir SfxAbstractDialog* pDlg = pFact->CreateSwFldEditDlg( GetView(),RC_DLG_SWFLDEDITDLG ); 146cdf0e10cSrcweir DBG_ASSERT(pDlg, "Dialogdiet fail!"); 147cdf0e10cSrcweir pDlg->Execute(); 148cdf0e10cSrcweir delete pDlg; 149cdf0e10cSrcweir } 150cdf0e10cSrcweir } 151cdf0e10cSrcweir } 152cdf0e10cSrcweir break; 153cdf0e10cSrcweir } 154cdf0e10cSrcweir case FN_EXECUTE_MACROFIELD: 155cdf0e10cSrcweir { 156cdf0e10cSrcweir SwField* pFld = rSh.GetCurFld(); 157cdf0e10cSrcweir if(pFld && pFld->GetTyp()->Which() == RES_MACROFLD) 158cdf0e10cSrcweir { 159cdf0e10cSrcweir 160cdf0e10cSrcweir const String& rMacro = ((SwMacroField*)pFld)->GetMacro(); 161cdf0e10cSrcweir sal_uInt16 nPos = rMacro.Search('.', 0); 162cdf0e10cSrcweir if(nPos != STRING_NOTFOUND) 163cdf0e10cSrcweir { 164cdf0e10cSrcweir SvxMacro aMacro( rMacro.Copy(nPos + 1), rMacro.Copy(0,nPos), STARBASIC ); 165cdf0e10cSrcweir rSh.ExecMacro(aMacro); 166cdf0e10cSrcweir } 167cdf0e10cSrcweir } 168cdf0e10cSrcweir } 169cdf0e10cSrcweir break; 170cdf0e10cSrcweir 17169a74367SOliver-Rainer Wittmann case FN_GOTO_NEXT_INPUTFLD: 17269a74367SOliver-Rainer Wittmann case FN_GOTO_PREV_INPUTFLD: 17369a74367SOliver-Rainer Wittmann { 17469a74367SOliver-Rainer Wittmann sal_Bool bRet = sal_False; 17569a74367SOliver-Rainer Wittmann SwFieldType* pFld = rSh.GetFldType( 0, RES_INPUTFLD ); 17669a74367SOliver-Rainer Wittmann const bool bAddSetExpressionFlds = !( rSh.GetViewOptions()->IsReadonly() ); 17769a74367SOliver-Rainer Wittmann if ( pFld != NULL 17869a74367SOliver-Rainer Wittmann && rSh.MoveFldType( 17969a74367SOliver-Rainer Wittmann pFld, 18069a74367SOliver-Rainer Wittmann FN_GOTO_NEXT_INPUTFLD == nSlot, 18169a74367SOliver-Rainer Wittmann USHRT_MAX, 18269a74367SOliver-Rainer Wittmann bAddSetExpressionFlds ) ) 18369a74367SOliver-Rainer Wittmann { 18469a74367SOliver-Rainer Wittmann rSh.ClearMark(); 18569a74367SOliver-Rainer Wittmann if ( dynamic_cast<SwInputField*>(rSh.GetCurFld( true )) != NULL ) 18669a74367SOliver-Rainer Wittmann { 18769a74367SOliver-Rainer Wittmann rSh.SttSelect(); 18869a74367SOliver-Rainer Wittmann rSh.SelectTxt( 18969a74367SOliver-Rainer Wittmann rSh.StartOfInputFldAtPos( *(rSh.GetCrsr()->Start()) ) + 1, 19069a74367SOliver-Rainer Wittmann rSh.EndOfInputFldAtPos( *(rSh.GetCrsr()->Start()) ) - 1 ); 19169a74367SOliver-Rainer Wittmann } 19269a74367SOliver-Rainer Wittmann else 19369a74367SOliver-Rainer Wittmann { 19469a74367SOliver-Rainer Wittmann rSh.StartInputFldDlg( rSh.GetCurFld( true ), sal_False ); 19569a74367SOliver-Rainer Wittmann } 19669a74367SOliver-Rainer Wittmann bRet = sal_True; 19769a74367SOliver-Rainer Wittmann } 198cdf0e10cSrcweir 19969a74367SOliver-Rainer Wittmann rReq.SetReturnValue( SfxBoolItem( nSlot, bRet )); 20069a74367SOliver-Rainer Wittmann } 20169a74367SOliver-Rainer Wittmann break; 202cdf0e10cSrcweir 203cdf0e10cSrcweir default: 204cdf0e10cSrcweir bMore = sal_True; 205cdf0e10cSrcweir } 206cdf0e10cSrcweir if(bMore) 207cdf0e10cSrcweir { 208cdf0e10cSrcweir // hier kommen die Slots mit FldMgr 209cdf0e10cSrcweir SwFldMgr aFldMgr(GetShellPtr()); 210cdf0e10cSrcweir switch(nSlot) 211cdf0e10cSrcweir { 212cdf0e10cSrcweir case FN_INSERT_DBFIELD: 213cdf0e10cSrcweir { 214cdf0e10cSrcweir sal_Bool bRes = sal_False; 215cdf0e10cSrcweir if( pItem ) 216cdf0e10cSrcweir { 217cdf0e10cSrcweir sal_uLong nFormat = 0; 218cdf0e10cSrcweir sal_uInt16 nType = 0; 219cdf0e10cSrcweir String aPar1 = ((SfxStringItem *)pItem)->GetValue(); 220cdf0e10cSrcweir String aPar2; 221cdf0e10cSrcweir sal_Int32 nCommand = 0; 222cdf0e10cSrcweir 223cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState( FN_PARAM_FIELD_TYPE, 224cdf0e10cSrcweir sal_False, &pItem )) 225cdf0e10cSrcweir nType = ((SfxUInt16Item *)pItem)->GetValue(); 226cdf0e10cSrcweir aPar1 += DB_DELIM; 227cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState( 228cdf0e10cSrcweir FN_PARAM_1, sal_False, &pItem )) 229cdf0e10cSrcweir { 230cdf0e10cSrcweir aPar1 += ((SfxStringItem *)pItem)->GetValue(); 231cdf0e10cSrcweir } 232cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState( 233cdf0e10cSrcweir FN_PARAM_3, sal_False, &pItem )) 234cdf0e10cSrcweir nCommand = ((SfxInt32Item*)pItem)->GetValue(); 235cdf0e10cSrcweir aPar1 += DB_DELIM; 236cdf0e10cSrcweir aPar1 += String::CreateFromInt32(nCommand); 237cdf0e10cSrcweir aPar1 += DB_DELIM; 238cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState( 239cdf0e10cSrcweir FN_PARAM_2, sal_False, &pItem )) 240cdf0e10cSrcweir { 241cdf0e10cSrcweir aPar1 += ((SfxStringItem *)pItem)->GetValue(); 242cdf0e10cSrcweir } 243cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState( 244cdf0e10cSrcweir FN_PARAM_FIELD_CONTENT, sal_False, &pItem )) 245cdf0e10cSrcweir aPar2 = ((SfxStringItem *)pItem)->GetValue(); 246cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState( 247cdf0e10cSrcweir FN_PARAM_FIELD_FORMAT, sal_False, &pItem )) 248cdf0e10cSrcweir nFormat = ((SfxUInt32Item *)pItem)->GetValue(); 249cdf0e10cSrcweir DBG_WARNING("Command is not yet used"); 250cdf0e10cSrcweir sal_Unicode cSeparator = ' '; 251cdf0e10cSrcweir SwInsertFld_Data aData(nType, 0, aPar1, aPar2, nFormat, GetShellPtr(), cSeparator ); 252cdf0e10cSrcweir bRes = aFldMgr.InsertFld(aData); 253cdf0e10cSrcweir } 254cdf0e10cSrcweir rReq.SetReturnValue(SfxBoolItem( nSlot, bRes )); 255cdf0e10cSrcweir } 256cdf0e10cSrcweir break; 257cdf0e10cSrcweir case FN_INSERT_FIELD_CTRL: 258cdf0e10cSrcweir case FN_INSERT_FIELD: 259cdf0e10cSrcweir { 260cdf0e10cSrcweir sal_Bool bRes = sal_False; 261cdf0e10cSrcweir if( pItem && nSlot != FN_INSERT_FIELD_CTRL) 262cdf0e10cSrcweir { 263cdf0e10cSrcweir sal_uLong nFormat = 0; 264cdf0e10cSrcweir sal_uInt16 nType = 0; 265cdf0e10cSrcweir sal_uInt16 nSubType = 0; 266cdf0e10cSrcweir String aPar1 = ((SfxStringItem *)pItem)->GetValue(); 267cdf0e10cSrcweir String aPar2; 268cdf0e10cSrcweir sal_Unicode cSeparator = ' '; 269cdf0e10cSrcweir 270cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState( FN_PARAM_FIELD_TYPE, 271cdf0e10cSrcweir sal_False, &pItem )) 272cdf0e10cSrcweir nType = ((SfxUInt16Item *)pItem)->GetValue(); 273cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState( FN_PARAM_FIELD_SUBTYPE, 274cdf0e10cSrcweir sal_False, &pItem )) 275cdf0e10cSrcweir nSubType = ((SfxUInt16Item *)pItem)->GetValue(); 276cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState( 277cdf0e10cSrcweir FN_PARAM_FIELD_CONTENT, sal_False, &pItem )) 278cdf0e10cSrcweir aPar2 = ((SfxStringItem *)pItem)->GetValue(); 279cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState( 280cdf0e10cSrcweir FN_PARAM_FIELD_FORMAT, sal_False, &pItem )) 281cdf0e10cSrcweir nFormat = ((SfxUInt32Item *)pItem)->GetValue(); 282cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState( 283cdf0e10cSrcweir FN_PARAM_3, sal_False, &pItem )) 284cdf0e10cSrcweir { 285cdf0e10cSrcweir String sTmp = ((SfxStringItem *)pItem)->GetValue(); 286cdf0e10cSrcweir if(sTmp.Len()) 287cdf0e10cSrcweir cSeparator = sTmp.GetChar(0); 288cdf0e10cSrcweir } 289cdf0e10cSrcweir SwInsertFld_Data aData(nType, nSubType, aPar1, aPar2, nFormat, GetShellPtr(), cSeparator ); 290cdf0e10cSrcweir bRes = aFldMgr.InsertFld( aData ); 291cdf0e10cSrcweir } 292cdf0e10cSrcweir else 293cdf0e10cSrcweir //#i5788# prevent closing of the field dialog while a modal dialog ( Input field dialog ) is active 294cdf0e10cSrcweir if(!GetView().GetViewFrame()->IsInModalMode()) 295cdf0e10cSrcweir { 296cdf0e10cSrcweir SfxViewFrame* pVFrame = GetView().GetViewFrame(); 297cdf0e10cSrcweir pVFrame->ToggleChildWindow(FN_INSERT_FIELD); 298cdf0e10cSrcweir bRes = pVFrame->GetChildWindow( nSlot ) != 0; 299cdf0e10cSrcweir Invalidate(rReq.GetSlot()); 300cdf0e10cSrcweir Invalidate(FN_INSERT_FIELD_CTRL); 301cdf0e10cSrcweir rReq.Ignore(); 302cdf0e10cSrcweir } 303cdf0e10cSrcweir rReq.SetReturnValue(SfxBoolItem( nSlot, bRes )); 304cdf0e10cSrcweir } 305cdf0e10cSrcweir break; 306cdf0e10cSrcweir 307cdf0e10cSrcweir case FN_INSERT_REF_FIELD: 308cdf0e10cSrcweir { 309cdf0e10cSrcweir SfxViewFrame* pVFrame = GetView().GetViewFrame(); 310cdf0e10cSrcweir if (!pVFrame->HasChildWindow(FN_INSERT_FIELD)) 311cdf0e10cSrcweir pVFrame->ToggleChildWindow(FN_INSERT_FIELD); // Dialog anzeigen 312cdf0e10cSrcweir 313cdf0e10cSrcweir // Flddlg auf neue TabPage umschalten 314cdf0e10cSrcweir sal_uInt16 nId = SwFldDlgWrapper::GetChildWindowId(); 315cdf0e10cSrcweir SwFldDlgWrapper *pWrp = (SwFldDlgWrapper*)pVFrame->GetChildWindow(nId); 316cdf0e10cSrcweir if (pWrp) 317cdf0e10cSrcweir pWrp->ShowPage(); 318cdf0e10cSrcweir rReq.Ignore(); 319cdf0e10cSrcweir } 320cdf0e10cSrcweir break; 321cdf0e10cSrcweir case FN_DELETE_COMMENT: 322cdf0e10cSrcweir if ( GetView().GetPostItMgr() && 323cdf0e10cSrcweir GetView().GetPostItMgr()->HasActiveSidebarWin() ) 324cdf0e10cSrcweir { 325cdf0e10cSrcweir GetView().GetPostItMgr()->DeleteActiveSidebarWin(); 326cdf0e10cSrcweir } 327cdf0e10cSrcweir break; 328cdf0e10cSrcweir case FN_DELETE_ALL_NOTES: 329cdf0e10cSrcweir if ( GetView().GetPostItMgr() ) 330cdf0e10cSrcweir GetView().GetPostItMgr()->Delete(); 331cdf0e10cSrcweir break; 332cdf0e10cSrcweir case FN_DELETE_NOTE_AUTHOR: 333cdf0e10cSrcweir { 334cdf0e10cSrcweir SFX_REQUEST_ARG( rReq, pNoteItem, SfxStringItem, nSlot, sal_False); 335cdf0e10cSrcweir if ( pNoteItem && GetView().GetPostItMgr() ) 336cdf0e10cSrcweir GetView().GetPostItMgr()->Delete( pNoteItem->GetValue() ); 337cdf0e10cSrcweir } 338cdf0e10cSrcweir break; 339cdf0e10cSrcweir case FN_HIDE_NOTE: 340cdf0e10cSrcweir if ( GetView().GetPostItMgr() && 341cdf0e10cSrcweir GetView().GetPostItMgr()->HasActiveSidebarWin() ) 342cdf0e10cSrcweir { 343cdf0e10cSrcweir GetView().GetPostItMgr()->HideActiveSidebarWin(); 344cdf0e10cSrcweir } 345cdf0e10cSrcweir break; 346cdf0e10cSrcweir case FN_HIDE_ALL_NOTES: 347cdf0e10cSrcweir if ( GetView().GetPostItMgr() ) 348cdf0e10cSrcweir GetView().GetPostItMgr()->Hide(); 349cdf0e10cSrcweir break; 350cdf0e10cSrcweir case FN_HIDE_NOTE_AUTHOR: 351cdf0e10cSrcweir { 352cdf0e10cSrcweir SFX_REQUEST_ARG( rReq, pNoteItem, SfxStringItem, nSlot, sal_False); 353cdf0e10cSrcweir if ( pNoteItem && GetView().GetPostItMgr() ) 354cdf0e10cSrcweir GetView().GetPostItMgr()->Hide( pNoteItem->GetValue() ); 355cdf0e10cSrcweir } 356cdf0e10cSrcweir break; 357cdf0e10cSrcweir 3583b32dd21SOliver-Rainer Wittmann case FN_POSTIT: 3593b32dd21SOliver-Rainer Wittmann { 3603b32dd21SOliver-Rainer Wittmann SwPostItField* pPostIt = dynamic_cast<SwPostItField*>(aFldMgr.GetCurFld()); 3613b32dd21SOliver-Rainer Wittmann sal_Bool bNew = !(pPostIt && pPostIt->GetTyp()->Which() == RES_POSTITFLD); 3623b32dd21SOliver-Rainer Wittmann if (bNew || GetView().GetPostItMgr()->IsAnswer()) 3633b32dd21SOliver-Rainer Wittmann { 3643b32dd21SOliver-Rainer Wittmann SvtUserOptions aUserOpt; 3653b32dd21SOliver-Rainer Wittmann String sAuthor; 3663b32dd21SOliver-Rainer Wittmann if( !(sAuthor = aUserOpt.GetFullName()).Len()) 3673b32dd21SOliver-Rainer Wittmann if( !(sAuthor = aUserOpt.GetID()).Len() ) 3683b32dd21SOliver-Rainer Wittmann sAuthor = String( SW_RES( STR_REDLINE_UNKNOWN_AUTHOR )); 3693b32dd21SOliver-Rainer Wittmann 3703b32dd21SOliver-Rainer Wittmann if( rSh.HasSelection() ) 3713b32dd21SOliver-Rainer Wittmann { 3723b32dd21SOliver-Rainer Wittmann rSh.NormalizePam( sal_False ); 3733b32dd21SOliver-Rainer Wittmann rSh.KillPams(); 3743b32dd21SOliver-Rainer Wittmann } 3753b32dd21SOliver-Rainer Wittmann 3763b32dd21SOliver-Rainer Wittmann // #120513# Inserting a comment into an autocompletion crashes 3773b32dd21SOliver-Rainer Wittmann // --> suggestion has to be removed before 3783b32dd21SOliver-Rainer Wittmann GetView().GetEditWin().StopQuickHelp(); 3793b32dd21SOliver-Rainer Wittmann 3803b32dd21SOliver-Rainer Wittmann SwInsertFld_Data aData(TYP_POSTITFLD, 0, sAuthor, aEmptyStr, 0); 381*dec99bbdSOliver-Rainer Wittmann aFldMgr.InsertFld( aData ); 3823b32dd21SOliver-Rainer Wittmann 3833b32dd21SOliver-Rainer Wittmann rSh.Push(); 3843b32dd21SOliver-Rainer Wittmann rSh.SwCrsrShell::Left(1, CRSR_SKIP_CHARS, sal_False); 3853b32dd21SOliver-Rainer Wittmann pPostIt = (SwPostItField*)aFldMgr.GetCurFld(); 3863b32dd21SOliver-Rainer Wittmann rSh.Pop(sal_False); // Cursorpos restaurieren 3873b32dd21SOliver-Rainer Wittmann } 3883b32dd21SOliver-Rainer Wittmann 3893b32dd21SOliver-Rainer Wittmann if (pPostIt) 3903b32dd21SOliver-Rainer Wittmann { 3913b32dd21SOliver-Rainer Wittmann SwFieldType* pType = rSh.GetDoc()->GetFldType(RES_POSTITFLD, aEmptyStr,false); 3923b32dd21SOliver-Rainer Wittmann SwIterator<SwFmtFld,SwFieldType> aIter( *pType ); 3933b32dd21SOliver-Rainer Wittmann SwFmtFld* pSwFmtFld = aIter.First(); 3943b32dd21SOliver-Rainer Wittmann while( pSwFmtFld ) 3953b32dd21SOliver-Rainer Wittmann { 3963b32dd21SOliver-Rainer Wittmann if ( pSwFmtFld->GetField() == pPostIt ) 3973b32dd21SOliver-Rainer Wittmann { 3983b32dd21SOliver-Rainer Wittmann pSwFmtFld->Broadcast( SwFmtFldHint( 0, SWFMTFLD_FOCUS, &GetView() ) ); 3993b32dd21SOliver-Rainer Wittmann break; 4003b32dd21SOliver-Rainer Wittmann } 4013b32dd21SOliver-Rainer Wittmann pSwFmtFld = aIter.Next(); 4023b32dd21SOliver-Rainer Wittmann } 4033b32dd21SOliver-Rainer Wittmann } 4043b32dd21SOliver-Rainer Wittmann } 4053b32dd21SOliver-Rainer Wittmann break; 4063b32dd21SOliver-Rainer Wittmann 407cdf0e10cSrcweir case FN_REDLINE_COMMENT: 408cdf0e10cSrcweir { 409cdf0e10cSrcweir /* this code can be used once we want redline comments in the margin, all other stuff can 410cdf0e10cSrcweir then be deleted 411cdf0e10cSrcweir String sComment; 412cdf0e10cSrcweir const SwRedline *pRedline = rSh.GetCurrRedline(); 413cdf0e10cSrcweir 414cdf0e10cSrcweir if (pRedline) 415cdf0e10cSrcweir { 416cdf0e10cSrcweir sComment = pRedline->GetComment(); 417cdf0e10cSrcweir if ( sComment == String(rtl::OUString::createFromAscii("")) ) 418cdf0e10cSrcweir GetView().GetDocShell()->Broadcast(SwRedlineHint(pRedline,SWREDLINE_INSERTED)); 419cdf0e10cSrcweir const_cast<SwRedline*>(pRedline)->Broadcast(SwRedlineHint(pRedline,SWREDLINE_FOCUS,&GetView())); 420cdf0e10cSrcweir } 421cdf0e10cSrcweir */ 422cdf0e10cSrcweir 423cdf0e10cSrcweir String sComment; 424cdf0e10cSrcweir const SwRedline *pRedline = rSh.GetCurrRedline(); 425cdf0e10cSrcweir 426cdf0e10cSrcweir if (pRedline) 427cdf0e10cSrcweir { 428cdf0e10cSrcweir sComment = pRedline->GetComment(); 429cdf0e10cSrcweir 430cdf0e10cSrcweir 431cdf0e10cSrcweir sal_Bool bTravel = sal_False; 432cdf0e10cSrcweir 433cdf0e10cSrcweir SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); 434cdf0e10cSrcweir DBG_ASSERT(pFact, "Dialogdiet fail!"); 435cdf0e10cSrcweir ::DialogGetRanges fnGetRange = pFact->GetDialogGetRangesFunc( RID_SVXDLG_POSTIT ); 436cdf0e10cSrcweir DBG_ASSERT(fnGetRange, "Dialogdiet fail! GetRanges()"); 437cdf0e10cSrcweir SfxItemSet aSet(GetPool(), fnGetRange()); 438cdf0e10cSrcweir aSet.Put(SvxPostItTextItem(sComment.ConvertLineEnd(), SID_ATTR_POSTIT_TEXT)); 439cdf0e10cSrcweir aSet.Put(SvxPostItAuthorItem(pRedline->GetAuthorString(), SID_ATTR_POSTIT_AUTHOR)); 440cdf0e10cSrcweir 441cdf0e10cSrcweir aSet.Put( SvxPostItDateItem( GetAppLangDateTimeString( 442cdf0e10cSrcweir pRedline->GetRedlineData().GetTimeStamp() ), 443cdf0e10cSrcweir SID_ATTR_POSTIT_DATE )); 444cdf0e10cSrcweir 445cdf0e10cSrcweir // Traveling nur bei mehr als einem Feld 446cdf0e10cSrcweir rSh.StartAction(); 447cdf0e10cSrcweir 448cdf0e10cSrcweir rSh.Push(); 449cdf0e10cSrcweir const SwRedline *pActRed = rSh.SelPrevRedline(); 450cdf0e10cSrcweir 451cdf0e10cSrcweir if (pActRed == pRedline) 452cdf0e10cSrcweir { // Neuer Cursor steht am Anfang des Current Redlines 453cdf0e10cSrcweir rSh.Pop(); // Alten Cursor wegwerfen 454cdf0e10cSrcweir rSh.Push(); 455cdf0e10cSrcweir pActRed = rSh.SelPrevRedline(); 456cdf0e10cSrcweir } 457cdf0e10cSrcweir 458cdf0e10cSrcweir sal_Bool bPrev = pActRed != 0; 459cdf0e10cSrcweir rSh.Pop(sal_False); 460cdf0e10cSrcweir rSh.EndAction(); 461cdf0e10cSrcweir 462cdf0e10cSrcweir rSh.ClearMark(); 463cdf0e10cSrcweir rSh.SelNextRedline(); // Aktueller Redline wird selektiert 464cdf0e10cSrcweir 465cdf0e10cSrcweir rSh.StartAction(); 466cdf0e10cSrcweir rSh.Push(); 467cdf0e10cSrcweir pActRed = rSh.SelNextRedline(); 468cdf0e10cSrcweir sal_Bool bNext = pActRed != 0; 469cdf0e10cSrcweir rSh.Pop(sal_False); // Cursorpos restaurieren 470cdf0e10cSrcweir 471cdf0e10cSrcweir if( rSh.IsCrsrPtAtEnd() ) 472cdf0e10cSrcweir rSh.SwapPam(); 473cdf0e10cSrcweir 474cdf0e10cSrcweir rSh.EndAction(); 475cdf0e10cSrcweir 476cdf0e10cSrcweir bTravel |= bNext|bPrev; 477cdf0e10cSrcweir 478cdf0e10cSrcweir SvxAbstractDialogFactory* pFact2 = SvxAbstractDialogFactory::Create(); 479cdf0e10cSrcweir DBG_ASSERT(pFact2, "Dialogdiet fail!"); 480cdf0e10cSrcweir AbstractSvxPostItDialog* pDlg = pFact2->CreateSvxPostItDialog( pMDI, aSet, bTravel, sal_True ); 481cdf0e10cSrcweir DBG_ASSERT(pDlg, "Dialogdiet fail!"); 482cdf0e10cSrcweir pDlg->HideAuthor(); 483cdf0e10cSrcweir 484cdf0e10cSrcweir String sTitle(SW_RES(STR_REDLINE_COMMENT)); 485cdf0e10cSrcweir ::lcl_AppendRedlineStr( sTitle, pRedline->GetType() ); 486cdf0e10cSrcweir 487cdf0e10cSrcweir pDlg->SetText(sTitle); 488cdf0e10cSrcweir 489cdf0e10cSrcweir if (bTravel) 490cdf0e10cSrcweir { 491cdf0e10cSrcweir pDlg->EnableTravel(bNext, bPrev); 492cdf0e10cSrcweir pDlg->SetPrevHdl(LINK(this, SwTextShell, RedlinePrevHdl)); 493cdf0e10cSrcweir pDlg->SetNextHdl(LINK(this, SwTextShell, RedlineNextHdl)); 494cdf0e10cSrcweir } 495cdf0e10cSrcweir 496cdf0e10cSrcweir rSh.SetCareWin(pDlg->GetWindow()); 497cdf0e10cSrcweir bNoInterrupt = sal_True; 498cdf0e10cSrcweir 499cdf0e10cSrcweir if ( pDlg->Execute() == RET_OK ) 500cdf0e10cSrcweir { 501cdf0e10cSrcweir const SfxItemSet* pOutSet = pDlg->GetOutputItemSet(); 502cdf0e10cSrcweir String sMsg(((const SvxPostItTextItem&)pOutSet->Get(SID_ATTR_POSTIT_TEXT)).GetValue()); 503cdf0e10cSrcweir 504cdf0e10cSrcweir // Kommentar einfuegen bzw aendern 505cdf0e10cSrcweir rSh.SetRedlineComment(sMsg); 506cdf0e10cSrcweir } 507cdf0e10cSrcweir 508cdf0e10cSrcweir delete pDlg; 509cdf0e10cSrcweir rSh.SetCareWin(NULL); 510cdf0e10cSrcweir bNoInterrupt = sal_False; 511cdf0e10cSrcweir rSh.ClearMark(); 512cdf0e10cSrcweir GetView().AttrChangedNotify(GetShellPtr()); 513cdf0e10cSrcweir } 514cdf0e10cSrcweir } 515cdf0e10cSrcweir break; 516cdf0e10cSrcweir 517cdf0e10cSrcweir case FN_JAVAEDIT: 518cdf0e10cSrcweir { 519cdf0e10cSrcweir String aType, aText; 520cdf0e10cSrcweir sal_Bool bIsUrl=sal_False; 521cdf0e10cSrcweir sal_Bool bNew=sal_False, bUpdate=sal_False; 522cdf0e10cSrcweir SwFldMgr* pMgr = new SwFldMgr; 523cdf0e10cSrcweir if ( pItem ) 524cdf0e10cSrcweir { 525cdf0e10cSrcweir aText = ((SfxStringItem*)pItem)->GetValue(); 526cdf0e10cSrcweir SFX_REQUEST_ARG( rReq, pType, SfxStringItem, FN_PARAM_2 , sal_False ); 527cdf0e10cSrcweir SFX_REQUEST_ARG( rReq, pIsUrl, SfxBoolItem, FN_PARAM_1 , sal_False ); 528cdf0e10cSrcweir if ( pType ) 529cdf0e10cSrcweir aType = pType->GetValue(); 530cdf0e10cSrcweir if ( pIsUrl ) 531cdf0e10cSrcweir bIsUrl = pIsUrl->GetValue(); 532cdf0e10cSrcweir 533cdf0e10cSrcweir SwScriptField* pFld = (SwScriptField*)pMgr->GetCurFld(); 534cdf0e10cSrcweir bNew = !pFld || !(pFld->GetTyp()->Which() == RES_SCRIPTFLD); 535cdf0e10cSrcweir bUpdate = pFld && ( bIsUrl != pFld->GetFormat() || pFld->GetPar2() != aType || pFld->GetPar1() != aText ); 536cdf0e10cSrcweir } 537cdf0e10cSrcweir else 538cdf0e10cSrcweir { 539cdf0e10cSrcweir SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); 540cdf0e10cSrcweir DBG_ASSERT(pFact, "Dialogdiet fail!"); 541cdf0e10cSrcweir AbstractJavaEditDialog* pDlg = pFact->CreateJavaEditDialog( DLG_JAVAEDIT, 542cdf0e10cSrcweir pMDI, &rSh); 543cdf0e10cSrcweir DBG_ASSERT(pDlg, "Dialogdiet fail!"); 544cdf0e10cSrcweir if ( pDlg->Execute() ) 545cdf0e10cSrcweir { 546cdf0e10cSrcweir aType = pDlg->GetType(); 547cdf0e10cSrcweir aText = pDlg->GetText(); 548cdf0e10cSrcweir bIsUrl = pDlg->IsUrl(); 549cdf0e10cSrcweir bNew = pDlg->IsNew(); 550cdf0e10cSrcweir bUpdate = pDlg->IsUpdate(); 551cdf0e10cSrcweir rReq.AppendItem( SfxStringItem( FN_JAVAEDIT, aText ) ); 552cdf0e10cSrcweir rReq.AppendItem( SfxStringItem( FN_PARAM_2, aType ) ); 553cdf0e10cSrcweir rReq.AppendItem( SfxBoolItem( FN_PARAM_1, bIsUrl ) ); 554cdf0e10cSrcweir } 555cdf0e10cSrcweir 556cdf0e10cSrcweir delete pDlg; 557cdf0e10cSrcweir } 558cdf0e10cSrcweir 559cdf0e10cSrcweir if( bNew ) 560cdf0e10cSrcweir { 561cdf0e10cSrcweir SwInsertFld_Data aData(TYP_SCRIPTFLD, 0, aType, aText, bIsUrl); 562cdf0e10cSrcweir pMgr->InsertFld(aData); 563cdf0e10cSrcweir rReq.Done(); 564cdf0e10cSrcweir } 565cdf0e10cSrcweir else if( bUpdate ) 566cdf0e10cSrcweir { 567cdf0e10cSrcweir pMgr->UpdateCurFld( bIsUrl, aType, aText ); 568cdf0e10cSrcweir rSh.SetUndoNoResetModified(); 569cdf0e10cSrcweir rReq.Done(); 570cdf0e10cSrcweir } 571cdf0e10cSrcweir else 572cdf0e10cSrcweir rReq.Ignore(); 573cdf0e10cSrcweir } 574cdf0e10cSrcweir break; 575cdf0e10cSrcweir 576cdf0e10cSrcweir case FN_INSERT_FLD_DATE : 577cdf0e10cSrcweir nInsertType = TYP_DATEFLD; 578cdf0e10cSrcweir bIsText = sal_False; 579cdf0e10cSrcweir goto FIELD_INSERT; 580cdf0e10cSrcweir case FN_INSERT_FLD_TIME : 581cdf0e10cSrcweir nInsertType = TYP_TIMEFLD; 582cdf0e10cSrcweir bIsText = sal_False; 583cdf0e10cSrcweir goto FIELD_INSERT; 584cdf0e10cSrcweir case FN_INSERT_FLD_PGNUMBER: 585cdf0e10cSrcweir nInsertType = TYP_PAGENUMBERFLD; 586cdf0e10cSrcweir nInsertFormat = SVX_NUM_PAGEDESC; // wie Seitenvorlage 587cdf0e10cSrcweir bIsText = sal_False; 588cdf0e10cSrcweir goto FIELD_INSERT; 589cdf0e10cSrcweir case FN_INSERT_FLD_PGCOUNT : 590cdf0e10cSrcweir nInsertType = TYP_DOCSTATFLD; 591cdf0e10cSrcweir nInsertSubType = 0; 592cdf0e10cSrcweir bIsText = sal_False; 593cdf0e10cSrcweir nInsertFormat = SVX_NUM_PAGEDESC; 594cdf0e10cSrcweir goto FIELD_INSERT; 595cdf0e10cSrcweir case FN_INSERT_FLD_TOPIC : 596cdf0e10cSrcweir nInsertType = TYP_DOCINFOFLD; 597cdf0e10cSrcweir nInsertSubType = DI_THEMA; 598cdf0e10cSrcweir goto FIELD_INSERT; 599cdf0e10cSrcweir case FN_INSERT_FLD_TITLE : 600cdf0e10cSrcweir nInsertType = TYP_DOCINFOFLD; 601cdf0e10cSrcweir nInsertSubType = DI_TITEL; 602cdf0e10cSrcweir goto FIELD_INSERT; 603cdf0e10cSrcweir case FN_INSERT_FLD_AUTHOR : 604cdf0e10cSrcweir nInsertType = TYP_DOCINFOFLD; 605cdf0e10cSrcweir nInsertSubType = DI_CREATE|DI_SUB_AUTHOR; 606cdf0e10cSrcweir 607cdf0e10cSrcweir FIELD_INSERT: 608cdf0e10cSrcweir { 609cdf0e10cSrcweir //format conversion should only be done for number formatter formats 610cdf0e10cSrcweir if(!nInsertFormat) 611cdf0e10cSrcweir nInsertFormat = aFldMgr.GetDefaultFormat(nInsertType, bIsText, rSh.GetNumberFormatter()); 612cdf0e10cSrcweir SwInsertFld_Data aData(nInsertType, nInsertSubType, 613cdf0e10cSrcweir aEmptyStr, aEmptyStr, nInsertFormat); 614cdf0e10cSrcweir aFldMgr.InsertFld(aData); 615cdf0e10cSrcweir rReq.Done(); 616cdf0e10cSrcweir } 617cdf0e10cSrcweir break; 618cdf0e10cSrcweir default: 619cdf0e10cSrcweir ASSERT(sal_False, falscher Dispatcher); 620cdf0e10cSrcweir return; 621cdf0e10cSrcweir } 622cdf0e10cSrcweir } 623cdf0e10cSrcweir } 624cdf0e10cSrcweir 625cdf0e10cSrcweir void SwTextShell::StateField( SfxItemSet &rSet ) 626cdf0e10cSrcweir { 62769a74367SOliver-Rainer Wittmann SwWrtShell& rSh = GetShell(); 62869a74367SOliver-Rainer Wittmann SfxWhichIter aIter( rSet ); 62969a74367SOliver-Rainer Wittmann const SwField* pField = 0; 63069a74367SOliver-Rainer Wittmann int bGetField = sal_False; 63169a74367SOliver-Rainer Wittmann sal_uInt16 nWhich = aIter.FirstWhich(); 63269a74367SOliver-Rainer Wittmann 63369a74367SOliver-Rainer Wittmann while (nWhich) 63469a74367SOliver-Rainer Wittmann { 63569a74367SOliver-Rainer Wittmann switch (nWhich) 63669a74367SOliver-Rainer Wittmann { 63769a74367SOliver-Rainer Wittmann case FN_DELETE_COMMENT: 63869a74367SOliver-Rainer Wittmann case FN_DELETE_NOTE_AUTHOR: 63969a74367SOliver-Rainer Wittmann case FN_DELETE_ALL_NOTES: 64069a74367SOliver-Rainer Wittmann case FN_HIDE_NOTE: 64169a74367SOliver-Rainer Wittmann case FN_HIDE_NOTE_AUTHOR: 64269a74367SOliver-Rainer Wittmann case FN_HIDE_ALL_NOTES: 64369a74367SOliver-Rainer Wittmann { 64469a74367SOliver-Rainer Wittmann SwPostItMgr* pPostItMgr = GetView().GetPostItMgr(); 64569a74367SOliver-Rainer Wittmann if ( !pPostItMgr ) 64669a74367SOliver-Rainer Wittmann rSet.InvalidateItem( nWhich ); 64769a74367SOliver-Rainer Wittmann else if ( !pPostItMgr->HasActiveSidebarWin() ) 64869a74367SOliver-Rainer Wittmann { 64969a74367SOliver-Rainer Wittmann rSet.InvalidateItem( FN_DELETE_COMMENT ); 65069a74367SOliver-Rainer Wittmann rSet.InvalidateItem( FN_HIDE_NOTE ); 65169a74367SOliver-Rainer Wittmann } 65269a74367SOliver-Rainer Wittmann } 65369a74367SOliver-Rainer Wittmann break; 654cdf0e10cSrcweir 65569a74367SOliver-Rainer Wittmann case FN_EDIT_FIELD: 65669a74367SOliver-Rainer Wittmann { 657cdf0e10cSrcweir if( !bGetField ) 658cdf0e10cSrcweir { 659cdf0e10cSrcweir pField = rSh.GetCurFld(); 660cdf0e10cSrcweir bGetField = sal_True; 661cdf0e10cSrcweir } 662cdf0e10cSrcweir 663cdf0e10cSrcweir sal_uInt16 nTempWhich = pField ? pField->GetTyp()->Which() : USHRT_MAX; 664cdf0e10cSrcweir if( USHRT_MAX == nTempWhich || 665cdf0e10cSrcweir RES_POSTITFLD == nTempWhich || 666cdf0e10cSrcweir RES_SCRIPTFLD == nTempWhich || 667cdf0e10cSrcweir RES_AUTHORITY == nTempWhich ) 668cdf0e10cSrcweir rSet.DisableItem( nWhich ); 669cdf0e10cSrcweir else if( RES_DDEFLD == nTempWhich && 67069a74367SOliver-Rainer Wittmann !((SwDDEFieldType*)pField->GetTyp())->GetBaseLink().IsVisible()) 671cdf0e10cSrcweir { 672cdf0e10cSrcweir // nested links cannot be edited 673cdf0e10cSrcweir rSet.DisableItem( nWhich ); 674cdf0e10cSrcweir } 67569a74367SOliver-Rainer Wittmann } 67669a74367SOliver-Rainer Wittmann break; 677cdf0e10cSrcweir 67869a74367SOliver-Rainer Wittmann case FN_EXECUTE_MACROFIELD: 67969a74367SOliver-Rainer Wittmann { 68069a74367SOliver-Rainer Wittmann if(!bGetField) 68169a74367SOliver-Rainer Wittmann { 68269a74367SOliver-Rainer Wittmann pField = rSh.GetCurFld(); 68369a74367SOliver-Rainer Wittmann bGetField = sal_True; 68469a74367SOliver-Rainer Wittmann } 68569a74367SOliver-Rainer Wittmann if(!pField || pField->GetTyp()->Which() != RES_MACROFLD) 68669a74367SOliver-Rainer Wittmann rSet.DisableItem(nWhich); 68769a74367SOliver-Rainer Wittmann } 68869a74367SOliver-Rainer Wittmann break; 68969a74367SOliver-Rainer Wittmann 69069a74367SOliver-Rainer Wittmann case FN_INSERT_FIELD: 69169a74367SOliver-Rainer Wittmann { 69269a74367SOliver-Rainer Wittmann if ( rSh.CrsrInsideInputFld() ) 69369a74367SOliver-Rainer Wittmann { 69469a74367SOliver-Rainer Wittmann rSet.DisableItem(nWhich); 69569a74367SOliver-Rainer Wittmann } 69669a74367SOliver-Rainer Wittmann else 69769a74367SOliver-Rainer Wittmann { 69869a74367SOliver-Rainer Wittmann SfxViewFrame* pVFrame = GetView().GetViewFrame(); 69969a74367SOliver-Rainer Wittmann //#i5788# prevent closing of the field dialog while a modal dialog ( Input field dialog ) is active 70069a74367SOliver-Rainer Wittmann if(!pVFrame->IsInModalMode() && 701cdf0e10cSrcweir pVFrame->KnowsChildWindow(FN_INSERT_FIELD) && !pVFrame->HasChildWindow(FN_INSERT_FIELD_DATA_ONLY) ) 70269a74367SOliver-Rainer Wittmann rSet.Put(SfxBoolItem( FN_INSERT_FIELD, pVFrame->HasChildWindow(nWhich))); 70369a74367SOliver-Rainer Wittmann else 70469a74367SOliver-Rainer Wittmann rSet.DisableItem(FN_INSERT_FIELD); 70569a74367SOliver-Rainer Wittmann } 70669a74367SOliver-Rainer Wittmann } 70769a74367SOliver-Rainer Wittmann break; 70869a74367SOliver-Rainer Wittmann 70969a74367SOliver-Rainer Wittmann case FN_INSERT_REF_FIELD: 71069a74367SOliver-Rainer Wittmann { 71169a74367SOliver-Rainer Wittmann SfxViewFrame* pVFrame = GetView().GetViewFrame(); 71269a74367SOliver-Rainer Wittmann if ( !pVFrame->KnowsChildWindow(FN_INSERT_FIELD) 71369a74367SOliver-Rainer Wittmann || rSh.CrsrInsideInputFld() ) 71469a74367SOliver-Rainer Wittmann { 71569a74367SOliver-Rainer Wittmann rSet.DisableItem(FN_INSERT_REF_FIELD); 71669a74367SOliver-Rainer Wittmann } 71769a74367SOliver-Rainer Wittmann } 71869a74367SOliver-Rainer Wittmann break; 71969a74367SOliver-Rainer Wittmann 72069a74367SOliver-Rainer Wittmann case FN_INSERT_FIELD_CTRL: 72169a74367SOliver-Rainer Wittmann if ( rSh.CrsrInsideInputFld() ) 72269a74367SOliver-Rainer Wittmann { 72369a74367SOliver-Rainer Wittmann rSet.DisableItem(nWhich); 72469a74367SOliver-Rainer Wittmann } 72569a74367SOliver-Rainer Wittmann else 72669a74367SOliver-Rainer Wittmann { 72769a74367SOliver-Rainer Wittmann rSet.Put(SfxBoolItem( nWhich, GetView().GetViewFrame()->HasChildWindow(FN_INSERT_FIELD))); 72869a74367SOliver-Rainer Wittmann } 72969a74367SOliver-Rainer Wittmann break; 73069a74367SOliver-Rainer Wittmann 73169a74367SOliver-Rainer Wittmann case FN_REDLINE_COMMENT: 73269a74367SOliver-Rainer Wittmann if (!rSh.GetCurrRedline()) 73369a74367SOliver-Rainer Wittmann rSet.DisableItem(nWhich); 73469a74367SOliver-Rainer Wittmann break; 73569a74367SOliver-Rainer Wittmann 73669a74367SOliver-Rainer Wittmann case FN_POSTIT : 73769a74367SOliver-Rainer Wittmann case FN_JAVAEDIT : 73869a74367SOliver-Rainer Wittmann { 73969a74367SOliver-Rainer Wittmann sal_Bool bCurField = sal_False; 740cdf0e10cSrcweir pField = rSh.GetCurFld(); 74169a74367SOliver-Rainer Wittmann if(nWhich == FN_POSTIT) 74269a74367SOliver-Rainer Wittmann bCurField = pField && pField->GetTyp()->Which() == RES_POSTITFLD; 74369a74367SOliver-Rainer Wittmann else 74469a74367SOliver-Rainer Wittmann bCurField = pField && pField->GetTyp()->Which() == RES_SCRIPTFLD; 745cdf0e10cSrcweir 74669a74367SOliver-Rainer Wittmann if( !bCurField && rSh.IsReadOnlyAvailable() && rSh.HasReadonlySel() ) 74769a74367SOliver-Rainer Wittmann { 74869a74367SOliver-Rainer Wittmann rSet.DisableItem(nWhich); 74969a74367SOliver-Rainer Wittmann } 75069a74367SOliver-Rainer Wittmann else if ( rSh.CrsrInsideInputFld() ) 75169a74367SOliver-Rainer Wittmann { 75269a74367SOliver-Rainer Wittmann rSet.DisableItem(nWhich); 75369a74367SOliver-Rainer Wittmann } 75469a74367SOliver-Rainer Wittmann } 75569a74367SOliver-Rainer Wittmann 75669a74367SOliver-Rainer Wittmann break; 75769a74367SOliver-Rainer Wittmann 75869a74367SOliver-Rainer Wittmann case FN_INSERT_FLD_AUTHOR: 75969a74367SOliver-Rainer Wittmann case FN_INSERT_FLD_DATE: 76069a74367SOliver-Rainer Wittmann case FN_INSERT_FLD_PGCOUNT: 76169a74367SOliver-Rainer Wittmann case FN_INSERT_FLD_PGNUMBER: 76269a74367SOliver-Rainer Wittmann case FN_INSERT_FLD_TIME: 76369a74367SOliver-Rainer Wittmann case FN_INSERT_FLD_TITLE: 76469a74367SOliver-Rainer Wittmann case FN_INSERT_FLD_TOPIC: 76569a74367SOliver-Rainer Wittmann case FN_INSERT_DBFIELD: 76669a74367SOliver-Rainer Wittmann if ( rSh.CrsrInsideInputFld() ) 76769a74367SOliver-Rainer Wittmann { 76869a74367SOliver-Rainer Wittmann rSet.DisableItem(nWhich); 76969a74367SOliver-Rainer Wittmann } 77069a74367SOliver-Rainer Wittmann break; 77169a74367SOliver-Rainer Wittmann 77269a74367SOliver-Rainer Wittmann } 77369a74367SOliver-Rainer Wittmann nWhich = aIter.NextWhich(); 77469a74367SOliver-Rainer Wittmann } 775cdf0e10cSrcweir } 776cdf0e10cSrcweir 777cdf0e10cSrcweir /*--------------------------------------------------------------------------- 778cdf0e10cSrcweir Beschreibung: 779cdf0e10cSrcweir ----------------------------------------------------------------------------*/ 780cdf0e10cSrcweir 781cdf0e10cSrcweir 782cdf0e10cSrcweir void SwTextShell::InsertHyperlink(const SvxHyperlinkItem& rHlnkItem) 783cdf0e10cSrcweir { 784cdf0e10cSrcweir const String& rName = rHlnkItem.GetName(); 785cdf0e10cSrcweir const String& rURL = rHlnkItem.GetURL(); 786cdf0e10cSrcweir const String& rTarget = rHlnkItem.GetTargetFrame(); 787cdf0e10cSrcweir sal_uInt16 nType = (sal_uInt16)rHlnkItem.GetInsertMode(); 788cdf0e10cSrcweir nType &= ~HLINK_HTMLMODE; 789cdf0e10cSrcweir const SvxMacroTableDtor* pMacroTbl = rHlnkItem.GetMacroTbl(); 790cdf0e10cSrcweir 791cdf0e10cSrcweir SwWrtShell& rSh = GetShell(); 792cdf0e10cSrcweir 793cdf0e10cSrcweir if( rSh.GetSelectionType() & nsSelectionType::SEL_TXT ) 794cdf0e10cSrcweir { 795cdf0e10cSrcweir rSh.StartAction(); 796cdf0e10cSrcweir SfxItemSet aSet(GetPool(), RES_TXTATR_INETFMT, RES_TXTATR_INETFMT); 797cdf0e10cSrcweir rSh.GetCurAttr( aSet ); 798cdf0e10cSrcweir 799cdf0e10cSrcweir const SfxPoolItem* pItem; 800cdf0e10cSrcweir if(SFX_ITEM_SET == aSet.GetItemState(RES_TXTATR_INETFMT, sal_False, &pItem)) 801cdf0e10cSrcweir { 802cdf0e10cSrcweir // Links selektieren 803cdf0e10cSrcweir rSh.SwCrsrShell::SelectTxtAttr(RES_TXTATR_INETFMT, sal_False); 804cdf0e10cSrcweir } 805cdf0e10cSrcweir switch (nType) 806cdf0e10cSrcweir { 807cdf0e10cSrcweir case HLINK_DEFAULT: 808cdf0e10cSrcweir case HLINK_FIELD: 809cdf0e10cSrcweir { 810cdf0e10cSrcweir SwFmtINetFmt aINetFmt( rURL, rTarget ); 811cdf0e10cSrcweir aINetFmt.SetName(rHlnkItem.GetIntName()); 812cdf0e10cSrcweir if(pMacroTbl) 813cdf0e10cSrcweir { 814cdf0e10cSrcweir SvxMacro *pMacro = pMacroTbl->Get( SFX_EVENT_MOUSEOVER_OBJECT ); 815cdf0e10cSrcweir if( pMacro ) 816cdf0e10cSrcweir aINetFmt.SetMacro(SFX_EVENT_MOUSEOVER_OBJECT, *pMacro); 817cdf0e10cSrcweir pMacro = pMacroTbl->Get( SFX_EVENT_MOUSECLICK_OBJECT ); 818cdf0e10cSrcweir if( pMacro ) 819cdf0e10cSrcweir aINetFmt.SetMacro(SFX_EVENT_MOUSECLICK_OBJECT, *pMacro); 820cdf0e10cSrcweir pMacro = pMacroTbl->Get( SFX_EVENT_MOUSEOUT_OBJECT ); 821cdf0e10cSrcweir if( pMacro ) 822cdf0e10cSrcweir aINetFmt.SetMacro(SFX_EVENT_MOUSEOUT_OBJECT, *pMacro); 823cdf0e10cSrcweir } 824cdf0e10cSrcweir rSh.SttSelect(); 825cdf0e10cSrcweir rSh.InsertURL( aINetFmt, rName, sal_True ); 826cdf0e10cSrcweir rSh.EndSelect(); 827cdf0e10cSrcweir } 828cdf0e10cSrcweir break; 829cdf0e10cSrcweir 830cdf0e10cSrcweir case HLINK_BUTTON: 831cdf0e10cSrcweir sal_Bool bSel = rSh.HasSelection(); 832cdf0e10cSrcweir if(bSel) 833cdf0e10cSrcweir rSh.DelRight(); 834cdf0e10cSrcweir InsertURLButton( rURL, rTarget, rName ); 835cdf0e10cSrcweir rSh.EnterStdMode(); 836cdf0e10cSrcweir break; 837cdf0e10cSrcweir } 838cdf0e10cSrcweir rSh.EndAction(); 839cdf0e10cSrcweir } 840cdf0e10cSrcweir } 841cdf0e10cSrcweir 842cdf0e10cSrcweir IMPL_LINK( SwTextShell, RedlineNextHdl, AbstractSvxPostItDialog *, pBtn ) 843cdf0e10cSrcweir { 844cdf0e10cSrcweir SwWrtShell* pSh = GetShellPtr(); 845cdf0e10cSrcweir AbstractSvxPostItDialog *pDlg = (AbstractSvxPostItDialog*)pBtn; 846cdf0e10cSrcweir 847cdf0e10cSrcweir // Kommentar einfuegen bzw aendern 848cdf0e10cSrcweir pSh->SetRedlineComment(pDlg->GetNote()); 849cdf0e10cSrcweir 850cdf0e10cSrcweir const SwRedline *pRedline = pSh->GetCurrRedline(); 851cdf0e10cSrcweir 852cdf0e10cSrcweir String sComment; 853cdf0e10cSrcweir 854cdf0e10cSrcweir if (pRedline) 855cdf0e10cSrcweir { 856cdf0e10cSrcweir // Traveling nur bei mehr als einem Feld 857cdf0e10cSrcweir if( !pSh->IsCrsrPtAtEnd() ) 858cdf0e10cSrcweir pSh->SwapPam(); // Cursor hinter den Redline stellen 859cdf0e10cSrcweir 860cdf0e10cSrcweir pSh->Push(); 861cdf0e10cSrcweir const SwRedline *pActRed = pSh->SelNextRedline(); 862cdf0e10cSrcweir pSh->Pop(pActRed != 0); 863cdf0e10cSrcweir 864cdf0e10cSrcweir sal_Bool bEnable = sal_False; 865cdf0e10cSrcweir 866cdf0e10cSrcweir if (pActRed) 867cdf0e10cSrcweir { 868cdf0e10cSrcweir pSh->StartAction(); 869cdf0e10cSrcweir pSh->Push(); 870cdf0e10cSrcweir bEnable = pSh->SelNextRedline() != 0; 871cdf0e10cSrcweir pSh->Pop(sal_False); 872cdf0e10cSrcweir pSh->EndAction(); 873cdf0e10cSrcweir } 874cdf0e10cSrcweir 875cdf0e10cSrcweir pDlg->EnableTravel(bEnable, sal_True); 876cdf0e10cSrcweir 877cdf0e10cSrcweir if( pSh->IsCrsrPtAtEnd() ) 878cdf0e10cSrcweir pSh->SwapPam(); 879cdf0e10cSrcweir 880cdf0e10cSrcweir pRedline = pSh->GetCurrRedline(); 881cdf0e10cSrcweir sComment = pRedline->GetComment(); 882cdf0e10cSrcweir 883cdf0e10cSrcweir pDlg->SetNote( sComment.ConvertLineEnd() ); 884cdf0e10cSrcweir pDlg->ShowLastAuthor( pRedline->GetAuthorString(), 885cdf0e10cSrcweir GetAppLangDateTimeString( 886cdf0e10cSrcweir pRedline->GetRedlineData().GetTimeStamp() )); 887cdf0e10cSrcweir 888cdf0e10cSrcweir String sTitle(SW_RES(STR_REDLINE_COMMENT)); 889cdf0e10cSrcweir ::lcl_AppendRedlineStr( sTitle, pRedline->GetType() ); 890cdf0e10cSrcweir 891cdf0e10cSrcweir pDlg->SetText(sTitle); 892cdf0e10cSrcweir } 893cdf0e10cSrcweir 894cdf0e10cSrcweir return 0; 895cdf0e10cSrcweir } 896cdf0e10cSrcweir 897cdf0e10cSrcweir IMPL_LINK( SwTextShell, RedlinePrevHdl, AbstractSvxPostItDialog *, pBtn ) 898cdf0e10cSrcweir { 899cdf0e10cSrcweir SwWrtShell* pSh = GetShellPtr(); 900cdf0e10cSrcweir AbstractSvxPostItDialog *pDlg = (AbstractSvxPostItDialog*)pBtn; 901cdf0e10cSrcweir 902cdf0e10cSrcweir // Kommentar einfuegen bzw aendern 903cdf0e10cSrcweir pSh->SetRedlineComment(pDlg->GetNote()); 904cdf0e10cSrcweir 905cdf0e10cSrcweir const SwRedline *pRedline = pSh->GetCurrRedline(); 906cdf0e10cSrcweir 907cdf0e10cSrcweir String sComment; 908cdf0e10cSrcweir 909cdf0e10cSrcweir if (pRedline) 910cdf0e10cSrcweir { 911cdf0e10cSrcweir // Traveling nur bei mehr als einem Feld 912cdf0e10cSrcweir pSh->Push(); 913cdf0e10cSrcweir const SwRedline *pActRed = pSh->SelPrevRedline(); 914cdf0e10cSrcweir pSh->Pop(pActRed != 0); 915cdf0e10cSrcweir 916cdf0e10cSrcweir sal_Bool bEnable = sal_False; 917cdf0e10cSrcweir 918cdf0e10cSrcweir if (pActRed) 919cdf0e10cSrcweir { 920cdf0e10cSrcweir pSh->StartAction(); 921cdf0e10cSrcweir pSh->Push(); 922cdf0e10cSrcweir bEnable = pSh->SelPrevRedline() != 0; 923cdf0e10cSrcweir pSh->Pop(sal_False); 924cdf0e10cSrcweir pSh->EndAction(); 925cdf0e10cSrcweir } 926cdf0e10cSrcweir 927cdf0e10cSrcweir pDlg->EnableTravel(sal_True, bEnable); 928cdf0e10cSrcweir 929cdf0e10cSrcweir pRedline = pSh->GetCurrRedline(); 930cdf0e10cSrcweir sComment = pRedline->GetComment(); 931cdf0e10cSrcweir 932cdf0e10cSrcweir pDlg->SetNote(sComment.ConvertLineEnd()); 933cdf0e10cSrcweir pDlg->ShowLastAuthor(pRedline->GetAuthorString(), 934cdf0e10cSrcweir GetAppLangDateTimeString( 935cdf0e10cSrcweir pRedline->GetRedlineData().GetTimeStamp() )); 936cdf0e10cSrcweir 937cdf0e10cSrcweir String sTitle(SW_RES(STR_REDLINE_COMMENT)); 938cdf0e10cSrcweir ::lcl_AppendRedlineStr( sTitle, pRedline->GetType() ); 939cdf0e10cSrcweir 940cdf0e10cSrcweir pDlg->SetText(sTitle); 941cdf0e10cSrcweir } 942cdf0e10cSrcweir 943cdf0e10cSrcweir return 0; 944cdf0e10cSrcweir } 945cdf0e10cSrcweir 946cdf0e10cSrcweir 947