Tag: cws_src680_dba24 User: oj Date: 05/02/10 03:27:46 Modified: /dba/dbaccess/source/filter/xml/ dbloader2.cxx
Log: #i42316# check if model is already set in the mediadescriptor File Changes: Directory: /dba/dbaccess/source/filter/xml/ =========================================== File [changed]: dbloader2.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/filter/xml/dbloader2.cxx?r1=1.5&r2=1.5.18.1 Delta lines: +45 -31 --------------------- --- dbloader2.cxx 5 Jan 2005 12:30:04 -0000 1.5 +++ dbloader2.cxx 10 Feb 2005 11:27:43 -0000 1.5.18.1 @@ -86,6 +86,9 @@ #ifndef _COM_SUN_STAR_FRAME_XFRAMELOADER_HPP_ #include <com/sun/star/frame/XFrameLoader.hpp> #endif +#ifndef _COM_SUN_STAR_DOCUMENT_XEVENTLISTENER_HPP_ +#include <com/sun/star/document/XEventListener.hpp> +#endif #ifndef _COM_SUN_STAR_FRAME_XLOADEVENTLISTENER_HPP_ #include <com/sun/star/frame/XLoadEventListener.hpp> #endif @@ -354,33 +357,30 @@ { // first check if preview is true, if so return with out creating a controller. Preview is not supported - const PropertyValue* pIter = rArgs.getConstArray(); - const PropertyValue* pEnd = pIter + rArgs.getLength(); - - for ( ; pIter != pEnd; ++pIter ) - { - if ( ( 0 == pIter->Name.compareToAscii( "Preview" ) ) ) - { - sal_Bool bPreview = sal_False; - pIter->Value >>= bPreview; + ::comphelper::SequenceAsHashMap lDescriptor(rArgs); + sal_Bool bPreview = lDescriptor.getUnpackedValueOrDefault(INFO_PREVIEW , sal_False ); if ( bPreview ) { if (rListener.is()) rListener->loadCancelled(this); return; } - } - } + Reference< XModel > xModel = lDescriptor.getUnpackedValueOrDefault(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Model")), Reference< XModel >()); m_xFrame = rFrame; m_xListener = rListener; m_aURL = rURL; m_aArgs = rArgs; - Reference< XSingleServiceFactory > xDatabaseContext(m_xServiceFactory->createInstance(SERVICE_SDB_DATABASECONTEXT), UNO_QUERY); - Reference<XComponent> xComponent; sal_Bool bCreateNew = sal_False; sal_Bool bInteractive = sal_False; + /* special mode: use already loaded model ... + In such case no filter name will be selected and no URL will be given! + Such informations are not neccessary. We have to create a new view only + and call setComponent() at the corresponding frame. */ + if ( !xModel.is() ) + { + Reference< XSingleServiceFactory > xDatabaseContext(m_xServiceFactory->createInstance(SERVICE_SDB_DATABASECONTEXT), UNO_QUERY); if ( xDatabaseContext.is() ) { bCreateNew = rURL.match(SvtModuleOptions().GetFactoryEmptyDocumentURL(SvtModuleOptions::E_DATABASE)); @@ -392,12 +392,11 @@ } else bInteractive = rURL.match(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("?Interactive")), SvtModuleOptions().GetFactoryEmptyDocumentURL(SvtModuleOptions::E_DATABASE).getLength() ); - xComponent.set(xDatabaseContext->createInstanceWithArguments(aCreationArgs),UNO_QUERY); + xModel.set(xDatabaseContext->createInstanceWithArguments(aCreationArgs),UNO_QUERY); + } } - sal_Bool bSuccess = sal_True; - Reference<XModel> xModel(xComponent,UNO_QUERY); if ( !bCreateNew && xModel.is() && !xModel->getURL().getLength() ) { try @@ -460,6 +459,21 @@ { if ( xController.is() && rFrame.is() ) xController->attachFrame(rFrame); + + try + { + Reference< ::com::sun::star::document::XEventListener > xDocEventBroadcaster(m_xServiceFactory->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.frame.GlobalEventBroadcaster"))), + UNO_QUERY); + if ( xDocEventBroadcaster.is() ) + { + ::com::sun::star::document::EventObject aEvent(xModel, bCreateNew ? ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("OnNew")) : ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("OnLoad"))); + xDocEventBroadcaster->notifyEvent(aEvent); + } + } + catch(Exception) + { + OSL_ENSURE(0,"Could not create GlobalEventBroadcaster!"); + } rListener->loadFinished(this); } else if (!bSuccess && rListener.is()) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
