283 // |
283 // |
284 TBool CPbk2MergeResolver::IsTopContactField( |
284 TBool CPbk2MergeResolver::IsTopContactField( |
285 const MVPbkStoreContactField& aField ) |
285 const MVPbkStoreContactField& aField ) |
286 { |
286 { |
287 const MVPbkFieldType* fieldType = aField.BestMatchingFieldType(); |
287 const MVPbkFieldType* fieldType = aField.BestMatchingFieldType(); |
288 __ASSERT_ALWAYS( fieldType, Panic( EPbk2FieldTypeNotExists ) ); |
288 TBool topContact( EFalse ); |
289 TArray<TVPbkFieldVersitProperty> versitProp = fieldType->VersitProperties(); |
289 |
290 |
290 if ( fieldType ) |
291 TBool topContact = EFalse; |
291 { |
292 |
292 TArray<TVPbkFieldVersitProperty> versitProp = fieldType->VersitProperties(); |
293 for( TInt idx = 0; idx < versitProp.Count() && !topContact; idx++ ) |
293 for( TInt idx = 0; idx < versitProp.Count() && !topContact; idx++ ) |
294 { |
294 { |
295 TVPbkFieldVersitProperty versitPropFirst = versitProp[idx]; |
295 TVPbkFieldVersitProperty versitPropFirst = versitProp[idx]; |
296 if( versitPropFirst.Name() == EVPbkVersitNameTopContact ) |
296 if( versitPropFirst.Name() == EVPbkVersitNameTopContact ) |
297 { |
297 { |
298 topContact = ETrue; |
298 topContact = ETrue; |
|
299 } |
299 } |
300 } |
300 } |
301 } |
301 |
302 |
302 return topContact; |
303 return topContact; |
303 } |
304 } |
522 // -------------------------------------------------------------------------- |
523 // -------------------------------------------------------------------------- |
523 // |
524 // |
524 TBool CPbk2MergeResolver::AddressField( const MVPbkStoreContactField& aField ) |
525 TBool CPbk2MergeResolver::AddressField( const MVPbkStoreContactField& aField ) |
525 { |
526 { |
526 const MVPbkFieldType* fieldType = aField.BestMatchingFieldType(); |
527 const MVPbkFieldType* fieldType = aField.BestMatchingFieldType(); |
527 __ASSERT_ALWAYS( fieldType, Panic( EPbk2FieldTypeNotExists ) ); |
528 TBool address( EFalse ); |
528 TArray<TVPbkFieldVersitProperty> versitProp = fieldType->VersitProperties(); |
529 |
529 |
530 if ( fieldType ) |
530 TBool address = EFalse; |
531 { |
531 |
532 TArray<TVPbkFieldVersitProperty> versitProp = fieldType->VersitProperties(); |
532 for( TInt idx = 0; idx < versitProp.Count() && !address; idx++ ) |
533 |
533 { |
534 for( TInt idx = 0; idx < versitProp.Count() && !address; idx++ ) |
534 TVPbkFieldVersitProperty versitPropFirst = versitProp[idx]; |
535 { |
535 if( versitPropFirst.Name() == EVPbkVersitNameADR || |
536 TVPbkFieldVersitProperty versitPropFirst = versitProp[idx]; |
536 versitPropFirst.Name() == EVPbkVersitNameGEO ) |
537 if( versitPropFirst.Name() == EVPbkVersitNameADR || |
537 { |
538 versitPropFirst.Name() == EVPbkVersitNameGEO ) |
538 address = ETrue; |
539 { |
|
540 address = ETrue; |
|
541 } |
539 } |
542 } |
540 } |
543 } |
541 |
544 |
542 return address; |
545 return address; |
543 } |
546 } |
628 // |
631 // |
629 TBool CPbk2MergeResolver::AreAddressesSubTypeSame( |
632 TBool CPbk2MergeResolver::AreAddressesSubTypeSame( |
630 const MVPbkStoreContactField& aFieldFirst, |
633 const MVPbkStoreContactField& aFieldFirst, |
631 const MVPbkStoreContactField& aFieldSecond ) |
634 const MVPbkStoreContactField& aFieldSecond ) |
632 { |
635 { |
|
636 TBool retCompare( EFalse ); |
633 const MVPbkFieldType* fieldTypeFirst = aFieldFirst.BestMatchingFieldType(); |
637 const MVPbkFieldType* fieldTypeFirst = aFieldFirst.BestMatchingFieldType(); |
634 __ASSERT_ALWAYS( fieldTypeFirst, Panic( EPbk2FieldTypeNotExists ) ); |
638 const MVPbkFieldType* fieldTypeSecond = aFieldSecond.BestMatchingFieldType(); |
635 |
639 |
636 const MVPbkFieldType* fieldTypeSecond = aFieldSecond.BestMatchingFieldType(); |
640 if ( fieldTypeFirst && fieldTypeSecond ) |
637 __ASSERT_ALWAYS( fieldTypeSecond, Panic( EPbk2FieldTypeNotExists ) ); |
641 { |
638 |
642 TArray<TVPbkFieldVersitProperty> versitPropArrFirst = fieldTypeFirst->VersitProperties(); |
639 TArray<TVPbkFieldVersitProperty> versitPropArrFirst = fieldTypeFirst->VersitProperties(); |
643 TArray<TVPbkFieldVersitProperty> versitPropArrSecond = fieldTypeSecond->VersitProperties(); |
640 TArray<TVPbkFieldVersitProperty> versitPropArrSecond = fieldTypeSecond->VersitProperties(); |
644 |
641 |
645 TInt countFirst = versitPropArrFirst.Count(); |
642 TInt countFirst = versitPropArrFirst.Count(); |
646 TInt countSecond = versitPropArrSecond.Count(); |
643 TInt countSecond = versitPropArrSecond.Count(); |
647 |
644 |
648 for( TInt idxFirst = 0; idxFirst < countFirst && !retCompare; idxFirst++ ) |
645 TBool retCompare = EFalse; |
649 { |
646 |
650 TVPbkFieldVersitProperty versitPropFirst = versitPropArrFirst[idxFirst]; |
647 for( TInt idxFirst = 0; idxFirst < countFirst && !retCompare; idxFirst++ ) |
651 for( TInt idxSecond = 0; idxSecond < countSecond; idxSecond++ ) |
648 { |
652 { |
649 TVPbkFieldVersitProperty versitPropFirst = versitPropArrFirst[idxFirst]; |
653 TVPbkFieldVersitProperty versitPropSecond = versitPropArrSecond[idxSecond]; |
650 for( TInt idxSecond = 0; idxSecond < countSecond; idxSecond++ ) |
654 if( versitPropFirst.SubField() == versitPropSecond.SubField() ) |
651 { |
655 { |
652 TVPbkFieldVersitProperty versitPropSecond = versitPropArrSecond[idxSecond]; |
656 retCompare = ETrue; |
653 if( versitPropFirst.SubField() == versitPropSecond.SubField() ) |
657 break; |
654 { |
658 } |
655 retCompare = ETrue; |
|
656 break; |
|
657 } |
659 } |
658 } |
660 } |
659 } |
661 } |
660 |
662 |
661 return retCompare; |
663 return retCompare; |
667 // |
669 // |
668 TBool CPbk2MergeResolver::AreFieldsTypeSame( |
670 TBool CPbk2MergeResolver::AreFieldsTypeSame( |
669 const MVPbkStoreContactField& aFieldFirst, |
671 const MVPbkStoreContactField& aFieldFirst, |
670 const MVPbkStoreContactField& aFieldSecond ) |
672 const MVPbkStoreContactField& aFieldSecond ) |
671 { |
673 { |
672 const MVPbkFieldType* fieldTypeFirst = aFieldFirst.BestMatchingFieldType(); |
674 TBool isSame( EFalse ); |
673 __ASSERT_ALWAYS( fieldTypeFirst, Panic( EPbk2FieldTypeNotExists ) ); |
675 const MVPbkFieldType* fieldTypeFirst = aFieldFirst.BestMatchingFieldType(); |
674 |
676 const MVPbkFieldType* fieldTypeSecond = aFieldSecond.BestMatchingFieldType(); |
675 const MVPbkFieldType* fieldTypeSecond = aFieldSecond.BestMatchingFieldType(); |
677 |
676 __ASSERT_ALWAYS( fieldTypeSecond, Panic( EPbk2FieldTypeNotExists ) ); |
678 if ( fieldTypeFirst && fieldTypeSecond ) |
677 |
679 { |
678 return fieldTypeFirst->IsSame( *fieldTypeSecond ); |
680 isSame = fieldTypeFirst->IsSame( *fieldTypeSecond ); |
|
681 } |
|
682 |
|
683 return isSame; |
679 } |
684 } |
680 |
685 |
681 // -------------------------------------------------------------------------- |
686 // -------------------------------------------------------------------------- |
682 // CPbk2MergeResolver::AddConflictL |
687 // CPbk2MergeResolver::AddConflictL |
683 // -------------------------------------------------------------------------- |
688 // -------------------------------------------------------------------------- |