100 // ----------------------------------------------------------------------------- |
100 // ----------------------------------------------------------------------------- |
101 // |
101 // |
102 void CHsCcProviderClient::RunL() |
102 void CHsCcProviderClient::RunL() |
103 { |
103 { |
104 |
104 |
105 if ( !iStatus.Int() ) |
105 TInt err( iStatus.Int() ); |
|
106 HBufC8* header( NULL ); |
|
107 TPtr8 headerPtr( NULL, 0 ); |
|
108 TUint32 sender( 0 ); |
|
109 TUint32 receiver( 0 ); |
|
110 if ( !err ) |
|
111 { |
|
112 // Read API request header |
|
113 header = iApiHeader->AllocL(); |
|
114 CleanupStack::PushL( header ); |
|
115 headerPtr.Set( header->Des() ); |
|
116 // Read sender |
|
117 sender = iPckgSender(); |
|
118 // Read receiver |
|
119 receiver = iPckgReceiver(); |
|
120 } |
|
121 |
|
122 // Receive next API request |
|
123 WaitForApiReqL(); |
|
124 |
|
125 if ( !err ) |
106 { |
126 { |
107 // Get received message header |
127 // Get received message header |
108 CCcSrvMsg* message = CCcSrvMsg::NewL(); |
128 CCcSrvMsg* message = CCcSrvMsg::NewL(); |
109 CleanupStack::PushL( message ); |
129 CleanupStack::PushL( message ); |
110 RDesReadStream stream( iApiHeaderPtr ); |
130 RDesReadStream stream( headerPtr ); |
111 CleanupClosePushL( stream ); |
131 CleanupClosePushL( stream ); |
112 message->InternalizeHeaderL( stream ); |
132 message->InternalizeHeaderL( stream ); |
113 CleanupStack::PopAndDestroy( &stream ); |
133 CleanupStack::PopAndDestroy( &stream ); |
114 if ( message->DataSize() ) |
134 if ( message->DataSize() ) |
115 { |
135 { |
125 } |
145 } |
126 |
146 |
127 switch ( message->MsgId() ) |
147 switch ( message->MsgId() ) |
128 { |
148 { |
129 case ECcRegisterObserverNtf: |
149 case ECcRegisterObserverNtf: |
130 HandleRegisterObserverNtfL( *message ); |
150 HandleRegisterObserverNtfL( sender, receiver, *message ); |
131 break; |
151 break; |
132 case ECcUnregisterObserverNtf: |
152 case ECcUnregisterObserverNtf: |
133 HandleUnregisterObserverNtfL( *message ); |
153 HandleUnregisterObserverNtfL( sender, receiver, *message ); |
134 break; |
154 break; |
135 case EHsCcWidgetListReq: |
155 case EHsCcWidgetListReq: |
136 HandleWidgetListReqL( *message ); |
156 HandleWidgetListReqL( sender, receiver, *message ); |
137 break; |
157 break; |
138 case EHsCcAddWidgetReq: |
158 case EHsCcAddWidgetReq: |
139 HandleAddWidgetReqL( *message ); |
159 HandleAddWidgetReqL( sender, receiver, *message ); |
140 break; |
160 break; |
141 case EHsCcRemoveWidgetReq: |
161 case EHsCcRemoveWidgetReq: |
142 HandleRemoveWidgetReqL( *message ); |
162 HandleRemoveWidgetReqL( sender, receiver, *message ); |
143 break; |
163 break; |
144 case EHsCcViewListReq: |
164 case EHsCcViewListReq: |
145 HandleViewListReqL( *message ); |
165 HandleViewListReqL( sender, receiver, *message ); |
146 break; |
166 break; |
147 case EHsCcAddViewReq: |
167 case EHsCcAddViewReq: |
148 HandleAddViewReqL( *message ); |
168 HandleAddViewReqL( sender, receiver, *message ); |
149 break; |
169 break; |
150 case EHsCcRemoveViewReq: |
170 case EHsCcRemoveViewReq: |
151 HandleRemoveViewReqL( *message ); |
171 HandleRemoveViewReqL( sender, receiver, *message ); |
152 break; |
172 break; |
153 case EHsCcActivateViewReq: |
173 case EHsCcActivateViewReq: |
154 HandleActivateViewReqL( *message ); |
174 HandleActivateViewReqL( sender, receiver, *message ); |
155 break; |
175 break; |
156 case EHsCcAppListReq: |
176 case EHsCcAppListReq: |
157 HandleAppListReqL( *message ); |
177 HandleAppListReqL( sender, receiver, *message ); |
158 break; |
178 break; |
159 case EHsCcActivateAppReq: |
179 case EHsCcActivateAppReq: |
160 HandleActivateAppReqL( *message ); |
180 HandleActivateAppReqL( sender, receiver, *message ); |
161 break; |
181 break; |
162 case EHsCcActiveAppReq: |
182 case EHsCcActiveAppReq: |
163 HandleActiveAppReqL( *message ); |
183 HandleActiveAppReqL( sender, receiver, *message ); |
164 break; |
184 break; |
165 case EHsCcActiveViewReq: |
185 case EHsCcActiveViewReq: |
166 HandleActiveViewReqL( *message ); |
186 HandleActiveViewReqL( sender, receiver, *message ); |
167 break; |
187 break; |
168 default: |
188 default: |
169 HandleNotSupportedReqL( *message ); |
189 HandleNotSupportedReqL( sender, receiver, *message ); |
170 break; |
190 break; |
171 } |
191 } |
172 CleanupStack::PopAndDestroy( message ); |
192 CleanupStack::PopAndDestroy( message ); |
173 } |
193 } |
174 |
194 if ( header ) |
175 // Receive next API request |
195 { |
176 WaitForApiReqL(); |
196 CleanupStack::PopAndDestroy( header ); |
177 |
197 } |
178 } |
198 } |
179 |
199 |
180 // ----------------------------------------------------------------------------- |
200 // ----------------------------------------------------------------------------- |
181 // CHsCcProviderClient::DoCancel() |
201 // CHsCcProviderClient::DoCancel() |
182 // ----------------------------------------------------------------------------- |
202 // ----------------------------------------------------------------------------- |
253 // ----------------------------------------------------------------------------- |
273 // ----------------------------------------------------------------------------- |
254 // CHsCcProviderClient::HandleRegisterObserverNtfL() |
274 // CHsCcProviderClient::HandleRegisterObserverNtfL() |
255 // ----------------------------------------------------------------------------- |
275 // ----------------------------------------------------------------------------- |
256 // |
276 // |
257 void CHsCcProviderClient::HandleRegisterObserverNtfL( |
277 void CHsCcProviderClient::HandleRegisterObserverNtfL( |
|
278 TUint32 /* aSender */, |
|
279 TUint32 /* aReceiver */, |
258 CCcSrvMsg& /* aMessage */ ) |
280 CCcSrvMsg& /* aMessage */ ) |
259 { |
281 { |
260 TUint32 observer = iPckgSender(); |
282 TUint32 observer = iPckgSender(); |
261 iObservers.AppendL( observer ); |
283 iObservers.AppendL( observer ); |
262 } |
284 } |
264 // ----------------------------------------------------------------------------- |
286 // ----------------------------------------------------------------------------- |
265 // CHsCcProviderClient::HandleUnregisterObserverNtfL() |
287 // CHsCcProviderClient::HandleUnregisterObserverNtfL() |
266 // ----------------------------------------------------------------------------- |
288 // ----------------------------------------------------------------------------- |
267 // |
289 // |
268 void CHsCcProviderClient::HandleUnregisterObserverNtfL( |
290 void CHsCcProviderClient::HandleUnregisterObserverNtfL( |
|
291 TUint32 /* aSender */, |
|
292 TUint32 /* aReceiver */, |
269 CCcSrvMsg& /* aMessage */ ) |
293 CCcSrvMsg& /* aMessage */ ) |
270 { |
294 { |
271 TUint32 observer = iPckgSender(); |
295 TUint32 observer = iPckgSender(); |
272 for ( TInt i = 0; i < iObservers.Count(); i++ ) |
296 for ( TInt i = 0; i < iObservers.Count(); i++ ) |
273 { |
297 { |
282 // ----------------------------------------------------------------------------- |
306 // ----------------------------------------------------------------------------- |
283 // CHsCcProviderClient::HandleWidgetListReqL() |
307 // CHsCcProviderClient::HandleWidgetListReqL() |
284 // ----------------------------------------------------------------------------- |
308 // ----------------------------------------------------------------------------- |
285 // |
309 // |
286 void CHsCcProviderClient::HandleWidgetListReqL( |
310 void CHsCcProviderClient::HandleWidgetListReqL( |
287 CCcSrvMsg& aMessage ) |
311 TUint32 aSender, |
288 { |
312 TUint32 aReceiver, |
|
313 CCcSrvMsg& aMessage ) |
|
314 { |
|
315 |
|
316 TInt err( KErrNone ); |
289 // Get widget list |
317 // Get widget list |
290 CHsContentInfoArray* widgets = CHsContentInfoArray::NewL(); |
318 CHsContentInfoArray* widgets = CHsContentInfoArray::NewL(); |
291 CleanupStack::PushL( widgets ); |
319 CleanupStack::PushL( widgets ); |
292 TInt err = iController.WidgetListL( *widgets ); |
320 |
|
321 if ( aMessage.DataSize() ) |
|
322 { |
|
323 // Internalize message data |
|
324 RDesReadStream dataStream( aMessage.Data() ); |
|
325 CleanupClosePushL( dataStream ); |
|
326 CHsContentInfo* info = CHsContentInfo::NewL( dataStream ); |
|
327 CleanupStack::PopAndDestroy( &dataStream ); |
|
328 CleanupStack::PushL( info ); |
|
329 |
|
330 // Get list of widgets included in the defined |
|
331 // application configuration or view |
|
332 err = iController.WidgetListL( *info, *widgets ); |
|
333 |
|
334 CleanupStack::PopAndDestroy( info ); |
|
335 } |
|
336 else |
|
337 { |
|
338 // Get list of available widgets |
|
339 err = iController.WidgetListL( *widgets ); |
|
340 } |
293 |
341 |
294 // Create and send WidgetListResp |
342 // Create and send WidgetListResp |
295 CCcSrvMsg* message = CCcSrvMsg::NewL(); |
343 CCcSrvMsg* message = CCcSrvMsg::NewL(); |
296 CleanupStack::PushL( message ); |
344 CleanupStack::PushL( message ); |
297 message->SetMsgId( EHsCcWidgetListResp ); |
345 message->SetMsgId( EHsCcWidgetListResp ); |
350 message->SetMsgId( EHsCcAddWidgetResp ); |
400 message->SetMsgId( EHsCcAddWidgetResp ); |
351 message->SetTrId( aMessage.TrId() ); |
401 message->SetTrId( aMessage.TrId() ); |
352 message->SetStatus( err ); |
402 message->SetStatus( err ); |
353 message->SetData( KNullDesC8() ); |
403 message->SetData( KNullDesC8() ); |
354 |
404 |
355 SendRespL( *message ); |
405 SendRespL( aReceiver, aSender, *message ); |
356 |
406 |
357 CleanupStack::PopAndDestroy( message ); |
407 CleanupStack::PopAndDestroy( message ); |
358 } |
408 } |
359 |
409 |
360 // ----------------------------------------------------------------------------- |
410 // ----------------------------------------------------------------------------- |
361 // CHsCcProviderClient::HandleRemoveWidgetReqL() |
411 // CHsCcProviderClient::HandleRemoveWidgetReqL() |
362 // ----------------------------------------------------------------------------- |
412 // ----------------------------------------------------------------------------- |
363 // |
413 // |
364 void CHsCcProviderClient::HandleRemoveWidgetReqL( |
414 void CHsCcProviderClient::HandleRemoveWidgetReqL( |
|
415 TUint32 aSender, |
|
416 TUint32 aReceiver, |
365 CCcSrvMsg& aMessage ) |
417 CCcSrvMsg& aMessage ) |
366 { |
418 { |
367 TInt err( KErrNone ); |
419 TInt err( KErrNone ); |
368 if ( aMessage.DataSize() ) |
420 if ( aMessage.DataSize() ) |
369 { |
421 { |
391 message->SetMsgId( EHsCcRemoveWidgetResp ); |
443 message->SetMsgId( EHsCcRemoveWidgetResp ); |
392 message->SetTrId( aMessage.TrId() ); |
444 message->SetTrId( aMessage.TrId() ); |
393 message->SetStatus( err ); |
445 message->SetStatus( err ); |
394 message->SetData( KNullDesC8() ); |
446 message->SetData( KNullDesC8() ); |
395 |
447 |
396 SendRespL( *message ); |
448 SendRespL( aReceiver, aSender, *message ); |
397 |
449 |
398 CleanupStack::PopAndDestroy( message ); |
450 CleanupStack::PopAndDestroy( message ); |
399 } |
451 } |
400 |
452 |
401 // ----------------------------------------------------------------------------- |
453 // ----------------------------------------------------------------------------- |
402 // CHsCcProviderClient::HandleViewListReqL() |
454 // CHsCcProviderClient::HandleViewListReqL() |
403 // ----------------------------------------------------------------------------- |
455 // ----------------------------------------------------------------------------- |
404 // |
456 // |
405 void CHsCcProviderClient::HandleViewListReqL( |
457 void CHsCcProviderClient::HandleViewListReqL( |
|
458 TUint32 aSender, |
|
459 TUint32 aReceiver, |
406 CCcSrvMsg& aMessage ) |
460 CCcSrvMsg& aMessage ) |
407 { |
461 { |
408 // Get view list |
462 // Get view list |
409 CHsContentInfoArray* views = CHsContentInfoArray::NewL(); |
463 CHsContentInfoArray* views = CHsContentInfoArray::NewL(); |
410 CleanupStack::PushL( views ); |
464 CleanupStack::PushL( views ); |
469 message->SetMsgId( EHsCcAddViewResp ); |
525 message->SetMsgId( EHsCcAddViewResp ); |
470 message->SetTrId( aMessage.TrId() ); |
526 message->SetTrId( aMessage.TrId() ); |
471 message->SetStatus( err ); |
527 message->SetStatus( err ); |
472 message->SetData( KNullDesC8() ); |
528 message->SetData( KNullDesC8() ); |
473 |
529 |
474 SendRespL( *message ); |
530 SendRespL( aReceiver, aSender, *message ); |
475 |
531 |
476 CleanupStack::PopAndDestroy( message ); |
532 CleanupStack::PopAndDestroy( message ); |
477 } |
533 } |
478 |
534 |
479 // ----------------------------------------------------------------------------- |
535 // ----------------------------------------------------------------------------- |
480 // CHsCcProviderClient::HandleRemoveViewReqL() |
536 // CHsCcProviderClient::HandleRemoveViewReqL() |
481 // ----------------------------------------------------------------------------- |
537 // ----------------------------------------------------------------------------- |
482 // |
538 // |
483 void CHsCcProviderClient::HandleRemoveViewReqL( |
539 void CHsCcProviderClient::HandleRemoveViewReqL( |
|
540 TUint32 aSender, |
|
541 TUint32 aReceiver, |
484 CCcSrvMsg& aMessage ) |
542 CCcSrvMsg& aMessage ) |
485 { |
543 { |
486 TInt err( KErrNone ); |
544 TInt err( KErrNone ); |
487 if ( aMessage.DataSize() ) |
545 if ( aMessage.DataSize() ) |
488 { |
546 { |
510 message->SetMsgId( EHsCcRemoveViewResp ); |
568 message->SetMsgId( EHsCcRemoveViewResp ); |
511 message->SetTrId( aMessage.TrId() ); |
569 message->SetTrId( aMessage.TrId() ); |
512 message->SetStatus( err ); |
570 message->SetStatus( err ); |
513 message->SetData( KNullDesC8() ); |
571 message->SetData( KNullDesC8() ); |
514 |
572 |
515 SendRespL( *message ); |
573 SendRespL( aReceiver, aSender, *message ); |
516 |
574 |
517 CleanupStack::PopAndDestroy( message ); |
575 CleanupStack::PopAndDestroy( message ); |
518 } |
576 } |
519 |
577 |
520 // ----------------------------------------------------------------------------- |
578 // ----------------------------------------------------------------------------- |
521 // CHsCcProviderClient::HandleActivateViewReqL() |
579 // CHsCcProviderClient::HandleActivateViewReqL() |
522 // ----------------------------------------------------------------------------- |
580 // ----------------------------------------------------------------------------- |
523 // |
581 // |
524 void CHsCcProviderClient::HandleActivateViewReqL( |
582 void CHsCcProviderClient::HandleActivateViewReqL( |
|
583 TUint32 aSender, |
|
584 TUint32 aReceiver, |
525 CCcSrvMsg& aMessage ) |
585 CCcSrvMsg& aMessage ) |
526 { |
586 { |
527 TInt err( KErrNone ); |
587 TInt err( KErrNone ); |
528 if ( aMessage.DataSize() ) |
588 if ( aMessage.DataSize() ) |
529 { |
589 { |
551 message->SetMsgId( EHsCcActivateViewResp ); |
611 message->SetMsgId( EHsCcActivateViewResp ); |
552 message->SetTrId( aMessage.TrId() ); |
612 message->SetTrId( aMessage.TrId() ); |
553 message->SetStatus( err ); |
613 message->SetStatus( err ); |
554 message->SetData( KNullDesC8() ); |
614 message->SetData( KNullDesC8() ); |
555 |
615 |
556 SendRespL( *message ); |
616 SendRespL( aReceiver, aSender, *message ); |
557 |
617 |
558 CleanupStack::PopAndDestroy( message ); |
618 CleanupStack::PopAndDestroy( message ); |
559 } |
619 } |
560 |
620 |
561 // ----------------------------------------------------------------------------- |
621 // ----------------------------------------------------------------------------- |
562 // CHsCcProviderClient::HandleActiveViewReqL() |
622 // CHsCcProviderClient::HandleActiveViewReqL() |
563 // ----------------------------------------------------------------------------- |
623 // ----------------------------------------------------------------------------- |
564 // |
624 // |
565 void CHsCcProviderClient::HandleActiveViewReqL( |
625 void CHsCcProviderClient::HandleActiveViewReqL( |
|
626 TUint32 aSender, |
|
627 TUint32 aReceiver, |
566 CCcSrvMsg& aMessage ) |
628 CCcSrvMsg& aMessage ) |
567 { |
629 { |
568 // Get active view |
630 // Get active view |
569 CHsContentInfo* view = CHsContentInfo::NewL(); |
631 CHsContentInfo* view = CHsContentInfo::NewL(); |
570 CleanupStack::PushL( view ); |
632 CleanupStack::PushL( view ); |
665 message->SetMsgId( EHsCcActivateAppResp ); |
731 message->SetMsgId( EHsCcActivateAppResp ); |
666 message->SetTrId( aMessage.TrId() ); |
732 message->SetTrId( aMessage.TrId() ); |
667 message->SetStatus( err ); |
733 message->SetStatus( err ); |
668 message->SetData( KNullDesC8() ); |
734 message->SetData( KNullDesC8() ); |
669 |
735 |
670 SendRespL( *message ); |
736 SendRespL( aReceiver, aSender, *message ); |
671 |
737 |
672 CleanupStack::PopAndDestroy( message ); |
738 CleanupStack::PopAndDestroy( message ); |
673 } |
739 } |
674 |
740 |
675 // ----------------------------------------------------------------------------- |
741 // ----------------------------------------------------------------------------- |
676 // CHsCcProviderClient::HandleActiveAppReqL() |
742 // CHsCcProviderClient::HandleActiveAppReqL() |
677 // ----------------------------------------------------------------------------- |
743 // ----------------------------------------------------------------------------- |
678 // |
744 // |
679 void CHsCcProviderClient::HandleActiveAppReqL( |
745 void CHsCcProviderClient::HandleActiveAppReqL( |
|
746 TUint32 aSender, |
|
747 TUint32 aReceiver, |
680 CCcSrvMsg& aMessage ) |
748 CCcSrvMsg& aMessage ) |
681 { |
749 { |
682 // Get active application info |
750 // Get active application info |
683 CHsContentInfo* app = CHsContentInfo::NewL(); |
751 CHsContentInfo* app = CHsContentInfo::NewL(); |
684 CleanupStack::PushL( app ); |
752 CleanupStack::PushL( app ); |
700 dataPtr.Set( dataBuf->Des() ); |
768 dataPtr.Set( dataBuf->Des() ); |
701 message->SetData( dataPtr ); |
769 message->SetData( dataPtr ); |
702 CleanupStack::PopAndDestroy( dataBuf ); |
770 CleanupStack::PopAndDestroy( dataBuf ); |
703 } |
771 } |
704 |
772 |
705 SendRespL( *message ); |
773 SendRespL( aReceiver, aSender, *message ); |
706 |
774 |
707 CleanupStack::PopAndDestroy( message ); |
775 CleanupStack::PopAndDestroy( message ); |
708 CleanupStack::PopAndDestroy( app ); |
776 CleanupStack::PopAndDestroy( app ); |
709 } |
777 } |
710 |
778 |
711 // ----------------------------------------------------------------------------- |
779 // ----------------------------------------------------------------------------- |
712 // CHsCcProviderClient::HandleNotSupportedReqL() |
780 // CHsCcProviderClient::HandleNotSupportedReqL() |
713 // ----------------------------------------------------------------------------- |
781 // ----------------------------------------------------------------------------- |
714 // |
782 // |
715 void CHsCcProviderClient::HandleNotSupportedReqL( |
783 void CHsCcProviderClient::HandleNotSupportedReqL( |
|
784 TUint32 aSender, |
|
785 TUint32 aReceiver, |
716 CCcSrvMsg& aMessage ) |
786 CCcSrvMsg& aMessage ) |
717 { |
787 { |
718 // Create and send NotSupportedResp |
788 // Create and send NotSupportedResp |
719 CCcSrvMsg* message = CCcSrvMsg::NewL(); |
789 CCcSrvMsg* message = CCcSrvMsg::NewL(); |
720 CleanupStack::PushL( message ); |
790 CleanupStack::PushL( message ); |
721 message->SetMsgId( EHsCcNotSupportedResp ); |
791 message->SetMsgId( EHsCcNotSupportedResp ); |
722 message->SetTrId( aMessage.TrId() ); |
792 message->SetTrId( aMessage.TrId() ); |
723 message->SetStatus( KErrNone ); |
793 message->SetStatus( KErrNone ); |
724 message->SetData( KNullDesC8() ); |
794 message->SetData( KNullDesC8() ); |
725 |
795 |
726 SendRespL( *message ); |
796 SendRespL( aReceiver, aSender, *message ); |
727 |
797 |
728 CleanupStack::PopAndDestroy( message ); |
798 CleanupStack::PopAndDestroy( message ); |
729 |
799 |
730 } |
800 } |
731 |
801 |
757 // ----------------------------------------------------------------------------- |
827 // ----------------------------------------------------------------------------- |
758 // CHsCcProviderClient::SendRespL() |
828 // CHsCcProviderClient::SendRespL() |
759 // ----------------------------------------------------------------------------- |
829 // ----------------------------------------------------------------------------- |
760 // |
830 // |
761 void CHsCcProviderClient::SendRespL( |
831 void CHsCcProviderClient::SendRespL( |
|
832 TUint32 aSender, |
|
833 TUint32 aReceiver, |
762 CCcSrvMsg& aMessage ) |
834 CCcSrvMsg& aMessage ) |
763 { |
835 { |
764 HBufC8* msgBuf = aMessage.MarshalL(); |
836 HBufC8* msgBuf = aMessage.MarshalL(); |
765 CleanupStack::PushL( msgBuf ); |
837 CleanupStack::PushL( msgBuf ); |
766 TPtr8 msgPtr( NULL, 0 ); |
838 TPtr8 msgPtr( NULL, 0 ); |
767 msgPtr.Set( msgBuf->Des() ); |
839 msgPtr.Set( msgBuf->Des() ); |
768 |
840 |
769 TPckgBuf<TUint32> provider( ECcHomescreen ); |
841 TPckgBuf<TUint32> provider( ECcHomescreen ); |
770 iSession.Send( ECcApiResp, provider, iPckgReceiver, iPckgSender, msgPtr ); |
842 TPckgBuf<TUint32> sender( aSender ); |
|
843 TPckgBuf<TUint32> receiver( aReceiver ); |
|
844 iSession.Send( ECcApiResp, provider, sender, receiver, msgPtr ); |
771 |
845 |
772 CleanupStack::PopAndDestroy( msgBuf ); |
846 CleanupStack::PopAndDestroy( msgBuf ); |
773 } |
847 } |
774 |
848 |
775 // End of file |
849 // End of file |