Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*
3 : : * This file is part of the LibreOffice project.
4 : : *
5 : : * This Source Code Form is subject to the terms of the Mozilla Public
6 : : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : : *
9 : : * This file incorporates work covered by the following license notice:
10 : : *
11 : : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : : * contributor license agreements. See the NOTICE file distributed
13 : : * with this work for additional information regarding copyright
14 : : * ownership. The ASF licenses this file to you under the Apache
15 : : * License, Version 2.0 (the "License"); you may not use this file
16 : : * except in compliance with the License. You may obtain a copy of
17 : : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : : */
19 : :
20 : : #ifndef _SBA_MULTIPLEX_HXX
21 : : #define _SBA_MULTIPLEX_HXX
22 : :
23 : : #include <com/sun/star/beans/XVetoableChangeListener.hpp>
24 : : #include <com/sun/star/form/XUpdateListener.hpp>
25 : : #include <com/sun/star/form/XErrorListener.hpp>
26 : : #include <com/sun/star/form/XRestoreListener.hpp>
27 : : #include <com/sun/star/form/XInsertListener.hpp>
28 : : #include <com/sun/star/form/XDeleteListener.hpp>
29 : : #include <com/sun/star/form/XPositioningListener.hpp>
30 : : #include <com/sun/star/form/XDatabaseParameterListener.hpp>
31 : : #include <com/sun/star/form/XLoadListener.hpp>
32 : : #include <com/sun/star/beans/XPropertyStateChangeListener.hpp>
33 : : #include <com/sun/star/beans/XPropertiesChangeListener.hpp>
34 : : #include <com/sun/star/beans/XPropertyChangeListener.hpp>
35 : : #include <com/sun/star/form/XSubmitListener.hpp>
36 : : #include <com/sun/star/form/XResetListener.hpp>
37 : : #include <com/sun/star/util/XRefreshListener.hpp>
38 : : #include <com/sun/star/sdb/XSQLErrorListener.hpp>
39 : : #include <com/sun/star/sdb/XRowSetApproveListener.hpp>
40 : : #include <com/sun/star/sdbc/XRowSetListener.hpp>
41 : : #include <com/sun/star/frame/XStatusListener.hpp>
42 : : #include <comphelper/stl_types.hxx>
43 : : #include <comphelper/uno3.hxx>
44 : : #include <cppuhelper/interfacecontainer.hxx>
45 : : #include <cppuhelper/queryinterface.hxx>
46 : : #include <cppuhelper/weak.hxx>
47 : :
48 : : namespace dbaui
49 : : {
50 : : //------------------------------------------------------------------
51 : : // TODO : replace this class if MM provides an WeakSubObject in cppu
52 [ # # ]: 0 : class OSbaWeakSubObject : public ::cppu::OWeakObject
53 : : {
54 : : protected:
55 : : ::cppu::OWeakObject& m_rParent;
56 : :
57 : : public:
58 : 0 : OSbaWeakSubObject(::cppu::OWeakObject& rParent) : m_rParent(rParent) { }
59 : :
60 : 0 : virtual void SAL_CALL acquire() throw() { m_rParent.acquire(); }
61 : 0 : virtual void SAL_CALL release() throw() { m_rParent.release(); }
62 : : };
63 : :
64 : : //------------------------------------------------------------------
65 : : // declaration of a listener multiplexer class
66 : : #define BEGIN_DECLARE_LISTENER_MULTIPLEXER(classname, listenerclass) \
67 : : class classname \
68 : : :public OSbaWeakSubObject \
69 : : ,public listenerclass \
70 : : ,public ::cppu::OInterfaceContainerHelper \
71 : : { \
72 : : public: \
73 : : classname( ::cppu::OWeakObject& rSource, \
74 : : ::osl::Mutex& rMutex); \
75 : : DECLARE_UNO3_DEFAULTS(classname, OSbaWeakSubObject); \
76 : : virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( \
77 : : const ::com::sun::star::uno::Type& _rType) throw (::com::sun::star::uno::RuntimeException); \
78 : : \
79 : : /* ::com::sun::star::lang::XEventListener */ \
80 : : virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw(::com::sun::star::uno::RuntimeException); \
81 : :
82 : :
83 : : #define DECLARE_MULTIPLEXER_VOID_METHOD(methodname, eventtype) \
84 : : virtual void SAL_CALL methodname(const eventtype& e) throw (::com::sun::star::uno::RuntimeException); \
85 : :
86 : : #define DECLARE_MULTIPLEXER_BOOL_METHOD(methodname, eventtype) \
87 : : virtual sal_Bool SAL_CALL methodname(const eventtype& e) throw (::com::sun::star::uno::RuntimeException); \
88 : :
89 : :
90 : : #define END_DECLARE_LISTENER_MULTIPLEXER() \
91 : : /* resolve ambiguity : both OWeakObject and OInterfaceContainerHelper have these memory operators */ \
92 : : void * SAL_CALL operator new( size_t size ) throw() { return OSbaWeakSubObject::operator new(size); } \
93 : : void SAL_CALL operator delete( void * p ) throw() { OSbaWeakSubObject::operator delete(p); } \
94 : : }; \
95 : :
96 : : //------------------------------------------------------------------
97 : : // implementation of a listener multiplexer class
98 : :
99 : : #define IMPLEMENT_LISTENER_MULTIPLEXER_CORE(classname, listenerclass) \
100 : : \
101 : : /*................................................................*/ \
102 : : classname::classname(::cppu::OWeakObject& rSource, ::osl::Mutex& _rMutex) \
103 : : :OSbaWeakSubObject(rSource) \
104 : : ,OInterfaceContainerHelper(_rMutex) \
105 : : { \
106 : : } \
107 : : \
108 : : ::com::sun::star::uno::Any SAL_CALL classname::queryInterface( \
109 : : const ::com::sun::star::uno::Type& _rType) throw (::com::sun::star::uno::RuntimeException) \
110 : : { \
111 : : ::com::sun::star::uno::Any aReturn = \
112 : : OSbaWeakSubObject::queryInterface(_rType); \
113 : : if (!aReturn.hasValue()) \
114 : : aReturn = ::cppu::queryInterface(_rType, \
115 : : static_cast< listenerclass* >(this), \
116 : : static_cast< ::com::sun::star::lang::XEventListener* >(static_cast< listenerclass* >(this)) \
117 : : ); \
118 : : \
119 : : return aReturn; \
120 : : } \
121 : : /*................................................................*/ \
122 : : void SAL_CALL classname::disposing(const ::com::sun::star::lang::EventObject& ) throw(::com::sun::star::uno::RuntimeException)\
123 : : { \
124 : : } \
125 : :
126 : :
127 : : #define IMPLEMENT_LISTENER_MULTIPLEXER_VOID_METHOD(classname, listenerclass, methodname, eventtype) \
128 : : void SAL_CALL classname::methodname(const eventtype& e) throw (::com::sun::star::uno::RuntimeException) \
129 : : { \
130 : : eventtype aMulti(e); \
131 : : aMulti.Source = &m_rParent; \
132 : : ::cppu::OInterfaceIteratorHelper aIt(*this); \
133 : : while (aIt.hasMoreElements()) \
134 : : static_cast< listenerclass*>(aIt.next())->methodname(aMulti); \
135 : : } \
136 : :
137 : : #define IMPLEMENT_LISTENER_MULTIPLEXER_BOOL_METHOD(classname, listenerclass, methodname, eventtype) \
138 : : /*................................................................*/ \
139 : : sal_Bool SAL_CALL classname::methodname(const eventtype& e) throw (::com::sun::star::uno::RuntimeException) \
140 : : { \
141 : : eventtype aMulti(e); \
142 : : aMulti.Source = &m_rParent; \
143 : : ::cppu::OInterfaceIteratorHelper aIt(*this); \
144 : : sal_Bool bResult = sal_True; \
145 : : while (bResult && aIt.hasMoreElements()) \
146 : : bResult = static_cast< listenerclass*>(aIt.next())->methodname(aMulti); \
147 : : return bResult; \
148 : : } \
149 : :
150 : : //------------------------------------------------------------------
151 : : // helper for classes which do event multiplexing
152 : : #define IMPLEMENT_LISTENER_ADMINISTRATION(classname, listenernamespace, listenerdesc, multiplexer, braodcasterclass, broadcaster) \
153 : : /*................................................................*/ \
154 : : void SAL_CALL classname::add##listenerdesc(const ::com::sun::star::uno::Reference< ::com::sun::star::listenernamespace::X##listenerdesc >& l) throw(::com::sun::star::uno::RuntimeException)\
155 : : { \
156 : : multiplexer.addInterface(l); \
157 : : if (multiplexer.getLength() == 1) \
158 : : { \
159 : : ::com::sun::star::uno::Reference< braodcasterclass > xBroadcaster(broadcaster, ::com::sun::star::uno::UNO_QUERY); \
160 : : if (xBroadcaster.is()) \
161 : : xBroadcaster->add##listenerdesc(&multiplexer); \
162 : : } \
163 : : } \
164 : : /*................................................................*/ \
165 : : void SAL_CALL classname::remove##listenerdesc(const ::com::sun::star::uno::Reference< ::com::sun::star::listenernamespace::X##listenerdesc >& l) throw(::com::sun::star::uno::RuntimeException)\
166 : : { \
167 : : if (multiplexer.getLength() == 1) \
168 : : { \
169 : : ::com::sun::star::uno::Reference< braodcasterclass > xBroadcaster(broadcaster, ::com::sun::star::uno::UNO_QUERY); \
170 : : if (xBroadcaster.is()) \
171 : : xBroadcaster->remove##listenerdesc(&multiplexer); \
172 : : } \
173 : : multiplexer.removeInterface(l); \
174 : : } \
175 : :
176 : :
177 : : #define STOP_MULTIPLEXER_LISTENING(listenerdesc, multiplexer, braodcasterclass, broadcaster) \
178 : : if (multiplexer.getLength()) \
179 : : { \
180 : : ::com::sun::star::uno::Reference< braodcasterclass > xBroadcaster(broadcaster, ::com::sun::star::uno::UNO_QUERY); \
181 : : if (xBroadcaster.is()) \
182 : : xBroadcaster->remove##listenerdesc(&multiplexer); \
183 : : } \
184 : :
185 : : #define START_MULTIPLEXER_LISTENING(listenerdesc, multiplexer, braodcasterclass, broadcaster) \
186 : : if (multiplexer.getLength()) \
187 : : { \
188 : : ::com::sun::star::uno::Reference< braodcasterclass > xBroadcaster(broadcaster, ::com::sun::star::uno::UNO_QUERY); \
189 : : if (xBroadcaster.is()) \
190 : : xBroadcaster->add##listenerdesc(&multiplexer); \
191 : : } \
192 : :
193 : :
194 : :
195 : : //------------------------------------------------------------------
196 : : // declaration of property listener multiplexers
197 : : // (with support for specialized and unspecialized property listeners)
198 : :
199 : : #define DECLARE_PROPERTY_MULTIPLEXER(classname, listenerclass, methodname, eventtype, exceptions) \
200 : : class classname \
201 : : :public OSbaWeakSubObject \
202 : : ,public listenerclass \
203 : : { \
204 : : typedef ::cppu::OMultiTypeInterfaceContainerHelperVar< \
205 : : ::rtl::OUString, ::rtl::OUStringHash, ::comphelper::UStringEqual > ListenerContainerMap; \
206 : : ListenerContainerMap m_aListeners; \
207 : : \
208 : : public: \
209 : : classname( ::cppu::OWeakObject& rSource, ::osl::Mutex& rMutex ); \
210 : : DECLARE_UNO3_DEFAULTS(classname, OSbaWeakSubObject); \
211 : : virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( \
212 : : const ::com::sun::star::uno::Type& _rType) throw (::com::sun::star::uno::RuntimeException); \
213 : : \
214 : : /* ::com::sun::star::lang::XEventListener */ \
215 : : virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw(::com::sun::star::uno::RuntimeException); \
216 : : \
217 : : virtual void SAL_CALL methodname(const eventtype& e) throw exceptions; \
218 : : \
219 : : public: \
220 : : void addInterface(const ::rtl::OUString& rName, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rListener); \
221 : : void removeInterface(const ::rtl::OUString& rName, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rListener); \
222 : : \
223 : : void disposeAndClear(); \
224 : : \
225 : : sal_Int32 getOverallLen() const; \
226 : : \
227 : : ::cppu::OInterfaceContainerHelper* getContainer(const ::rtl::OUString& rName) \
228 : : { return m_aListeners.getContainer(rName); } \
229 : : \
230 : : protected: \
231 : : void Notify(::cppu::OInterfaceContainerHelper& rListeners, const eventtype& e); \
232 : : }; \
233 : :
234 : :
235 : : //------------------------------------------------------------------
236 : : // implementation of property listener multiplexers
237 : : #define IMPLEMENT_PROPERTY_MULTIPLEXER(classname, listenerclass, methodname, eventtype, exceptions) \
238 : : /*................................................................*/ \
239 : : classname::classname(::cppu::OWeakObject& rSource, ::osl::Mutex& rMutex) \
240 : : :OSbaWeakSubObject(rSource) \
241 : : ,m_aListeners(rMutex) \
242 : : { \
243 : : } \
244 : : \
245 : : ::com::sun::star::uno::Any SAL_CALL classname::queryInterface( \
246 : : const ::com::sun::star::uno::Type& _rType) throw (::com::sun::star::uno::RuntimeException) \
247 : : { \
248 : : ::com::sun::star::uno::Any aReturn = \
249 : : OSbaWeakSubObject::queryInterface(_rType); \
250 : : if (!aReturn.hasValue()) \
251 : : aReturn = ::cppu::queryInterface(_rType, \
252 : : static_cast< listenerclass* >(this), \
253 : : static_cast< ::com::sun::star::lang::XEventListener* >(static_cast< listenerclass* >(this)) \
254 : : ); \
255 : : \
256 : : return aReturn; \
257 : : } \
258 : : /*................................................................*/ \
259 : : void SAL_CALL classname::disposing(const ::com::sun::star::lang::EventObject& ) throw(::com::sun::star::uno::RuntimeException)\
260 : : { \
261 : : } \
262 : : \
263 : : void SAL_CALL classname::methodname(const eventtype& e) throw exceptions \
264 : : { \
265 : : ::cppu::OInterfaceContainerHelper* pListeners = m_aListeners.getContainer(e.PropertyName); \
266 : : if (pListeners) \
267 : : Notify(*pListeners, e); \
268 : : \
269 : : /* do the notification for the unspecialized listeners, too */ \
270 : : pListeners = m_aListeners.getContainer(::rtl::OUString()); \
271 : : if (pListeners) \
272 : : Notify(*pListeners, e); \
273 : : } \
274 : : \
275 : : void classname::addInterface(const ::rtl::OUString& rName, \
276 : : const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & rListener) \
277 : : { \
278 : : m_aListeners.addInterface(rName, rListener); \
279 : : } \
280 : : \
281 : : void classname::removeInterface(const ::rtl::OUString& rName, \
282 : : const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & rListener) \
283 : : { \
284 : : m_aListeners.removeInterface(rName, rListener); \
285 : : } \
286 : : \
287 : : void classname::disposeAndClear() \
288 : : { \
289 : : ::com::sun::star::lang::EventObject aEvt(m_rParent); \
290 : : m_aListeners.disposeAndClear(aEvt); \
291 : : } \
292 : : \
293 : : sal_Int32 classname::getOverallLen() const \
294 : : { \
295 : : sal_Int32 nLen = 0; \
296 : : ::com::sun::star::uno::Sequence< ::rtl::OUString > aContained = m_aListeners.getContainedTypes(); \
297 : : const ::rtl::OUString* pContained = aContained.getConstArray(); \
298 : : for ( sal_Int32 i=0; i<aContained.getLength(); ++i, ++pContained) \
299 : : nLen += m_aListeners.getContainer(*pContained)->getLength(); \
300 : : return nLen; \
301 : : } \
302 : : \
303 : : void classname::Notify(::cppu::OInterfaceContainerHelper& rListeners, const eventtype& e) \
304 : : { \
305 : : eventtype aMulti(e); \
306 : : aMulti.Source = &m_rParent; \
307 : : ::cppu::OInterfaceIteratorHelper aIt(rListeners); \
308 : : while (aIt.hasMoreElements()) \
309 : : static_cast< listenerclass*>(aIt.next())->methodname(aMulti); \
310 : : } \
311 : :
312 : : //------------------------------------------------------------------
313 : : // helper for classes which do property event multiplexing
314 : : #define IMPLEMENT_PROPERTY_LISTENER_ADMINISTRATION(classname, listenerdesc, multiplexer, braodcasterclass, broadcaster) \
315 : : /*................................................................*/ \
316 : : void SAL_CALL classname::add##listenerdesc(const ::rtl::OUString& rName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::X##listenerdesc >& l ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException)\
317 : : { \
318 : : multiplexer.addInterface(rName, l); \
319 : : if (multiplexer.getOverallLen() == 1) \
320 : : { \
321 : : ::com::sun::star::uno::Reference< braodcasterclass > xBroadcaster(broadcaster, ::com::sun::star::uno::UNO_QUERY); \
322 : : if (xBroadcaster.is()) \
323 : : xBroadcaster->add##listenerdesc(::rtl::OUString(), &multiplexer); \
324 : : } \
325 : : } \
326 : : /*................................................................*/ \
327 : : void SAL_CALL classname::remove##listenerdesc(const ::rtl::OUString& rName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::X##listenerdesc >& l ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException)\
328 : : { \
329 : : if (multiplexer.getOverallLen() == 1) \
330 : : { \
331 : : ::com::sun::star::uno::Reference< braodcasterclass > xBroadcaster(broadcaster, ::com::sun::star::uno::UNO_QUERY); \
332 : : if (xBroadcaster.is()) \
333 : : xBroadcaster->remove##listenerdesc(::rtl::OUString(), &multiplexer); \
334 : : } \
335 : : multiplexer.removeInterface(rName, l); \
336 : : } \
337 : :
338 : : #define STOP_PROPERTY_MULTIPLEXER_LISTENING(listenerdesc, multiplexer, braodcasterclass, broadcaster) \
339 : : if (multiplexer.getOverallLen()) \
340 : : { \
341 : : ::com::sun::star::uno::Reference< braodcasterclass > xBroadcaster(broadcaster, ::com::sun::star::uno::UNO_QUERY); \
342 : : if (xBroadcaster.is()) \
343 : : xBroadcaster->remove##listenerdesc(::rtl::OUString(), &multiplexer); \
344 : : } \
345 : :
346 : : #define START_PROPERTY_MULTIPLEXER_LISTENING(listenerdesc, multiplexer, braodcasterclass, broadcaster) \
347 : : if (multiplexer.getOverallLen()) \
348 : : { \
349 : : ::com::sun::star::uno::Reference< braodcasterclass > xBroadcaster(broadcaster, ::com::sun::star::uno::UNO_QUERY); \
350 : : if (xBroadcaster.is()) \
351 : : xBroadcaster->add##listenerdesc(::rtl::OUString(), &multiplexer); \
352 : : } \
353 : :
354 : :
355 : :
356 : : //==================================================================
357 : : // some listener multiplexers
358 : : //==================================================================
359 : : // ::com::sun::star::frame::XStatusListener
360 [ # # ][ # # ]: 0 : BEGIN_DECLARE_LISTENER_MULTIPLEXER(SbaXStatusMultiplexer, ::com::sun::star::frame::XStatusListener)
[ # # ]
361 : : DECLARE_MULTIPLEXER_VOID_METHOD(statusChanged, ::com::sun::star::frame::FeatureStateEvent)
362 : :
363 : : private:
364 : : ::com::sun::star::frame::FeatureStateEvent m_aLastKnownStatus;
365 : : public: \
366 : 0 : inline ::com::sun::star::frame::FeatureStateEvent getLastEvent( ) const { return m_aLastKnownStatus; }
367 : 0 : END_DECLARE_LISTENER_MULTIPLEXER()
368 : :
369 : : // ::com::sun::star::form::XLoadListener
370 [ # # ][ # # ]: 0 : BEGIN_DECLARE_LISTENER_MULTIPLEXER(SbaXLoadMultiplexer, ::com::sun::star::form::XLoadListener)
371 : : DECLARE_MULTIPLEXER_VOID_METHOD(loaded, ::com::sun::star::lang::EventObject)
372 : : DECLARE_MULTIPLEXER_VOID_METHOD(unloaded, ::com::sun::star::lang::EventObject)
373 : : DECLARE_MULTIPLEXER_VOID_METHOD(unloading, ::com::sun::star::lang::EventObject)
374 : : DECLARE_MULTIPLEXER_VOID_METHOD(reloading, ::com::sun::star::lang::EventObject)
375 : : DECLARE_MULTIPLEXER_VOID_METHOD(reloaded, ::com::sun::star::lang::EventObject)
376 : 0 : END_DECLARE_LISTENER_MULTIPLEXER()
377 : :
378 : : // ::com::sun::star::form::XDatabaseParameterListener
379 [ # # ][ # # ]: 0 : BEGIN_DECLARE_LISTENER_MULTIPLEXER(SbaXParameterMultiplexer, ::com::sun::star::form::XDatabaseParameterListener)
380 : : DECLARE_MULTIPLEXER_BOOL_METHOD(approveParameter, ::com::sun::star::form::DatabaseParameterEvent)
381 : 0 : END_DECLARE_LISTENER_MULTIPLEXER()
382 : :
383 : : // ::com::sun::star::form::XSubmitListener
384 [ # # ][ # # ]: 0 : BEGIN_DECLARE_LISTENER_MULTIPLEXER(SbaXSubmitMultiplexer, ::com::sun::star::form::XSubmitListener)
385 : : DECLARE_MULTIPLEXER_BOOL_METHOD(approveSubmit, ::com::sun::star::lang::EventObject)
386 : 0 : END_DECLARE_LISTENER_MULTIPLEXER()
387 : :
388 : : // ::com::sun::star::form::XResetListener
389 [ # # ][ # # ]: 0 : BEGIN_DECLARE_LISTENER_MULTIPLEXER(SbaXResetMultiplexer, ::com::sun::star::form::XResetListener)
390 : : DECLARE_MULTIPLEXER_BOOL_METHOD(approveReset, ::com::sun::star::lang::EventObject)
391 : : DECLARE_MULTIPLEXER_VOID_METHOD(resetted, ::com::sun::star::lang::EventObject)
392 : 0 : END_DECLARE_LISTENER_MULTIPLEXER()
393 : :
394 : : // ::com::sun::star::sdbc::XRowSetListener
395 [ # # ][ # # ]: 0 : BEGIN_DECLARE_LISTENER_MULTIPLEXER(SbaXRowSetMultiplexer, ::com::sun::star::sdbc::XRowSetListener)
396 : : DECLARE_MULTIPLEXER_VOID_METHOD(cursorMoved, ::com::sun::star::lang::EventObject)
397 : : DECLARE_MULTIPLEXER_VOID_METHOD(rowChanged, ::com::sun::star::lang::EventObject)
398 : : DECLARE_MULTIPLEXER_VOID_METHOD(rowSetChanged, ::com::sun::star::lang::EventObject)
399 : 0 : END_DECLARE_LISTENER_MULTIPLEXER()
400 : :
401 : : // ::com::sun::star::sdb::XRowSetApproveListener
402 [ # # ][ # # ]: 0 : BEGIN_DECLARE_LISTENER_MULTIPLEXER(SbaXRowSetApproveMultiplexer, ::com::sun::star::sdb::XRowSetApproveListener)
403 : : DECLARE_MULTIPLEXER_BOOL_METHOD(approveCursorMove, ::com::sun::star::lang::EventObject)
404 : : DECLARE_MULTIPLEXER_BOOL_METHOD(approveRowChange, ::com::sun::star::sdb::RowChangeEvent)
405 : : DECLARE_MULTIPLEXER_BOOL_METHOD(approveRowSetChange, ::com::sun::star::lang::EventObject)
406 : 0 : END_DECLARE_LISTENER_MULTIPLEXER()
407 : :
408 : : // ::com::sun::star::sdb::XSQLErrorListener
409 [ # # ][ # # ]: 0 : BEGIN_DECLARE_LISTENER_MULTIPLEXER(SbaXSQLErrorMultiplexer, ::com::sun::star::sdb::XSQLErrorListener)
410 : : DECLARE_MULTIPLEXER_VOID_METHOD(errorOccured, ::com::sun::star::sdb::SQLErrorEvent)
411 : 0 : END_DECLARE_LISTENER_MULTIPLEXER()
412 : :
413 : : // ::com::sun::star::beans::XPropertyChangeListener
414 [ # # ][ # # ]: 0 : DECLARE_PROPERTY_MULTIPLEXER(SbaXPropertyChangeMultiplexer, ::com::sun::star::beans::XPropertyChangeListener, propertyChange, ::com::sun::star::beans::PropertyChangeEvent, (::com::sun::star::uno::RuntimeException))
415 : :
416 : : // ::com::sun::star::beans::XVetoableChangeListener
417 [ # # ][ # # ]: 0 : DECLARE_PROPERTY_MULTIPLEXER(SbaXVetoableChangeMultiplexer, ::com::sun::star::beans::XVetoableChangeListener, vetoableChange, ::com::sun::star::beans::PropertyChangeEvent, (::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException))
418 : :
419 : : // ::com::sun::star::beans::XPropertiesChangeListener
420 [ # # ][ # # ]: 0 : BEGIN_DECLARE_LISTENER_MULTIPLEXER(SbaXPropertiesChangeMultiplexer, ::com::sun::star::beans::XPropertiesChangeListener)
421 : : DECLARE_MULTIPLEXER_VOID_METHOD(propertiesChange, ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyChangeEvent >)
422 : 0 : END_DECLARE_LISTENER_MULTIPLEXER()
423 : : // the SbaXPropertiesChangeMultiplexer doesn't care about the property names a listener logs on for, it simply
424 : : // forwards _all_ changes to _all_ listeners
425 : : }
426 : :
427 : : #endif // _SBA_MULTIPLEXER_HXX
428 : :
429 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|