/**
@page getting_control_button_events Getting control button events
Control button events are communicated from Lightpad and Control Blocks to your application via ControlButton objects.
You can obtain an array of %ControlButton pointers associated with a specific Lightpad or Control %Block from its corresponding Block object using the Block::getButtons method---see the @ref discovering_blocks page for an example of how to obtain %Block objects.
Each pointer to a %ControlButton will be valid for the lifetime of the %Block object.
Once you have a %ControlButton you must register as a ControlButton::Listener to receive button pressed and button released callbacks.
The process for doing this is to have one of your application's classes inherit from %ControlButton::Listener and override the pure virtual methods ControlButton::Listener::buttonPressed and ControlButton::Listener::buttonReleased.
Then, when you register your derived class as a listener to a particular %ControlButton, your overriden methods will be called when the corresponding button is pressed and released.
Registering a class derived from %ControlButton::Listener with multiple %ControlButton objects is done as follows:
@code{.cpp}
class ControlButtonListenerExample : public ControlButton::Listener
{
public:
ControlButtonListenerExample (Block& block)
{
for (auto button : block->getButtons())
button->addListener (this);
}
virtual void buttonPressed (ControlButton&, sourceControlButton, Block::Timestamp timestamp) override
{
// Do something when the sourceControlButton is pressed!
}
virtual void buttonReleased (ControlButton&, sourceControlButton, Block::Timestamp timestamp) override
{
// Do something when the sourceControlButton is released!
}
};
@endcode
When your overriden buttonPressed
or buttonReleased
methods are called you have access to two paramters: a reference to the %ControlButton that generated this event and timestamp for the event.
You will find multiple examples of control button listeners in the @ref example_applications pages.
*/