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