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_sw.hxx" 30*cdf0e10cSrcweir #ifdef SW_DLLIMPLEMENTATION 31*cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION 32*cdf0e10cSrcweir #endif 33*cdf0e10cSrcweir #include <vcl/msgbox.hxx> 34*cdf0e10cSrcweir #include <sfx2/basedlgs.hxx> 35*cdf0e10cSrcweir #include <sfx2/viewfrm.hxx> 36*cdf0e10cSrcweir #include <sfx2/request.hxx> 37*cdf0e10cSrcweir #include <sfx2/app.hxx> 38*cdf0e10cSrcweir #include <svx/optgenrl.hxx> 39*cdf0e10cSrcweir #include <docufld.hxx> 40*cdf0e10cSrcweir #ifndef _VIEW_HXX 41*cdf0e10cSrcweir #include <view.hxx> 42*cdf0e10cSrcweir #endif 43*cdf0e10cSrcweir #include <dbfld.hxx> 44*cdf0e10cSrcweir #include <wrtsh.hxx> 45*cdf0e10cSrcweir #ifndef _FLDDB_HXX 46*cdf0e10cSrcweir #include <flddb.hxx> 47*cdf0e10cSrcweir #endif 48*cdf0e10cSrcweir #ifndef _FLDDINF_HXX 49*cdf0e10cSrcweir #include <flddinf.hxx> 50*cdf0e10cSrcweir #endif 51*cdf0e10cSrcweir #ifndef _FLDVAR_HXX 52*cdf0e10cSrcweir #include <fldvar.hxx> 53*cdf0e10cSrcweir #endif 54*cdf0e10cSrcweir #ifndef _FLDDOK_HXX 55*cdf0e10cSrcweir #include <flddok.hxx> 56*cdf0e10cSrcweir #endif 57*cdf0e10cSrcweir #ifndef _FLDFUNC_HXX 58*cdf0e10cSrcweir #include <fldfunc.hxx> 59*cdf0e10cSrcweir #endif 60*cdf0e10cSrcweir #ifndef _FLDREF_HXX 61*cdf0e10cSrcweir #include <fldref.hxx> 62*cdf0e10cSrcweir #endif 63*cdf0e10cSrcweir #include <fldedt.hxx> 64*cdf0e10cSrcweir #include <crsskip.hxx> 65*cdf0e10cSrcweir 66*cdf0e10cSrcweir 67*cdf0e10cSrcweir #ifndef _CMDID_H 68*cdf0e10cSrcweir #include <cmdid.h> 69*cdf0e10cSrcweir #endif 70*cdf0e10cSrcweir #ifndef _HELPID_H 71*cdf0e10cSrcweir #include <helpid.h> 72*cdf0e10cSrcweir #endif 73*cdf0e10cSrcweir #ifndef _GLOBALS_HRC 74*cdf0e10cSrcweir #include <globals.hrc> 75*cdf0e10cSrcweir #endif 76*cdf0e10cSrcweir #ifndef _FLDUI_HRC 77*cdf0e10cSrcweir #include <fldui.hrc> 78*cdf0e10cSrcweir #endif 79*cdf0e10cSrcweir #include "swabstdlg.hxx" 80*cdf0e10cSrcweir #include "dialog.hrc" 81*cdf0e10cSrcweir 82*cdf0e10cSrcweir #include <com/sun/star/document/XDocumentProperties.hpp> 83*cdf0e10cSrcweir #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> 84*cdf0e10cSrcweir 85*cdf0e10cSrcweir 86*cdf0e10cSrcweir namespace swui 87*cdf0e10cSrcweir { 88*cdf0e10cSrcweir SwAbstractDialogFactory * GetFactory(); 89*cdf0e10cSrcweir } 90*cdf0e10cSrcweir 91*cdf0e10cSrcweir /*-------------------------------------------------------------------- 92*cdf0e10cSrcweir Beschreibung: 93*cdf0e10cSrcweir --------------------------------------------------------------------*/ 94*cdf0e10cSrcweir 95*cdf0e10cSrcweir SwFldEditDlg::SwFldEditDlg(SwView& rVw) : 96*cdf0e10cSrcweir SfxSingleTabDialog(&rVw.GetViewFrame()->GetWindow(), 0, 0), 97*cdf0e10cSrcweir pSh (rVw.GetWrtShellPtr()), 98*cdf0e10cSrcweir aPrevBT (this, SW_RES(BTN_FLDEDT_PREV)), 99*cdf0e10cSrcweir aNextBT (this, SW_RES(BTN_FLDEDT_NEXT)), 100*cdf0e10cSrcweir aAddressBT (this, SW_RES(PB_FLDEDT_ADDRESS)) 101*cdf0e10cSrcweir { 102*cdf0e10cSrcweir SwFldMgr aMgr(pSh); 103*cdf0e10cSrcweir 104*cdf0e10cSrcweir SwField *pCurFld = aMgr.GetCurFld(); 105*cdf0e10cSrcweir if(!pCurFld) 106*cdf0e10cSrcweir return; 107*cdf0e10cSrcweir 108*cdf0e10cSrcweir pSh->SetCareWin(this); 109*cdf0e10cSrcweir 110*cdf0e10cSrcweir /* #108536# Only create selection if there is none 111*cdf0e10cSrcweir already. Normalize PaM instead of swapping. */ 112*cdf0e10cSrcweir if ( ! pSh->HasSelection() ) 113*cdf0e10cSrcweir pSh->Right(CRSR_SKIP_CHARS, sal_True, 1, sal_False ); 114*cdf0e10cSrcweir 115*cdf0e10cSrcweir pSh->NormalizePam(); 116*cdf0e10cSrcweir 117*cdf0e10cSrcweir sal_uInt16 nGroup = aMgr.GetGroup(sal_False, pCurFld->GetTypeId(), pCurFld->GetSubType()); 118*cdf0e10cSrcweir 119*cdf0e10cSrcweir CreatePage(nGroup); 120*cdf0e10cSrcweir 121*cdf0e10cSrcweir GetOKButton()->SetClickHdl(LINK(this, SwFldEditDlg, OKHdl)); 122*cdf0e10cSrcweir 123*cdf0e10cSrcweir // Buttons selbst positionieren, da sie sonst bei unterschiedlichen 124*cdf0e10cSrcweir // Fontgroessen im Wald stehen, und da PB im SingleTabDlg feste Pixelgroessen 125*cdf0e10cSrcweir // fuer seine Buttons und die Dialogbreite verwendet. 126*cdf0e10cSrcweir aPrevBT.SetPosPixel(Point(GetOKButton()->GetPosPixel().X(), aPrevBT.GetPosPixel().Y())); 127*cdf0e10cSrcweir sal_uInt16 nWidth = static_cast< sal_uInt16 >(GetOKButton()->GetOutputSize().Width() / 2 - 3); 128*cdf0e10cSrcweir Size aNewSize(LogicToPixel(Size(nWidth, GetOKButton()->GetOutputSize().Height()))); 129*cdf0e10cSrcweir aPrevBT.SetSizePixel(aNewSize); 130*cdf0e10cSrcweir 131*cdf0e10cSrcweir aNextBT.SetSizePixel(aPrevBT.GetSizePixel()); 132*cdf0e10cSrcweir 133*cdf0e10cSrcweir long nXPos = GetOKButton()->GetPosPixel().X() + GetOKButton()->GetSizePixel().Width() 134*cdf0e10cSrcweir - aNextBT.GetSizePixel().Width() - 1; 135*cdf0e10cSrcweir aNextBT.SetPosPixel(Point(nXPos, aNextBT.GetPosPixel().Y())); 136*cdf0e10cSrcweir 137*cdf0e10cSrcweir aAddressBT.SetPosPixel(Point(GetOKButton()->GetPosPixel().X(), aAddressBT.GetPosPixel().Y())); 138*cdf0e10cSrcweir aAddressBT.SetSizePixel(GetOKButton()->GetSizePixel()); 139*cdf0e10cSrcweir 140*cdf0e10cSrcweir aPrevBT.SetClickHdl(LINK(this, SwFldEditDlg, NextPrevHdl)); 141*cdf0e10cSrcweir aNextBT.SetClickHdl(LINK(this, SwFldEditDlg, NextPrevHdl)); 142*cdf0e10cSrcweir 143*cdf0e10cSrcweir aAddressBT.SetClickHdl(LINK(this, SwFldEditDlg, AddressHdl)); 144*cdf0e10cSrcweir aAddressBT.SetHelpId(HID_FLDEDT_ADDRESS); 145*cdf0e10cSrcweir 146*cdf0e10cSrcweir Init(); 147*cdf0e10cSrcweir } 148*cdf0e10cSrcweir 149*cdf0e10cSrcweir /*-------------------------------------------------------------------- 150*cdf0e10cSrcweir Beschreibung: Controlls initialisieren 151*cdf0e10cSrcweir --------------------------------------------------------------------*/ 152*cdf0e10cSrcweir 153*cdf0e10cSrcweir void SwFldEditDlg::Init() 154*cdf0e10cSrcweir { 155*cdf0e10cSrcweir SwFldPage* pTabPage = (SwFldPage*)GetTabPage(); 156*cdf0e10cSrcweir 157*cdf0e10cSrcweir if( pTabPage ) 158*cdf0e10cSrcweir { 159*cdf0e10cSrcweir SwFldMgr& rMgr = pTabPage->GetFldMgr(); 160*cdf0e10cSrcweir 161*cdf0e10cSrcweir SwField *pCurFld = rMgr.GetCurFld(); 162*cdf0e10cSrcweir 163*cdf0e10cSrcweir if(!pCurFld) 164*cdf0e10cSrcweir return; 165*cdf0e10cSrcweir 166*cdf0e10cSrcweir // Traveling nur bei mehr als einem Feld 167*cdf0e10cSrcweir pSh->StartAction(); 168*cdf0e10cSrcweir pSh->CreateCrsr(); 169*cdf0e10cSrcweir 170*cdf0e10cSrcweir sal_Bool bMove = rMgr.GoNext(); 171*cdf0e10cSrcweir if( bMove ) 172*cdf0e10cSrcweir rMgr.GoPrev(); 173*cdf0e10cSrcweir aNextBT.Enable(bMove); 174*cdf0e10cSrcweir 175*cdf0e10cSrcweir if( 0 != ( bMove = rMgr.GoPrev() ) ) 176*cdf0e10cSrcweir rMgr.GoNext(); 177*cdf0e10cSrcweir aPrevBT.Enable( bMove ); 178*cdf0e10cSrcweir 179*cdf0e10cSrcweir if (pCurFld->GetTypeId() == TYP_EXTUSERFLD) 180*cdf0e10cSrcweir aAddressBT.Show(); 181*cdf0e10cSrcweir 182*cdf0e10cSrcweir pSh->DestroyCrsr(); 183*cdf0e10cSrcweir pSh->EndAction(); 184*cdf0e10cSrcweir } 185*cdf0e10cSrcweir 186*cdf0e10cSrcweir GetOKButton()->Enable( !pSh->IsReadOnlyAvailable() || 187*cdf0e10cSrcweir !pSh->HasReadonlySel() ); 188*cdf0e10cSrcweir } 189*cdf0e10cSrcweir 190*cdf0e10cSrcweir /*-------------------------------------------------------------------- 191*cdf0e10cSrcweir Beschreibung: 192*cdf0e10cSrcweir --------------------------------------------------------------------*/ 193*cdf0e10cSrcweir 194*cdf0e10cSrcweir SfxTabPage* SwFldEditDlg::CreatePage(sal_uInt16 nGroup) 195*cdf0e10cSrcweir { 196*cdf0e10cSrcweir // TabPage erzeugen 197*cdf0e10cSrcweir SfxTabPage* pTabPage = 0; 198*cdf0e10cSrcweir const char* pHelpId = 0; 199*cdf0e10cSrcweir 200*cdf0e10cSrcweir switch (nGroup) 201*cdf0e10cSrcweir { 202*cdf0e10cSrcweir case GRP_DOC: 203*cdf0e10cSrcweir pTabPage = SwFldDokPage::Create(this, *(SfxItemSet*)0); 204*cdf0e10cSrcweir pHelpId = HID_EDIT_FLD_DOK; 205*cdf0e10cSrcweir break; 206*cdf0e10cSrcweir case GRP_FKT: 207*cdf0e10cSrcweir pTabPage = SwFldFuncPage::Create(this, *(SfxItemSet*)0); 208*cdf0e10cSrcweir pHelpId = HID_EDIT_FLD_FUNC; 209*cdf0e10cSrcweir break; 210*cdf0e10cSrcweir case GRP_REF: 211*cdf0e10cSrcweir pTabPage = SwFldRefPage::Create(this, *(SfxItemSet*)0); 212*cdf0e10cSrcweir pHelpId = HID_EDIT_FLD_REF; 213*cdf0e10cSrcweir break; 214*cdf0e10cSrcweir case GRP_REG: 215*cdf0e10cSrcweir { 216*cdf0e10cSrcweir SfxObjectShell* pDocSh = SfxObjectShell::Current(); 217*cdf0e10cSrcweir SfxItemSet* pSet = new SfxItemSet( pDocSh->GetPool(), SID_DOCINFO, SID_DOCINFO ); 218*cdf0e10cSrcweir using namespace ::com::sun::star; 219*cdf0e10cSrcweir uno::Reference<document::XDocumentPropertiesSupplier> xDPS( 220*cdf0e10cSrcweir pDocSh->GetModel(), uno::UNO_QUERY_THROW); 221*cdf0e10cSrcweir uno::Reference<document::XDocumentProperties> xDocProps 222*cdf0e10cSrcweir = xDPS->getDocumentProperties(); 223*cdf0e10cSrcweir uno::Reference< beans::XPropertySet > xUDProps( 224*cdf0e10cSrcweir xDocProps->getUserDefinedProperties(), 225*cdf0e10cSrcweir uno::UNO_QUERY_THROW); 226*cdf0e10cSrcweir // uno::Reference< beans::XPropertySetInfo > xSetInfo 227*cdf0e10cSrcweir // = xUDProps->getPropertySetInfo(); 228*cdf0e10cSrcweir // const uno::Sequence< beans::Property > props 229*cdf0e10cSrcweir // = xSetInfo->getProperties(); 230*cdf0e10cSrcweir // uno::Sequence< ::rtl::OUString > names(props.getLength()); 231*cdf0e10cSrcweir // for (sal_Int32 i = 0; i < props.getLength(); ++i) { 232*cdf0e10cSrcweir // names[i] = props[i].Name; 233*cdf0e10cSrcweir // } 234*cdf0e10cSrcweir pSet->Put( SfxUnoAnyItem( SID_DOCINFO, uno::makeAny(xUDProps) ) ); 235*cdf0e10cSrcweir pTabPage = SwFldDokInfPage::Create(this, *pSet); 236*cdf0e10cSrcweir pHelpId = HID_EDIT_FLD_DOKINF; 237*cdf0e10cSrcweir break; 238*cdf0e10cSrcweir } 239*cdf0e10cSrcweir case GRP_DB: 240*cdf0e10cSrcweir pTabPage = SwFldDBPage::Create(this, *(SfxItemSet*)0); 241*cdf0e10cSrcweir static_cast<SwFldDBPage*>(pTabPage)->SetWrtShell(*pSh); 242*cdf0e10cSrcweir pHelpId = HID_EDIT_FLD_DB; 243*cdf0e10cSrcweir break; 244*cdf0e10cSrcweir case GRP_VAR: 245*cdf0e10cSrcweir pTabPage = SwFldVarPage::Create(this, *(SfxItemSet*)0); 246*cdf0e10cSrcweir pHelpId = HID_EDIT_FLD_VAR; 247*cdf0e10cSrcweir break; 248*cdf0e10cSrcweir 249*cdf0e10cSrcweir } 250*cdf0e10cSrcweir 251*cdf0e10cSrcweir pTabPage->SetHelpId(pHelpId); 252*cdf0e10cSrcweir static_cast<SwFldPage*>(pTabPage)->SetWrtShell(pSh); 253*cdf0e10cSrcweir 254*cdf0e10cSrcweir SetTabPage(pTabPage); 255*cdf0e10cSrcweir 256*cdf0e10cSrcweir String sTitle(GetText()); 257*cdf0e10cSrcweir sTitle.Insert(String::CreateFromAscii(": "), 0); 258*cdf0e10cSrcweir sTitle.Insert(SW_RESSTR(STR_FLD_EDIT_DLG), 0); 259*cdf0e10cSrcweir SetText(sTitle); 260*cdf0e10cSrcweir 261*cdf0e10cSrcweir return pTabPage; 262*cdf0e10cSrcweir } 263*cdf0e10cSrcweir 264*cdf0e10cSrcweir /*-------------------------------------------------------------------- 265*cdf0e10cSrcweir Beschreibung: 266*cdf0e10cSrcweir --------------------------------------------------------------------*/ 267*cdf0e10cSrcweir 268*cdf0e10cSrcweir SwFldEditDlg::~SwFldEditDlg() 269*cdf0e10cSrcweir { 270*cdf0e10cSrcweir pSh->SetCareWin(NULL); 271*cdf0e10cSrcweir pSh->EnterStdMode(); 272*cdf0e10cSrcweir } 273*cdf0e10cSrcweir 274*cdf0e10cSrcweir /*-------------------------------------------------------------------- 275*cdf0e10cSrcweir Beschreibung: 276*cdf0e10cSrcweir --------------------------------------------------------------------*/ 277*cdf0e10cSrcweir 278*cdf0e10cSrcweir void SwFldEditDlg::EnableInsert(sal_Bool bEnable) 279*cdf0e10cSrcweir { 280*cdf0e10cSrcweir if( bEnable && pSh->IsReadOnlyAvailable() && pSh->HasReadonlySel() ) 281*cdf0e10cSrcweir bEnable = sal_False; 282*cdf0e10cSrcweir GetOKButton()->Enable( bEnable ); 283*cdf0e10cSrcweir } 284*cdf0e10cSrcweir 285*cdf0e10cSrcweir /*-------------------------------------------------------------------- 286*cdf0e10cSrcweir Beschreibung: 287*cdf0e10cSrcweir --------------------------------------------------------------------*/ 288*cdf0e10cSrcweir 289*cdf0e10cSrcweir void SwFldEditDlg::InsertHdl() 290*cdf0e10cSrcweir { 291*cdf0e10cSrcweir GetOKButton()->Click(); 292*cdf0e10cSrcweir } 293*cdf0e10cSrcweir 294*cdf0e10cSrcweir /*-------------------------------------------------------------------- 295*cdf0e10cSrcweir Beschreibung: Aendern des Feldes anstossen 296*cdf0e10cSrcweir --------------------------------------------------------------------*/ 297*cdf0e10cSrcweir 298*cdf0e10cSrcweir IMPL_LINK( SwFldEditDlg, OKHdl, Button *, EMPTYARG ) 299*cdf0e10cSrcweir { 300*cdf0e10cSrcweir if (GetOKButton()->IsEnabled()) 301*cdf0e10cSrcweir { 302*cdf0e10cSrcweir SfxTabPage* pTabPage = GetTabPage(); 303*cdf0e10cSrcweir if (pTabPage) 304*cdf0e10cSrcweir { 305*cdf0e10cSrcweir pTabPage->FillItemSet(*(SfxItemSet*)0); 306*cdf0e10cSrcweir 307*cdf0e10cSrcweir } 308*cdf0e10cSrcweir EndDialog( RET_OK ); 309*cdf0e10cSrcweir } 310*cdf0e10cSrcweir 311*cdf0e10cSrcweir return 0; 312*cdf0e10cSrcweir } 313*cdf0e10cSrcweir 314*cdf0e10cSrcweir /*-------------------------------------------------------------------- 315*cdf0e10cSrcweir Beschreibung: 316*cdf0e10cSrcweir --------------------------------------------------------------------*/ 317*cdf0e10cSrcweir 318*cdf0e10cSrcweir short SwFldEditDlg::Execute() 319*cdf0e10cSrcweir { 320*cdf0e10cSrcweir // Ohne TabPage kein Dialog 321*cdf0e10cSrcweir return GetTabPage() ? Dialog::Execute() : RET_CANCEL; 322*cdf0e10cSrcweir } 323*cdf0e10cSrcweir 324*cdf0e10cSrcweir /*-------------------------------------------------------------------- 325*cdf0e10cSrcweir Beschreibung: Traveling zwishen Feldern gleichen Typs 326*cdf0e10cSrcweir --------------------------------------------------------------------*/ 327*cdf0e10cSrcweir 328*cdf0e10cSrcweir IMPL_LINK( SwFldEditDlg, NextPrevHdl, Button *, pButton ) 329*cdf0e10cSrcweir { 330*cdf0e10cSrcweir sal_Bool bNext = pButton == &aNextBT; 331*cdf0e10cSrcweir 332*cdf0e10cSrcweir pSh->EnterStdMode(); 333*cdf0e10cSrcweir 334*cdf0e10cSrcweir SwFieldType *pOldTyp = 0; 335*cdf0e10cSrcweir SwFldPage* pTabPage = (SwFldPage*)GetTabPage(); 336*cdf0e10cSrcweir 337*cdf0e10cSrcweir //#112462# FillItemSet may delete the current field 338*cdf0e10cSrcweir //that's why it has to be called before accessing the current field 339*cdf0e10cSrcweir if( GetOKButton()->IsEnabled() ) 340*cdf0e10cSrcweir pTabPage->FillItemSet(*(SfxItemSet*)0); 341*cdf0e10cSrcweir 342*cdf0e10cSrcweir SwFldMgr& rMgr = pTabPage->GetFldMgr(); 343*cdf0e10cSrcweir SwField *pCurFld = rMgr.GetCurFld(); 344*cdf0e10cSrcweir if (pCurFld->GetTypeId() == TYP_DBFLD) 345*cdf0e10cSrcweir pOldTyp = (SwDBFieldType*)pCurFld->GetTyp(); 346*cdf0e10cSrcweir 347*cdf0e10cSrcweir rMgr.GoNextPrev( bNext, pOldTyp ); 348*cdf0e10cSrcweir pCurFld = rMgr.GetCurFld(); 349*cdf0e10cSrcweir 350*cdf0e10cSrcweir /* #108536# Only create selection if there is none 351*cdf0e10cSrcweir already. Normalize PaM instead of swapping. */ 352*cdf0e10cSrcweir if ( ! pSh->HasSelection() ) 353*cdf0e10cSrcweir pSh->Right(CRSR_SKIP_CHARS, sal_True, 1, sal_False ); 354*cdf0e10cSrcweir 355*cdf0e10cSrcweir pSh->NormalizePam(); 356*cdf0e10cSrcweir 357*cdf0e10cSrcweir sal_uInt16 nGroup = rMgr.GetGroup(sal_False, pCurFld->GetTypeId(), pCurFld->GetSubType()); 358*cdf0e10cSrcweir 359*cdf0e10cSrcweir if (nGroup != pTabPage->GetGroup()) 360*cdf0e10cSrcweir pTabPage = (SwFldPage*)CreatePage(nGroup); 361*cdf0e10cSrcweir 362*cdf0e10cSrcweir pTabPage->EditNewField(); 363*cdf0e10cSrcweir 364*cdf0e10cSrcweir Init(); 365*cdf0e10cSrcweir 366*cdf0e10cSrcweir return 0; 367*cdf0e10cSrcweir } 368*cdf0e10cSrcweir 369*cdf0e10cSrcweir /*-------------------------------------------------------------------- 370*cdf0e10cSrcweir Beschreibung: 371*cdf0e10cSrcweir --------------------------------------------------------------------*/ 372*cdf0e10cSrcweir 373*cdf0e10cSrcweir IMPL_LINK( SwFldEditDlg, AddressHdl, PushButton *, EMPTYARG ) 374*cdf0e10cSrcweir { 375*cdf0e10cSrcweir SwFldPage* pTabPage = (SwFldPage*)GetTabPage(); 376*cdf0e10cSrcweir SwFldMgr& rMgr = pTabPage->GetFldMgr(); 377*cdf0e10cSrcweir SwField *pCurFld = rMgr.GetCurFld(); 378*cdf0e10cSrcweir 379*cdf0e10cSrcweir SfxItemSet aSet( pSh->GetAttrPool(), 380*cdf0e10cSrcweir SID_FIELD_GRABFOCUS, SID_FIELD_GRABFOCUS, 381*cdf0e10cSrcweir 0L ); 382*cdf0e10cSrcweir 383*cdf0e10cSrcweir sal_uInt16 nEditPos = UNKNOWN_EDIT; 384*cdf0e10cSrcweir 385*cdf0e10cSrcweir switch(pCurFld->GetSubType()) 386*cdf0e10cSrcweir { 387*cdf0e10cSrcweir case EU_FIRSTNAME: nEditPos = FIRSTNAME_EDIT; break; 388*cdf0e10cSrcweir case EU_NAME: nEditPos = LASTNAME_EDIT; break; 389*cdf0e10cSrcweir case EU_SHORTCUT: nEditPos = SHORTNAME_EDIT; break; 390*cdf0e10cSrcweir case EU_COMPANY: nEditPos = COMPANY_EDIT; break; 391*cdf0e10cSrcweir case EU_STREET: nEditPos = STREET_EDIT; break; 392*cdf0e10cSrcweir case EU_TITLE: nEditPos = TITLE_EDIT; break; 393*cdf0e10cSrcweir case EU_POSITION: nEditPos = POSITION_EDIT; break; 394*cdf0e10cSrcweir case EU_PHONE_PRIVATE:nEditPos = TELPRIV_EDIT; break; 395*cdf0e10cSrcweir case EU_PHONE_COMPANY:nEditPos = TELCOMPANY_EDIT; break; 396*cdf0e10cSrcweir case EU_FAX: nEditPos = FAX_EDIT; break; 397*cdf0e10cSrcweir case EU_EMAIL: nEditPos = EMAIL_EDIT; break; 398*cdf0e10cSrcweir case EU_COUNTRY: nEditPos = COUNTRY_EDIT; break; 399*cdf0e10cSrcweir case EU_ZIP: nEditPos = PLZ_EDIT; break; 400*cdf0e10cSrcweir case EU_CITY: nEditPos = CITY_EDIT; break; 401*cdf0e10cSrcweir case EU_STATE: nEditPos = STATE_EDIT; break; 402*cdf0e10cSrcweir 403*cdf0e10cSrcweir default: nEditPos = UNKNOWN_EDIT; break; 404*cdf0e10cSrcweir 405*cdf0e10cSrcweir } 406*cdf0e10cSrcweir aSet.Put(SfxUInt16Item(SID_FIELD_GRABFOCUS, nEditPos)); 407*cdf0e10cSrcweir SwAbstractDialogFactory* pFact = swui::GetFactory(); 408*cdf0e10cSrcweir DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!"); 409*cdf0e10cSrcweir 410*cdf0e10cSrcweir SfxAbstractDialog* pDlg = pFact->CreateSfxDialog( this, aSet, 411*cdf0e10cSrcweir pSh->GetView().GetViewFrame()->GetFrame().GetFrameInterface(), 412*cdf0e10cSrcweir RC_DLG_ADDR ); 413*cdf0e10cSrcweir DBG_ASSERT(pDlg, "Dialogdiet fail!"); 414*cdf0e10cSrcweir if(RET_OK == pDlg->Execute()) 415*cdf0e10cSrcweir { 416*cdf0e10cSrcweir pSh->UpdateFlds( *pCurFld ); 417*cdf0e10cSrcweir } 418*cdf0e10cSrcweir delete pDlg; 419*cdf0e10cSrcweir return 0; 420*cdf0e10cSrcweir } 421*cdf0e10cSrcweir 422*cdf0e10cSrcweir 423