/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_sw.hxx" #ifndef _CMDID_H #include #endif #include #include #include #include #include #include #ifndef _DOCSH_HXX #include #endif #include #include #include #include #ifndef _HELPID_H #include #endif #ifndef _FLDUI_HRC #include #endif #ifndef _GLOBALS_HRC #include #endif #ifndef _FLDTDLG_HRC #include #endif #include "swabstdlg.hxx" SFX_IMPL_CHILDWINDOW(SwFldDlgWrapper, FN_INSERT_FIELD) /*-------------------------------------------------------------------- Beschreibung: --------------------------------------------------------------------*/ SwChildWinWrapper::SwChildWinWrapper(Window *pParentWindow, sal_uInt16 nId) : SfxChildWindow(pParentWindow, nId), m_pDocSh(0) { // Flackern der Buttons vermeiden: m_aUpdateTimer.SetTimeout(200); m_aUpdateTimer.SetTimeoutHdl(LINK(this, SwChildWinWrapper, UpdateHdl)); } /*-------------------------------------------------------------------- Beschreibung: --------------------------------------------------------------------*/ IMPL_LINK( SwChildWinWrapper, UpdateHdl, void*, EMPTYARG ) { GetWindow()->Activate(); // Dialog aktualisieren return 0; } /*-------------------------------------------------------------------- Beschreibung: Nach Dok-Wechsel Dialog neu initialisieren --------------------------------------------------------------------*/ sal_Bool SwChildWinWrapper::ReInitDlg(SwDocShell *) { sal_Bool bRet = sal_False; if (m_pDocSh != GetOldDocShell()) { m_aUpdateTimer.Stop(); bRet = sal_True; // Sofortiges Update } else m_aUpdateTimer.Start(); return bRet; } /*-------------------------------------------------------------------- Beschreibung: --------------------------------------------------------------------*/ SfxChildWinInfo SwFldDlgWrapper::GetInfo() const { SfxChildWinInfo aInfo = SfxChildWindow::GetInfo(); aInfo.aPos = GetWindow()->OutputToAbsoluteScreenPixel(aInfo.aPos); return aInfo; } /*-------------------------------------------------------------------- Beschreibung: --------------------------------------------------------------------*/ SwFldDlgWrapper::SwFldDlgWrapper( Window* _pParent, sal_uInt16 nId, SfxBindings* pB, SfxChildWinInfo* ) : SwChildWinWrapper( _pParent, nId ) { SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!"); AbstractSwFldDlg* pDlg = pFact->CreateSwFldDlg(pB, this, _pParent, DLG_FLD_INSERT ); DBG_ASSERT(pDlg, "Dialogdiet fail!"); pDlgInterface = pDlg; pWindow = pDlg->GetWindow(); pDlg->Start(); eChildAlignment = SFX_ALIGN_NOALIGNMENT; } /*-------------------------------------------------------------------- Beschreibung: Nach Dok-Wechsel Dialog neu initialisieren --------------------------------------------------------------------*/ sal_Bool SwFldDlgWrapper::ReInitDlg(SwDocShell *pDocSh) { sal_Bool bRet; if ((bRet = SwChildWinWrapper::ReInitDlg(pDocSh)) == sal_True) // Sofort aktualisieren, Dok-Wechsel { pDlgInterface->ReInitDlg(); } return bRet; } /*-------------------------------------------------------------------- Beschreibung: --------------------------------------------------------------------*/ void SwFldDlgWrapper::ShowPage(sal_uInt16 nPage) { pDlgInterface->ShowPage(nPage ? nPage : TP_FLD_REF); } SFX_IMPL_CHILDWINDOW(SwFldDataOnlyDlgWrapper, FN_INSERT_FIELD_DATA_ONLY) /* -----------------04.02.2003 14:17----------------- * * --------------------------------------------------*/ SfxChildWinInfo SwFldDataOnlyDlgWrapper::GetInfo() const { SfxChildWinInfo aInfo = SfxChildWindow::GetInfo(); // prevent instatiation of dialog other than by calling // the mail merge dialog aInfo.bVisible = sal_False; return aInfo; } /* -----------------04.02.2003 14:17----------------- * * --------------------------------------------------*/ SwFldDataOnlyDlgWrapper::SwFldDataOnlyDlgWrapper( Window* _pParent, sal_uInt16 nId, SfxBindings* pB, SfxChildWinInfo* pInfo ) : SwChildWinWrapper( _pParent, nId ) { SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!"); AbstractSwFldDlg* pDlg = pFact->CreateSwFldDlg(pB, this, _pParent, DLG_FLD_INSERT ); DBG_ASSERT(pDlg, "Dialogdiet fail!"); pDlgInterface = pDlg; pWindow = pDlg->GetWindow(); pDlg->ActivateDatabasePage(); pDlg->Start(); pDlg->Initialize( pInfo ); eChildAlignment = SFX_ALIGN_NOALIGNMENT; } /* -----------------04.02.2003 14:17----------------- * re-init after doc activation * --------------------------------------------------*/ sal_Bool SwFldDataOnlyDlgWrapper::ReInitDlg(SwDocShell *pDocSh) { sal_Bool bRet; if ((bRet = SwChildWinWrapper::ReInitDlg(pDocSh)) == sal_True) // Sofort aktualisieren, Dok-Wechsel { pDlgInterface->ReInitDlg(); } return bRet; }