diff -r 5266b1f337bd -r 8baf28733c3d phoneuis/easydialing/src/easydialingutils.cpp --- a/phoneuis/easydialing/src/easydialingutils.cpp Wed Sep 01 12:30:10 2010 +0100 +++ b/phoneuis/easydialing/src/easydialingutils.cpp Tue Sep 14 21:18:17 2010 +0300 @@ -23,6 +23,17 @@ const TText KNameSeparatorChar = ' '; const TText KListFieldSeparatorChar = '\t'; +const TText KGraphicReplaceCharacter = ' '; + +// Zero Widthcharacters +const TUint KZWSCharacter = 0x200B; +const TUint KZWNJCharacter = 0x200C; +const TUint KZWJCharacter = 0x200D; + +inline TBool ZWSCharacter( const TChar aChar ); + +void ReplaceNonGraphicCharacters( TDes& aText, TText aChar ); + // ----------------------------------------------------------------------------- // CreateContactStringLC // @@ -37,14 +48,17 @@ // first strip control chars from the names HBufC* firstName = aFirstName.AllocLC(); TPtr fPtr = firstName->Des(); + ReplaceNonGraphicCharacters( fPtr, KGraphicReplaceCharacter ); AknTextUtils::StripCharacters( fPtr, KAknStripListControlChars ); HBufC* lastName = aLastName.AllocLC(); TPtr lPtr = lastName->Des(); + ReplaceNonGraphicCharacters( lPtr, KGraphicReplaceCharacter ); AknTextUtils::StripCharacters( lPtr, KAknStripListControlChars ); HBufC* companyName = aCompanyName.AllocLC(); TPtr cPtr = companyName->Des(); + ReplaceNonGraphicCharacters( cPtr, KGraphicReplaceCharacter ); AknTextUtils::StripCharacters( cPtr, KAknStripListControlChars ); // Calculate string lenght. If first name and last name are missing, company name is duplicated. @@ -99,3 +113,49 @@ CleanupStack::PushL( string ); return string; } + +/* + * ============================================================================== + * + * Local functions + * + * ============================================================================== + */ + +/** + * Checkif the given char is a zero width character: + * ZeroWidth Space, Zero Width Non-Joiner + * orZero Width Joiner character + * @paramaChar Given character + *@return ETrue if aChar is zero width character. + * EFalse if aChar is not specified zero width character. + */ + +inline TBool ZWSCharacter( const TChar aChar ) + { + const TChar zwsChar( KZWSCharacter ); + const TChar zwnjChar( KZWNJCharacter ); + const TChar zwjChar( KZWJCharacter ); + return ( aChar == zwsChar ) || ( aChar == zwnjChar ) || + ( aChar == zwjChar ); +} + +/** + * Replaces all non-graphic characters (!TChar::IsGraph()) in + * a string with the specified character. + **/ + +void ReplaceNonGraphicCharacters( TDes& aText, TText aChar ) + { + const TInt len = aText.Length(); + for ( TInt i = 0; i