diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-09-09 11:06:55 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-09-09 16:25:06 +0100 |
commit | adb9b7c7cc37e768fc874a0dd584e6d76adbf62f (patch) | |
tree | 58b4c7cf7b482d3226effb7c7d57179a54a8e114 /uui | |
parent | df3a588d3b604c301bc222b4ac1bde7d1dd855d0 (diff) |
enable route to get ParentWindow from an existing UUIInteractionHelper
Change-Id: I550f99fa4a5db41cdad0b4d60ca02866835d7ae2
Diffstat (limited to 'uui')
-rw-r--r-- | uui/source/iahndl.hxx | 11 | ||||
-rw-r--r-- | 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<css::awt::XWindow> GetParentWindow() const { return m_xWindowParam; } + void SetParentWindow(css::uno::Reference<css::awt::XWindow>& 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 <osl/diagnose.h> #include <com/sun/star/awt/XWindow.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/lang/WrappedTargetRuntimeException.hpp> #include <com/sun/star/lang/XInitialization.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> @@ -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<css::lang::XServiceInfo, + css::lang::XInitialization, + css::task::XInteractionHandler2, + css::beans::XPropertySet> { private: std::unique_ptr<UUIInteractionHelper> 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<css::awt::XWindow> 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( |