diff options
Diffstat (limited to 'chart2/source/inc/ModifyListenerHelper.hxx')
-rw-r--r-- | chart2/source/inc/ModifyListenerHelper.hxx | 75 |
1 files changed, 47 insertions, 28 deletions
diff --git a/chart2/source/inc/ModifyListenerHelper.hxx b/chart2/source/inc/ModifyListenerHelper.hxx index b65530d9f229..ee90d407a66f 100644 --- a/chart2/source/inc/ModifyListenerHelper.hxx +++ b/chart2/source/inc/ModifyListenerHelper.hxx @@ -75,8 +75,8 @@ namespace impl template< class InterfaceRef > struct addListenerFunctor { - explicit addListenerFunctor( const css::uno::Reference< css::util::XModifyListener > & xListener ) : - m_xListener( xListener ) + explicit addListenerFunctor( css::uno::Reference< css::util::XModifyListener > xListener ) : + m_xListener(std::move( xListener )) {} void operator() ( const InterfaceRef & xObject ) @@ -93,8 +93,8 @@ private: template< class InterfaceRef > struct removeListenerFunctor { - explicit removeListenerFunctor( const css::uno::Reference< css::util::XModifyListener > & xListener ) : - m_xListener( xListener ) + explicit removeListenerFunctor( css::uno::Reference< css::util::XModifyListener > xListener ) : + m_xListener(std::move( xListener )) {} void operator() ( const InterfaceRef & xObject ) @@ -111,8 +111,8 @@ private: template< class Pair > struct addListenerToMappedElementFunctor { - explicit addListenerToMappedElementFunctor( const css::uno::Reference< css::util::XModifyListener > & xListener ) : - m_xListener( xListener ) + explicit addListenerToMappedElementFunctor( css::uno::Reference< css::util::XModifyListener > xListener ) : + m_xListener(std::move( xListener )) {} void operator() ( const Pair & aPair ) @@ -129,8 +129,8 @@ private: template< class Pair > struct removeListenerFromMappedElementFunctor { - explicit removeListenerFromMappedElementFunctor( const css::uno::Reference< css::util::XModifyListener > & xListener ) : - m_xListener( xListener ) + explicit removeListenerFromMappedElementFunctor( css::uno::Reference< css::util::XModifyListener > xListener ) : + m_xListener(std::move( xListener )) {} void operator() ( const Pair & aPair ) @@ -157,6 +157,14 @@ void addListener( aFunctor( xObject ); } } +template< class T > +void addListener( + const rtl::Reference<T> & xBroadcaster, + const css::uno::Reference< css::util::XModifyListener > & xListener ) +{ + if( xBroadcaster && xListener ) + xBroadcaster->addModifyListener( xListener ); +} template< class Container > void addListenerToAllElements( @@ -168,6 +176,17 @@ void addListenerToAllElements( impl::addListenerFunctor< typename Container::value_type >( xListener )); } +template< class T > +void addListenerToAllElements( + const std::vector<rtl::Reference<T>> & rContainer, + const css::uno::Reference< css::util::XModifyListener > & xListener ) +{ + if( !xListener ) + return; + for (auto const & i : rContainer) + i->addModifyListener(xListener); +} + template< class Container > void addListenerToAllMapElements( const Container & rContainer, @@ -178,16 +197,6 @@ void addListenerToAllMapElements( impl::addListenerToMappedElementFunctor< typename Container::value_type >( xListener )); } -template< typename T > -void addListenerToAllSequenceElements( - const css::uno::Sequence< T > & rSequence, - const css::uno::Reference< css::util::XModifyListener > & xListener ) -{ - if( xListener.is()) - std::for_each( rSequence.begin(), rSequence.end(), - impl::addListenerFunctor< T >( xListener )); -} - template< class InterfaceRef > void removeListener( const InterfaceRef & xObject, @@ -200,6 +209,15 @@ void removeListener( } } +template< class T > +void removeListener( + const rtl::Reference<T> & xBroadcaster, + const css::uno::Reference< css::util::XModifyListener > & xListener ) +{ + if( xBroadcaster && xListener ) + xBroadcaster->removeModifyListener( xListener ); +} + template< class Container > void removeListenerFromAllElements( const Container & rContainer, @@ -210,6 +228,17 @@ void removeListenerFromAllElements( impl::removeListenerFunctor< typename Container::value_type >( xListener )); } +template< class T > +void removeListenerFromAllElements( + const std::vector<rtl::Reference<T>> & rContainer, + const css::uno::Reference< css::util::XModifyListener > & xListener ) +{ + if( !xListener ) + return; + for (auto const & i : rContainer) + i->removeModifyListener(xListener); +} + template< class Container > void removeListenerFromAllMapElements( const Container & rContainer, @@ -220,16 +249,6 @@ void removeListenerFromAllMapElements( impl::removeListenerFromMappedElementFunctor< typename Container::value_type >( xListener )); } -template< typename T > -void removeListenerFromAllSequenceElements( - const css::uno::Sequence< T > & rSequence, - const css::uno::Reference< css::util::XModifyListener > & xListener ) -{ - if( xListener.is()) - std::for_each( rSequence.begin(), rSequence.end(), - impl::removeListenerFunctor< T >( xListener )); -} - } // namespace chart::ModifyListenerHelper /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |