Since I’m not a big fan of if, else if, else if a.s.o. I’ve made a handy little template and STL based dispatcher of Slider events:
[code]//////////////////////////////////////////////////////////////////////////
#ifndef SLIDERLISTENERHANDLER
#define SLIDERLISTENERHANDLER
#include <juce.h>
#include
template
class SliderListenerHandler : public SliderListener
{
protected:
typedef void (T::sliderCallback)(const double);
typedef std::map<Slider, sliderCallback> cbmap_type;
cbmap_type cbSliderMap_;
void addSliderHandler(Slider* pSlider, sliderCallback callback)
{
pSlider->addListener(this);
cbSliderMap_[pSlider] = callback;
}
public:
/** Called when the slider is moved /
virtual void sliderValueChanged (Slider slider)
{
typename cbmap_type::iterator it = cbSliderMap_.find(slider);
if (it != cbSliderMap_.end())
{
(((T*)this)->*(it->second))(slider->getValue());
}
}
};
#endif[/code]
Put that in a SliderListenerHandler.h file and use it in your component as:
[code]class MyComponent : public SliderListenerHandler
{
…
void mySliderChanged(const double value);
Slider* mySlider;
}
[/code]
and somewhere in implementation (where you create mySlider):
addSliderHandler(mySlider, &MyComponent::mySliderChanged);
Now all calls from mySlider will end up in mySliderChanged
/R