diff options
-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( |