diff -r e8e3147d53eb -r b3431bff8c19 phonebookui/Phonebook2/CommandsExtension/src/CPbk2CopyDetailToClipboardCmd.cpp --- a/phonebookui/Phonebook2/CommandsExtension/src/CPbk2CopyDetailToClipboardCmd.cpp Mon Mar 15 12:39:26 2010 +0200 +++ b/phonebookui/Phonebook2/CommandsExtension/src/CPbk2CopyDetailToClipboardCmd.cpp Wed Mar 31 21:13:53 2010 +0300 @@ -32,7 +32,8 @@ #include #include #include - +#include +#include #include // CPlainText #include // CClipboard @@ -188,13 +189,35 @@ // Fetch field from current UI control const MVPbkBaseContactField* field = iUiControl->FocusedField(); TPtrC detail; + RBuf addText; TVPbkFieldStorageType fieldType = field->FieldData().DataType(); switch(fieldType) { case EVPbkFieldStorageTypeText: { - detail.Set(MVPbkContactFieldTextData::Cast(field->FieldData()).Text()); + const MVPbkFieldType* vPbkFieldType = field->BestMatchingFieldType(); + TPbk2FieldGroupId groupId = Pbk2AddressTools::MapVPbkFieldTypeToAddressGroupId( vPbkFieldType ); + if( groupId == EPbk2FieldGroupIdHomeAddress || + groupId == EPbk2FieldGroupIdCompanyAddress || + groupId == EPbk2FieldGroupIdPostalAddress ) //the focused field belongs to Address + { + MVPbkStoreContact* vPbkStoreContact = const_cast( iUiControl->FocusedStoreContact() ); + //address view is empty + if( Pbk2AddressTools::IsAddressPreviewEmptyL(*vPbkStoreContact, groupId) ) + { + detail.Set( KNullDesC() ); //KNullDesC will be copied to clipboard + } + else //address view is not empty + { + Pbk2AddressTools::GetAddressPreviewLC(*vPbkStoreContact, groupId, addText); + detail.Set( addText ); + } + } + else //the focused field doesn't belong to Address + { + detail.Set(MVPbkContactFieldTextData::Cast(field->FieldData()).Text()); + } break; } case EVPbkFieldStorageTypeDateTime: @@ -229,7 +252,11 @@ KBeginning, plainText->DocumentLength()); cb->CommitL(); - CleanupStack::PopAndDestroy(2); // cb, plainText + CleanupStack::PopAndDestroy(2); // cb, plainText + if( addText.Length() ) + { + CleanupStack::PopAndDestroy(&addText); + } // Show a note HBufC* prompt = StringLoader::LoadLC(R_QTN_CCA_INFO_NOTE_COPIED_TO_CLIPBOARD);