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 ); }