phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlaunchercontacthandler.cpp
branchRCL_3
changeset 20 f4a778e096c2
equal deleted inserted replaced
19:5b6f26637ad3 20:f4a778e096c2
       
     1 /*
       
     2 * Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Implementation of details view plugin
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include "ccappcommlauncherheaders.h"
       
    20 #include <centralrepository.h>
       
    21 #include <VPbkVariant.hrh>
       
    22 
       
    23 // ======== LOCAL FUNCTIONS ========
       
    24 
       
    25 // --------------------------------------------------------------------------
       
    26 // MatchContactField
       
    27 // --------------------------------------------------------------------------
       
    28 //
       
    29 TBool MatchContactField( 
       
    30     const CCmsContactFieldItem::TCmsContactField* aKey, 
       
    31     const CCmsContactField& aField )
       
    32     {
       
    33     if ( *aKey == aField.Type() )
       
    34         return ETrue;
       
    35     else
       
    36         return EFalse;
       
    37     }
       
    38 
       
    39 // ======== MEMBER FUNCTIONS ========
       
    40 
       
    41 // --------------------------------------------------------------------------
       
    42 // CCCAppCommLauncherContactHandler::CCCAppCommLauncherContactHandler
       
    43 // --------------------------------------------------------------------------
       
    44 //
       
    45 CCCAppCommLauncherContactHandler::CCCAppCommLauncherContactHandler(
       
    46     MCCAppContactHandlerNotifier& aObserver,
       
    47     CCCAppCommLauncherPlugin& aPlugin):
       
    48         iObserver( aObserver ),
       
    49         iDynamicAddressGroupSet( 0 ),
       
    50         iDefaultAttributesBitMask( 0 ),
       
    51         iPlugin(aPlugin)
       
    52     {
       
    53     CCA_DP(KCommLauncherLogFile, CCA_L("CCCAppCommLauncherContactHandler()"));
       
    54     }
       
    55 
       
    56 // --------------------------------------------------------------------------
       
    57 // CCCAppCommLauncherContactHandler::~CCCAppCommLauncherContactHandler
       
    58 // --------------------------------------------------------------------------
       
    59 //
       
    60 CCCAppCommLauncherContactHandler::~CCCAppCommLauncherContactHandler()
       
    61     {
       
    62     CCA_DP(KCommLauncherLogFile, CCA_L("~CCCAppCommLauncherContactHandler()"));
       
    63     if ( iCmsWrapper )
       
    64         {
       
    65         iCmsWrapper->RemoveObserver( *this );
       
    66         iCmsWrapper->Release();
       
    67         }
       
    68     iDynamicVoipAddressGroup.Close();
       
    69     iAddressCache.Close();
       
    70     }
       
    71 
       
    72 // --------------------------------------------------------------------------
       
    73 // CCCAppCommLauncherContactHandler::NewL
       
    74 // --------------------------------------------------------------------------
       
    75 //
       
    76 CCCAppCommLauncherContactHandler* CCCAppCommLauncherContactHandler::NewL(
       
    77     MCCAppContactHandlerNotifier& aObserver,
       
    78     CCCAppCommLauncherPlugin& aPlugin )
       
    79     {
       
    80     CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherContactHandler::NewL()"));
       
    81     CCCAppCommLauncherContactHandler* self =
       
    82         new ( ELeave ) CCCAppCommLauncherContactHandler( aObserver,
       
    83             aPlugin ) ;
       
    84     CleanupStack::PushL( self );
       
    85     self->ConstructL();
       
    86     CleanupStack::Pop( self );
       
    87     CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherContactHandler::NewL()"));
       
    88     return self;
       
    89     }
       
    90 
       
    91 // --------------------------------------------------------------------------
       
    92 // CCCAppCommLauncherContactHandler::ConstructL
       
    93 // --------------------------------------------------------------------------
       
    94 //
       
    95 void CCCAppCommLauncherContactHandler::ConstructL()
       
    96     {
       
    97     CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherContactHandler::ConstructL()"));
       
    98     iCmsWrapper = CCCAppCmsContactFetcherWrapper::InstanceL();
       
    99     
       
   100     CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherContactHandler::ConstructL()"));
       
   101     }
       
   102 
       
   103 // --------------------------------------------------------------------------
       
   104 // CCCAppCommLauncherContactHandler::RequestContactDataL
       
   105 // --------------------------------------------------------------------------
       
   106 //    
       
   107 void CCCAppCommLauncherContactHandler::RequestContactDataL()
       
   108     {
       
   109     CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherContactHandler::RequestContactDataL()"));
       
   110     
       
   111     // 1st fetch whatever fetched so far
       
   112     const CCmsContactFieldInfo* info = iCmsWrapper->ContactInfo();//not owned
       
   113     if ( info )// if NULL, info fetching not completed
       
   114         {
       
   115         CCA_DP(KCommLauncherLogFile, CCA_L("::RequestContactDataL() - info available"));
       
   116         ContactInfoFetchedNotifyL( *info );
       
   117         // if info is fetched, there can be actual fields fetched also
       
   118         RPointerArray<CCmsContactField> fieldArray = iCmsWrapper->ContactFieldDataArray();//not owned
       
   119         const TInt count = fieldArray.Count();
       
   120         CCA_DP(KCommLauncherLogFile, CCA_L("::RequestContactDataL - fetched field array count: %d"), count );
       
   121         for ( TInt i = 0; i < count; i++ )
       
   122             {
       
   123             
       
   124             CCmsContactField& contactField = *fieldArray[i];
       
   125             ContactFieldFetchedNotifyL( contactField );           
       
   126             
       
   127             if ( CCmsContactFieldItem::ECmsFullName == contactField.Type() )
       
   128                 {// update titlepane with the name 
       
   129                 TPtrC newTxt = contactField.ItemL( 0 ).Data();
       
   130                 iPlugin.SetTitleL( newTxt );
       
   131                 }                
       
   132             }
       
   133         iObserver.ContactFieldFetchingCompletedL();
       
   134         }
       
   135 
       
   136     // 2nd register as observer for following events
       
   137     iCmsWrapper->AddObserverL( *this );
       
   138         
       
   139     CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherContactHandler::RequestContactDataL()"));
       
   140     }
       
   141 
       
   142 // ---------------------------------------------------------------------------
       
   143 // CCCAppCommLauncherContactHandler::ContactFieldDataObserverNotifyL
       
   144 // ---------------------------------------------------------------------------
       
   145 //  
       
   146 void CCCAppCommLauncherContactHandler::ContactFieldDataObserverNotifyL( 
       
   147         MCCAppContactFieldDataObserver::TParameter& aParameter )
       
   148     {
       
   149     if ( MCCAppContactFieldDataObserver::TParameter::EContactInfoAvailable 
       
   150         == aParameter.iType && NULL != aParameter.iContactInfo )
       
   151         {
       
   152         iDynamicAddressGroupSet = EFalse;
       
   153         ContactInfoFetchedNotifyL( *aParameter.iContactInfo );
       
   154         }
       
   155     else if ( MCCAppContactFieldDataObserver::TParameter::EContactDataFieldAvailable 
       
   156         == aParameter.iType && NULL != aParameter.iContactField )
       
   157         {
       
   158         TRAP_IGNORE( ContactFieldFetchedNotifyL( *aParameter.iContactField ));
       
   159         if ( CCCAppCmsContactFetcherWrapper::EOperationsCompleted 
       
   160              & aParameter.iStatusFlag )
       
   161             {
       
   162             iObserver.ContactFieldFetchingCompletedL();
       
   163             }
       
   164         }
       
   165     else if ( MCCAppContactFieldDataObserver::TParameter::EContactsChanged 
       
   166         == aParameter.iType )
       
   167         {
       
   168         iDynamicAddressGroupSet = EFalse;
       
   169         iAddressCache.Close(); // reset cache on change
       
   170         iObserver.ContactsChangedL();
       
   171         }
       
   172     else if (MCCAppContactFieldDataObserver::TParameter::EContactPresenceChanged == aParameter.iType)
       
   173         {
       
   174         iObserver.ContactPresenceChangedL(*aParameter.iContactField);
       
   175         }
       
   176    }
       
   177 
       
   178 // ---------------------------------------------------------------------------
       
   179 // CCCAppCommLauncherContactHandler::ContactFieldDataObserverHandleErrorL
       
   180 // ---------------------------------------------------------------------------
       
   181 //  
       
   182 void CCCAppCommLauncherContactHandler::ContactFieldDataObserverHandleErrorL( 
       
   183     TInt aState, TInt aError )
       
   184     {
       
   185     CCA_DP(KCommLauncherLogFile, CCA_L("::ContactFieldDataObserverHandleErrorL - aState: %d, aError: %d"), aState, aError );
       
   186     //todo; what kind of behaviour is wanted in error case?
       
   187     }
       
   188 
       
   189 // --------------------------------------------------------------------------
       
   190 // CCCAppCommLauncherContactHandler::ContactInfoFetchedNotifyL
       
   191 // --------------------------------------------------------------------------
       
   192 //
       
   193 void CCCAppCommLauncherContactHandler::ContactInfoFetchedNotifyL( 
       
   194     const CCmsContactFieldInfo& aContactFieldInfo )
       
   195     {
       
   196     CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherContactHandler::ContactInfoFetchedNotifyL()"));
       
   197 
       
   198     iDefaultAttributesBitMask = 0;
       
   199 
       
   200     //PERFORMANCE LOGGING: 9. Contact info notify received
       
   201     WriteToPerfLog();
       
   202 
       
   203     iObserver.ContactInfoFetchedNotifyL( aContactFieldInfo );
       
   204 
       
   205     //PERFORMANCE LOGGING: 10. Contact info notify consumed
       
   206     WriteToPerfLog();
       
   207 
       
   208     CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherContactHandler::ContactInfoFetchedNotifyL()"));
       
   209     }
       
   210     
       
   211 // --------------------------------------------------------------------------
       
   212 // CCCAppCommLauncherContactHandler::ContactFieldFetchedNotifyL
       
   213 // --------------------------------------------------------------------------
       
   214 //   
       
   215 void CCCAppCommLauncherContactHandler::ContactFieldFetchedNotifyL( 
       
   216     /*const*/ CCmsContactField& aContactField )//todo; should be const!
       
   217     {
       
   218     CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherContactHandler::ContactFieldFetchedNotifyL()"));
       
   219     
       
   220     UpdateDefaultAttributes( aContactField );
       
   221     iObserver.ContactFieldFetchedNotifyL( aContactField );
       
   222 
       
   223     CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherContactHandler::ContactFieldFetchedNotifyL()"));
       
   224     }
       
   225 
       
   226 // ---------------------------------------------------------------------------
       
   227 // CCCAppCommLauncherContactHandler::AddressAmount
       
   228 // ---------------------------------------------------------------------------
       
   229 //
       
   230 TInt CCCAppCommLauncherContactHandler::AddressAmount( 
       
   231     VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aContactAction )
       
   232     {
       
   233     TInt* count = iAddressCache.Find( aContactAction );
       
   234     if( !count )
       
   235         {
       
   236         TInt newcount = iCmsWrapper->GetContactActionFieldCount( aContactAction );
       
   237         iAddressCache.Insert( aContactAction, newcount );
       
   238         return newcount;
       
   239         }
       
   240     return *count;
       
   241     }
       
   242 
       
   243 // ---------------------------------------------------------------------------
       
   244 // CCCAppCommLauncherContactHandler::IsServiceAvailable
       
   245 // ---------------------------------------------------------------------------
       
   246 //
       
   247 TInt CCCAppCommLauncherContactHandler::IsServiceAvailable( 
       
   248     VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aContactAction )
       
   249     {
       
   250     return iCmsWrapper->IsServiceAvailable( aContactAction );
       
   251     }
       
   252 
       
   253 // --------------------------------------------------------------------------
       
   254 // CCCAppCommLauncherContactHandler::ContactStore
       
   255 // --------------------------------------------------------------------------
       
   256 // 
       
   257 TCmsContactStore CCCAppCommLauncherContactHandler::ContactStore() const
       
   258     {
       
   259     return iCmsWrapper->ContactStore();
       
   260     }
       
   261 
       
   262 // ---------------------------------------------------------------------------
       
   263 // CCCAppCommLauncherContactHandler::ContactFieldDataArray
       
   264 // ---------------------------------------------------------------------------
       
   265 //
       
   266 RPointerArray<CCmsContactField>& CCCAppCommLauncherContactHandler::ContactFieldDataArray()
       
   267     {
       
   268     CCA_DP(KCommLauncherLogFile, CCA_L("CCCAppCommLauncherContactHandler::ContactFieldDataArray()"));    
       
   269     return iCmsWrapper->ContactFieldDataArray();
       
   270     }
       
   271 
       
   272 // ---------------------------------------------------------------------------
       
   273 // CCCAppCommLauncherContactHandler::ContactIdentifierLC
       
   274 // ---------------------------------------------------------------------------
       
   275 //
       
   276 HBufC8* CCCAppCommLauncherContactHandler::ContactIdentifierLC()
       
   277     {
       
   278     return iCmsWrapper->ContactIdentifierLC();
       
   279     }
       
   280 
       
   281 // ---------------------------------------------------------------------------
       
   282 // CCCAppCommLauncherContactHandler::UpdateDefaultAttributes
       
   283 // ---------------------------------------------------------------------------
       
   284 //
       
   285 void CCCAppCommLauncherContactHandler::UpdateDefaultAttributes(
       
   286     const CCmsContactField& aContactField )
       
   287     {
       
   288     iDefaultAttributesBitMask |= aContactField.HasDefaultAttribute();         
       
   289     }
       
   290 
       
   291 // ---------------------------------------------------------------------------
       
   292 // CCCAppCommLauncherContactHandler::MapContactorTypeToCMSDefaultType
       
   293 // ---------------------------------------------------------------------------
       
   294 //
       
   295 CCmsContactFieldItem::TCmsDefaultAttributeTypes 
       
   296     CCCAppCommLauncherContactHandler::MapContactorTypeToCMSDefaultType( 
       
   297         VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aContactAction )
       
   298     {
       
   299     CCmsContactFieldItem::TCmsDefaultAttributeTypes returnValue
       
   300         = CCmsContactFieldItem::ECmsDefaultTypeUndefined; 
       
   301     
       
   302     switch( aContactAction )
       
   303         {
       
   304         case VPbkFieldTypeSelectorFactory::EVoiceCallSelector:        
       
   305             returnValue = CCmsContactFieldItem::ECmsDefaultTypePhoneNumber;
       
   306             break;
       
   307         case VPbkFieldTypeSelectorFactory::EUniEditorSelector:        
       
   308             returnValue = CCmsContactFieldItem::ECmsDefaultTypeMms;
       
   309             break;
       
   310         case VPbkFieldTypeSelectorFactory::EEmailEditorSelector:        
       
   311             returnValue = CCmsContactFieldItem::ECmsDefaultTypeEmail;
       
   312             break;
       
   313         case VPbkFieldTypeSelectorFactory::EInstantMessagingSelector:
       
   314             returnValue = CCmsContactFieldItem::ECmsDefaultTypeImpp;
       
   315             break;
       
   316         case VPbkFieldTypeSelectorFactory::EVOIPCallSelector:        
       
   317             returnValue = CCmsContactFieldItem::ECmsDefaultTypeVoIP;
       
   318             break;
       
   319         case VPbkFieldTypeSelectorFactory::EURLSelector:
       
   320             returnValue = CCmsContactFieldItem::ECmsDefaultTypeUrl;
       
   321             break;
       
   322         case VPbkFieldTypeSelectorFactory::EVideoCallSelector:        
       
   323             returnValue = CCmsContactFieldItem::ECmsDefaultTypeVideoNumber;
       
   324             break;
       
   325         case VPbkFieldTypeSelectorFactory::EPocSelector:
       
   326             returnValue = CCmsContactFieldItem::ECmsDefaultTypePOC;
       
   327             break;
       
   328         default:
       
   329             break;
       
   330         }
       
   331     return returnValue;
       
   332     }
       
   333 
       
   334 // ---------------------------------------------------------------------------
       
   335 // CCCAppCommLauncherContactHandler::HasDefaultAttribute
       
   336 // ---------------------------------------------------------------------------
       
   337 //
       
   338 TBool CCCAppCommLauncherContactHandler::HasDefaultAttribute(
       
   339     VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aContactAction )
       
   340     {
       
   341     return MapContactorTypeToCMSDefaultType( aContactAction ) & iDefaultAttributesBitMask;
       
   342     }
       
   343 
       
   344 // --------------------------------------------------------------------------
       
   345 // CCCAppCommLauncherContactHandler::ContactFieldItemDataL
       
   346 // --------------------------------------------------------------------------
       
   347 //
       
   348 void CCCAppCommLauncherContactHandler::ContactFieldItemDataL(
       
   349     const CCmsContactFieldItem::TCmsContactField aFieldType, TPtrC& aData )
       
   350     {
       
   351     RPointerArray<CCmsContactField>& cntFieldArray = 
       
   352         iCmsWrapper->ContactFieldDataArray(); //not own
       
   353     const TInt index = cntFieldArray.Find( aFieldType, MatchContactField );
       
   354 
       
   355     if ( index >= 0 && index < cntFieldArray.Count() 
       
   356          && cntFieldArray[index]->ItemCount() > 0 )
       
   357         {
       
   358         aData.Set( cntFieldArray[index]->ItemL( 0 ).Data() );
       
   359         }
       
   360     else
       
   361         {
       
   362         aData.Set( KNullDesC() );
       
   363         }
       
   364     }
       
   365 
       
   366 // --------------------------------------------------------------------------
       
   367 // CCCAppCommLauncherContactHandler::ContactFieldTypeAndContactActionMatch
       
   368 // --------------------------------------------------------------------------
       
   369 //
       
   370 TBool CCCAppCommLauncherContactHandler::ContactFieldTypeAndContactActionMatch(
       
   371     CCmsContactFieldItem::TCmsContactField aContactField,        
       
   372     VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aContactAction )
       
   373     {
       
   374     CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherContactHandler::ContactFieldTypeAndContactActionMatch()"));    
       
   375     CCA_DP(KCommLauncherLogFile, CCA_L("::ContactFieldTypeAndContactActionMatch() - aContactAction: %d"), aContactAction );    
       
   376     CCA_DP(KCommLauncherLogFile, CCA_L("::ContactFieldTypeAndContactActionMatch() - aContactField: %d"), aContactField );    
       
   377     
       
   378     TBool isMatch = EFalse;
       
   379     
       
   380     switch( aContactAction )
       
   381         {
       
   382         case VPbkFieldTypeSelectorFactory::EVoiceCallSelector:
       
   383             isMatch = FieldArrayAndContactActionMatch( 
       
   384                 aContactField, KCCAppCommLauncherVoiceCallGroup, 
       
   385                 CCACOMMLAUNCHER_ROMARRAY_SIZE( KCCAppCommLauncherVoiceCallGroup )); 
       
   386             break;
       
   387         case VPbkFieldTypeSelectorFactory::EUniEditorSelector: 
       
   388             {
       
   389             TInt flags = 0;
       
   390             CRepository* key = CRepository::NewL( TUid::Uid( KCRUidPhonebook ) );
       
   391             TInt err = key->Get( KPhonebookLocalVariationFlags, flags );
       
   392         	            
       
   393             if ( flags & EVPbkLVShowEmailInSendMsg )
       
   394                 {
       
   395                 isMatch = FieldArrayAndContactActionMatch( 
       
   396                     aContactField, KCCAppCommLauncherMessageEmailGroup, 
       
   397                     CCACOMMLAUNCHER_ROMARRAY_SIZE( KCCAppCommLauncherMessageEmailGroup ) );
       
   398                 }
       
   399             else
       
   400                 {       	
       
   401                 isMatch = FieldArrayAndContactActionMatch( 
       
   402                     aContactField, KCCAppCommLauncherMessageGroup, 
       
   403                     CCACOMMLAUNCHER_ROMARRAY_SIZE( KCCAppCommLauncherMessageGroup ) ); 
       
   404                 }
       
   405             delete key;
       
   406             }
       
   407             break;
       
   408         case VPbkFieldTypeSelectorFactory::EEmailEditorSelector:        
       
   409             isMatch = FieldArrayAndContactActionMatch( 
       
   410                 aContactField, KCCAppCommLauncherEmailGroup, 
       
   411                 CCACOMMLAUNCHER_ROMARRAY_SIZE( KCCAppCommLauncherEmailGroup )); 
       
   412             break;
       
   413         case VPbkFieldTypeSelectorFactory::EInstantMessagingSelector:
       
   414             isMatch = FieldArrayAndContactActionMatch( 
       
   415                 aContactField, KCCAppCommLauncherChatGroup, 
       
   416                 CCACOMMLAUNCHER_ROMARRAY_SIZE( KCCAppCommLauncherChatGroup )); 
       
   417             break;
       
   418         case VPbkFieldTypeSelectorFactory::EVOIPCallSelector:
       
   419             // note; dynamic construction required
       
   420             ConstructDynamicFieldArrayIfNeeded( aContactAction );
       
   421             isMatch = ( KErrNotFound != iDynamicVoipAddressGroup.Find( aContactField ));             
       
   422             break;
       
   423         case VPbkFieldTypeSelectorFactory::EURLSelector:        
       
   424             isMatch = FieldArrayAndContactActionMatch( 
       
   425                 aContactField, KCCAppCommLauncherUrlGroup, 
       
   426                 CCACOMMLAUNCHER_ROMARRAY_SIZE( KCCAppCommLauncherUrlGroup )); 
       
   427             break;            
       
   428         case VPbkFieldTypeSelectorFactory::EVideoCallSelector:        
       
   429             isMatch = FieldArrayAndContactActionMatch( 
       
   430                 aContactField, KCCAppCommLauncherVideoCallGroup, 
       
   431                 CCACOMMLAUNCHER_ROMARRAY_SIZE( KCCAppCommLauncherVideoCallGroup )); 
       
   432             break;
       
   433         case VPbkFieldTypeSelectorFactory::EFindOnMapSelector:
       
   434             isMatch = FieldArrayAndContactActionMatch( 
       
   435                 aContactField, KCCAppCommLauncherAddressGroup, 
       
   436                 CCACOMMLAUNCHER_ROMARRAY_SIZE(
       
   437                 		KCCAppCommLauncherAddressGroup )); 
       
   438             break;
       
   439         default:
       
   440             break;
       
   441         }
       
   442 
       
   443     CCA_DP(KCommLauncherLogFile, CCA_L("::ContactFieldTypeAndContactActionMatch() - isMatch: %d"), isMatch );    
       
   444     CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherContactHandler::ContactFieldTypeAndContactActionMatch()"));    
       
   445     return isMatch;
       
   446     }
       
   447 
       
   448 // --------------------------------------------------------------------------
       
   449 // CCCAppCommLauncherContactHandler::FieldArrayAndContactActionMatch
       
   450 // --------------------------------------------------------------------------
       
   451 //
       
   452 TBool CCCAppCommLauncherContactHandler::FieldArrayAndContactActionMatch(
       
   453     CCmsContactFieldItem::TCmsContactField aContactField,
       
   454     const TInt aFieldArray[], const TInt aCount )
       
   455     {
       
   456     CCA_DP(KCommLauncherLogFile, CCA_L("CCCAppCommLauncherContactHandler::FieldArrayAndContactActionMatch()"));    
       
   457     
       
   458     for( TInt i = 0;i < aCount;i++ )
       
   459         {
       
   460         if ( aContactField == aFieldArray[i] )
       
   461             return ETrue;
       
   462         }
       
   463 
       
   464     return EFalse;
       
   465     }
       
   466 
       
   467 // --------------------------------------------------------------------------
       
   468 // CCCAppCommLauncherContactHandler::ConstructDynamicFieldArrayIfNeeded
       
   469 // --------------------------------------------------------------------------
       
   470 //
       
   471 void CCCAppCommLauncherContactHandler::ConstructDynamicFieldArrayIfNeeded(
       
   472     VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aContactAction )
       
   473     {
       
   474     CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherContactHandler::ConstructDynamicFieldArrayIfNeededL()"));    
       
   475     
       
   476     switch( aContactAction )
       
   477         {
       
   478         case VPbkFieldTypeSelectorFactory::EVOIPCallSelector: 
       
   479             {
       
   480             if ( !iDynamicAddressGroupSet )
       
   481                 {
       
   482                 CreateDynamicVoipAddressGroup( IsServiceAvailable( aContactAction ));
       
   483                 iDynamicAddressGroupSet = ETrue;
       
   484                 }
       
   485             }
       
   486             break;
       
   487         default:
       
   488             break;
       
   489         }
       
   490 
       
   491     CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherContactHandler::ConstructDynamicFieldArrayIfNeededL()"));    
       
   492     }
       
   493 
       
   494 // --------------------------------------------------------------------------
       
   495 // CCCAppCommLauncherContactHandler::CreateDynamicVoipAddressGroup
       
   496 // --------------------------------------------------------------------------
       
   497 // 
       
   498 void CCCAppCommLauncherContactHandler::CreateDynamicVoipAddressGroup(
       
   499     const TInt aVoipSupportFlag )
       
   500     {
       
   501     CCA_DP(KCommLauncherLogFile, CCA_L("->CCCAppCommLauncherContactHandler::CreateDynamicVoipAddressGroup()"));    
       
   502     CCA_DP(KCommLauncherLogFile, CCA_L("::CreateDynamicVoipAddressGroup() - aVoipSupportFlag: %d"), aVoipSupportFlag );    
       
   503    
       
   504     iDynamicVoipAddressGroup.Reset();
       
   505     if ( ECmsVoIPSupportBasic & aVoipSupportFlag )
       
   506         {
       
   507         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsVoipNumberGeneric );
       
   508         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsVoipNumberHome );
       
   509         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsVoipNumberWork );
       
   510         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsPushToTalk );
       
   511         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsShareView );
       
   512         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsSipAddress );
       
   513         }
       
   514     if ( ECmsVoIPSupportXspId & aVoipSupportFlag )
       
   515         {
       
   516         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsImpp );
       
   517         }
       
   518     if ( ECmsVoIPSupportCallout & aVoipSupportFlag )
       
   519         {
       
   520         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsMobilePhoneGeneric );
       
   521         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsMobilePhoneHome );
       
   522         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsMobilePhoneWork );
       
   523         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsLandPhoneGeneric );
       
   524         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsLandPhoneHome );
       
   525         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsLandPhoneWork );
       
   526         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsAssistantNumber );
       
   527         iDynamicVoipAddressGroup.Append( CCmsContactFieldItem::ECmsCarPhone );                    
       
   528         }
       
   529     
       
   530     CCA_DP(KCommLauncherLogFile, CCA_L("<-CCCAppCommLauncherContactHandler::CreateDynamicVoipAddressGroup()"));    
       
   531     }
       
   532 
       
   533 // --------------------------------------------------------------------------
       
   534 // CCCAppCommLauncherContactHandler::IsItNumberAddress
       
   535 // --------------------------------------------------------------------------
       
   536 // 
       
   537 TBool CCCAppCommLauncherContactHandler::IsItNumberAddress(
       
   538      VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aContactAction )
       
   539     {
       
   540     if ( VPbkFieldTypeSelectorFactory::EVoiceCallSelector == aContactAction
       
   541         || VPbkFieldTypeSelectorFactory::EUniEditorSelector == aContactAction
       
   542         || VPbkFieldTypeSelectorFactory::EVOIPCallSelector == aContactAction
       
   543         || VPbkFieldTypeSelectorFactory::EVideoCallSelector == aContactAction )
       
   544         {
       
   545         return ETrue;
       
   546         }
       
   547     else
       
   548         {
       
   549         return EFalse;
       
   550         }
       
   551     }
       
   552 
       
   553 // --------------------------------------------------------------------------
       
   554 // CCCAppCommLauncherContactHandler::IsItNumberAddress
       
   555 // --------------------------------------------------------------------------
       
   556 // 
       
   557 void CCCAppCommLauncherContactHandler::RefetchContactL()
       
   558     {
       
   559     iCmsWrapper->RefetchContactL();
       
   560     iCmsWrapper->AddObserverL( *this );
       
   561     iAddressCache.Close();
       
   562     }
       
   563 
       
   564 // --------------------------------------------------------------------------
       
   565 // CCCAppCommLauncherContactHandler::IsTopContact
       
   566 // --------------------------------------------------------------------------
       
   567 // 
       
   568 TBool CCCAppCommLauncherContactHandler::IsTopContact()
       
   569     {
       
   570     return iCmsWrapper->IsTopContact();
       
   571     }
       
   572 
       
   573 // End of file