summaryrefslogtreecommitdiff
path: root/dbaccess
diff options
context:
space:
mode:
authorFrank Schoenheit [fs] <frank.schoenheit@sun.com>2010-02-03 11:46:23 +0100
committerFrank Schoenheit [fs] <frank.schoenheit@sun.com>2010-02-03 11:46:23 +0100
commit28b38d73e582a9909be16101ec0bb93a41b86f13 (patch)
treedd8b483d283153440716f8f36332f6c35dcd0d43 /dbaccess
parentaefb13e5d8ffb2835936a2af848005cfb6fe5b9a (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.cxx2
-rw-r--r--dbaccess/source/ui/inc/linkeddocuments.hxx19
-rw-r--r--dbaccess/source/ui/misc/linkeddocuments.cxx65
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)