58 { |
58 { |
59 CFbsBitmap* bitmap = aIcon->Bitmap(); |
59 CFbsBitmap* bitmap = aIcon->Bitmap(); |
60 CFbsBitmap* mask = aIcon->Mask(); |
60 CFbsBitmap* mask = aIcon->Mask(); |
61 if( bitmap ) |
61 if( bitmap ) |
62 { |
62 { |
63 AknIconUtils::SetSize( |
63 AknIconUtils::SetSize( bitmap, aSize ); |
64 bitmap, aSize, EAspectRatioPreservedAndUnusedSpaceRemoved ); |
|
65 } |
64 } |
66 if( mask ) |
65 if( mask ) |
67 { |
66 { |
68 AknIconUtils::SetSize( |
67 AknIconUtils::SetSize( mask, aSize ); |
69 mask, aSize, EAspectRatioPreservedAndUnusedSpaceRemoved ); |
|
70 } |
68 } |
71 } |
69 } |
72 } |
70 } |
73 |
71 |
74 } // namespace |
72 } // namespace |
77 // CCCAppStatusControl::NewL |
75 // CCCAppStatusControl::NewL |
78 // --------------------------------------------------------------------------- |
76 // --------------------------------------------------------------------------- |
79 // |
77 // |
80 EXPORT_C CCCAppStatusControl* CCCAppStatusControl::NewL( |
78 EXPORT_C CCCAppStatusControl* CCCAppStatusControl::NewL( |
81 CSpbContentProvider& aContentProvider, |
79 CSpbContentProvider& aContentProvider, |
82 MCCAStatusControlObserver& aObserver ) |
80 MCCAStatusControlObserver& aObserver, |
|
81 CCCAppStatusControl::TContactType aContactType ) |
83 { |
82 { |
84 CCCAppStatusControl* self= new(ELeave) CCCAppStatusControl( |
83 CCCAppStatusControl* self= new(ELeave) CCCAppStatusControl( |
85 aContentProvider, aObserver ); |
84 aContentProvider, aObserver, aContactType ); |
86 CleanupStack::PushL(self); |
85 CleanupStack::PushL(self); |
87 self->ConstructL(); |
86 self->ConstructL(); |
88 CleanupStack::Pop(self); |
87 CleanupStack::Pop(self); |
89 return self; |
88 return self; |
90 } |
89 } |
93 // CCCAppStatusControl::CCCAppStatusControl |
92 // CCCAppStatusControl::CCCAppStatusControl |
94 // --------------------------------------------------------------------------- |
93 // --------------------------------------------------------------------------- |
95 // |
94 // |
96 CCCAppStatusControl::CCCAppStatusControl( |
95 CCCAppStatusControl::CCCAppStatusControl( |
97 CSpbContentProvider& aContentProvider, |
96 CSpbContentProvider& aContentProvider, |
98 MCCAStatusControlObserver& aObserver ) : |
97 MCCAStatusControlObserver& aObserver, |
|
98 CCCAppStatusControl::TContactType aContactType ) : |
99 iContentProvider( aContentProvider ), |
99 iContentProvider( aContentProvider ), |
100 iObserver( aObserver ), |
100 iObserver( aObserver ), |
101 iState( EStateUndefined ) |
101 iState( EStateUndefined ), |
|
102 iContactType( aContactType ) |
102 { |
103 { |
103 } |
104 } |
104 |
105 |
105 // --------------------------------------------------------------------------- |
106 // --------------------------------------------------------------------------- |
106 // CCCAppStatusControl::ConstructL |
107 // CCCAppStatusControl::ConstructL |
149 { |
150 { |
150 if( iTouchFeedBack ) |
151 if( iTouchFeedBack ) |
151 { |
152 { |
152 iTouchFeedBack->RemoveFeedbackForControl( this ); |
153 iTouchFeedBack->RemoveFeedbackForControl( this ); |
153 } |
154 } |
154 iContentProvider.RemoveObserver( *this ); |
155 |
155 |
156 iContentProvider.RemoveObserver( *this ); |
|
157 |
|
158 if( iCCAStatusProvider ) |
|
159 { |
|
160 iCCAStatusProvider->RemoveObserver( *this ); |
|
161 } |
|
162 |
|
163 delete iCCAStatusProvider; |
156 delete iStatusImage; |
164 delete iStatusImage; |
157 delete iStatusIcon; |
165 delete iStatusIcon; |
158 delete iStatusLabel1; |
166 delete iStatusLabel1; |
159 delete iStatusLabel2; |
167 delete iStatusLabel2; |
160 delete iStatusText; |
168 delete iStatusText; |
236 |
244 |
237 if( iState == EStateDefaultContent ) |
245 if( iState == EStateDefaultContent ) |
238 { |
246 { |
239 ShowDefaultContentL(); |
247 ShowDefaultContentL(); |
240 } |
248 } |
|
249 } |
|
250 |
|
251 // --------------------------------------------------------------------------- |
|
252 // CCCAppStatusControl::SetStatusProvider |
|
253 // --------------------------------------------------------------------------- |
|
254 // |
|
255 EXPORT_C void CCCAppStatusControl::SetStatusProvider( MCCAStatusProvider* aCCAStatusProvider ) |
|
256 { |
|
257 if( iCCAStatusProvider ) |
|
258 { |
|
259 iCCAStatusProvider->RemoveObserver( *this ); |
|
260 delete iCCAStatusProvider; |
|
261 iCCAStatusProvider = NULL; |
|
262 } |
|
263 |
|
264 iCCAStatusProvider = aCCAStatusProvider; |
241 } |
265 } |
242 |
266 |
243 // --------------------------------------------------------------------------- |
267 // --------------------------------------------------------------------------- |
244 // CCCAppStatusControl::CountComponentControls |
268 // CCCAppStatusControl::CountComponentControls |
245 // --------------------------------------------------------------------------- |
269 // --------------------------------------------------------------------------- |
434 { |
458 { |
435 TRAP_IGNORE( DoStatusUpdateL( aLink, aEvent ) ); |
459 TRAP_IGNORE( DoStatusUpdateL( aLink, aEvent ) ); |
436 } |
460 } |
437 |
461 |
438 // --------------------------------------------------------------------------- |
462 // --------------------------------------------------------------------------- |
|
463 // CCCAppStatusControl::StatusEvent |
|
464 // --------------------------------------------------------------------------- |
|
465 // |
|
466 void CCCAppStatusControl::StatusEvent( |
|
467 MCCAStatusProviderObserver::TCCAStatusProviderObserverEvent aEvent, |
|
468 const MVPbkContactLink* aLink ) |
|
469 { |
|
470 if( iCCAStatusProvider && aEvent == MCCAStatusProviderObserver::EStatusChanged && |
|
471 iLink && aLink && iLink->IsSame( *aLink ) ) |
|
472 { |
|
473 UpdateCCAStatusL( iLink ); |
|
474 } |
|
475 } |
|
476 |
|
477 // --------------------------------------------------------------------------- |
439 // CCCAppStatusControl::DoStatusUpdateL |
478 // CCCAppStatusControl::DoStatusUpdateL |
440 // --------------------------------------------------------------------------- |
479 // --------------------------------------------------------------------------- |
441 // |
480 // |
442 void CCCAppStatusControl::DoStatusUpdateL( MVPbkContactLink& aLink, |
481 void CCCAppStatusControl::DoStatusUpdateL( MVPbkContactLink& aLink, |
443 MSpbContentProviderObserver::TSpbContentEvent aEvent ) |
482 MSpbContentProviderObserver::TSpbContentEvent aEvent ) |
444 { |
483 { |
445 if( aEvent == EContentNotAvailable ) |
484 if( aEvent == EContentNotAvailable ) |
446 { |
485 { |
447 ShowDefaultContentL(); |
486 if( iCCAStatusProvider ) |
|
487 { |
|
488 UpdateCCAStatusL( &aLink ); |
|
489 TRAP_IGNORE( iCCAStatusProvider->AddObserverL( *this ) ); |
|
490 } |
|
491 else |
|
492 { |
|
493 ShowDefaultContentL(); |
|
494 } |
448 } |
495 } |
449 else if( iLink && iLink->IsSame( aLink ) ) |
496 else if( iLink && iLink->IsSame( aLink ) ) |
450 { |
497 { |
|
498 if( iCCAStatusProvider ) |
|
499 { |
|
500 iCCAStatusProvider->RemoveObserver( *this ); |
|
501 } |
|
502 |
451 iState = EStateStatusContent; |
503 iState = EStateStatusContent; |
452 delete iStatusText; |
504 delete iStatusText; |
453 iStatusText = NULL; |
505 iStatusText = NULL; |
454 |
506 |
455 TPbk2IconId iconId; |
507 TPbk2IconId iconId; |
481 iStatusIcon = icon; |
533 iStatusIcon = icon; |
482 ReSizeIcon( iStatusIcon, iStatusIconSize ); |
534 ReSizeIcon( iStatusIcon, iStatusIconSize ); |
483 |
535 |
484 iStatusImage->SetPicture( iStatusIcon->Bitmap(), iStatusIcon->Mask() ); |
536 iStatusImage->SetPicture( iStatusIcon->Bitmap(), iStatusIcon->Mask() ); |
485 iStatusImage->MakeVisible( ETrue ); |
537 iStatusImage->MakeVisible( ETrue ); |
|
538 DrawDeferred(); |
|
539 } |
|
540 } |
|
541 |
|
542 // --------------------------------------------------------------------------- |
|
543 // CCCAppStatusControl::UpdateCCAStatusL |
|
544 // --------------------------------------------------------------------------- |
|
545 // |
|
546 void CCCAppStatusControl::UpdateCCAStatusL( MVPbkContactLink* aLink ) |
|
547 { |
|
548 if( aLink && iCCAStatusProvider ) |
|
549 { |
|
550 delete iStatusText; |
|
551 iStatusText = NULL; |
|
552 delete iStatusIcon; |
|
553 iStatusIcon = NULL; |
|
554 |
|
555 if( iContactType == ENormalContact ) |
|
556 { |
|
557 iCCAStatusProvider->GetStatusInformationL( |
|
558 *aLink, |
|
559 iStatusText, |
|
560 iStatusIcon ); |
|
561 } |
|
562 else if( iContactType == EMyCardContact ) |
|
563 { |
|
564 iCCAStatusProvider->GetMyCardStatusInformationL( |
|
565 *aLink, |
|
566 iStatusText, |
|
567 iStatusIcon ); |
|
568 } |
|
569 |
|
570 if( !iStatusIcon ) |
|
571 { |
|
572 iStatusIcon = CreateEmptyIconL(); |
|
573 } |
|
574 |
|
575 ReSizeIcon( iStatusIcon, iStatusIconSize ); |
|
576 iStatusImage->SetPicture( iStatusIcon->Bitmap(), iStatusIcon->Mask() ); |
|
577 iStatusImage->MakeVisible( ETrue ); |
|
578 |
|
579 const TInt count( RewrapStatusTextL() ); |
|
580 TInt option( 1 ); |
|
581 if( count > 1 ) |
|
582 { |
|
583 option = 0; |
|
584 } |
|
585 SetVariableLayouts( option ); |
|
586 |
486 DrawDeferred(); |
587 DrawDeferred(); |
487 } |
588 } |
488 } |
589 } |
489 |
590 |
490 // --------------------------------------------------------------------------- |
591 // --------------------------------------------------------------------------- |