This abstract class maps the methods of the interfaces XMultiPropertySet, XFastPropertySet and XPropertySet to the methods getInfoHelper, convertFastPropertyValue, setFastPropertyValue_NoBroadcast and getFastPropertyValue.
More...
Public Member Functions |
| OPropertySetHelper (OBroadcastHelper &rBHelper) throw () |
| OPropertySetHelper (OBroadcastHelper &rBHelper, bool bIgnoreRuntimeExceptionsWhileFiring) |
| Constructor.
|
| OPropertySetHelper (OBroadcastHelper &rBHelper, IEventNotificationHook *i_pFireEvents, bool bIgnoreRuntimeExceptionsWhileFiring=false) |
| Constructor.
|
virtual ::com::sun::star::uno::Any | queryInterface (const ::com::sun::star::uno::Type &rType) throw (::com::sun::star::uno::RuntimeException) |
| Only returns a reference to XMultiPropertySet, XFastPropertySet, XPropertySet and XEventListener.
|
::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type > | getTypes () throw (::com::sun::star::uno::RuntimeException) |
| eases implementing XTypeProvider::getTypes, returns the types of XMultiPropertySet, XFastPropertySet, XPropertySet
|
void | disposing () throw () |
| Send a disposing notification to the listeners in the conatiners aBoundLC and aVetoableLC.
|
virtual void | setPropertyValue (const ::rtl::OUString &rPropertyName, const ::com::sun::star::uno::Any &aValue) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) |
| Throw UnknownPropertyException or PropertyVetoException if the property with the name rPropertyName does not exist or is readonly.
|
virtual ::com::sun::star::uno::Any | getPropertyValue (const ::rtl::OUString &aPropertyName) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) |
| Throw UnknownPropertyException if the property with the name rPropertyName does not exist.
|
virtual void | addPropertyChangeListener (const ::rtl::OUString &aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > &aListener) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) |
| Ignored if the property is not bound.
|
virtual void | removePropertyChangeListener (const ::rtl::OUString &aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > &aListener) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) |
| Ignored if the property is not bound.
|
virtual void | addVetoableChangeListener (const ::rtl::OUString &aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > &aListener) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) |
| Ignored if the property is not constrained.
|
virtual void | removeVetoableChangeListener (const ::rtl::OUString &aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > &aListener) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) |
| Ignored if the property is not constrained.
|
virtual void | setFastPropertyValue (sal_Int32 nHandle, const ::com::sun::star::uno::Any &rValue) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) |
| Throw UnknownPropertyException or PropertyVetoException if the property with the name rPropertyName does not exist or is readonly.
|
virtual ::com::sun::star::uno::Any | getFastPropertyValue (sal_Int32 nHandle) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) |
| - Exceptions
-
com::sun::star::beans::UnknownPropertyException | if the property with the handle nHandle does not exist. |
|
virtual void | setPropertyValues (const ::com::sun::star::uno::Sequence< ::rtl::OUString > &PropertyNames, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > &Values) throw (::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) |
virtual
::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Any > | getPropertyValues (const ::com::sun::star::uno::Sequence< ::rtl::OUString > &PropertyNames) throw (::com::sun::star::uno::RuntimeException) |
virtual void | addPropertiesChangeListener (const ::com::sun::star::uno::Sequence< ::rtl::OUString > &PropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener > &Listener) throw (::com::sun::star::uno::RuntimeException) |
virtual void | removePropertiesChangeListener (const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener > &Listener) throw (::com::sun::star::uno::RuntimeException) |
virtual void | firePropertiesChangeEvent (const ::com::sun::star::uno::Sequence< ::rtl::OUString > &PropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener > &Listener) throw (::com::sun::star::uno::RuntimeException) |
static::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySetInfo > | createPropertySetInfo (IPropertyArrayHelper &rProperties) throw () |
| The property sequence is created in the call.
|
Protected Member Functions |
void | fire (sal_Int32 *pnHandles, const ::com::sun::star::uno::Any *pNewValues, const ::com::sun::star::uno::Any *pOldValues, sal_Int32 nCount, sal_Bool bVetoable) |
| This method fire events to all registered property listeners.
|
void | setFastPropertyValues (sal_Int32 nSeqLen, sal_Int32 *pHandles, const ::com::sun::star::uno::Any *pValues, sal_Int32 nHitCount) throw (::com::sun::star::uno::Exception) |
| Set multiple properties with the handles.
|
virtual IPropertyArrayHelper & | getInfoHelper ()=0 |
| This abstract method must return the name to index table.
|
virtual sal_Bool | convertFastPropertyValue (::com::sun::star::uno::Any &rConvertedValue,::com::sun::star::uno::Any &rOldValue, sal_Int32 nHandle, const ::com::sun::star::uno::Any &rValue)=0 throw (::com::sun::star::lang::IllegalArgumentException) |
| Converted the value rValue and return the result in rConvertedValue and the old value in rOldValue.
|
virtual void | setFastPropertyValue_NoBroadcast (sal_Int32 nHandle, const ::com::sun::star::uno::Any &rValue)=0 throw (::com::sun::star::uno::Exception) |
| The same as setFastProperyValue; nHandle is always valid.
|
virtual void | getFastPropertyValue (::com::sun::star::uno::Any &rValue, sal_Int32 nHandle) const =0 |
| The same as getFastProperyValue, but return the value through rValue and nHandle is always valid.
|
void | setDependentFastPropertyValue (sal_Int32 i_handle, const ::com::sun::star::uno::Any &i_value) |
| sets an dependent property's value
|
| ~OPropertySetHelper () throw () |
| You must call disposing before destruction.
|
This abstract class maps the methods of the interfaces XMultiPropertySet, XFastPropertySet and XPropertySet to the methods getInfoHelper, convertFastPropertyValue, setFastPropertyValue_NoBroadcast and getFastPropertyValue.
You must derive from this class and overload the methods. It provides a standard implementation of the XPropertySetInfo. The XPropertiesChangeListener are inserted in the rBHelper.aLC structure. The XPropertyChangeListener and XVetoableChangeListener with no names are inserted in the rBHelper.aLC structure. So it is possible to advise property listeners with the connection point interfaces. But only listeners that listen to all property changes.
void cppu::OPropertySetHelper::setDependentFastPropertyValue |
( |
sal_Int32 |
i_handle, |
|
|
const ::com::sun::star::uno::Any & |
i_value |
|
) |
| |
|
protected |
sets an dependent property's value
Sometimes setting a given property needs to implicitly modify another property's value. Calling |setPropertyValue| from within |setFastPropertyValue_NoBroadcast| is not an option here, as it would notify the property listeners while our mutex is still locked. Setting the dependent property's value directly (e.g. by calling |setFastPropertyValue_NoBroadcast| recursively) is not an option, too, since it would miss firing the property change event.
So, in such cases, you use |setDependentFastPropertyValue| from within |setFastPropertyValue_NoBroadcast|. It will convert and actually set the property value (invoking |convertFastPropertyValue| and |setFastPropertyValue_NoBroadcast| for the given handle and value), and add the property change event to the list of events to be notified when the bottom-most |setFastPropertyValue_NoBroadcast| on the stack returns.
Note: The method will not invoke veto listeners for the property.
Note: It's the caller's responsibility to ensure that our mutex is locked. This is canonically given when the method is invoked from within |setFastPropertyValue_NoBroadcast|, in other contexts, you might need to take own measures.