diff options
author | Frank Schoenheit [fs] <frank.schoenheit@sun.com> | 2010-02-03 11:46:23 +0100 |
---|---|---|
committer | Frank Schoenheit [fs] <frank.schoenheit@sun.com> | 2010-02-03 11:46:23 +0100 |
commit | 28b38d73e582a9909be16101ec0bb93a41b86f13 (patch) | |
tree | dd8b483d283153440716f8f36332f6c35dcd0d43 /dbaccess | |
parent | aefb13e5d8ffb2835936a2af848005cfb6fe5b9a (diff) |
autorecovery: when calling a pilot to create a database object, pass the XDatabaseDocumentUI, too
Diffstat (limited to 'dbaccess')
-rw-r--r-- | dbaccess/source/ui/app/AppControllerDnD.cxx | 2 | ||||
-rw-r--r-- | dbaccess/source/ui/inc/linkeddocuments.hxx | 19 | ||||
-rw-r--r-- | dbaccess/source/ui/misc/linkeddocuments.cxx | 65 |
3 files changed, 42 insertions, 44 deletions
diff --git a/dbaccess/source/ui/app/AppControllerDnD.cxx b/dbaccess/source/ui/app/AppControllerDnD.cxx index ed8c5a15dd89..0e8b3c8d647c 100644 --- a/dbaccess/source/ui/app/AppControllerDnD.cxx +++ b/dbaccess/source/ui/app/AppControllerDnD.cxx @@ -613,7 +613,7 @@ void OApplicationController::getSelectionElementNames(::std::vector< ::rtl::OUSt } ::std::auto_ptr< OLinkedDocumentsAccess > pDocuments( new OLinkedDocumentsAccess( - getView(), m_aCurrentFrame.getFrame(), getORB(), xDocContainer, xConnection, getDatabaseName() + getView(), this, getORB(), xDocContainer, xConnection, getDatabaseName() ) ); return pDocuments; } diff --git a/dbaccess/source/ui/inc/linkeddocuments.hxx b/dbaccess/source/ui/inc/linkeddocuments.hxx index e7030312cde6..b91aca78fff2 100644 --- a/dbaccess/source/ui/inc/linkeddocuments.hxx +++ b/dbaccess/source/ui/inc/linkeddocuments.hxx @@ -55,6 +55,7 @@ #ifndef _COM_SUN_STAR_UCB_XCONTENT_HPP_ #include <com/sun/star/ucb/XContent.hpp> #endif +#include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp> #ifndef _LINK_HXX #include <tools/link.hxx> #endif @@ -83,8 +84,8 @@ namespace dbaui m_xDocumentContainer; ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection> m_xConnection; - ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > - m_xParentFrame; + ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI > + m_xDocumentUI; Window* m_pDialogParent; String m_sCurrentlyEditing; ::rtl::OUString @@ -92,13 +93,13 @@ namespace dbaui public: OLinkedDocumentsAccess( - Window* _pDialogParent - ,const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxParentFrame - ,const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB - ,const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _rxContainer - ,const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection - ,const ::rtl::OUString& _sDataSourceName - ); + Window* _pDialogParent, + const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >& i_rDocumentUI, + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB, + const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _rxContainer, + const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection, + const ::rtl::OUString& _sDataSourceName + ); ~OLinkedDocumentsAccess(); inline sal_Bool isConnected() const { return m_xConnection.is(); } diff --git a/dbaccess/source/ui/misc/linkeddocuments.cxx b/dbaccess/source/ui/misc/linkeddocuments.cxx index 9cb8f5b1745f..9dc35a684041 100644 --- a/dbaccess/source/ui/misc/linkeddocuments.cxx +++ b/dbaccess/source/ui/misc/linkeddocuments.cxx @@ -155,6 +155,7 @@ namespace dbaui using namespace ::com::sun::star::util; using namespace ::com::sun::star::ucb; using namespace ::com::sun::star::sdbc; + using namespace ::com::sun::star::sdb::application; using namespace ::com::sun::star::task; using namespace ::svt; @@ -192,17 +193,13 @@ namespace dbaui //================================================================== DBG_NAME(OLinkedDocumentsAccess) //------------------------------------------------------------------ - OLinkedDocumentsAccess::OLinkedDocumentsAccess(Window* _pDialogParent - , const Reference< XFrame >& _rxParentFrame - , const Reference< XMultiServiceFactory >& _rxORB - , const Reference< XNameAccess >& _rxContainer - , const Reference< XConnection>& _xConnection - , const ::rtl::OUString& _sDataSourceName - ) + OLinkedDocumentsAccess::OLinkedDocumentsAccess( Window* _pDialogParent, const Reference< XDatabaseDocumentUI >& i_rDocumentUI, + const Reference< XMultiServiceFactory >& _rxORB, const Reference< XNameAccess >& _rxContainer, + const Reference< XConnection>& _xConnection, const ::rtl::OUString& _sDataSourceName ) :m_xORB(_rxORB) ,m_xDocumentContainer(_rxContainer) ,m_xConnection(_xConnection) - ,m_xParentFrame(_rxParentFrame) + ,m_xDocumentUI( i_rDocumentUI ) ,m_pDialogParent(_pDialogParent) ,m_sDataSourceName(_sDataSourceName) { @@ -277,44 +274,44 @@ namespace dbaui Reference< XComponent> xRet; try { - ::svx::ODataAccessDescriptor aDesc; - aDesc.setDataSource(m_sDataSourceName); + ::comphelper::NamedValueCollection aArgs; + aArgs.put( "DataSourceName", m_sDataSourceName ); + if ( _rObjectName.getLength() && ( _nCommandType != -1 ) ) { - aDesc[::svx::daCommandType] <<= _nCommandType; - aDesc[::svx::daCommand] <<= _rObjectName; + aArgs.put( "CommandType", _nCommandType ); + aArgs.put( "Command", _rObjectName ); } if ( m_xConnection.is() ) - aDesc[::svx::daConnection] <<= m_xConnection; + aArgs.put( "ActiveConnection", m_xConnection ); + + aArgs.put( "DocumentUI", m_xDocumentUI ); - Sequence<Any> aSeq = aDesc.createAnySequence(); - const sal_Int32 nLength = aSeq.getLength(); - aSeq.realloc(nLength + 1 ); - PropertyValue aVal; - aVal.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ParentFrame")); - aVal.Value <<= m_xParentFrame; - aSeq[nLength] <<= aVal; + Reference< XController > xController( m_xDocumentUI, UNO_QUERY_THROW ); + aArgs.put( "ParentFrame", xController->getFrame() ); + // (legacy, 'til not all wizards migrated to the DocumentUI parameter) - Reference< XJobExecutor > xFormWizard; + Reference< XJobExecutor > xWizard; { WaitObject aWaitCursor( m_pDialogParent ); - xFormWizard.set(m_xORB->createInstanceWithArguments(::rtl::OUString::createFromAscii(_pWizardService),aSeq),UNO_QUERY); + xWizard.set( m_xORB->createInstanceWithArguments( + ::rtl::OUString::createFromAscii(_pWizardService), + aArgs.getWrappedPropertyValues() + ), UNO_QUERY ); } - if ( xFormWizard.is() ) + + if ( xWizard.is() ) { - xFormWizard->trigger(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("start"))); - Reference<XPropertySet> xProp(xFormWizard,UNO_QUERY); - if ( xProp.is() ) + xWizard->trigger(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("start"))); + Reference<XPropertySet> xProp( xWizard, UNO_QUERY_THROW ); + Reference<XPropertySetInfo> xInfo( xProp->getPropertySetInfo(), UNO_SET_THROW ); + if ( xInfo->hasPropertyByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Document"))) ) { - Reference<XPropertySetInfo> xInfo = xProp->getPropertySetInfo(); - if ( xInfo->hasPropertyByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Document"))) ) - { - _xDefinition.set(xProp->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DocumentDefinition"))),UNO_QUERY); - xRet.set(xProp->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Document"))),UNO_QUERY); - } + _xDefinition.set(xProp->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DocumentDefinition"))),UNO_QUERY); + xRet.set(xProp->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Document"))),UNO_QUERY); } - xFormWizard->trigger(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("end"))); - ::comphelper::disposeComponent(xFormWizard); + xWizard->trigger(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("end"))); + ::comphelper::disposeComponent(xWizard); } } catch(const Exception& e) |