This abstract class maps the methods of the interfaces XMultiPropertySet, XFastPropertySet and XPropertySet to the methods getInfoHelper, convertFastPropertyValue, setFastPropertyValue_NoBroadcast and getFastPropertyValue.
More...
|
| OPropertySetHelper (OBroadcastHelper &rBHelper) SAL_THROW(()) |
|
| OPropertySetHelper (OBroadcastHelper &rBHelper, bool bIgnoreRuntimeExceptionsWhileFiring) |
| Constructor. More...
|
|
| OPropertySetHelper (OBroadcastHelper &rBHelper, IEventNotificationHook *i_pFireEvents, bool bIgnoreRuntimeExceptionsWhileFiring=false) |
| Constructor. More...
|
|
virtual ::com::sun::star::uno::Any | queryInterface (const ::com::sun::star::uno::Type &rType) SAL_OVERRIDE throw (::com::sun::star::uno::RuntimeException, std::exception) |
| Only returns a reference to XMultiPropertySet, XFastPropertySet, XPropertySet and XEventListener. More...
|
|
::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 More...
|
|
void | disposing () SAL_THROW(()) |
| Send a disposing notification to the listeners in the conatiners aBoundLC and aVetoableLC. More...
|
|
virtual void | setPropertyValue (const ::rtl::OUString &rPropertyName, const ::com::sun::star::uno::Any &aValue) SAL_OVERRIDE 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, std::exception) |
| Throw UnknownPropertyException or PropertyVetoException if the property with the name rPropertyName does not exist or is readonly. More...
|
|
virtual ::com::sun::star::uno::Any | getPropertyValue (const ::rtl::OUString &aPropertyName) SAL_OVERRIDE throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) |
| Throw UnknownPropertyException if the property with the name rPropertyName does not exist. More...
|
|
virtual void | addPropertyChangeListener (const ::rtl::OUString &aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > &aListener) SAL_OVERRIDE throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) |
| Ignored if the property is not bound. More...
|
|
virtual void | removePropertyChangeListener (const ::rtl::OUString &aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > &aListener) SAL_OVERRIDE throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) |
| Ignored if the property is not bound. More...
|
|
virtual void | addVetoableChangeListener (const ::rtl::OUString &aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > &aListener) SAL_OVERRIDE throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) |
| Ignored if the property is not constrained. More...
|
|
virtual void | removeVetoableChangeListener (const ::rtl::OUString &aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > &aListener) SAL_OVERRIDE throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) |
| Ignored if the property is not constrained. More...
|
|
virtual void | setFastPropertyValue (sal_Int32 nHandle, const ::com::sun::star::uno::Any &rValue) SAL_OVERRIDE 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, std::exception) |
| Throw UnknownPropertyException or PropertyVetoException if the property with the name rPropertyName does not exist or is readonly. More...
|
|
virtual ::com::sun::star::uno::Any | getFastPropertyValue (sal_Int32 nHandle) SAL_OVERRIDE throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) |
| - Exceptions
-
com::sun::star::beans::UnknownPropertyException | if the property with the handle nHandle does not exist. |
More...
|
|
virtual void | setPropertyValues (const ::com::sun::star::uno::Sequence< ::rtl::OUString > &PropertyNames, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > &Values) SAL_OVERRIDE throw (::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException, std::exception) |
|
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > | getPropertyValues (const ::com::sun::star::uno::Sequence< ::rtl::OUString > &PropertyNames) SAL_OVERRIDE throw (::com::sun::star::uno::RuntimeException, std::exception) |
|
virtual void | addPropertiesChangeListener (const ::com::sun::star::uno::Sequence< ::rtl::OUString > &PropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener > &Listener) SAL_OVERRIDE throw (::com::sun::star::uno::RuntimeException, std::exception) |
|
virtual void | removePropertiesChangeListener (const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener > &Listener) SAL_OVERRIDE throw (::com::sun::star::uno::RuntimeException, std::exception) |
|
virtual void | firePropertiesChangeEvent (const ::com::sun::star::uno::Sequence< ::rtl::OUString > &PropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener > &Listener) SAL_OVERRIDE throw (::com::sun::star::uno::RuntimeException, std::exception) |
|
static::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > | createPropertySetInfo (IPropertyArrayHelper &rProperties) SAL_THROW(()) |
| The property sequence is created in the call. More...
|
|
|
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. More...
|
|
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. More...
|
|
virtual void | setFastPropertyValue_NoBroadcast (sal_Int32 nHandle, const ::com::sun::star::uno::Any &rValue)=0 throw (::com::sun::star::uno::Exception, std::exception) |
| The same as setFastProperyValue; nHandle is always valid. More...
|
|
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. More...
|
|
void | setDependentFastPropertyValue (sal_Int32 i_handle, const ::com::sun::star::uno::Any &i_value) |
| sets an dependent property's value More...
|
|
| ~OPropertySetHelper () SAL_THROW(()) |
| You must call disposing before destruction. More...
|
|
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.