Application-specific events

CCoeAppUi:HandleApplicationSpecificEventL() is called for application-specific events where event codes are from EEventUser upwards in TEventCode. You can define a data structure to be delivered in the window server event. The data can be accessed through a pointer, which can be obtained by calling TWsEvent::EventData(). The maximum event data size is defined as EWsEventDataSize.

void HandleApplicationSpecificEventL(TInt aType,const TWsEvent& aEvent)

Code example:

First define a data structure for the event data:

class TEventsEventType
    {
    public:
        // Event iData
        TBufC< TWsEvent::EWsEventDataSize> data;
        };

Then create an event and send it to all window groups:

// Create a window server event
TWsEvent event;
TEventsEventType eventType;
// Set event data. eventType.data = KData;
event.SetType( ETestEvent1 ); // set event type
event.SetTimeNow(); // set the event time
event.SetHandle( iWsSession.WsHandle() ); // set window server handle
*( TEventsEventType* )( event.EventData() ) = eventType; // set event data
// Send the created event
User::LeaveIfError( iWsSession.SendEventToAllWindowGroups( event ) );

Catch the event using the following method:

void CEventsAppUi::HandleApplicationSpecificEventL(TInt aType,const TWsEvent& aEvent)
    {
    // Check the event type
    if( aType == ETestEvent1 )
        {
        // Cast to TEventsEventType
        TEventsEventType event;
        event = *( TEventsEventType* )aEvent.EventData();
        // Print the data
        iEikonEnv->InfoMsg( event.data );
        }
        // Call the base class implementation
        CEikAppUi::HandleApplicationSpecificEventL( aType, aEvent );
    }