Each control may have an observer, typically another control, to which it can send events. An observer must:
implement the mixin class MCoeControlObserver
and
be set as the observer for the control (or controls) it is to observe using CCoeControl::SetObserver()
.
A control may have one observer only, but an observer may observe more than one control.
A control sends an event to its observer using CCoeControl::ReportEventL()
. The observer receives the event using MCoeControlObserver::HandleControlEventL()
. Event types, which are not the same as window server events, are defined by the MCoeControlObserver
enum TCoeEvent
.
A typical use of an observer is a compound
control being the observer for its own components. The components send events to their compound control when they receive user input and the compound control manages the interaction between them. For example a control receiving a TPointerEvent::EButton1Down
event sends an MCoeControlObserver::EEventRequestFocus
event to its observer. This allows the observer to move focus between its components and to update their appearance.