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]

Reply via email to