diff -r 33a5d2bbf6fc -r 73a1feb507fb mmsharing/mmshavailability/src/musavacontactavailability.cpp --- a/mmsharing/mmshavailability/src/musavacontactavailability.cpp Thu Aug 19 09:51:39 2010 +0300 +++ b/mmsharing/mmshavailability/src/musavacontactavailability.cpp Tue Aug 31 15:12:07 2010 +0300 @@ -16,36 +16,22 @@ */ - #include "musavacontactavailability.h" #include "musavaavailabilityobserver.h" #include "musavasettingsimp.h" #include "musavaobserver.h" #include "muslogger.h" #include "mussettings.h" -#include "musavacalleventmonitor.h" -#include -#include -#include -#include #include #ifdef UNIT_TESTING // if unit testing #include #endif // UNIT_TESTING -const TInt KNumberMatchingDigitsRequired = 7; const TInt KContactsArraySize = 10; - -_LIT( KMusAvaSip, "sip:" ); _LIT( KMusAvaTel, "tel:" ); _LIT( KMusAvaPlus, "+" ); -_LIT( KMusAvaAtSign , "@" ); -_LIT( KMusEmptyStringSymbol, "" ); -_LIT( KMusSpaceSymbol, " " ); -_LIT( KMusAvaTestString, "*#" ); - CMusAvaContactAvailability* CMusAvaContactAvailability::NewL( MMusAvaAvailabilityObserver& aObserver, @@ -87,12 +73,6 @@ ~CMusAvaContactAvailability()" ) delete iContactName; iContactName = NULL; - if ( iPhoneStatus ) - { - iPhoneStatus->Cancel(); - } - delete iPhoneStatus; - iPhoneStatus = NULL; MUS_LOG( "mus: [MUSAVA] <- CMusAvaContactAvailability::\ ~CMusAvaContactAvailability()" ) } @@ -112,7 +92,6 @@ { MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::ConstructL()" ) iOperatorVariant = MultimediaSharingSettings::OperatorVariantSettingL(); - iPhoneStatus = CMusAvaCallEventMonitor::NewL( *this ); MUS_LOG( "mus: [MUSAVA] <- CMusAvaContactAvailability::ConstructL()" ) } @@ -124,94 +103,12 @@ void CMusAvaContactAvailability::DoExecuteL() { MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::DoExecuteL()" ) - iPhoneStatus->StartMonitoringL(); - - CContactIdArray* idArray = NULL; - - #ifdef UNIT_TESTING // if unit testing - EUNIT_DISABLE_ALLOC_DECORATOR; - #endif // UNIT_TESTING - CPbkContactEngine* pbkContactEngine = CPbkContactEngine::NewL(); - CleanupStack::PushL( pbkContactEngine ); - - // resolve the name order - CContactViewBase& contactView = pbkContactEngine->AllContactsView(); - const RContactViewSortOrder& sortOrder = contactView.SortOrderL(); - #ifdef UNIT_TESTING // if unit testing - EUNIT_ENABLE_ALLOC_DECORATOR; - #endif // UNIT_TESTING - - iBeginWithFirstName = ETrue; - TBool foundOrder = EFalse; - for( TInt i = 0; i < sortOrder.Count() && !foundOrder; ++i ) - { - if ( sortOrder[i] == KUidContactFieldFamilyName ) - { - iBeginWithFirstName = EFalse; - foundOrder = ETrue; - } - else if ( sortOrder[i] == KUidContactFieldGivenName ) - { - iBeginWithFirstName = ETrue; - foundOrder = ETrue; - } - } CDesCArrayFlat* contactsArray = new ( ELeave ) CDesCArrayFlat( KContactsArraySize ); CleanupStack::PushL( contactsArray ); - if ( ContactL( idArray, *pbkContactEngine ) ) - { - CleanupStack::PushL( idArray ); - - TInt idArrayCount = idArray->Count(); - MUS_LOG1( "mus: [MUSAVA] idArray->Count %d", idArrayCount ) - CPbkContactItem* pbkItem = NULL; - TPbkFieldId fieldId = ContactIdSearch( *idArray, *pbkContactEngine ); - - for ( TInt i = 0; i < idArrayCount; i++ ) - { - MUS_LOG1( "mus: [MUSAVA] i %d", i ) - TContactItemId itemId( KErrNotFound ); - itemId = ( *idArray )[i]; - - TRAPD( error, pbkItem = pbkContactEngine->ReadContactL( itemId ) ); - - if ( !error ) - { - TBool found = EFalse; - if ( fieldId == EPbkFieldIdShareView ) - { - found = ResolveAddressesL( - *pbkItem, contactsArray, EPbkFieldIdShareView ); - } - else if( fieldId == EPbkFieldIdSIPID) - { - found = ResolveAddressesL( - *pbkItem, contactsArray, EPbkFieldIdSIPID ); - } - - if ( !found ) - { - PhoneResolutionL( *pbkItem, contactsArray ); - } - - // tbd: causes test case to fail - // break; - } - - delete pbkItem; - pbkItem = NULL; - } - - idArray->Reset(); - CleanupStack::PopAndDestroy( idArray ); - } - else - { - ActiveCallL( contactsArray ); - } + ActiveCallL( contactsArray ); iSettings.SetSipAddressesL( *contactsArray ); @@ -219,55 +116,11 @@ CleanupStack::PopAndDestroy( contactsArray ); - CleanupStack::PopAndDestroy( pbkContactEngine ); - SetState( MMusAvaObserver::EMusAvaStatusAvailable ); MUS_LOG( "mus: [MUSAVA] <- CMusAvaContactAvailability::DoExecuteL()" ) } -// ------------------------------------------------------------------------- -// This function is called when a cs call is connected. -// ------------------------------------------------------------------------- -// -void CMusAvaContactAvailability::CallConnectedL( const TDesC& aTelNumber ) - { - MUS_LOG( "mus: [MUSAVA] \ - -> CMusAvaContactAvailability::CallConnectedL()" ) - - iSettings.SetTelNumberL(aTelNumber); - DoExecuteL(); - - MUS_LOG( "mus: [MUSAVA] \ - <- CMusAvaContactAvailability::CallConnectedL()" ) - } -void CMusAvaContactAvailability::ConferenceCallL() - { - } - - -// ------------------------------------------------------------------------- -// This function is called when a cs call goes hold -// ------------------------------------------------------------------------- -// -void CMusAvaContactAvailability::CallHoldL( const TDesC& /*aTelNumber*/ ) - { - } - - -// ------------------------------------------------------------------------- -// This function is called when a cs call goes into a state -// that is not connected. -// ------------------------------------------------------------------------- -// -void CMusAvaContactAvailability::NoActiveCallL() - { - } - - -void CMusAvaContactAvailability::ConferenceCallLTerminated () - { - } // ------------------------------------------------------------------------- // @@ -279,6 +132,8 @@ const TDesC& phoneNumber = iSettings.TelNumber(); TInt retval = EFalse; + const MDesCArray& addresses = iSettings.SipAddresses(); + TInt addressesCount = addresses.MdcaCount(); if ( phoneNumber.Length() > 0 && ( iOperatorVariant == MusSettingsKeys::EOperatorSpecific || @@ -299,9 +154,19 @@ CleanupStack::PopAndDestroy( tmpDescriptor ); retval = ETrue; } + else if ( addressesCount > 0 ) + { + MUS_LOG1( "mus: [MUSAVA] addresses.MdcaCount() %d", + addressesCount ) + const TDesC& sipAddress = addresses.MdcaPoint( 0 ); + MUS_LOG_TDESC( "mus: [MUSAVA] SIP Address: ", + sipAddress ) + aContactsArray->AppendL( sipAddress ); + retval = ETrue; + } else { - MUS_LOG( "mus: [MUSAVA] Phone number not found " ) + MUS_LOG( "mus: [MUSAVA] Phone number or SIP URL not found " ) retval = EFalse; } MUS_LOG1( "mus: [MUSAVA] <- CMusAvaContactAvailability::\ @@ -310,575 +175,12 @@ return retval; } - -// ------------------------------------------------------------------------- -// -// ------------------------------------------------------------------------- -// -TBool CMusAvaContactAvailability::ContactL( - CContactIdArray*& aContactIdArray, - CPbkContactEngine& aPbkContactEngine ) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::ContactL()" ) - CPbkContactItem* pbkContactItem = NULL; - - TInt conRes = EFalse; - - TInt err = ContactArrayL( aContactIdArray, aPbkContactEngine ); - if ( !err ) - { - err = ContactItem( *aContactIdArray, pbkContactItem, aPbkContactEngine ); - // NOTE: KErrNotSupported means there is more than one contact id. - if ( err == KErrNotSupported ) - { - iSettings.SetContactId( KErrNotSupported ); - conRes = ETrue; - } - else if( err != KErrNone ) - { - MUS_LOG( "mus: [MUSAVA] No contact item found; contact id = \ - KErrNotFound" ) - conRes = EFalse; - } - else - { - TContactItemId itemId = pbkContactItem->Id(); - MUS_LOG1( "mus: [MUSAVA] Setting contact id to be %d", - itemId ) - CleanupStack::PushL( pbkContactItem ); - iSettings.SetContactId( itemId ); - UpdateContactNameL( pbkContactItem->ContactItem() ); - CleanupStack::Pop( pbkContactItem ); - conRes = ETrue; - } - } - MUS_LOG1( "mus: [MUSAVA] <- CMusAvaContactAvailability::\ - ContactL return %d", conRes ) - - delete pbkContactItem; - pbkContactItem = NULL; - - return conRes; - } - - -// ------------------------------------------------------------------------- -// -// ------------------------------------------------------------------------- -// -void CMusAvaContactAvailability::UpdateContactNameL( - CContactItem& aContactItem ) - { - MUS_LOG( "mus: [MUSAVA ] -> CMusAvaContactAvailability::\ - UpdateContactName" ) - //TBuf givenName; - //TBuf familyName; - - HBufC* givenName = NULL; - HBufC* familyName = NULL; - - delete iContactName; - iContactName = NULL; - iContactName = HBufC::NewL( 0 ); - - CContactItemFieldSet& fieldSet = aContactItem.CardFields(); - - TInt pos = fieldSet.Find( KUidContactFieldGivenName ); - if ( pos != KErrNotFound ) - { - CContactItemField& itemField = fieldSet[pos]; - //givenName = HBufC::NewL( itemField.TextStorage()->Text().Length() ); - - //givenName.Copy( itemField.TextStorage()->Text().Alloc() ); - givenName = itemField.TextStorage()->Text().AllocLC(); - - } - else - { - //givenName = KMusEmptyStringSymbol; - givenName = KMusEmptyStringSymbol().AllocLC(); - } - - pos = fieldSet.Find( KUidContactFieldFamilyName ); - if ( pos != KErrNotFound ) - { - CContactItemField& itemField = fieldSet[pos]; - //familyName = HBufC::NewL( itemField.TextStorage()->Text().Length() ); - //familyName.Copy( field.TextStorage()->Text() ); - familyName = itemField.TextStorage()->Text().AllocLC(); - } - else - { - familyName = KMusEmptyStringSymbol().AllocLC(); - } - - TInt strLength = NULL; - TBool bothNames = givenName->Length() > 0 && familyName->Length() > 0; - - if ( bothNames ) - { - strLength = givenName->Length() + - KMusSpaceSymbol().Length() + - familyName->Length(); - } - else - { - strLength = givenName->Length() + familyName->Length(); - } - - if ( strLength > iContactName->Length() ) - { - iContactName = iContactName->ReAllocL( strLength ); - } - - if ( strLength > 0 ) - { - TPtr ptr = iContactName->Des(); - if ( iBeginWithFirstName ) - { - if ( bothNames ) - { - ptr.Append( givenName->Des() ); - ptr.Append( KMusSpaceSymbol ); - ptr.Append( familyName->Des() ); - } - else - { - ptr.Append( givenName->Des() ); - ptr.Append( familyName->Des() ); - } - } - else - { - if ( bothNames ) - { - ptr.Append( familyName->Des() ); - ptr.Append( KMusSpaceSymbol ); - ptr.Append( givenName->Des() ); - } - else - { - ptr.Append( familyName->Des() ); - ptr.Append( givenName->Des() ); - } - } - } - - CleanupStack::PopAndDestroy( familyName ); - CleanupStack::PopAndDestroy( givenName ); - - TRAP_IGNORE( iSettings.SetContactNameL( iContactName->Des() ) ) - - MUS_LOG( "mus: [MUSAVA ] <- CMusAvaContactAvailability::\ - UpdateContactName" ) - } - - -// ------------------------------------------------------------------------- -// -// ------------------------------------------------------------------------- -// -TInt CMusAvaContactAvailability::ContactArrayL( - CContactIdArray*& aContactIdArray, - CPbkContactEngine& aPbkContactEngine ) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::ContactArrayL()" ) - - const TDesC& phoneNumber = iSettings.TelNumber(); - TInt retval = KErrNotFound; - - if ( phoneNumber.Length() > 0 ) - { - MUS_LOG( "mus: [MUSAVA] Phone number found " ) - // Instantiate a PhonebookContactEngine object, which represents a - // connection to the Phonebook contact database: - #ifdef UNIT_TESTING // if unit testing - EUNIT_DISABLE_ALLOC_DECORATOR; - #endif // UNIT_TESTING - CContactIdArray* tmpContactIdArray = - aPbkContactEngine.MatchPhoneNumberL( - phoneNumber, - KNumberMatchingDigitsRequired ); - #ifdef UNIT_TESTING // if unit testing - EUNIT_ENABLE_ALLOC_DECORATOR; - #endif // UNIT_TESTING - if ( tmpContactIdArray->Count() > 0 ) - { - aContactIdArray = tmpContactIdArray; - retval = KErrNone; - } - else - { - tmpContactIdArray->Reset(); - delete tmpContactIdArray; - MUS_LOG( - "mus: [MUSAVA] Phone number not found in CPbkContactEngine" ) - } - } - else - { - MUS_LOG( "mus: [MUSAVA] Phone number not found " ) - } - - MUS_LOG1( "mus: [MUSAVA] <- CMusAvaContactAvailability::\ - ContactArrayL return %d", retval ) - - return retval; - } - - -// ------------------------------------------------------------------------- -// -// ------------------------------------------------------------------------- -// -TInt CMusAvaContactAvailability::ContactItem( - CContactIdArray& aContactIdArray, - CPbkContactItem*& aPbkContactItem, - CPbkContactEngine& aPbkContactEngine ) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::ContactItem()" ) - CPbkContactItem* pbkItem = NULL; - TInt retval = KErrNotFound; - TInt contactIdsCount = aContactIdArray.Count(); - - if( contactIdsCount > 1 ) - { - // NOTE: KErrNotSupported means there is more than one contact id. - MUS_LOG( "mus: [MUSAVA] More than one Contact ID found." ) - retval = KErrNotSupported; - } - else if ( contactIdsCount == 1 ) - { - // Contact card whose phone number matches that of the other party - // was found. The ID(s) of the contacts are recorded in iIdArray. - MUS_LOG( "mus: [MUSAVA] Contact ID found." ) - - TContactItemId itemId( KErrNotFound ); - - MUS_LOG1( "mus: [MUSAVA] ID array has <%d> elements", - contactIdsCount ) - // iterate through the contact cards we consider as belonging to - // the other party, that is, those saved in iIdArray: - for ( TInt i = 0; i < contactIdsCount; i++ ) - { - itemId = ( aContactIdArray )[i]; - MUS_LOG2( "mus: [MUSAVA] Current array index == <%d>, \ - contact ID == <%d>", i, itemId ) - TRAPD( pbkFailure, pbkItem = - aPbkContactEngine.ReadContactL( itemId ) ); - - if ( pbkFailure ) - { - // Contact lookup failed. - MUS_LOG1( "mus: [MUSAVA] Leave code <%d> occurred at call \ - of ReadContactL.", pbkFailure ) - } - else - { - aPbkContactItem = pbkItem; - retval = KErrNone; - } - } - } - else - { - MUS_LOG( "mus: [MUSAVA] No contact card whose phone number\ - matches that of the other party" ) - } - - MUS_LOG1( "mus: [MUSAVA] <- CMusAvaContactAvailability::\ - ContactItem() return %d", retval ) - - return retval; - } - -// ------------------------------------------------------------------------- -// -// ------------------------------------------------------------------------- -// -TBool CMusAvaContactAvailability::PhoneResolutionL( CPbkContactItem& aPbkItem, - CDesCArrayFlat*& aContactsArray ) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::PhoneResolutionL()" ) - TInt retval = ETrue; - if ( ResolvePhoneContactL( aPbkItem, aContactsArray ) ) - { - MUS_LOG( "mus: [MUSAVA] Stop Execution" ) - } - else - { - if ( ActiveCallL( aContactsArray ) ) - { - MUS_LOG( "mus: [MUSAVA] Stop Execution" ) - } - else - { - MUS_LOG( "mus: [MUSAVA] Stop Execution" ) - retval = EFalse; - } - } - - MUS_LOG1( "mus: [MUSAVA] <- CMusAvaContactAvailability::\ - PhoneResolutionL() return %d", retval ) - return retval; - } - - -// ------------------------------------------------------------------------- -// -// ------------------------------------------------------------------------- -// -TBool CMusAvaContactAvailability::ContactId( CPbkContactItem& aPbkItem, - TPbkFieldId aTPbkFieldId ) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::ContactId()" ) - - CPbkFieldArray& fieldArray = aPbkItem.CardFields(); - TPbkContactItemField itemField; - TBool returnValue = EFalse; - - // Get the number of detail fields of the phonebook contact item. - const TInt fieldCount( fieldArray.Count() ); - - for ( TInt index = 0; index < fieldCount && returnValue == EFalse; - index++ ) - { - itemField = fieldArray.At( index ); - - if ( itemField.FieldInfo().Match( aTPbkFieldId ) && - itemField.Text().Find( KMusAvaAtSign() ) != KErrNotFound ) - { - returnValue = ETrue; - MUS_LOG( "mus: [MUSAVA] Contact id found" ) - } - } - MUS_LOG1( "mus: [MUSAVA] <- CMusAvaContactAvailability::\ - ContactId() return %d", returnValue ) - return returnValue; - } - - -// ------------------------------------------------------------------------- -// -// ------------------------------------------------------------------------- -// -TPbkFieldId CMusAvaContactAvailability::ContactIdSearch( - CContactIdArray& aContactIdArray, - CPbkContactEngine& aPbkContactEngine ) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::\ - ContactIdSearch()" ) - - TInt contactIdsCount = aContactIdArray.Count(); - MUS_LOG1( "mus: [MUSAVA] aContactIdArray.Count %d", \ - contactIdsCount ) - - CPbkContactItem* pbkItem = NULL; - TPbkFieldId retFieldId = EPbkFieldIdNone; - - for ( TInt i = 0; - i < contactIdsCount && retFieldId == EPbkFieldIdNone; - i++ ) - { - MUS_LOG1( "mus: [MUSAVA] i %d", i ) - TContactItemId itemId( KErrNotFound ); - itemId = ( aContactIdArray )[i]; - - #ifdef UNIT_TESTING // if unit testing - EUNIT_DISABLE_ALLOC_DECORATOR; - #endif // UNIT_TESTING - TRAPD( error, pbkItem = aPbkContactEngine.ReadContactL( itemId ) ) - #ifdef UNIT_TESTING // if unit testing - EUNIT_ENABLE_ALLOC_DECORATOR; - #endif // UNIT_TESTING - if ( error != KErrNone ) - { - return retFieldId; - } - if ( ContactId( *pbkItem, EPbkFieldIdShareView ) ) - { - MUS_LOG( "mus: [MUSAVA] Contact have a prefix = \ - EPbkFieldIdShareView" ) - delete pbkItem; - retFieldId = EPbkFieldIdShareView; - } - else if ( ContactId( *pbkItem, EPbkFieldIdSIPID ) ) - { - MUS_LOG( "mus: [MUSAVA] Contact have a prefix = \ - EPbkFieldIdSIPID" ) - delete pbkItem; - retFieldId = EPbkFieldIdSIPID; - } - else if ( ContactId( *pbkItem, EPbkFieldIdPhoneNumberGeneral ) ) - { - // this part never run!!!! - MUS_LOG( "mus: [MUSAVA] Contact have a prefix = \ - EPbkFieldIdPhoneNumberGeneral" ) - delete pbkItem; - retFieldId = EPbkFieldIdPhoneNumberGeneral; - } - else - { - MUS_LOG( "mus: [MUSAVA] Contact have no prefix " ) - delete pbkItem; - } - } - return retFieldId; - } - - -// ------------------------------------------------------------------------- -// -// ------------------------------------------------------------------------- -// -TBool CMusAvaContactAvailability::ResolveAddressesL( CPbkContactItem& aPbkItem, - CDesCArrayFlat*& aContactsArray, - TPbkFieldId aTPbkFieldId ) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::\ - ResolveAddressesL()" ) - - CPbkFieldArray& fieldArray = aPbkItem.CardFields(); - TPbkContactItemField itemField; - HBufC* tmpDescriptor( NULL ); - TBool returnValue( EFalse ); - - // Get the number of detail fields of the phonebook contact item. - const TInt fieldCount( fieldArray.Count() ); - - for ( TInt index = 0; index < fieldCount; index++ ) - { - itemField = fieldArray.At( index ); - - if ( itemField.FieldInfo().Match( aTPbkFieldId ) && - itemField.Text().Find( KMusAvaAtSign() ) != KErrNotFound && - ( iOperatorVariant != MusSettingsKeys::EOperatorSpecific || - itemField.Text().Find( KMusAvaTestString() ) != KErrNotFound ) ) - { - returnValue = ETrue; - MUS_LOG( "mus: [MUSAVA] Contact id found" ) - - HBufC* sipAddress; - if ( iOperatorVariant == MusSettingsKeys::EOperatorSpecific ) - { - sipAddress = HBufC::NewLC( itemField.Text().Length() - - KMusAvaTestString().Length() ); - TInt pos = itemField.Text().Find( KMusAvaTestString() ); - sipAddress->Des().Append( itemField.Text().Left( pos ) ); - sipAddress->Des().Append( itemField.Text().Right( - itemField.Text().Length() - - pos - KMusAvaTestString().Length() ) ); - } - else - { - sipAddress = itemField.Text().AllocLC(); - } - - if ( sipAddress->Find( KMusAvaSip() ) == KErrNotFound ) - { - // No, it doesn't, so add the prefix to the new address. - MUS_LOG( "mus: [MUSAVA] Prefix to the new address is added" ) - tmpDescriptor = HBufC::NewLC( KMusAvaSip().Length() + - sipAddress->Length() ); - tmpDescriptor->Des().Append( KMusAvaSip() ); - tmpDescriptor->Des().Append( *sipAddress ); - // if multiple contact have same phone number then - // sip address can be repeated . To avoid this check - // whether sip address exist already in array - // it not exist then add it to array. - if(! IsExistAlready(*aContactsArray,*tmpDescriptor)) - { - aContactsArray->AppendL( *tmpDescriptor ); - } - CleanupStack::PopAndDestroy( tmpDescriptor ); - } - else - { - MUS_LOG( "mus: [MUSAVA] Contact have a prefix" ) - // if multiple contact have same phone number then - // sip address can be repeated . To avoid this check - // whether sip address exist already in array - // it not exist then add it to array. - if(! IsExistAlready(*aContactsArray,*sipAddress)) - { - aContactsArray->AppendL( *sipAddress ); - } - } - - CleanupStack::PopAndDestroy( sipAddress ); - } - } - MUS_LOG1( "mus: [MUSAVA] <- CMusAvaContactAvailability::\ - ResolveAddressesL() return %d", returnValue ) - return returnValue; - } - - -// ------------------------------------------------------------------------- -// -// ------------------------------------------------------------------------- -// -TBool CMusAvaContactAvailability::ResolvePhoneContactL( - CPbkContactItem& aPbkItem, - CDesCArrayFlat*& aContactsArray ) - { - MUS_LOG( "mus: [MUSAVA] -> CMusAvaContactAvailability::\ - ResolvePhoneContactL()" ) - CPbkFieldArray& fieldArray = aPbkItem.CardFields(); - TPbkContactItemField itemField; - HBufC* tmpDescriptor( NULL ); - TBool returnValue = EFalse; - - // Get the number of detail fields of the phonebook contact item. - const TInt fieldCount( fieldArray.Count() ); - - for ( TInt index = 0; index < fieldCount; index++ ) - { - itemField = fieldArray.At( index ); - - if ( itemField.FieldInfo().IsPhoneNumberField() && - ( iOperatorVariant == MusSettingsKeys::EOperatorSpecific || - itemField.Text().Left(1) == KMusAvaPlus() ) ) - { - MUS_LOG( "mus: [MUSAVA] Contact id found" ) - // No, it doesn't, so add the prefix to the new address. - MUS_LOG( "mus: [MUSAVA] Prefix to the new address is added" ) - tmpDescriptor = HBufC::NewLC( KMusAvaTel().Length() + - itemField.Text().Length() ); - tmpDescriptor->Des().Append( KMusAvaTel() ); - tmpDescriptor->Des().Append( itemField.Text() ); - aContactsArray->AppendL( *tmpDescriptor ); - CleanupStack::PopAndDestroy( tmpDescriptor ); - returnValue = ETrue; - } - } - - MUS_LOG( "mus: [MUSAVA] <- CMusAvaContactAvailability::\ - ResolvePhoneContactL()" ) - return returnValue; - } - - MMusAvaObserver::TAvailabilityName CMusAvaContactAvailability::Name() { return MMusAvaObserver::EMusAvaNameContactStatus; } -// ------------------------------------------------------------------------- -// Checks that whether aDesItem present in aDesArray. -// Utility function used to avoid dublication. -// ------------------------------------------------------------------------- -// -TBool CMusAvaContactAvailability::IsExistAlready(const MDesCArray& aDesArray, - const TDesC& aDesItem) - { - for ( TInt i=0;i