diff options
Diffstat (limited to 'sw/source/ui/app/apphdl.cxx')
-rw-r--r-- | sw/source/ui/app/apphdl.cxx | 964 |
1 files changed, 0 insertions, 964 deletions
diff --git a/sw/source/ui/app/apphdl.cxx b/sw/source/ui/app/apphdl.cxx deleted file mode 100644 index 7cbe4d3a24..0000000000 --- a/sw/source/ui/app/apphdl.cxx +++ /dev/null @@ -1,964 +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 <hintids.hxx> -#include <tools/urlobj.hxx> - -#include <osl/diagnose.h> -#include <tools/link.hxx> - -#define _SVSTDARR_STRINGSDTOR -#include <svl/svstdarr.hxx> -#include <svl/urihelper.hxx> -#include <unotools/undoopt.hxx> -#include <unotools/pathoptions.hxx> -#include <svtools/accessibilityoptions.hxx> -#include <sfx2/dispatch.hxx> -#include <sfx2/event.hxx> -#include <sfx2/objitem.hxx> -#include <svx/dataaccessdescriptor.hxx> -#include <svl/srchitem.hxx> -#include <svtools/colorcfg.hxx> -#include <svl/eitem.hxx> -#include <svl/whiter.hxx> -#include <svl/isethint.hxx> -#include <sfx2/request.hxx> -#include <sfx2/fcontnr.hxx> -#include <svl/stritem.hxx> -#include <svl/ctloptions.hxx> -#include <unotools/useroptions.hxx> -#include <vcl/msgbox.hxx> -#include <vcl/wrkwin.hxx> -#include <svx/insctrl.hxx> -#include <svx/selctrl.hxx> -#include <com/sun/star/document/UpdateDocMode.hpp> -#include <sfx2/docfile.hxx> -#include <svx/xmlsecctrl.hxx> -#include <navicfg.hxx> - -#include <sfx2/objface.hxx> -#include <sfx2/app.hxx> - -#include <view.hxx> -#include <pview.hxx> -#include <srcview.hxx> -#include <wrtsh.hxx> -#include <docsh.hxx> -#include <cmdid.h> // Function-Ids -#include <initui.hxx> -#include <uitool.hxx> -#include <swmodule.hxx> -#include <wdocsh.hxx> -#include <wview.hxx> -#include <usrpref.hxx> -#include <gloslst.hxx> // SwGlossaryList -#include <glosdoc.hxx> // SwGlossaryList -#include <doc.hxx> -#include <IDocumentUndoRedo.hxx> -#include <cfgitems.hxx> -#include <prtopt.hxx> -#include <modcfg.hxx> -#include <globals.h> // e.g. global Constants -#include <app.hrc> -#include <fontcfg.hxx> -#include <barcfg.hxx> -#include <uinums.hxx> -#include <dbconfig.hxx> -#include <mmconfigitem.hxx> -#include <mailmergechildwindow.hxx> -#include <linguistic/lngprops.hxx> -#include <editeng/unolingu.hxx> -#include <com/sun/star/beans/XMultiPropertySet.hpp> -#include <com/sun/star/beans/XFastPropertySet.hpp> -#include <com/sun/star/beans/XPropertyState.hpp> -#include <com/sun/star/beans/XPropertyStateChangeListener.hpp> -#include <com/sun/star/beans/PropertyAttribute.hpp> -#include <com/sun/star/beans/XPropertyAccess.hpp> -#include <com/sun/star/beans/XPropertyContainer.hpp> -#include <com/sun/star/container/XChild.hpp> -#include <com/sun/star/sdbc/XConnection.hpp> -#include <com/sun/star/sdbc/XDataSource.hpp> -#include <swabstdlg.hxx> - - -#include <vcl/status.hxx> - -#include "salhelper/simplereferenceobject.hxx" -#include "rtl/ref.hxx" - -#include <unomid.h> - -using namespace ::com::sun::star; - -/*-------------------------------------------------------------------- - Description: Slotmaps for the application's methods - --------------------------------------------------------------------*/ - - -// here are the SlotID's being included -// see Idl-file -// -#define SwModule -#define ViewSettings -#define WebViewSettings -#define PrintSettings -#define _ExecAddress ExecOther -#define _StateAddress StateOther -#include <sfx2/msg.hxx> -#include "swslots.hxx" -#include <cfgid.h> - -#include <shells.hrc> - -SFX_IMPL_INTERFACE( SwModule, SfxModule, SW_RES(RID_SW_NAME) ) -{ - SFX_STATUSBAR_REGISTRATION(SW_RES(CFG_STATUSBAR)); - SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_APPLICATION | - SFX_VISIBILITY_DESKTOP | SFX_VISIBILITY_STANDARD | SFX_VISIBILITY_CLIENT | SFX_VISIBILITY_VIEWER, - SW_RES(RID_MODULE_TOOLBOX) ); -} - - -/*-------------------------------------------------------------------- - Description: other states - --------------------------------------------------------------------*/ - - -void SwModule::StateOther(SfxItemSet &rSet) -{ - SfxWhichIter aIter(rSet); - sal_uInt16 nWhich = aIter.FirstWhich(); - - SwView* pActView = ::GetActiveView(); - sal_Bool bWebView = 0 != PTR_CAST(SwWebView, pActView); - - while(nWhich) - { - switch(nWhich) - { - case FN_BUSINESS_CARD: - case FN_LABEL: - case FN_ENVELOP: - { - sal_Bool bDisable = sal_False; - SfxViewShell* pCurrView = SfxViewShell::Current(); - if( !pCurrView || (pCurrView && !pCurrView->ISA(SwView)) ) - bDisable = sal_True; - SwDocShell *pDocSh = (SwDocShell*) SfxObjectShell::Current(); - if ( bDisable || - (pDocSh && (pDocSh->IsReadOnly() || - pDocSh->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED)) ) - rSet.DisableItem( nWhich ); - - } - break; - case FN_XFORMS_INIT: - // slot is always active! - break; - case FN_EDIT_FORMULA: - { - SwWrtShell* pSh = 0; - int nSelection = 0; - if( pActView ) - pSh = &pActView->GetWrtShell(); - if( pSh ) - nSelection = pSh->GetSelectionType(); - - if( (pSh && pSh->HasSelection()) || - !(nSelection & (nsSelectionType::SEL_TXT | nsSelectionType::SEL_TBL))) - rSet.DisableItem(nWhich); - } - break; - case SID_ATTR_METRIC: - rSet.Put( SfxUInt16Item( SID_ATTR_METRIC, static_cast< sal_uInt16 >(::GetDfltMetric(bWebView)))); - break; - case FN_SET_MODOPT_TBLNUMFMT: - rSet.Put( SfxBoolItem( nWhich, pModuleConfig-> - IsInsTblFormatNum( bWebView ))); - break; - default: - OSL_FAIL("::StateOther: default"); - } - nWhich = aIter.NextWhich(); - } -} - -SwView* lcl_LoadDoc(SwView* pView, const String& rURL) -{ - SwView* pNewView = 0; - if(rURL.Len()) - { - SfxStringItem aURL(SID_FILE_NAME, rURL); - SfxStringItem aTargetFrameName( SID_TARGETNAME, String::CreateFromAscii("_blank") ); - SfxBoolItem aHidden( SID_HIDDEN, sal_True ); - SfxStringItem aReferer(SID_REFERER, pView->GetDocShell()->GetTitle()); - SfxObjectItem* pItem = (SfxObjectItem*)pView->GetViewFrame()->GetDispatcher()-> - Execute(SID_OPENDOC, SFX_CALLMODE_SYNCHRON, - &aURL, &aHidden, &aReferer, &aTargetFrameName, 0L); - SfxShell* pShell = pItem ? pItem->GetShell() : 0; - - if(pShell) - { - SfxViewShell* pViewShell = pShell->GetViewShell(); - if(pViewShell) - { - if( pViewShell->ISA(SwView) ) - { - pNewView = PTR_CAST(SwView,pViewShell); - pNewView->GetViewFrame()->GetFrame().Appear(); - } - else - { - pViewShell->GetViewFrame()->DoClose(); - } - } - } - } - else - { - SfxStringItem aFactory(SID_NEWDOCDIRECT, SwDocShell::Factory().GetFilterContainer()->GetName()); - const SfxFrameItem* pItem = (SfxFrameItem*) - pView->GetViewFrame()->GetDispatcher()->Execute(SID_NEWDOCDIRECT, - SFX_CALLMODE_SYNCHRON, &aFactory, 0L); - SfxFrame* pFrm = pItem ? pItem->GetFrame() : 0; - SfxViewFrame* pFrame = pFrm ? pFrm->GetCurrentViewFrame() : 0; - pNewView = pFrame ? PTR_CAST(SwView, pFrame->GetViewShell()) : 0; - } - - return pNewView; -} -/*-------------------------------------------------------------------- - Description: start field dialog - --------------------------------------------------------------------*/ - -void NewXForms( SfxRequest& rReq ); // implementation: below - -namespace -{ - -class SwMailMergeWizardExecutor : public salhelper::SimpleReferenceObject -{ - SwView* m_pView; // never owner - SwView* m_pView2Close; // never owner - SwMailMergeConfigItem* m_pMMConfig; // sometimes owner - AbstractMailMergeWizard* m_pWizard; // always owner - - DECL_LINK( EndDialogHdl, AbstractMailMergeWizard* ); - DECL_LINK( DestroyDialogHdl, AbstractMailMergeWizard* ); - DECL_LINK( DestroyWizardHdl, AbstractMailMergeWizard* ); - DECL_LINK( CancelHdl, AbstractMailMergeWizard* ); - DECL_LINK( CloseFrameHdl, AbstractMailMergeWizard* ); - - void ExecutionFinished( bool bDeleteConfigItem ); - void ExecuteWizard(); - -public: - SwMailMergeWizardExecutor(); - ~SwMailMergeWizardExecutor(); - - void ExecuteMailMergeWizard( const SfxItemSet * pArgs ); -}; - -SwMailMergeWizardExecutor::SwMailMergeWizardExecutor() - : m_pView( 0 ), - m_pView2Close( NULL ), - m_pMMConfig( 0 ), - m_pWizard( 0 ) -{ -} - -SwMailMergeWizardExecutor::~SwMailMergeWizardExecutor() -{ - OSL_ENSURE( m_pWizard == 0, "SwMailMergeWizardExecutor: m_pWizard must be Null!" ); - OSL_ENSURE( m_pMMConfig == 0, "SwMailMergeWizardExecutor: m_pMMConfig must be Null!" ); -} - -void SwMailMergeWizardExecutor::ExecuteMailMergeWizard( const SfxItemSet * pArgs ) -{ - if ( m_pView ) - { - OSL_FAIL("SwMailMergeWizardExecutor::ExecuteMailMergeWizard: Already executing the wizard!" ); - return; - } - - m_pView = ::GetActiveView(); // not owner! - OSL_ENSURE(m_pView, "no current view?"); - if(m_pView) - { - // keep self alive until done. - acquire(); - - // if called from the child window - get the config item and close the ChildWindow, then restore - // the wizard - SwMailMergeChildWindow* pChildWin = - static_cast<SwMailMergeChildWindow*>(m_pView->GetViewFrame()->GetChildWindow(FN_MAILMERGE_CHILDWINDOW)); - bool bRestoreWizard = false; - sal_uInt16 nRestartPage = 0; - if(pChildWin && pChildWin->IsVisible()) - { - m_pMMConfig = m_pView->GetMailMergeConfigItem(); - nRestartPage = m_pView->GetMailMergeRestartPage(); - if(m_pView->IsMailMergeSourceView()) - m_pMMConfig->SetSourceView( m_pView ); - m_pView->SetMailMergeConfigItem(0, 0, sal_True); - SfxViewFrame* pViewFrame = m_pView->GetViewFrame(); - pViewFrame->ShowChildWindow(FN_MAILMERGE_CHILDWINDOW, sal_False); - OSL_ENSURE(m_pMMConfig, "no MailMergeConfigItem available"); - bRestoreWizard = true; - } - // to make it bullet proof ;-) - if(!m_pMMConfig) - { - m_pMMConfig = new SwMailMergeConfigItem; - m_pMMConfig->SetSourceView(m_pView); - - //set the first used database as default source on the config item - const SfxPoolItem* pItem = 0; - if(pArgs && SFX_ITEM_SET == pArgs->GetItemState( - FN_PARAM_DATABASE_PROPERTIES, sal_False, &pItem)) - { - //mailmerge has been called from the database beamer - uno::Sequence< beans::PropertyValue> aDBValues; - if(static_cast<const SfxUsrAnyItem*>(pItem)->GetValue() >>= aDBValues) - { - SwDBData aDBData; - svx::ODataAccessDescriptor aDescriptor(aDBValues); - aDescriptor[svx::daDataSource] >>= aDBData.sDataSource; - aDescriptor[svx::daCommand] >>= aDBData.sCommand; - aDescriptor[svx::daCommandType] >>= aDBData.nCommandType; - - uno::Sequence< uno::Any > aSelection; - uno::Reference< sdbc::XConnection> xConnection; - uno::Reference< sdbc::XDataSource> xSource; - uno::Reference< sdbcx::XColumnsSupplier> xColumnsSupplier; - if ( aDescriptor.has(svx::daSelection) ) - aDescriptor[svx::daSelection] >>= aSelection; - if ( aDescriptor.has(svx::daConnection) ) - aDescriptor[svx::daConnection] >>= xConnection; - uno::Reference<container::XChild> xChild(xConnection, uno::UNO_QUERY); - if(xChild.is()) - xSource = uno::Reference<sdbc::XDataSource>( - xChild->getParent(), uno::UNO_QUERY); - m_pMMConfig->SetCurrentConnection( - xSource, SharedConnection( xConnection, SharedConnection::NoTakeOwnership ), - xColumnsSupplier, aDBData); - } - } - else - { - SvStringsDtor aDBNameList(5, 1); - SvStringsDtor aAllDBNames(5, 5); - m_pView->GetWrtShell().GetAllUsedDB( aDBNameList, &aAllDBNames ); - if(aDBNameList.Count()) - { - String sDBName = *aDBNameList[0]; - SwDBData aDBData; - aDBData.sDataSource = sDBName.GetToken(0, DB_DELIM); - aDBData.sCommand = sDBName.GetToken(1, DB_DELIM); - aDBData.nCommandType = sDBName.GetToken(2, DB_DELIM ).ToInt32(); - //set the currently used database for the wizard - m_pMMConfig->SetCurrentDBData( aDBData ); - } - } - } - - SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); - m_pWizard = pFact->CreateMailMergeWizard(*m_pView, *m_pMMConfig); - - if(bRestoreWizard) - { - m_pWizard->ShowPage( nRestartPage ); - } - - ExecuteWizard(); - } -} - -void SwMailMergeWizardExecutor::ExecutionFinished( bool bDeleteConfigItem ) -{ - m_pMMConfig->Commit(); - if ( bDeleteConfigItem ) // owner? - delete m_pMMConfig; - - m_pMMConfig = 0; - - // release/destroy asynchronously - Application::PostUserEvent( LINK( this, SwMailMergeWizardExecutor, DestroyDialogHdl ) ); -} - -void SwMailMergeWizardExecutor::ExecuteWizard() -{ - m_pWizard->StartExecuteModal( - LINK( this, SwMailMergeWizardExecutor, EndDialogHdl ) ); -} - -#if OSL_DEBUG_LEVEL > 1 -IMPL_LINK( SwMailMergeWizardExecutor, EndDialogHdl, AbstractMailMergeWizard*, pDialog ) -#else -IMPL_LINK( SwMailMergeWizardExecutor, EndDialogHdl, AbstractMailMergeWizard*, EMPTYARG ) -#endif -{ -#if OSL_DEBUG_LEVEL > 1 - OSL_ENSURE( pDialog == m_pWizard, "wrong dialog passed to EndDialogHdl!" ); - (void) pDialog; -#endif - - long nRet = m_pWizard->GetResult(); - sal_uInt16 nRestartPage = m_pWizard->GetRestartPage(); - - switch ( nRet ) - { - case RET_LOAD_DOC: - { - SwView* pNewView = lcl_LoadDoc(m_pView, m_pWizard->GetReloadDocument()); - - // destroy wizard asynchronously - Application::PostUserEvent( - LINK( this, SwMailMergeWizardExecutor, DestroyWizardHdl ), m_pWizard ); - - SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); - if(pNewView) - { - m_pView = pNewView; - m_pMMConfig->DocumentReloaded(); - //new source view! - m_pMMConfig->SetSourceView( m_pView ); - m_pWizard = pFact->CreateMailMergeWizard(*m_pView, *m_pMMConfig); - m_pWizard->ShowPage( nRestartPage ); - } - else - { - m_pWizard = pFact->CreateMailMergeWizard(*m_pView, *m_pMMConfig); - } - - // execute the wizard again - ExecuteWizard(); - break; - } - case RET_TARGET_CREATED: - { - SwView* pTargetView = m_pMMConfig->GetTargetView(); - uno::Reference< frame::XFrame > xFrame = - m_pView->GetViewFrame()->GetFrame().GetFrameInterface(); - xFrame->getContainerWindow()->setVisible(sal_False); - OSL_ENSURE(pTargetView, "No target view has been created"); - if(pTargetView) - { - // destroy wizard asynchronously - Application::PostUserEvent( - LINK( this, SwMailMergeWizardExecutor, DestroyWizardHdl ), m_pWizard ); - - SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); - m_pWizard = pFact->CreateMailMergeWizard(*pTargetView, *m_pMMConfig); - m_pWizard->ShowPage( nRestartPage ); - - // execute the wizard again - ExecuteWizard(); - } - else - { - // should not happen - just in case no target view has been created - ExecutionFinished( true ); - } - break; - } - case RET_EDIT_DOC: - case RET_EDIT_RESULT_DOC: - { - //create a non-modal dialog that allows to return to the wizard - //the ConfigItem ownership moves to this dialog - bool bResult = nRet == RET_EDIT_RESULT_DOC && m_pMMConfig->GetTargetView(); - SwView* pTempView = bResult ? m_pMMConfig->GetTargetView() : m_pMMConfig->GetSourceView(); - pTempView->SetMailMergeConfigItem(m_pMMConfig, m_pWizard->GetRestartPage(), !bResult); - SfxViewFrame* pViewFrame = pTempView->GetViewFrame(); - pViewFrame->GetDispatcher()->Execute( - FN_MAILMERGE_CHILDWINDOW, SFX_CALLMODE_SYNCHRON); - ExecutionFinished( false ); - break; - } - case RET_REMOVE_TARGET: - { - SwView* pTargetView = m_pMMConfig->GetTargetView(); - SwView* pSourceView = m_pMMConfig->GetSourceView(); - OSL_ENSURE(pTargetView && pSourceView, "source or target view not available" ); - if(pTargetView && pSourceView) - { - m_pView2Close = pTargetView; - pTargetView->GetViewFrame()->GetTopViewFrame()->GetWindow().Hide(); - pSourceView->GetViewFrame()->GetFrame().AppearWithUpdate(); - // the current view has be be set when the target is destroyed - m_pView = pSourceView; - m_pMMConfig->SetTargetView(0); - - // destroy wizard asynchronously - Application::PostUserEvent( - LINK( this, SwMailMergeWizardExecutor, CloseFrameHdl ), m_pWizard ); - - SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); - m_pWizard = pFact->CreateMailMergeWizard(*pSourceView, *m_pMMConfig); - m_pWizard->ShowPage( nRestartPage ); - - // execute the wizard again - ExecuteWizard(); - } - else - { - // should not happen - just in case no target view has been created - ExecutionFinished( true ); - } - break; - } - case RET_CANCEL: - { - // close frame and destroy wizard asynchronously - Application::PostUserEvent( - LINK( this, SwMailMergeWizardExecutor, CancelHdl ), m_pWizard ); - break; - } - default: // finish - { - SwView* pSourceView = m_pMMConfig->GetSourceView(); - if(pSourceView) - { - SwDocShell* pDocShell = pSourceView->GetDocShell(); - if(pDocShell->HasName() && !pDocShell->IsModified()) - m_pMMConfig->GetSourceView()->GetViewFrame()->DoClose(); - else - m_pMMConfig->GetSourceView()->GetViewFrame()->GetFrame().Appear(); - } - ExecutionFinished( true ); - break; - } - - } // switch - - return 0L; -} - -IMPL_LINK( SwMailMergeWizardExecutor, DestroyDialogHdl, AbstractMailMergeWizard*, EMPTYARG ) -{ - delete m_pWizard; - m_pWizard = 0; - - release(); - return 0L; -} - -IMPL_LINK( SwMailMergeWizardExecutor, DestroyWizardHdl, AbstractMailMergeWizard*, pDialog ) -{ - delete pDialog; - return 0L; -} - -IMPL_LINK( SwMailMergeWizardExecutor, CancelHdl, AbstractMailMergeWizard*, EMPTYARG ) -{ - if(m_pMMConfig->GetTargetView()) - { - m_pMMConfig->GetTargetView()->GetViewFrame()->DoClose(); - m_pMMConfig->SetTargetView(0); - } - if(m_pMMConfig->GetSourceView()) - m_pMMConfig->GetSourceView()->GetViewFrame()->GetFrame().AppearWithUpdate(); - - m_pMMConfig->Commit(); - delete m_pMMConfig; - m_pMMConfig = 0; - // m_pWizard already deleted by closing the target view - m_pWizard = 0; - release(); - - return 0L; -} - -IMPL_LINK( SwMailMergeWizardExecutor, CloseFrameHdl, AbstractMailMergeWizard*, EMPTYARG ) -{ - if ( m_pView2Close ) - { - m_pView2Close->GetViewFrame()->DoClose(); - m_pView2Close = NULL; - } - - return 0L; -} - -} // namespace - -void SwModule::ExecOther(SfxRequest& rReq) -{ - const SfxItemSet *pArgs = rReq.GetArgs(); - const SfxPoolItem* pItem = 0; - - sal_uInt16 nWhich = rReq.GetSlot(); - switch (nWhich) - { - case FN_ENVELOP: - InsertEnv( rReq ); - break; - - case FN_BUSINESS_CARD: - case FN_LABEL: - InsertLab(rReq, nWhich == FN_LABEL); - break; - - case FN_XFORMS_INIT: - NewXForms( rReq ); - break; - - case SID_ATTR_METRIC: - if(pArgs && SFX_ITEM_SET == pArgs->GetItemState(nWhich, sal_False, &pItem)) - { - FieldUnit eUnit = (FieldUnit)((const SfxUInt16Item*)pItem)->GetValue(); - switch( eUnit ) - { - case FUNIT_MM: - case FUNIT_CM: - case FUNIT_INCH: - case FUNIT_PICA: - case FUNIT_POINT: - { - SwView* pActView = ::GetActiveView(); - sal_Bool bWebView = 0 != PTR_CAST(SwWebView, pActView); - ::SetDfltMetric(eUnit, bWebView); - } - break; - default:;//prevent warning - } - } - break; - - case FN_SET_MODOPT_TBLNUMFMT: - { - sal_Bool bWebView = 0 != PTR_CAST(SwWebView, ::GetActiveView() ), - bSet; - - if( pArgs && SFX_ITEM_SET == pArgs->GetItemState( - nWhich, sal_False, &pItem )) - bSet = ((SfxBoolItem*)pItem)->GetValue(); - else - bSet = !pModuleConfig->IsInsTblFormatNum( bWebView ); - - pModuleConfig->SetInsTblFormatNum( bWebView, bSet ); - } - break; - case FN_MAILMERGE_WIZARD: - { - rtl::Reference< SwMailMergeWizardExecutor > xEx( new SwMailMergeWizardExecutor ); - xEx->ExecuteMailMergeWizard( pArgs ); - } - break; - } -} - -/*-------------------------------------------------------------------- - Description: Catch notifications - --------------------------------------------------------------------*/ - - -// Catch hint for DocInfo -void SwModule::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) -{ - if( rHint.ISA( SfxEventHint ) ) - { - SfxEventHint& rEvHint = (SfxEventHint&) rHint; - SwDocShell* pDocSh = PTR_CAST( SwDocShell, rEvHint.GetObjShell() ); - if( pDocSh ) - { - SwWrtShell* pWrtSh = pDocSh ? pDocSh->GetWrtShell() : 0; - switch( rEvHint.GetEventId() ) - { - case SFX_EVENT_LOADFINISHED: - OSL_ASSERT(!pWrtSh); - // if it is a new document created from a template, - // update fixed fields - if (pDocSh->GetMedium()) - { - SFX_ITEMSET_ARG( pDocSh->GetMedium()->GetItemSet(), - pTemplateItem, SfxBoolItem, - SID_TEMPLATE, sal_False); - if (pTemplateItem && pTemplateItem->GetValue()) - { - pDocSh->GetDoc()->SetFixFields(false, 0); - } - } - case SFX_EVENT_CREATEDOC: - // Update all FIX-Date/Time fields - if( pWrtSh ) - { - SFX_ITEMSET_ARG( pDocSh->GetMedium()->GetItemSet(), pUpdateDocItem, SfxUInt16Item, SID_UPDATEDOCMODE, sal_False); - sal_Bool bUpdateFields = sal_True; - if( pUpdateDocItem && pUpdateDocItem->GetValue() == document::UpdateDocMode::NO_UPDATE) - bUpdateFields = sal_False; - if(bUpdateFields) - { - pWrtSh->UpdateInputFlds(); - - // Are database fields contained? - // Get all used databases for the first time - SwDoc *pDoc = pDocSh->GetDoc(); - SvStringsDtor aDBNameList; - pDoc->GetAllUsedDB( aDBNameList ); - sal_uInt16 nCount = aDBNameList.Count(); - if (nCount) - { // Open database beamer - ShowDBObj(pWrtSh->GetView(), pDoc->GetDBData()); - } - } - } - break; - } - } - } - else if(rHint.ISA(SfxItemSetHint)) - { - if( SFX_ITEM_SET == ((SfxItemSetHint&)rHint).GetItemSet().GetItemState(SID_ATTR_PATHNAME)) - { - ::GetGlossaries()->UpdateGlosPath( sal_False ); - SwGlossaryList* pList = ::GetGlossaryList(); - if(pList->IsActive()) - pList->Update(); - } - } - else if(rHint.ISA(SfxSimpleHint)) - { - sal_uInt16 nHintId = ((SfxSimpleHint&)rHint).GetId(); - if(SFX_HINT_DEINITIALIZING == nHintId) - { - DELETEZ(pWebUsrPref); - DELETEZ(pUsrPref) ; - DELETEZ(pModuleConfig); - DELETEZ(pPrtOpt) ; - DELETEZ(pWebPrtOpt) ; - DELETEZ(pChapterNumRules); - DELETEZ(pStdFontConfig) ; - DELETEZ(pNavigationConfig) ; - DELETEZ(pToolbarConfig) ; - DELETEZ(pWebToolbarConfig) ; - DELETEZ(pAuthorNames) ; - DELETEZ(pDBConfig); - if( pColorConfig ) - { - pColorConfig->RemoveListener(this); - DELETEZ(pColorConfig); - } - if( pAccessibilityOptions ) - { - pAccessibilityOptions->RemoveListener(this); - DELETEZ(pAccessibilityOptions); - } - if( pCTLOptions ) - { - pCTLOptions->RemoveListener(this); - DELETEZ(pCTLOptions); - } - if( pUserOptions ) - { - pUserOptions->RemoveListener(this); - DELETEZ(pUserOptions); - } - if( pUndoOptions ) - { - pUndoOptions->RemoveListener(this); - DELETEZ(pUndoOptions); - } - } - } -} - -void SwModule::ConfigurationChanged( utl::ConfigurationBroadcaster* pBrdCst, sal_uInt32 ) -{ - if( pBrdCst == pUserOptions ) - { - bAuthorInitialised = sal_False; - } - else if( pBrdCst == pUndoOptions ) - { - sal_Int32 const nNew = GetUndoOptions().GetUndoCount(); - bool const bUndo = (nNew != 0); - // switch Undo for all DocShells - // Iterate through DocShells and switch undos - TypeId aType(TYPE(SwDocShell)); - SwDocShell * pDocShell = - static_cast<SwDocShell *>(SfxObjectShell::GetFirst(&aType)); - while (pDocShell) - { - pDocShell->GetDoc()->GetIDocumentUndoRedo().DoUndo(bUndo); - pDocShell = static_cast<SwDocShell *>( - SfxObjectShell::GetNext(*pDocShell, &aType)); - } - } - else if ( pBrdCst == pColorConfig || pBrdCst == pAccessibilityOptions ) - { - sal_Bool bAccessibility = sal_False; - if( pBrdCst == pColorConfig ) - SwViewOption::ApplyColorConfigValues(*pColorConfig); - else - bAccessibility = sal_True; - - //invalidate all edit windows - const TypeId aSwViewTypeId = TYPE(SwView); - const TypeId aSwPreViewTypeId = TYPE(SwPagePreView); - const TypeId aSwSrcViewTypeId = TYPE(SwSrcView); - SfxViewShell* pViewShell = SfxViewShell::GetFirst(); - while(pViewShell) - { - if(pViewShell->GetWindow()) - { - if((pViewShell->IsA(aSwViewTypeId) || - pViewShell->IsA(aSwPreViewTypeId) || - pViewShell->IsA(aSwSrcViewTypeId))) - { - if(bAccessibility) - { - if(pViewShell->IsA(aSwViewTypeId)) - ((SwView*)pViewShell)->ApplyAccessiblityOptions(*pAccessibilityOptions); - else if(pViewShell->IsA(aSwPreViewTypeId)) - ((SwPagePreView*)pViewShell)->ApplyAccessiblityOptions(*pAccessibilityOptions); - } - pViewShell->GetWindow()->Invalidate(); - } - } - pViewShell = SfxViewShell::GetNext( *pViewShell ); - } - } - else if( pBrdCst == pCTLOptions ) - { - const SfxObjectShell* pObjSh = SfxObjectShell::GetFirst(); - while( pObjSh ) - { - if( pObjSh->IsA(TYPE(SwDocShell)) ) - { - const SwDoc* pDoc = ((SwDocShell*)pObjSh)->GetDoc(); - ViewShell* pVSh = 0; - pDoc->GetEditShell( &pVSh ); - if ( pVSh ) - pVSh->ChgNumberDigits(); - } - pObjSh = SfxObjectShell::GetNext(*pObjSh); - } - } - -} - -SwDBConfig* SwModule::GetDBConfig() -{ - if(!pDBConfig) - pDBConfig = new SwDBConfig; - return pDBConfig; -} - -svtools::ColorConfig& SwModule::GetColorConfig() -{ - if(!pColorConfig) - { - pColorConfig = new svtools::ColorConfig; - SwViewOption::ApplyColorConfigValues(*pColorConfig); - pColorConfig->AddListener(this); - } - return *pColorConfig; -} - -SvtAccessibilityOptions& SwModule::GetAccessibilityOptions() -{ - if(!pAccessibilityOptions) - { - pAccessibilityOptions = new SvtAccessibilityOptions; - pAccessibilityOptions->AddListener(this); - } - return *pAccessibilityOptions; -} - -SvtCTLOptions& SwModule::GetCTLOptions() -{ - if(!pCTLOptions) - { - pCTLOptions = new SvtCTLOptions; - pCTLOptions->AddListener(this); - } - return *pCTLOptions; -} - -SvtUserOptions& SwModule::GetUserOptions() -{ - if(!pUserOptions) - { - pUserOptions = new SvtUserOptions; - pUserOptions->AddListener(this); - } - return *pUserOptions; -} - -SvtUndoOptions& SwModule::GetUndoOptions() -{ - if(!pUndoOptions) - { - pUndoOptions = new SvtUndoOptions; - pUndoOptions->AddListener(this); - } - return *pUndoOptions; -} - -const SwMasterUsrPref *SwModule::GetUsrPref(sal_Bool bWeb) const -{ - SwModule* pNonConstModule = (SwModule*)this; - if(bWeb && !pWebUsrPref) - { - // The SpellChecker is needed in SwMasterUsrPref's Load, but it must not - // be created there #58256# - pNonConstModule->pWebUsrPref = new SwMasterUsrPref(sal_True); - } - else if(!bWeb && !pUsrPref) - { - pNonConstModule->pUsrPref = new SwMasterUsrPref(sal_False); - } - return bWeb ? pWebUsrPref : pUsrPref; -} - - - -void NewXForms( SfxRequest& rReq ) -{ - // copied & excerpted from SwModule::InsertLab(..) - - // create new document - SfxObjectShellLock xDocSh( new SwDocShell( SFX_CREATE_MODE_STANDARD) ); - xDocSh->DoInitNew( 0 ); - - // initialize XForms - static_cast<SwDocShell*>( &xDocSh )->GetDoc()->initXForms( true ); - - // load document into frame - SfxViewFrame::DisplayNewDocument( *xDocSh, rReq ); - - // set return value - rReq.SetReturnValue( SfxVoidItem( rReq.GetSlot() ) ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |