From adb9b7c7cc37e768fc874a0dd584e6d76adbf62f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= Date: Mon, 9 Sep 2019 11:06:55 +0100 Subject: [PATCH] enable route to get ParentWindow from an existing UUIInteractionHelper Change-Id: I550f99fa4a5db41cdad0b4d60ca02866835d7ae2 --- uui/source/iahndl.hxx | 11 +++--- uui/source/interactionhandler.cxx | 60 +++++++++++++++++++++++++++++-- 2 files changed, 64 insertions(+), 7 deletions(-) diff --git a/uui/source/iahndl.hxx b/uui/source/iahndl.hxx index 4feb98d3fa5d..f2c9461f6bbe 100644 --- a/uui/source/iahndl.hxx +++ b/uui/source/iahndl.hxx @@ -74,10 +74,10 @@ typedef std::unordered_map< OUString, OUString > StringHashMap; class UUIInteractionHelper { private: - css::uno::Reference< css::uno::XComponentContext > m_xContext; - css::uno::Reference< css::awt::XWindow > m_xWindowParam; - const OUString m_aContextParam; - StringHashMap m_aTypedCustomHandlers; + css::uno::Reference< css::uno::XComponentContext > m_xContext; + css::uno::Reference< css::awt::XWindow > m_xWindowParam; + const OUString m_aContextParam; + StringHashMap m_aTypedCustomHandlers; UUIInteractionHelper(UUIInteractionHelper const &) = delete; UUIInteractionHelper& operator =(UUIInteractionHelper const &) = delete; @@ -89,6 +89,9 @@ public: explicit UUIInteractionHelper( css::uno::Reference< css::uno::XComponentContext > const & rxContext); + css::uno::Reference GetParentWindow() const { return m_xWindowParam; } + void SetParentWindow(css::uno::Reference& rWindow) { m_xWindowParam = rWindow; } + ~UUIInteractionHelper(); bool handleRequest( css::uno::Reference< css::task::XInteractionRequest > const & rRequest); diff --git a/uui/source/interactionhandler.cxx b/uui/source/interactionhandler.cxx index df06d4ea1d0e..1d587988478f 100644 --- a/uui/source/interactionhandler.cxx +++ b/uui/source/interactionhandler.cxx @@ -22,6 +22,7 @@ #include #include +#include #include #include #include @@ -38,9 +39,10 @@ using namespace com::sun::star; namespace { class UUIInteractionHandler: - public cppu::WeakImplHelper< css::lang::XServiceInfo, - css::lang::XInitialization, - css::task::XInteractionHandler2 > + public cppu::WeakImplHelper { private: std::unique_ptr m_pImpl; @@ -69,6 +71,58 @@ public: handleInteractionRequest( const css::uno::Reference< css::task::XInteractionRequest >& Request ) override; + + virtual void SAL_CALL + addPropertyChangeListener( const OUString& /*aPropertyName*/, const css::uno::Reference< css::beans::XPropertyChangeListener >& /*xListener*/ ) override + { + assert(false); + } + + virtual void SAL_CALL + removePropertyChangeListener( const OUString& /*aPropertyName*/, const css::uno::Reference< css::beans::XPropertyChangeListener >& /*xListener*/ ) override + { + assert(false); + } + + virtual void SAL_CALL + addVetoableChangeListener( const OUString& /*aPropertyName*/, const css::uno::Reference< css::beans::XVetoableChangeListener >& /*xListener*/ ) override + { + assert(false); + } + + virtual void SAL_CALL + removeVetoableChangeListener( const OUString& /*aPropertyName*/, const css::uno::Reference< css::beans::XVetoableChangeListener >& /*xListener*/ ) override + { + assert(false); + } + + virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL + getPropertySetInfo() override + { + assert(false); + return nullptr; + } + + virtual void SAL_CALL setPropertyValue(const OUString& rPropertyName, const css::uno::Any& rValue) override + { + if (rPropertyName == "ParentWindow") + { + css::uno::Reference xWindow; + rValue >>= xWindow; + m_pImpl->SetParentWindow(xWindow); + return; + } + throw css::beans::UnknownPropertyException(); + } + + virtual css::uno::Any SAL_CALL getPropertyValue(const OUString& rPropertyName) override + { + if (rPropertyName == "ParentWindow") + { + return uno::Any(m_pImpl->GetParentWindow()); + } + throw css::beans::UnknownPropertyException(); + } }; UUIInteractionHandler::UUIInteractionHandler(