summaryrefslogtreecommitdiff
path: root/sw/source/ui/shells/textfld.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/ui/shells/textfld.cxx')
-rw-r--r--sw/source/ui/shells/textfld.cxx880
1 files changed, 0 insertions, 880 deletions
diff --git a/sw/source/ui/shells/textfld.cxx b/sw/source/ui/shells/textfld.cxx
deleted file mode 100644
index 3f02f82196..0000000000
--- a/sw/source/ui/shells/textfld.cxx
+++ /dev/null
@@ -1,880 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/************ *************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sw.hxx"
-
-#include <crsskip.hxx>
-#include <hintids.hxx> //_immer_ vor den solar-Items
-
-#include <sfx2/lnkbase.hxx>
-#include <fmtfld.hxx>
-#include <tools/urlobj.hxx>
-#include <vcl/msgbox.hxx>
-#include <svl/itempool.hxx>
-#include <unotools/useroptions.hxx>
-#include <svl/whiter.hxx>
-#include <svl/eitem.hxx>
-#include <svl/macitem.hxx>
-#include <sfx2/viewfrm.hxx>
-#include <sfx2/request.hxx>
-#include <svx/postattr.hxx>
-#include <svx/hlnkitem.hxx>
-
-#include <svx/svxdlg.hxx>
-#include <sfx2/linkmgr.hxx>
-#include <unotools/localedatawrapper.hxx>
-#include <sfx2/dispatch.hxx>
-#include <fmtinfmt.hxx>
-#include <fldwrap.hxx>
-#include <redline.hxx>
-#include <view.hxx>
-#include <wrtsh.hxx>
-#include <basesh.hxx>
-#include <flddat.hxx>
-#include <numrule.hxx>
-#include <textsh.hxx>
-#include <docsh.hxx>
-#include <docufld.hxx>
-#include <usrfld.hxx>
-#include <ddefld.hxx>
-#include <expfld.hxx>
-#include <fldmgr.hxx>
-#include <uitool.hxx>
-
-#include <cmdid.h>
-#include <shells.hrc>
-
-#include <sfx2/app.hxx>
-#include <svx/dialogs.hrc>
-#include "swabstdlg.hxx"
-#include "dialog.hrc"
-#include <fldui.hrc>
-#include <doc.hxx>
-
-#include <app.hrc>
-
-#include <PostItMgr.hxx>
-#include <switerator.hxx>
-
-using namespace nsSwDocInfoSubType;
-
-extern sal_Bool bNoInterrupt; // in mainwn.cxx
-
-String& lcl_AppendRedlineStr( String& rStr, sal_uInt16 nRedlId )
-{
- sal_uInt16 nResId = 0;
- switch( nRedlId )
- {
- case nsRedlineType_t::REDLINE_INSERT: nResId = STR_REDLINE_INSERTED; break;
- case nsRedlineType_t::REDLINE_DELETE: nResId = STR_REDLINE_DELETED; break;
- case nsRedlineType_t::REDLINE_FORMAT: nResId = STR_REDLINE_FORMATED; break;
- case nsRedlineType_t::REDLINE_TABLE: nResId = STR_REDLINE_TABLECHG; break;
- case nsRedlineType_t::REDLINE_FMTCOLL: nResId = STR_REDLINE_FMTCOLLSET; break;
- }
- if( nResId )
- rStr += SW_RESSTR( nResId );
- return rStr;
-}
-
-// STATIC DATA -----------------------------------------------------------
-void SwTextShell::ExecField(SfxRequest &rReq)
-{
- SwWrtShell& rSh = GetShell();
- const SfxPoolItem* pItem = 0;
-
- sal_uInt16 nSlot = rReq.GetSlot();
- const SfxItemSet* pArgs = rReq.GetArgs();
- if(pArgs)
- pArgs->GetItemState(GetPool().GetWhich(nSlot), sal_False, &pItem);
-
- Window *pMDI = &GetView().GetViewFrame()->GetWindow();
- sal_Bool bMore = sal_False;
- sal_Bool bIsText = sal_True;
- sal_uInt16 nInsertType = 0;
- sal_uInt16 nInsertSubType = 0;
- sal_uLong nInsertFormat = 0;
-
- switch(nSlot)
- {
- case FN_EDIT_FIELD:
- {
- SwField* pFld = rSh.GetCurFld();
- if( pFld )
- {
- switch ( pFld->GetTypeId() )
- {
- case TYP_DDEFLD:
- {
- ::sfx2::SvBaseLink& rLink = ((SwDDEFieldType*)pFld->GetTyp())->
- GetBaseLink();
- if(rLink.IsVisible())
- {
- SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
- SfxAbstractLinksDialog* pDlg = pFact->CreateLinksDialog( pMDI, &rSh.GetLinkManager(), sal_False, &rLink );
- if ( pDlg )
- {
- pDlg->Execute();
- delete pDlg;
- }
- }
- break;
- }
- default:
- {
- SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
- OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
-
- SfxAbstractDialog* pDlg = pFact->CreateSwFldEditDlg( GetView(),RC_DLG_SWFLDEDITDLG );
- OSL_ENSURE(pDlg, "Dialogdiet fail!");
- pDlg->Execute();
- delete pDlg;
- }
- }
- }
- break;
- }
- case FN_EXECUTE_MACROFIELD:
- {
- SwField* pFld = rSh.GetCurFld();
- if(pFld && pFld->GetTyp()->Which() == RES_MACROFLD)
- {
-
- const String& rMacro = ((SwMacroField*)pFld)->GetMacro();
- sal_uInt16 nPos = rMacro.Search('.', 0);
- if(nPos != STRING_NOTFOUND)
- {
- SvxMacro aMacro( rMacro.Copy(nPos + 1), rMacro.Copy(0,nPos), STARBASIC );
- rSh.ExecMacro(aMacro);
- }
- }
- }
- break;
-
- case FN_GOTO_NEXT_INPUTFLD:
- case FN_GOTO_PREV_INPUTFLD:
- {
- sal_Bool bRet = sal_False;
- SwFieldType* pFld = rSh.GetFldType( 0, RES_INPUTFLD );
- if( pFld && rSh.MoveFldType( pFld,
- FN_GOTO_NEXT_INPUTFLD == nSlot ))
- {
- rSh.ClearMark();
- rSh.StartInputFldDlg( rSh.GetCurFld(), sal_False );
- bRet = sal_True;
- }
-
- rReq.SetReturnValue( SfxBoolItem( nSlot, bRet ));
- }
- break;
-
- default:
- bMore = sal_True;
- }
- if(bMore)
- {
- // hier kommen die Slots mit FldMgr
- SwFldMgr aFldMgr(GetShellPtr());
- switch(nSlot)
- {
- case FN_INSERT_DBFIELD:
- {
- sal_Bool bRes = sal_False;
- if( pItem )
- {
- sal_uLong nFormat = 0;
- sal_uInt16 nType = 0;
- String aPar1 = ((SfxStringItem *)pItem)->GetValue();
- String aPar2;
- sal_Int32 nCommand = 0;
-
- if( SFX_ITEM_SET == pArgs->GetItemState( FN_PARAM_FIELD_TYPE,
- sal_False, &pItem ))
- nType = ((SfxUInt16Item *)pItem)->GetValue();
- aPar1 += DB_DELIM;
- if( SFX_ITEM_SET == pArgs->GetItemState(
- FN_PARAM_1, sal_False, &pItem ))
- {
- aPar1 += ((SfxStringItem *)pItem)->GetValue();
- }
- if( SFX_ITEM_SET == pArgs->GetItemState(
- FN_PARAM_3, sal_False, &pItem ))
- nCommand = ((SfxInt32Item*)pItem)->GetValue();
- aPar1 += DB_DELIM;
- aPar1 += String::CreateFromInt32(nCommand);
- aPar1 += DB_DELIM;
- if( SFX_ITEM_SET == pArgs->GetItemState(
- FN_PARAM_2, sal_False, &pItem ))
- {
- aPar1 += ((SfxStringItem *)pItem)->GetValue();
- }
- if( SFX_ITEM_SET == pArgs->GetItemState(
- FN_PARAM_FIELD_CONTENT, sal_False, &pItem ))
- aPar2 = ((SfxStringItem *)pItem)->GetValue();
- if( SFX_ITEM_SET == pArgs->GetItemState(
- FN_PARAM_FIELD_FORMAT, sal_False, &pItem ))
- nFormat = ((SfxUInt32Item *)pItem)->GetValue();
- OSL_FAIL("Command is not yet used");
- sal_Unicode cSeparator = ' ';
- SwInsertFld_Data aData(nType, 0, aPar1, aPar2, nFormat, GetShellPtr(), cSeparator );
- bRes = aFldMgr.InsertFld(aData);
- }
- rReq.SetReturnValue(SfxBoolItem( nSlot, bRes ));
- }
- break;
- case FN_INSERT_FIELD_CTRL:
- case FN_INSERT_FIELD:
- {
- sal_Bool bRes = sal_False;
- if( pItem && nSlot != FN_INSERT_FIELD_CTRL)
- {
- sal_uLong nFormat = 0;
- sal_uInt16 nType = 0;
- sal_uInt16 nSubType = 0;
- String aPar1 = ((SfxStringItem *)pItem)->GetValue();
- String aPar2;
- sal_Unicode cSeparator = ' ';
-
- if( SFX_ITEM_SET == pArgs->GetItemState( FN_PARAM_FIELD_TYPE,
- sal_False, &pItem ))
- nType = ((SfxUInt16Item *)pItem)->GetValue();
- if( SFX_ITEM_SET == pArgs->GetItemState( FN_PARAM_FIELD_SUBTYPE,
- sal_False, &pItem ))
- nSubType = ((SfxUInt16Item *)pItem)->GetValue();
- if( SFX_ITEM_SET == pArgs->GetItemState(
- FN_PARAM_FIELD_CONTENT, sal_False, &pItem ))
- aPar2 = ((SfxStringItem *)pItem)->GetValue();
- if( SFX_ITEM_SET == pArgs->GetItemState(
- FN_PARAM_FIELD_FORMAT, sal_False, &pItem ))
- nFormat = ((SfxUInt32Item *)pItem)->GetValue();
- if( SFX_ITEM_SET == pArgs->GetItemState(
- FN_PARAM_3, sal_False, &pItem ))
- {
- String sTmp = ((SfxStringItem *)pItem)->GetValue();
- if(sTmp.Len())
- cSeparator = sTmp.GetChar(0);
- }
- SwInsertFld_Data aData(nType, nSubType, aPar1, aPar2, nFormat, GetShellPtr(), cSeparator );
- bRes = aFldMgr.InsertFld( aData );
- }
- else
- //#i5788# prevent closing of the field dialog while a modal dialog ( Input field dialog ) is active
- if(!GetView().GetViewFrame()->IsInModalMode())
- {
- SfxViewFrame* pVFrame = GetView().GetViewFrame();
- pVFrame->ToggleChildWindow(FN_INSERT_FIELD);
- bRes = pVFrame->GetChildWindow( nSlot ) != 0;
- Invalidate(rReq.GetSlot());
- Invalidate(FN_INSERT_FIELD_CTRL);
- rReq.Ignore();
- }
- rReq.SetReturnValue(SfxBoolItem( nSlot, bRes ));
- }
- break;
-
- case FN_INSERT_REF_FIELD:
- {
- SfxViewFrame* pVFrame = GetView().GetViewFrame();
- if (!pVFrame->HasChildWindow(FN_INSERT_FIELD))
- pVFrame->ToggleChildWindow(FN_INSERT_FIELD); // Dialog anzeigen
-
- // Flddlg auf neue TabPage umschalten
- sal_uInt16 nId = SwFldDlgWrapper::GetChildWindowId();
- SwFldDlgWrapper *pWrp = (SwFldDlgWrapper*)pVFrame->GetChildWindow(nId);
- if (pWrp)
- pWrp->ShowPage();
- rReq.Ignore();
- }
- break;
- case FN_DELETE_COMMENT:
- if ( GetView().GetPostItMgr() &&
- GetView().GetPostItMgr()->HasActiveSidebarWin() )
- {
- GetView().GetPostItMgr()->DeleteActiveSidebarWin();
- }
- break;
- case FN_DELETE_ALL_NOTES:
- if ( GetView().GetPostItMgr() )
- GetView().GetPostItMgr()->Delete();
- break;
- case FN_DELETE_NOTE_AUTHOR:
- {
- SFX_REQUEST_ARG( rReq, pNoteItem, SfxStringItem, nSlot, sal_False);
- if ( pNoteItem && GetView().GetPostItMgr() )
- GetView().GetPostItMgr()->Delete( pNoteItem->GetValue() );
- }
- break;
- case FN_HIDE_NOTE:
- if ( GetView().GetPostItMgr() &&
- GetView().GetPostItMgr()->HasActiveSidebarWin() )
- {
- GetView().GetPostItMgr()->HideActiveSidebarWin();
- }
- break;
- case FN_HIDE_ALL_NOTES:
- if ( GetView().GetPostItMgr() )
- GetView().GetPostItMgr()->Hide();
- break;
- case FN_HIDE_NOTE_AUTHOR:
- {
- SFX_REQUEST_ARG( rReq, pNoteItem, SfxStringItem, nSlot, sal_False);
- if ( pNoteItem && GetView().GetPostItMgr() )
- GetView().GetPostItMgr()->Hide( pNoteItem->GetValue() );
- }
- break;
- case FN_POSTIT:
- {
- SwPostItField* pPostIt = (SwPostItField*)aFldMgr.GetCurFld();
- sal_Bool bNew = !(pPostIt && pPostIt->GetTyp()->Which() == RES_POSTITFLD);
- if (bNew || GetView().GetPostItMgr()->IsAnswer())
- {
- SvtUserOptions aUserOpt;
- String sAuthor;
- if( !(sAuthor = aUserOpt.GetFullName()).Len())
- if( !(sAuthor = aUserOpt.GetID()).Len() )
- sAuthor = String( SW_RES( STR_REDLINE_UNKNOWN_AUTHOR ));
- if( rSh.HasSelection() )
- {
- rSh.NormalizePam(true);
- rSh.KillPams();
- rSh.ClearMark();
- }
- SwInsertFld_Data aData(TYP_POSTITFLD, 0, sAuthor, aEmptyStr, 0);
- aFldMgr.InsertFld(aData);
- rSh.Push();
- rSh.SwCrsrShell::Left(1, CRSR_SKIP_CHARS, sal_False);
- pPostIt = (SwPostItField*)aFldMgr.GetCurFld();
- rSh.Pop(sal_False); // Cursorpos restaurieren
- }
-
- if (pPostIt)
- {
- SwFieldType* pType = rSh.GetDoc()->GetFldType(RES_POSTITFLD, aEmptyStr,false);
- SwIterator<SwFmtFld,SwFieldType> aIter( *pType );
- SwFmtFld* pSwFmtFld = aIter.First();
- while( pSwFmtFld )
- {
- if ( pSwFmtFld->GetFld() == pPostIt )
- {
- pSwFmtFld->Broadcast( SwFmtFldHint( 0, SWFMTFLD_FOCUS, &GetView() ) );
- break;
- }
- pSwFmtFld = aIter.Next();
- }
- }
- }
- break;
- case FN_REDLINE_COMMENT:
- {
- /* this code can be used once we want redline comments in the margin, all other stuff can
- then be deleted
- String sComment;
- const SwRedline *pRedline = rSh.GetCurrRedline();
-
- if (pRedline)
- {
- sComment = pRedline->GetComment();
- if ( !sComment.Len() )
- GetView().GetDocShell()->Broadcast(SwRedlineHint(pRedline,SWREDLINE_INSERTED));
- const_cast<SwRedline*>(pRedline)->Broadcast(SwRedlineHint(pRedline,SWREDLINE_FOCUS,&GetView()));
- }
- */
-
- String sComment;
- const SwRedline *pRedline = rSh.GetCurrRedline();
-
- if (pRedline)
- {
- sComment = pRedline->GetComment();
-
-
- sal_Bool bTravel = sal_False;
-
- SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
- OSL_ENSURE(pFact, "Dialogdiet fail!");
- ::DialogGetRanges fnGetRange = pFact->GetDialogGetRangesFunc( RID_SVXDLG_POSTIT );
- OSL_ENSURE(fnGetRange, "Dialogdiet fail! GetRanges()");
- SfxItemSet aSet(GetPool(), fnGetRange());
- aSet.Put(SvxPostItTextItem(sComment.ConvertLineEnd(), SID_ATTR_POSTIT_TEXT));
- aSet.Put(SvxPostItAuthorItem(pRedline->GetAuthorString(), SID_ATTR_POSTIT_AUTHOR));
-
- aSet.Put( SvxPostItDateItem( GetAppLangDateTimeString(
- pRedline->GetRedlineData().GetTimeStamp() ),
- SID_ATTR_POSTIT_DATE ));
-
- // Traveling nur bei mehr als einem Feld
- rSh.StartAction();
-
- rSh.Push();
- const SwRedline *pActRed = rSh.SelPrevRedline();
-
- if (pActRed == pRedline)
- { // Neuer Cursor steht am Anfang des Current Redlines
- rSh.Pop(); // Alten Cursor wegwerfen
- rSh.Push();
- pActRed = rSh.SelPrevRedline();
- }
-
- sal_Bool bPrev = pActRed != 0;
- rSh.Pop(sal_False);
- rSh.EndAction();
-
- rSh.ClearMark();
- rSh.SelNextRedline(); // Aktueller Redline wird selektiert
-
- rSh.StartAction();
- rSh.Push();
- pActRed = rSh.SelNextRedline();
- sal_Bool bNext = pActRed != 0;
- rSh.Pop(sal_False); // Cursorpos restaurieren
-
- if( rSh.IsCrsrPtAtEnd() )
- rSh.SwapPam();
-
- rSh.EndAction();
-
- bTravel |= bNext|bPrev;
-
- SvxAbstractDialogFactory* pFact2 = SvxAbstractDialogFactory::Create();
- OSL_ENSURE(pFact2, "Dialogdiet fail!");
- AbstractSvxPostItDialog* pDlg = pFact2->CreateSvxPostItDialog( pMDI, aSet, bTravel, sal_True );
- OSL_ENSURE(pDlg, "Dialogdiet fail!");
- pDlg->HideAuthor();
-
- String sTitle(SW_RES(STR_REDLINE_COMMENT));
- ::lcl_AppendRedlineStr( sTitle, pRedline->GetType() );
-
- pDlg->SetText(sTitle);
-
- if (bTravel)
- {
- pDlg->EnableTravel(bNext, bPrev);
- pDlg->SetPrevHdl(LINK(this, SwTextShell, RedlinePrevHdl));
- pDlg->SetNextHdl(LINK(this, SwTextShell, RedlineNextHdl));
- }
-
- rSh.SetCareWin(pDlg->GetWindow());
- bNoInterrupt = sal_True;
-
- if ( pDlg->Execute() == RET_OK )
- {
- const SfxItemSet* pOutSet = pDlg->GetOutputItemSet();
- String sMsg(((const SvxPostItTextItem&)pOutSet->Get(SID_ATTR_POSTIT_TEXT)).GetValue());
-
- // Kommentar einfuegen bzw aendern
- rSh.SetRedlineComment(sMsg);
- }
-
- delete pDlg;
- rSh.SetCareWin(NULL);
- bNoInterrupt = sal_False;
- rSh.ClearMark();
- GetView().AttrChangedNotify(GetShellPtr());
- }
- }
- break;
-
- case FN_JAVAEDIT:
- {
- String aType, aText;
- sal_Bool bIsUrl=sal_False;
- sal_Bool bNew=sal_False, bUpdate=sal_False;
- SwFldMgr* pMgr = new SwFldMgr;
- if ( pItem )
- {
- aText = ((SfxStringItem*)pItem)->GetValue();
- SFX_REQUEST_ARG( rReq, pType, SfxStringItem, FN_PARAM_2 , sal_False );
- SFX_REQUEST_ARG( rReq, pIsUrl, SfxBoolItem, FN_PARAM_1 , sal_False );
- if ( pType )
- aType = pType->GetValue();
- if ( pIsUrl )
- bIsUrl = pIsUrl->GetValue();
-
- SwScriptField* pFld = (SwScriptField*)pMgr->GetCurFld();
- bNew = !pFld || !(pFld->GetTyp()->Which() == RES_SCRIPTFLD);
- bUpdate = pFld && ( bIsUrl != pFld->GetFormat() || pFld->GetPar2() != aType || pFld->GetPar1() != aText );
- }
- else
- {
- SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
- OSL_ENSURE(pFact, "Dialogdiet fail!");
- AbstractJavaEditDialog* pDlg = pFact->CreateJavaEditDialog( DLG_JAVAEDIT,
- pMDI, &rSh);
- OSL_ENSURE(pDlg, "Dialogdiet fail!");
- if ( pDlg->Execute() )
- {
- aType = pDlg->GetType();
- aText = pDlg->GetText();
- bIsUrl = pDlg->IsUrl();
- bNew = pDlg->IsNew();
- bUpdate = pDlg->IsUpdate();
- rReq.AppendItem( SfxStringItem( FN_JAVAEDIT, aText ) );
- rReq.AppendItem( SfxStringItem( FN_PARAM_2, aType ) );
- rReq.AppendItem( SfxBoolItem( FN_PARAM_1, bIsUrl ) );
- }
-
- delete pDlg;
- }
-
- if( bNew )
- {
- SwInsertFld_Data aData(TYP_SCRIPTFLD, 0, aType, aText, bIsUrl);
- pMgr->InsertFld(aData);
- rReq.Done();
- }
- else if( bUpdate )
- {
- pMgr->UpdateCurFld( bIsUrl, aType, aText );
- rSh.SetUndoNoResetModified();
- rReq.Done();
- }
- else
- rReq.Ignore();
- }
- break;
-
- case FN_INSERT_FLD_DATE :
- nInsertType = TYP_DATEFLD;
- bIsText = sal_False;
- goto FIELD_INSERT;
- case FN_INSERT_FLD_TIME :
- nInsertType = TYP_TIMEFLD;
- bIsText = sal_False;
- goto FIELD_INSERT;
- case FN_INSERT_FLD_PGNUMBER:
- nInsertType = TYP_PAGENUMBERFLD;
- nInsertFormat = SVX_NUM_PAGEDESC; // wie Seitenvorlage
- bIsText = sal_False;
- goto FIELD_INSERT;
- case FN_INSERT_FLD_PGCOUNT :
- nInsertType = TYP_DOCSTATFLD;
- nInsertSubType = 0;
- bIsText = sal_False;
- nInsertFormat = SVX_NUM_PAGEDESC;
- goto FIELD_INSERT;
- case FN_INSERT_FLD_TOPIC :
- nInsertType = TYP_DOCINFOFLD;
- nInsertSubType = DI_THEMA;
- goto FIELD_INSERT;
- case FN_INSERT_FLD_TITLE :
- nInsertType = TYP_DOCINFOFLD;
- nInsertSubType = DI_TITEL;
- goto FIELD_INSERT;
- case FN_INSERT_FLD_AUTHOR :
- nInsertType = TYP_DOCINFOFLD;
- nInsertSubType = DI_CREATE|DI_SUB_AUTHOR;
-
-FIELD_INSERT:
- {
- //format conversion should only be done for number formatter formats
- if(!nInsertFormat)
- nInsertFormat = aFldMgr.GetDefaultFormat(nInsertType, bIsText, rSh.GetNumberFormatter());
- SwInsertFld_Data aData(nInsertType, nInsertSubType,
- aEmptyStr, aEmptyStr, nInsertFormat);
- aFldMgr.InsertFld(aData);
- rReq.Done();
- }
- break;
- default:
- OSL_FAIL("wrong dispatcher");
- return;
- }
- }
-}
-
-void SwTextShell::StateField( SfxItemSet &rSet )
-{
- SwWrtShell& rSh = GetShell();
- SfxWhichIter aIter( rSet );
- const SwField* pField = 0;
- int bGetField = sal_False;
- sal_uInt16 nWhich = aIter.FirstWhich();
-
- while (nWhich)
- {
- switch (nWhich)
- {
- case FN_DELETE_COMMENT:
- case FN_DELETE_NOTE_AUTHOR:
- case FN_DELETE_ALL_NOTES:
- case FN_HIDE_NOTE:
- case FN_HIDE_NOTE_AUTHOR:
- case FN_HIDE_ALL_NOTES:
- {
- SwPostItMgr* pPostItMgr = GetView().GetPostItMgr();
- if ( !pPostItMgr )
- rSet.InvalidateItem( nWhich );
- else if ( !pPostItMgr->HasActiveSidebarWin() )
- {
- rSet.InvalidateItem( FN_DELETE_COMMENT );
- rSet.InvalidateItem( FN_HIDE_NOTE );
- }
- }
- break;
- case FN_EDIT_FIELD:
- {
-
- if( !bGetField )
- {
- pField = rSh.GetCurFld();
- bGetField = sal_True;
- }
-
- sal_uInt16 nTempWhich = pField ? pField->GetTyp()->Which() : USHRT_MAX;
- if( USHRT_MAX == nTempWhich ||
- RES_POSTITFLD == nTempWhich ||
- RES_SCRIPTFLD == nTempWhich ||
- RES_AUTHORITY == nTempWhich )
- rSet.DisableItem( nWhich );
- else if( RES_DDEFLD == nTempWhich &&
- !((SwDDEFieldType*)pField->GetTyp())->GetBaseLink().IsVisible())
- {
- // nested links cannot be edited
- rSet.DisableItem( nWhich );
- }
- }
- break;
- case FN_EXECUTE_MACROFIELD:
- {
- if(!bGetField)
- {
- pField = rSh.GetCurFld();
- bGetField = sal_True;
- }
- if(!pField || pField->GetTyp()->Which() != RES_MACROFLD)
- rSet.DisableItem(nWhich);
- }
- break;
-
- case FN_INSERT_FIELD:
- {
- SfxViewFrame* pVFrame = GetView().GetViewFrame();
- //#i5788# prevent closing of the field dialog while a modal dialog ( Input field dialog ) is active
- if(!pVFrame->IsInModalMode() &&
- pVFrame->KnowsChildWindow(FN_INSERT_FIELD) && !pVFrame->HasChildWindow(FN_INSERT_FIELD_DATA_ONLY) )
- rSet.Put(SfxBoolItem( FN_INSERT_FIELD, pVFrame->HasChildWindow(nWhich)));
- else
- rSet.DisableItem(FN_INSERT_FIELD);
- }
- break;
- case FN_INSERT_REF_FIELD:
- {
- SfxViewFrame* pVFrame = GetView().GetViewFrame();
- if (!pVFrame->KnowsChildWindow(FN_INSERT_FIELD))
- rSet.DisableItem(FN_INSERT_REF_FIELD);
- }
- break;
- case FN_INSERT_FIELD_CTRL:
- rSet.Put(SfxBoolItem( nWhich, GetView().GetViewFrame()->HasChildWindow(FN_INSERT_FIELD)));
- break;
- case FN_REDLINE_COMMENT:
- if (!rSh.GetCurrRedline())
- rSet.DisableItem(nWhich);
- break;
- case FN_POSTIT :
- case FN_JAVAEDIT :
- sal_Bool bCurField = sal_False;
- pField = rSh.GetCurFld();
- if(nWhich == FN_POSTIT)
- bCurField = pField && pField->GetTyp()->Which() == RES_POSTITFLD;
- else
- bCurField = pField && pField->GetTyp()->Which() == RES_SCRIPTFLD;
-
- if(!bCurField && rSh.IsReadOnlyAvailable() && rSh.HasReadonlySel() )
- rSet.DisableItem(nWhich);
- break;
- }
- nWhich = aIter.NextWhich();
- }
-}
-
-void SwTextShell::InsertHyperlink(const SvxHyperlinkItem& rHlnkItem)
-{
- const String& rName = rHlnkItem.GetName();
- const String& rURL = rHlnkItem.GetURL();
- const String& rTarget = rHlnkItem.GetTargetFrame();
- sal_uInt16 nType = (sal_uInt16)rHlnkItem.GetInsertMode();
- nType &= ~HLINK_HTMLMODE;
- const SvxMacroTableDtor* pMacroTbl = rHlnkItem.GetMacroTbl();
-
- SwWrtShell& rSh = GetShell();
-
- if( rSh.GetSelectionType() & nsSelectionType::SEL_TXT )
- {
- rSh.StartAction();
- SfxItemSet aSet(GetPool(), RES_TXTATR_INETFMT, RES_TXTATR_INETFMT);
- rSh.GetCurAttr( aSet );
-
- const SfxPoolItem* pItem;
- if(SFX_ITEM_SET == aSet.GetItemState(RES_TXTATR_INETFMT, sal_False, &pItem))
- {
- // Links selektieren
- rSh.SwCrsrShell::SelectTxtAttr(RES_TXTATR_INETFMT, sal_False);
- }
- switch (nType)
- {
- case HLINK_DEFAULT:
- case HLINK_FIELD:
- {
- SwFmtINetFmt aINetFmt( rURL, rTarget );
- aINetFmt.SetName(rHlnkItem.GetIntName());
- if(pMacroTbl)
- {
- SvxMacro *pMacro = pMacroTbl->Get( SFX_EVENT_MOUSEOVER_OBJECT );
- if( pMacro )
- aINetFmt.SetMacro(SFX_EVENT_MOUSEOVER_OBJECT, *pMacro);
- pMacro = pMacroTbl->Get( SFX_EVENT_MOUSECLICK_OBJECT );
- if( pMacro )
- aINetFmt.SetMacro(SFX_EVENT_MOUSECLICK_OBJECT, *pMacro);
- pMacro = pMacroTbl->Get( SFX_EVENT_MOUSEOUT_OBJECT );
- if( pMacro )
- aINetFmt.SetMacro(SFX_EVENT_MOUSEOUT_OBJECT, *pMacro);
- }
- rSh.SttSelect();
- rSh.InsertURL( aINetFmt, rName, sal_True );
- rSh.EndSelect();
- }
- break;
-
- case HLINK_BUTTON:
- sal_Bool bSel = rSh.HasSelection();
- if(bSel)
- rSh.DelRight();
- InsertURLButton( rURL, rTarget, rName );
- rSh.EnterStdMode();
- break;
- }
- rSh.EndAction();
- }
-}
-
-IMPL_LINK( SwTextShell, RedlineNextHdl, AbstractSvxPostItDialog *, pBtn )
-{
- SwWrtShell* pSh = GetShellPtr();
- AbstractSvxPostItDialog *pDlg = (AbstractSvxPostItDialog*)pBtn;
-
- // Kommentar einfuegen bzw aendern
- pSh->SetRedlineComment(pDlg->GetNote());
-
- const SwRedline *pRedline = pSh->GetCurrRedline();
-
- String sComment;
-
- if (pRedline)
- {
- // Traveling nur bei mehr als einem Feld
- if( !pSh->IsCrsrPtAtEnd() )
- pSh->SwapPam(); // Cursor hinter den Redline stellen
-
- pSh->Push();
- const SwRedline *pActRed = pSh->SelNextRedline();
- pSh->Pop(pActRed != 0);
-
- sal_Bool bEnable = sal_False;
-
- if (pActRed)
- {
- pSh->StartAction();
- pSh->Push();
- bEnable = pSh->SelNextRedline() != 0;
- pSh->Pop(sal_False);
- pSh->EndAction();
- }
-
- pDlg->EnableTravel(bEnable, sal_True);
-
- if( pSh->IsCrsrPtAtEnd() )
- pSh->SwapPam();
-
- pRedline = pSh->GetCurrRedline();
- sComment = pRedline->GetComment();
-
- pDlg->SetNote( sComment.ConvertLineEnd() );
- pDlg->ShowLastAuthor( pRedline->GetAuthorString(),
- GetAppLangDateTimeString(
- pRedline->GetRedlineData().GetTimeStamp() ));
-
- String sTitle(SW_RES(STR_REDLINE_COMMENT));
- ::lcl_AppendRedlineStr( sTitle, pRedline->GetType() );
-
- pDlg->SetText(sTitle);
- }
-
- return 0;
-}
-
-IMPL_LINK( SwTextShell, RedlinePrevHdl, AbstractSvxPostItDialog *, pBtn )
-{
- SwWrtShell* pSh = GetShellPtr();
- AbstractSvxPostItDialog *pDlg = (AbstractSvxPostItDialog*)pBtn;
-
- // Kommentar einfuegen bzw aendern
- pSh->SetRedlineComment(pDlg->GetNote());
-
- const SwRedline *pRedline = pSh->GetCurrRedline();
-
- String sComment;
-
- if (pRedline)
- {
- // Traveling nur bei mehr als einem Feld
- pSh->Push();
- const SwRedline *pActRed = pSh->SelPrevRedline();
- pSh->Pop(pActRed != 0);
-
- sal_Bool bEnable = sal_False;
-
- if (pActRed)
- {
- pSh->StartAction();
- pSh->Push();
- bEnable = pSh->SelPrevRedline() != 0;
- pSh->Pop(sal_False);
- pSh->EndAction();
- }
-
- pDlg->EnableTravel(sal_True, bEnable);
-
- pRedline = pSh->GetCurrRedline();
- sComment = pRedline->GetComment();
-
- pDlg->SetNote(sComment.ConvertLineEnd());
- pDlg->ShowLastAuthor(pRedline->GetAuthorString(),
- GetAppLangDateTimeString(
- pRedline->GetRedlineData().GetTimeStamp() ));
-
- String sTitle(SW_RES(STR_REDLINE_COMMENT));
- ::lcl_AppendRedlineStr( sTitle, pRedline->GetType() );
-
- pDlg->SetText(sTitle);
- }
-
- return 0;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */