summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--uui/source/iahndl.hxx11
-rw-r--r--uui/source/interactionhandler.cxx60
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(