phonebookui/Phonebook2/ccapplication/ccapp/ccapputil/src/ccappstatuscontrol.cpp
branchRCL_3
changeset 15 34879f5cfc63
parent 13 a6539d1e8e43
equal deleted inserted replaced
13:a6539d1e8e43 15:34879f5cfc63
    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 // ---------------------------------------------------------------------------