--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlauncherheadertextorder.cpp Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,982 @@
+/*
+* Copyright (c) 2008-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Implementation of the class which takes care of placing the correct texts in the header
+*
+*/
+
+#include "ccappcommlauncherheaders.h"
+#include "cmscontact.h"
+#include <Pbk2PresentationUtils.h>
+#include <Pbk2Presentation.rsg>
+#include <RPbk2LocalizedResourceFile.h>
+#include <Pbk2DataCaging.hrh>
+
+const TInt KContactTypeNotSet = -1;
+
+namespace {
+
+/// These enumerations must have same values as in the specification
+/// and in the qtn_phob_name_order. These are different compared to
+/// TPbk2NameOrderInCenRep because TPbk2NameOrderInCenRep values
+/// must be same as in old PbkEng TPbkNameOrder to keep data compatibility
+/// of the CenRep.
+enum TPbk2NameOrderInUiSpecification
+ {
+ EPbk2UiSpecFirstNameLastName,
+ EPbk2UiSpecLastNameFirstName
+ };
+
+#ifdef _DEBUG
+
+enum TPanicCode
+ {
+ EPanicInvalidNameConfiguration
+ };
+
+void Panic(TPanicCode aReason)
+ {
+ _LIT(KPanicText, "CPbk2SortOrderManagerImpl");
+ User::Panic(KPanicText,aReason);
+ }
+
+#endif // _DEBUG
+
+/**
+ * Gets a digit from a descriptor.
+ *
+ * @param aReaderToBuf Resource reader pointed to a descriptor resource.
+ * @return The digit.
+ */
+TInt GetDigitFromDescriptorL( TResourceReader& aReaderToBuf )
+ {
+ HBufC* orderBuf = aReaderToBuf.ReadHBufCL();
+ CleanupStack::PushL( orderBuf );
+
+ // The setting should be 1 digit
+ __ASSERT_DEBUG( orderBuf->Length() == 1,
+ Panic( EPanicInvalidNameConfiguration ) );
+
+ TInt result = KErrNotFound;
+ TPtrC ptr( orderBuf->Des() );
+ if ( ptr.Length() > 0 && TChar(ptr[0]).IsDigit() )
+ {
+ result = TChar(ptr[0]).GetNumericValue();
+ }
+
+ CleanupStack::PopAndDestroy( orderBuf );
+ return result;
+ }
+} // namespace
+
+// ---------------------------------------------------------------------------
+// NewL, two-phase construction
+// ---------------------------------------------------------------------------
+//
+CCCAppCommLauncherHeaderTextOrder* CCCAppCommLauncherHeaderTextOrder::NewL()
+ {
+ CCCAppCommLauncherHeaderTextOrder* self= new (ELeave) CCCAppCommLauncherHeaderTextOrder();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// C++ (first phase) constructor
+// ---------------------------------------------------------------------------
+//
+CCCAppCommLauncherHeaderTextOrder::CCCAppCommLauncherHeaderTextOrder()
+ {
+ for (TInt i=0; i < KCCAppCommLauncherHeaderTextOrderLastField - KCCAppCommLauncherHeaderTextOrderFirstField + 1; i++)
+ {
+ iGroupPriorities[i] = NULL;
+ iIndividualPriorities[i] = NULL;
+ }
+
+ // Group 8
+ SetPriority(CCmsContactFieldItem::ECmsImpp, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsUrlGeneric, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsUrlHome, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsUrlWork, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsSipAddress, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsEmailGeneric, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsEmailHome, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsEmailWork, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsMobilePhoneGeneric, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsMobilePhoneHome, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsMobilePhoneWork, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsLandPhoneGeneric, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsLandPhoneHome, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsLandPhoneWork, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsVideoNumberGeneric, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsVideoNumberHome, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsVideoNumberWork, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsAssistantNumber, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsCarPhone, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsPagerNumber, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsPushToTalk, ETrue, 1);
+ SetPriority(CCmsContactFieldItem::ECmsShareView, ETrue, 1);
+
+ SetPriority(CCmsContactFieldItem::ECmsVoipNumberGeneric, ETrue, 1);
+
+ SetPriority(CCmsContactFieldItem::ECmsImpp, EFalse, 1);
+
+ SetPriority(CCmsContactFieldItem::ECmsUrlWork, EFalse, 2);
+ SetPriority(CCmsContactFieldItem::ECmsUrlHome, EFalse, 3);
+ SetPriority(CCmsContactFieldItem::ECmsUrlGeneric, EFalse, 4);
+
+ SetPriority(CCmsContactFieldItem::ECmsSipAddress, EFalse, 5);
+ SetPriority(CCmsContactFieldItem::ECmsShareView, EFalse, 6);
+ SetPriority(CCmsContactFieldItem::ECmsPushToTalk, EFalse, 7);
+
+ SetPriority(CCmsContactFieldItem::ECmsEmailWork, EFalse, 8);
+ SetPriority(CCmsContactFieldItem::ECmsEmailHome, EFalse, 9);
+ SetPriority(CCmsContactFieldItem::ECmsEmailGeneric, EFalse, 10);
+
+ SetPriority(CCmsContactFieldItem::ECmsAssistantNumber, EFalse, 11);
+ SetPriority(CCmsContactFieldItem::ECmsPagerNumber, EFalse, 12);
+ SetPriority(CCmsContactFieldItem::ECmsVideoNumberWork, EFalse, 13);
+ SetPriority(CCmsContactFieldItem::ECmsVideoNumberHome, EFalse, 14);
+ SetPriority(CCmsContactFieldItem::ECmsVideoNumberGeneric, EFalse, 15);
+ SetPriority(CCmsContactFieldItem::ECmsCarPhone, EFalse, 16);
+ SetPriority(CCmsContactFieldItem::ECmsLandPhoneWork, EFalse, 17);
+ SetPriority(CCmsContactFieldItem::ECmsLandPhoneHome, EFalse, 18);
+ SetPriority(CCmsContactFieldItem::ECmsLandPhoneGeneric, EFalse, 19);
+ SetPriority(CCmsContactFieldItem::ECmsMobilePhoneWork, EFalse, 20);
+ SetPriority(CCmsContactFieldItem::ECmsMobilePhoneHome, EFalse, 21);
+ SetPriority(CCmsContactFieldItem::ECmsMobilePhoneGeneric, EFalse, 22);
+
+
+ // Group 7
+ SetPriority(CCmsContactFieldItem::ECmsLastName, ETrue, 2);
+ SetPriority(CCmsContactFieldItem::ECmsMiddleName, ETrue, 2);
+ SetPriority(CCmsContactFieldItem::ECmsFirstName, ETrue, 2);
+
+ SetPriority(CCmsContactFieldItem::ECmsLastName, EFalse, 1);
+ SetPriority(CCmsContactFieldItem::ECmsMiddleName, EFalse, 2);
+ SetPriority(CCmsContactFieldItem::ECmsFirstName, EFalse, 3);
+
+
+ // Group 6
+ SetPriority(CCmsContactFieldItem::ECmsAddrCountryGeneric, ETrue, 3);
+ SetPriority(CCmsContactFieldItem::ECmsAddrRegionGeneric, ETrue, 3);
+ SetPriority(CCmsContactFieldItem::ECmsAddrLocalGeneric, ETrue, 3);
+ SetPriority(CCmsContactFieldItem::ECmsAddrStreetGeneric, ETrue, 3);
+
+ SetPriority(CCmsContactFieldItem::ECmsAddrCountryGeneric, EFalse, 1);
+ SetPriority(CCmsContactFieldItem::ECmsAddrRegionGeneric, EFalse, 2);
+ SetPriority(CCmsContactFieldItem::ECmsAddrLocalGeneric, EFalse, 3);
+ SetPriority(CCmsContactFieldItem::ECmsAddrStreetGeneric, EFalse, 4);
+
+
+ // Group 5
+ SetPriority(CCmsContactFieldItem::ECmsAddrCountryWork, ETrue, 4);
+ SetPriority(CCmsContactFieldItem::ECmsAddrRegionWork, ETrue, 4);
+ SetPriority(CCmsContactFieldItem::ECmsAddrLocalWork, ETrue, 4);
+ SetPriority(CCmsContactFieldItem::ECmsAddrStreetWork, ETrue, 4);
+
+ SetPriority(CCmsContactFieldItem::ECmsAddrCountryWork, EFalse, 1);
+ SetPriority(CCmsContactFieldItem::ECmsAddrRegionWork, EFalse, 2);
+ SetPriority(CCmsContactFieldItem::ECmsAddrLocalWork, EFalse, 3);
+ SetPriority(CCmsContactFieldItem::ECmsAddrStreetWork, EFalse, 4);
+
+
+ // Group 4
+ SetPriority(CCmsContactFieldItem::ECmsAddrCountryHome, ETrue, 5);
+ SetPriority(CCmsContactFieldItem::ECmsAddrRegionHome, ETrue, 5);
+ SetPriority(CCmsContactFieldItem::ECmsAddrLocalHome, ETrue, 5);
+ SetPriority(CCmsContactFieldItem::ECmsAddrStreetHome, ETrue, 5);
+
+ SetPriority(CCmsContactFieldItem::ECmsAddrCountryHome, EFalse, 1);
+ SetPriority(CCmsContactFieldItem::ECmsAddrRegionHome, EFalse, 2);
+ SetPriority(CCmsContactFieldItem::ECmsAddrLocalHome, EFalse, 3);
+ SetPriority(CCmsContactFieldItem::ECmsAddrStreetHome, EFalse, 4);
+
+
+ // Group 3 (prio 6)
+ SetPriority(CCmsContactFieldItem::ECmsDepartment, ETrue, 6);
+ SetPriority(CCmsContactFieldItem::ECmsCompanyName, ETrue, 6);
+ SetPriority(CCmsContactFieldItem::ECmsJobTitle, ETrue, 6);
+ SetPriority(CCmsContactFieldItem::ECmsNickname, ETrue, 6);
+
+ SetPriority(CCmsContactFieldItem::ECmsDepartment, EFalse, 1);
+ SetPriority(CCmsContactFieldItem::ECmsCompanyName, EFalse, 2);
+ SetPriority(CCmsContactFieldItem::ECmsJobTitle, EFalse, 3);
+ SetPriority(CCmsContactFieldItem::ECmsNickname, EFalse, 4);
+
+
+ // Group 1 (prio 7)
+ SetPriority(CCmsContactFieldItem::ECmsNote, ETrue, 7);
+
+ SetPriority(CCmsContactFieldItem::ECmsNote, EFalse, 1);
+
+ }
+
+// ---------------------------------------------------------------------------
+// Helper function for reading a descriptor from repository
+// ---------------------------------------------------------------------------
+//
+HBufC* GetStringFromRepoLC(CRepository* aRepository, TUint32 aKey)
+ {
+ HBufC* prioStr = HBufC::NewLC(NCentralRepositoryConstants::KMaxUnicodeStringLength);
+ TInt trueLength = 0;
+ TPtr ptr = prioStr->Des();
+ TInt error = aRepository->Get(aKey, ptr, trueLength);
+ if (error == KErrOverflow)
+ {
+ CleanupStack::PopAndDestroy(prioStr);
+ prioStr = HBufC::NewLC(trueLength);
+ User::LeaveIfError(aRepository->Get(aKey, ptr));
+ }
+ else if (error != KErrNone)
+ {
+#ifdef _DEBUG
+ CCA_DP(KCommLauncherLogFile, CCA_L("CCCAppCommLauncherHeaderTextOrder::getStringFromRepoLC - Header text priority variation error (repository field)"));
+ CCA_DP(KCommLauncherLogFile, CCA_L("CCCAppCommLauncherHeaderTextOrder::getStringFromRepoLC - err: %d"), error );
+ CEikonEnv::Static()->InfoMsg(_L("Header text priority variation error. See logs."));
+#endif//_DEBUG
+ CleanupStack::PopAndDestroy(prioStr);
+ return 0;
+ }
+ return prioStr;
+ }
+
+// ---------------------------------------------------------------------------
+// ConstructL, second phase constructor
+// ---------------------------------------------------------------------------
+//
+void CCCAppCommLauncherHeaderTextOrder::ConstructL()
+ {
+ for (TInt i = 0; i < KCCAppCommLauncherHeaderTextOrderLineCount; i++)
+ {
+ iHeaderRows.AppendL(0);
+ iHeaderRowsClipped.AppendL(0);
+ iHeaderTypes[i] = KContactTypeNotSet;
+ }
+
+ CRepository* prioOrderRepo = CRepository::NewLC(KCRUidCCACommLauncher);
+ HBufC* prioStr = 0;
+
+ HBufC* prioStr1 = GetStringFromRepoLC(prioOrderRepo, KHeaderGroupPriorities);
+ User::LeaveIfNull(prioStr1);
+
+ HBufC* prioStr2 = GetStringFromRepoLC(prioOrderRepo, KHeaderGroupPriorities2);
+ if (prioStr2)
+ {
+ prioStr = HBufC::NewL(prioStr1->Length() + prioStr2->Length());
+ prioStr->Des().Append(*prioStr1);
+ prioStr->Des().Append(*prioStr2);
+ CleanupStack::PopAndDestroy(prioStr2);
+ CleanupStack::PopAndDestroy(prioStr1);
+ CleanupStack::PushL(prioStr);
+ }
+ else
+ {
+ prioStr = prioStr1;
+ }
+
+
+ TLex groupPrioLex(*prioStr);
+ while (groupPrioLex.Offset() < prioStr->Length() - 1)
+ {
+ TPtrC nameToken = groupPrioLex.NextToken();
+ CCmsContactFieldItem::TCmsContactField type;
+ if (MapStringToContactField(nameToken, type) == KErrNone)
+ {
+ TPtrC numToken = groupPrioLex.NextToken();
+ TPtrC numToken2 = groupPrioLex.NextToken();
+ TLex groupPrioNumLex(numToken);
+ TLex individualPrioNumLex(numToken2);
+ TInt priority = 0;
+ if (groupPrioNumLex.Val(priority) == KErrNone)
+ {
+ SetPriority(type, ETrue, priority);
+ }
+#ifdef _DEBUG_
+ else
+ {
+ CCA_DP(KCommLauncherLogFile, CCA_L("CCCAppCommLauncherHeaderTextOrder::ConstructL - Priority value is not a number: %S"), &numToken );
+ CEikonEnv::Static()->InfoMsg(_L("Header text priority variation error. See logs."));
+ }
+#endif //_DEBUG_
+ if (individualPrioNumLex.Val(priority) == KErrNone)
+ {
+ SetPriority(type, EFalse, priority);
+ }
+#ifdef _DEBUG_
+ else
+ {
+ CCA_DP(KCommLauncherLogFile, CCA_L("CCCAppCommLauncherHeaderTextOrder::ConstructL - Priority value is not a number: %S"), &numToken );
+ CEikonEnv::Static()->InfoMsg(_L("Header text priority variation error. See logs."));
+ }
+#endif //_DEBUG_
+ }
+#ifdef _DEBUG
+ else
+ {
+ CCA_DP(KCommLauncherLogFile, CCA_L("CCCAppCommLauncherHeaderTextOrder::ConstructL - Header text priority variation, field name not recognized)"));
+ CCA_DP(KCommLauncherLogFile, CCA_L("CCCAppCommLauncherHeaderTextOrder::ConstructL - field name: %S"), &nameToken );
+ }
+#endif //_DEBUG
+ }
+ CleanupStack::PopAndDestroy(prioStr);
+
+ CleanupStack::PopAndDestroy(prioOrderRepo);
+
+ // Open resource file for reading language specific default values
+ RPbk2LocalizedResourceFile resFile;
+ resFile.OpenLC( KPbk2RomFileDrive,
+ KDC_RESOURCE_FILES_DIR,
+ Pbk2PresentationUtils::PresentationResourceFile() );
+
+ // Read the name order value from the resource file
+ TResourceReader reader;
+ reader.SetBuffer( resFile.AllocReadLC( R_QTN_PHOB_NAME_ORDER ) );
+ TInt orderInResFile = GetDigitFromDescriptorL( reader );
+ CleanupStack::PopAndDestroy(); // reader
+
+ CleanupStack::PopAndDestroy(); // resFile
+
+ // Converting from TPbk2NameOrderInUiSpecification to TPbk2NameOrderInCenRep
+ TInt orderInCenRep = EPbk2CenRepNameOrderUndefined;
+
+ CRepository* sortOrderSettings = CRepository::NewLC(TUid::Uid(KCRUidPhonebook));
+ sortOrderSettings->Get(KPhonebookNameOrdering, orderInCenRep);
+
+ switch ( orderInResFile )
+ {
+ case EPbk2UiSpecLastNameFirstName:
+ {
+ orderInCenRep = EPbk2CenRepLastNameFirstName;
+ break;
+ }
+
+ case EPbk2UiSpecFirstNameLastName: // FALL THROUGH
+
+ // If the name order is not defined in the UI Specification,
+ // and...
+ default:
+ {
+ // ... also not defined in the CenRep,
+ // then use the "First Name" "Last Name" order
+ // for most number of languages.
+ if ( EPbk2CenRepNameOrderUndefined == orderInCenRep )
+ {
+ orderInCenRep = EPbk2CenRepFirstNameLastName;
+ }
+ break;
+ }
+
+ } // end switch
+
+ if (orderInCenRep == EPbk2CenRepLastNameFirstName)
+ {
+ SetPriority(CCmsContactFieldItem::ECmsMiddleName, EFalse, 1);
+ SetPriority(CCmsContactFieldItem::ECmsFirstName, EFalse, 2);
+ SetPriority(CCmsContactFieldItem::ECmsLastName, EFalse, 3);
+ }
+ else
+ {
+ SetPriority(CCmsContactFieldItem::ECmsFirstName, EFalse, 3);
+ SetPriority(CCmsContactFieldItem::ECmsMiddleName, EFalse, 2);
+ SetPriority(CCmsContactFieldItem::ECmsLastName, EFalse, 1);
+ }
+
+ CleanupStack::PopAndDestroy(sortOrderSettings);
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CCCAppCommLauncherHeaderTextOrder::~CCCAppCommLauncherHeaderTextOrder()
+ {
+ iHeaderRows.ResetAndDestroy();
+ iHeaderRowsClipped.ResetAndDestroy();
+ delete iCurrentDbName;
+ }
+
+// ---------------------------------------------------------------------------
+// CCCAppCommLauncherHeaderTextOrder::SetPriority
+// ---------------------------------------------------------------------------
+//
+void CCCAppCommLauncherHeaderTextOrder::SetPriority(CCmsContactFieldItem::TCmsContactField aContactField, TBool aGroup, TInt aPriority)
+ {
+ if (aGroup)
+ {
+ iGroupPriorities[aContactField - KCCAppCommLauncherHeaderTextOrderFirstField] = aPriority;
+ }
+ else
+ {
+ iIndividualPriorities[aContactField - KCCAppCommLauncherHeaderTextOrderFirstField] = aPriority;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CCCAppCommLauncherHeaderTextOrder::GetPriority
+// ---------------------------------------------------------------------------
+//
+TInt CCCAppCommLauncherHeaderTextOrder::GetPriority(CCmsContactFieldItem::TCmsContactField aContactField, TBool aGroup)
+ {
+ if (aGroup)
+ {
+ return iGroupPriorities[aContactField - KCCAppCommLauncherHeaderTextOrderFirstField];
+ }
+ else
+ {
+ return iIndividualPriorities[aContactField - KCCAppCommLauncherHeaderTextOrderFirstField];
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// CCCAppCommLauncherHeaderTextOrder::GetTextForRow
+// ---------------------------------------------------------------------------
+//
+const TDesC& CCCAppCommLauncherHeaderTextOrder::GetTextForRow(TInt aRow)
+ {
+ if (aRow >= 0 && aRow < iHeaderRowsClipped.Count() && aRow < iHeaderRows.Count())
+ {
+ if (iHeaderRowsClipped[aRow])
+ {
+ TPtr ptr(iHeaderRowsClipped[aRow]->Des());
+ // Replace characters that can not be displayed correctly.
+ Pbk2PresentationUtils::ReplaceNonGraphicCharacters(ptr, ' ');
+ return *iHeaderRowsClipped[aRow];
+ }
+ else if (iHeaderRows[aRow])
+ {
+ TPtr ptr(iHeaderRows[aRow]->Des());
+ Pbk2PresentationUtils::ReplaceNonGraphicCharacters(ptr, ' ');
+ return *iHeaderRows[aRow];
+ }
+ }
+ return KNullDesC();
+ }
+
+// ---------------------------------------------------------------------------
+// CCCAppCommLauncherHeaderTextOrder::SelectContactFieldL
+// ---------------------------------------------------------------------------
+//
+void CCCAppCommLauncherHeaderTextOrder::SelectContactFieldL(
+ const CCmsContactField& aContactField,
+ TInt aTopGroupPriority)
+ {
+ CCmsContactFieldItem::TCmsContactField type = aContactField.Type();
+ const RPointerArray<CCmsContactFieldItem>& fields = aContactField.Items();
+
+ for (TInt i=0; i < fields.Count(); i++)
+ {
+ for (TInt i2 = 0; i2 < KCCAppCommLauncherHeaderTextOrderLineCount; i2++)
+ {
+ if ( GetPriority(type, ETrue) == aTopGroupPriority &&
+ (iHeaderTypes[i2] < 0 || GetPriority(type, EFalse) > GetPriority((CCmsContactFieldItem::TCmsContactField)iHeaderTypes[i2], EFalse)) )
+ {
+ if(StrippedLengthL(*fields[i])) //Skip blank fields
+ {
+ TInt typeMem = KContactTypeNotSet;
+ for (TInt i3 = i2; i3 < KCCAppCommLauncherHeaderTextOrderLineCount; i3++)
+ {
+ TInt typeTemp = iHeaderTypes[i3];
+ iHeaderTypes[i3] = typeMem;
+ typeMem = typeTemp;
+ }
+ iHeaderTypes[i2] = type;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CCCAppCommLauncherHeaderTextOrder::ProcessContactFieldsL
+// ---------------------------------------------------------------------------
+//
+void CCCAppCommLauncherHeaderTextOrder::ProcessContactFieldsL(
+ RArray<CCmsContactField> aCmsContactFields)
+ {
+ TInt topGroupPriority = 0;
+ delete iCurrentDbName;
+ iCurrentDbName = NULL;
+ TInt count = aCmsContactFields.Count();
+ TInt i;
+
+ //1. Get the topmost group of fields containing displayable sdata
+ for(i=0; i < count ; i++ )
+ {
+ for(TInt j=0; j < aCmsContactFields[i].Items().Count(); j++ )
+ {
+ CCmsContactFieldItem::TCmsContactField type = aCmsContactFields[i].Type();
+ if(StrippedLengthL(aCmsContactFields[i].ItemL(j)))
+ {
+ if ( GetPriority(type, ETrue) > topGroupPriority )
+ {
+ topGroupPriority = GetPriority(type, ETrue);
+ }
+ }
+ }
+ }
+
+ //2. Select preferred fields from top group
+ for(i=0; i < count ; i++ )
+ {
+ SelectContactFieldL( aCmsContactFields[i], topGroupPriority );
+ }
+ if (KCCAppCommLauncherHeaderTextOrderLineCount > 1 && iHeaderTypes[1] == KContactTypeNotSet)
+ {
+ iHeadersWrapped = ETrue;
+ }
+
+ //3. Process the selected fields
+ for(i=0; i < count ; i++ )
+ {
+ ProcessContactFieldL( aCmsContactFields[i] );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CCCAppCommLauncherHeaderTextOrder::ProcessContactFieldL
+// ---------------------------------------------------------------------------
+//
+void CCCAppCommLauncherHeaderTextOrder::ProcessContactFieldL(const CCmsContactField& aContactField)
+ {
+ for (TInt i = 0; i < KCCAppCommLauncherHeaderTextOrderLineCount; i++)
+ {
+ if (iHeaderRowsClipped[i])
+ {
+ delete iHeaderRowsClipped[i];
+ iHeaderRowsClipped[i] = 0;
+ }
+ if (aContactField.Type() == iHeaderTypes[i] && !iHeaderRows[i])
+ {
+ //Check is there anything from current database for this header row[i]
+ TInt itemCountForDb = ItemCountForCurrentDbL( aContactField );
+ if(!itemCountForDb)
+ {
+ //nothing to show, skip this contact field
+ break;
+ }
+
+ if (itemCountForDb > 1)
+ {
+ iHeadersWrapped = EFalse;
+
+ HBufC* mem = 0;
+ TInt typeMem = KContactTypeNotSet;
+ for (TInt i2 = i + itemCountForDb-1; i2 < KCCAppCommLauncherHeaderTextOrderLineCount; i2++)
+ {
+ HBufC* temp = iHeaderRows[i2];
+ TInt typeTemp = iHeaderTypes[i2];
+ iHeaderRows[i2] = mem;
+ iHeaderTypes[i2] = typeMem;
+ mem = temp;
+ typeMem = typeTemp;
+ }
+ delete mem;
+ }
+ for (unsigned i2 = i; i2 < KCCAppCommLauncherHeaderTextOrderLineCount && i2-i < itemCountForDb; i2++)
+ {
+ //Add only rows from current db
+ TPtrC info = aContactField.ItemL(i2-i).Info();
+ if( iCurrentDbName && *iCurrentDbName == info )
+ {
+ iHeaderRows[i2] = aContactField.ItemL(i2-i).Data().AllocL();
+ iHeaderTypes[i2] = aContactField.Type();
+ }
+ }
+ break;
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CCCAppCommLauncherHeaderTextOrder::StrippedLengthL
+// ---------------------------------------------------------------------------
+//
+TInt CCCAppCommLauncherHeaderTextOrder::StrippedLengthL(
+ const CCmsContactFieldItem& aCmsContactFieldItem)
+ {
+ HBufC* buf1 = aCmsContactFieldItem.Data().AllocLC();
+ TPtr buf1Ptr = buf1->Des();
+ buf1Ptr.TrimAll();
+
+ DeleteCharL(buf1Ptr, 0x000d); //KCarriageReturn = 0x000d
+ DeleteCharL(buf1Ptr, 0x000a); //KLineFeed = 0x000a
+ buf1Ptr.TrimAll(); //if any whitespace left after first trim...
+
+ TInt strippedLength = buf1Ptr.Length();
+ CleanupStack::PopAndDestroy(buf1);
+ return strippedLength;
+ }
+
+// ---------------------------------------------------------------------------
+// CCCAppCommLauncherHeaderTextOrder::ProcessContactFieldsL
+// ---------------------------------------------------------------------------
+//
+void CCCAppCommLauncherHeaderTextOrder::DeleteCharL(TDes& aDest, TChar aChar)
+ {
+ TBuf<1> str;
+ str.Append(aChar);
+
+ TInt delPos = aDest.Find(str);
+ while( delPos != KErrNotFound )
+ {
+ aDest.Delete(delPos, 1);
+ delPos = aDest.Find(str);
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CCCAppCommLauncherHeaderTextOrder::ItemCountForCurrentDbL
+// ---------------------------------------------------------------------------
+//
+TInt CCCAppCommLauncherHeaderTextOrder::ItemCountForCurrentDbL(
+ const CCmsContactField& aContactField )
+ {
+ TInt ret(0);
+
+ for(TInt i=0; i < aContactField.ItemCount(); i++ )
+ {
+ if( !iCurrentDbName )
+ {
+ //From now on accept only data from this database
+ iCurrentDbName = aContactField.ItemL(i).Info().AllocL();
+ }
+
+ TPtrC info = aContactField.ItemL(i).Info();
+ if( *iCurrentDbName == info )
+ {
+ ret++;
+ }
+ }
+ return ret;
+ }
+
+// ---------------------------------------------------------------------------
+// CCCAppCommLauncherHeaderTextOrder::Reset
+// ---------------------------------------------------------------------------
+//
+void CCCAppCommLauncherHeaderTextOrder::Reset()
+ {
+ for (TInt i = 0; i < KCCAppCommLauncherHeaderTextOrderLineCount; i++)
+ {
+ delete iHeaderRows[i];
+ iHeaderRows[i] = NULL;
+ delete iHeaderRowsClipped[i];
+ iHeaderRowsClipped[i] = NULL;
+ iHeaderTypes[i] = KContactTypeNotSet;
+ }
+ iHeadersWrapped = EFalse;
+ }
+
+// ---------------------------------------------------------------------------
+// CCCAppCommLauncherHeaderTextOrder::ClipL
+// ---------------------------------------------------------------------------
+//
+void CCCAppCommLauncherHeaderTextOrder::ClipL(const CFont& aFont, TInt aLineWidth)
+ {
+ iHeaderRowsClipped.ResetAndDestroy();
+ if (iHeadersWrapped && iHeaderRows[0])
+ {
+ HBufC* textTemp = HBufC::NewLC(iHeaderRows[0]->Length() + 1);
+ CArrayFixFlat<TInt> * lineWidths = new (ELeave) CArrayFixFlat<TInt>(KCCAppCommLauncherHeaderTextOrderLineCount);
+ CleanupStack::PushL(lineWidths);
+ lineWidths->AppendL(aLineWidth);
+ lineWidths->AppendL(aLineWidth);
+ lineWidths->AppendL(aLineWidth);
+ CArrayFixFlat<TPtrC>* lines = new (ELeave) CArrayFixFlat<TPtrC>(KCCAppCommLauncherHeaderTextOrderLineCount);
+ CleanupStack::PushL(lines);
+ TPtr ptr = textTemp->Des();
+ ptr.Copy(*iHeaderRows[0]);
+ AknTextUtils::WrapToArrayAndClipL(ptr, *lineWidths, aFont, *lines);
+ for (TInt i=0; i < KCCAppCommLauncherHeaderTextOrderLineCount; i++)
+ {
+ if (i < lines->Count())
+ {
+ iHeaderRowsClipped.AppendL(lines->At(i).AllocL());
+ }
+ else
+ {
+ iHeaderRowsClipped.AppendL(KNullDesC().AllocL());
+ }
+ }
+ CleanupStack::PopAndDestroy(3);
+ }
+ else
+ {
+ for (TInt i = 0; i < KCCAppCommLauncherHeaderTextOrderLineCount; i++)
+ {
+ iHeaderRowsClipped.AppendL(0);
+ if (iHeaderRows[i])
+ {
+ AknTextUtils::TClipDirection clipDirection = MapContactFieldToClipDirection((CCmsContactFieldItem::TCmsContactField)iHeaderTypes[i]);
+ iHeaderRowsClipped[i] = iHeaderRows[i]->AllocL();
+ TPtr ptr = iHeaderRowsClipped[i]->Des();
+ AknTextUtils::ClipToFit(ptr, aFont, aLineWidth, clipDirection);
+ }
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CCCAppCommLauncherHeaderTextOrder::MapStringToContactField
+// ---------------------------------------------------------------------------
+//
+ TInt CCCAppCommLauncherHeaderTextOrder::MapStringToContactField(const TDesC& aDesc, CCmsContactFieldItem::TCmsContactField& aType)
+ {
+ _LIT(KECmsLastName, "ECmsLastName");
+ _LIT(KECmsMiddleName, "ECmsMiddleName");
+ _LIT(KECmsFirstName, "ECmsFirstName");
+ _LIT(KECmsUndefined, "ECmsUndefined");
+ _LIT(KECmsPresenceData, "ECmsPresenceData");
+ _LIT(KECmsBrandedAvailability, "ECmsBrandedAvailability");
+ _LIT(KECmsThumbnailPic, "ECmsThumbnailPic");
+ _LIT(KECmsSipAddress, "ECmsSipAddress");
+ _LIT(KECmsLandPhoneHome, "ECmsLandPhoneHome");
+ _LIT(KECmsMobilePhoneHome, "ECmsMobilePhoneHome");
+ _LIT(KECmsFaxNumberHome, "ECmsFaxNumberHome");
+ _LIT(KECmsVideoNumberHome, "ECmsVideoNumberHome");
+ _LIT(KECmsVoipNumberHome, "ECmsVoipNumberHome");
+ _LIT(KECmsEmailHome, "ECmsEmailHome");
+ _LIT(KECmsUrlHome, "ECmsUrlHome");
+ _LIT(KECmsLandPhoneWork, "ECmsLandPhoneWork");
+ _LIT(KECmsMobilePhoneWork, "ECmsMobilePhoneWork");
+ _LIT(KECmsVideoNumberWork, "ECmsVideoNumberWork");
+ _LIT(KECmsFaxNumberWork, "ECmsFaxNumberWork");
+ _LIT(KECmsVoipNumberWork, "ECmsVoipNumberWork");
+ _LIT(KECmsEmailWork, "ECmsEmailWork");
+ _LIT(KECmsUrlWork, "ECmsUrlWork");
+ _LIT(KECmsEmailGeneric, "ECmsEmailGeneric");
+ _LIT(KECmsUrlGeneric, "ECmsUrlGeneric");
+ _LIT(KECmsLandPhoneGeneric, "ECmsLandPhoneGeneric");
+ _LIT(KECmsMobilePhoneGeneric, "ECmsMobilePhoneGeneric");
+ _LIT(KECmsVideoNumberGeneric, "ECmsVideoNumberGeneric");
+ _LIT(KECmsAddrLabelGeneric, "ECmsAddrLabelGeneric");
+ _LIT(KECmsAddrPOGeneric, "ECmsAddrPOGeneric");
+ _LIT(KECmsAddrExtGeneric, "ECmsAddrExtGeneric");
+ _LIT(KECmsAddrStreetGeneric, "ECmsAddrStreetGeneric");
+ _LIT(KECmsAddrLocalGeneric, "ECmsAddrLocalGeneric");
+ _LIT(KECmsAddrRegionGeneric, "ECmsAddrRegionGeneric");
+ _LIT(KECmsAddrPostcodeGeneric, "ECmsAddrPostcodeGeneric");
+ _LIT(KECmsAddrCountryGeneric, "ECmsAddrCountryGeneric");
+ _LIT(KECmsVoipNumberGeneric, "ECmsVoipNumberGeneric");
+ _LIT(KECmsAddrLabelHome, "ECmsAddrLabelHome");
+ _LIT(KECmsAddrPOHome, "ECmsAddrPOHome");
+ _LIT(KECmsAddrExtHome, "ECmsAddrExtHome");
+ _LIT(KECmsAddrStreetHome, "ECmsAddrStreetHome");
+ _LIT(KECmsAddrLocalHome, "ECmsAddrLocalHome");
+ _LIT(KECmsAddrRegionHome, "ECmsAddrRegionHome");
+ _LIT(KECmsAddrPostcodeHome, "ECmsAddrPostcodeHome");
+ _LIT(KECmsAddrCountryHome, "ECmsAddrCountryHome");
+ _LIT(KECmsAddrLabelWork, "ECmsAddrLabelWork");
+ _LIT(KECmsAddrPOWork, "ECmsAddrPOWork");
+ _LIT(KECmsAddrExtWork, "ECmsAddrExtWork");
+ _LIT(KECmsAddrStreetWork, "ECmsAddrStreetWork");
+ _LIT(KECmsAddrLocalWork, "ECmsAddrLocalWork");
+ _LIT(KECmsAddrRegionWork, "ECmsAddrRegionWork");
+ _LIT(KECmsAddrPostcodeWork, "ECmsAddrPostcodeWork");
+ _LIT(KECmsAddrCountryWork, "ECmsAddrCountryWork");
+ _LIT(KECmsImpp, "ECmsImpp");
+ _LIT(KECmsFullName, "ECmsFullName");
+ _LIT(KECmsNote, "ECmsNote");
+ _LIT(KECmsNickname, "ECmsNickname");
+ _LIT(KECmsJobTitle, "ECmsJobTitle");
+ _LIT(KECmsDepartment, "ECmsDepartment");
+ _LIT(KECmsBirthday, "ECmsBirthday");
+ _LIT(KECmsAnniversary, "ECmsAnniversary");
+ _LIT(KECmsCompanyName, "ECmsCompanyName");
+ _LIT(KECmsAssistantNumber, "ECmsAssistantNumber");
+ _LIT(KECmsCarPhone, "ECmsCarPhone");
+ _LIT(KECmsPagerNumber, "ECmsPagerNumber");
+ _LIT(KECmsPushToTalk, "ECmsPushToTalk");
+ _LIT(KECmsShareView, "ECmsShareView");
+
+
+ if (!aDesc.Compare(KECmsLastName))
+ aType = CCmsContactFieldItem::ECmsLastName;
+ else if (!aDesc.Compare(KECmsMiddleName))
+ aType = CCmsContactFieldItem::ECmsMiddleName;
+ else if (!aDesc.Compare(KECmsFirstName))
+ aType = CCmsContactFieldItem::ECmsFirstName;
+ else if (!aDesc.Compare(KECmsUndefined))
+ aType = CCmsContactFieldItem::ECmsUndefined;
+ else if (!aDesc.Compare(KECmsPresenceData))
+ aType = CCmsContactFieldItem::ECmsPresenceData;
+ else if (!aDesc.Compare(KECmsBrandedAvailability))
+ aType = CCmsContactFieldItem::ECmsBrandedAvailability;
+ else if (!aDesc.Compare(KECmsThumbnailPic))
+ aType = CCmsContactFieldItem::ECmsThumbnailPic;
+ else if (!aDesc.Compare(KECmsSipAddress))
+ aType = CCmsContactFieldItem::ECmsSipAddress;
+ else if (!aDesc.Compare(KECmsLandPhoneHome))
+ aType = CCmsContactFieldItem::ECmsLandPhoneHome;
+ else if (!aDesc.Compare(KECmsMobilePhoneHome))
+ aType = CCmsContactFieldItem::ECmsMobilePhoneHome;
+ else if (!aDesc.Compare(KECmsFaxNumberHome))
+ aType = CCmsContactFieldItem::ECmsFaxNumberHome;
+ else if (!aDesc.Compare(KECmsVideoNumberHome))
+ aType = CCmsContactFieldItem::ECmsVideoNumberHome;
+ else if (!aDesc.Compare(KECmsVoipNumberHome))
+ aType = CCmsContactFieldItem::ECmsVoipNumberHome;
+ else if (!aDesc.Compare(KECmsEmailHome))
+ aType = CCmsContactFieldItem::ECmsEmailHome;
+ else if (!aDesc.Compare(KECmsUrlHome))
+ aType = CCmsContactFieldItem::ECmsUrlHome;
+ else if (!aDesc.Compare(KECmsLandPhoneWork))
+ aType = CCmsContactFieldItem::ECmsLandPhoneWork;
+ else if (!aDesc.Compare(KECmsMobilePhoneWork))
+ aType = CCmsContactFieldItem::ECmsMobilePhoneWork;
+ else if (!aDesc.Compare(KECmsVideoNumberWork))
+ aType = CCmsContactFieldItem::ECmsVideoNumberWork;
+ else if (!aDesc.Compare(KECmsFaxNumberWork))
+ aType = CCmsContactFieldItem::ECmsFaxNumberWork;
+ else if (!aDesc.Compare(KECmsVoipNumberWork))
+ aType = CCmsContactFieldItem::ECmsVoipNumberWork;
+ else if (!aDesc.Compare(KECmsEmailWork))
+ aType = CCmsContactFieldItem::ECmsEmailWork;
+ else if (!aDesc.Compare(KECmsUrlWork))
+ aType = CCmsContactFieldItem::ECmsUrlWork;
+ else if (!aDesc.Compare(KECmsEmailGeneric))
+ aType = CCmsContactFieldItem::ECmsEmailGeneric;
+ else if (!aDesc.Compare(KECmsUrlGeneric))
+ aType = CCmsContactFieldItem::ECmsUrlGeneric;
+ else if (!aDesc.Compare(KECmsLandPhoneGeneric))
+ aType = CCmsContactFieldItem::ECmsLandPhoneGeneric;
+ else if (!aDesc.Compare(KECmsMobilePhoneGeneric))
+ aType = CCmsContactFieldItem::ECmsMobilePhoneGeneric;
+ else if (!aDesc.Compare(KECmsVideoNumberGeneric))
+ aType = CCmsContactFieldItem::ECmsVideoNumberGeneric;
+ else if (!aDesc.Compare(KECmsAddrLabelGeneric))
+ aType = CCmsContactFieldItem::ECmsAddrLabelGeneric;
+ else if (!aDesc.Compare(KECmsAddrPOGeneric))
+ aType = CCmsContactFieldItem::ECmsAddrPOGeneric;
+ else if (!aDesc.Compare(KECmsAddrExtGeneric))
+ aType = CCmsContactFieldItem::ECmsAddrExtGeneric;
+ else if (!aDesc.Compare(KECmsAddrStreetGeneric))
+ aType = CCmsContactFieldItem::ECmsAddrStreetGeneric;
+ else if (!aDesc.Compare(KECmsAddrLocalGeneric))
+ aType = CCmsContactFieldItem::ECmsAddrLocalGeneric;
+ else if (!aDesc.Compare(KECmsAddrRegionGeneric))
+ aType = CCmsContactFieldItem::ECmsAddrRegionGeneric;
+ else if (!aDesc.Compare(KECmsAddrPostcodeGeneric))
+ aType = CCmsContactFieldItem::ECmsAddrPostcodeGeneric;
+ else if (!aDesc.Compare(KECmsAddrCountryGeneric))
+ aType = CCmsContactFieldItem::ECmsAddrCountryGeneric;
+ else if (!aDesc.Compare(KECmsVoipNumberGeneric))
+ aType = CCmsContactFieldItem::ECmsVoipNumberGeneric;
+ else if (!aDesc.Compare(KECmsAddrLabelHome))
+ aType = CCmsContactFieldItem::ECmsAddrLabelHome;
+ else if (!aDesc.Compare(KECmsAddrPOHome))
+ aType = CCmsContactFieldItem::ECmsAddrPOHome;
+ else if (!aDesc.Compare(KECmsAddrExtHome))
+ aType = CCmsContactFieldItem::ECmsAddrExtHome;
+ else if (!aDesc.Compare(KECmsAddrStreetHome))
+ aType = CCmsContactFieldItem::ECmsAddrStreetHome;
+ else if (!aDesc.Compare(KECmsAddrLocalHome))
+ aType = CCmsContactFieldItem::ECmsAddrLocalHome;
+ else if (!aDesc.Compare(KECmsAddrRegionHome))
+ aType = CCmsContactFieldItem::ECmsAddrRegionHome;
+ else if (!aDesc.Compare(KECmsAddrPostcodeHome))
+ aType = CCmsContactFieldItem::ECmsAddrPostcodeHome;
+ else if (!aDesc.Compare(KECmsAddrCountryHome))
+ aType = CCmsContactFieldItem::ECmsAddrCountryHome;
+
+ else if (!aDesc.Compare(KECmsAddrLabelWork))
+ aType = CCmsContactFieldItem::ECmsAddrLabelWork;
+ else if (!aDesc.Compare(KECmsAddrPOWork))
+ aType = CCmsContactFieldItem::ECmsAddrPOWork;
+ else if (!aDesc.Compare(KECmsAddrExtWork))
+ aType = CCmsContactFieldItem::ECmsAddrExtWork;
+ else if (!aDesc.Compare(KECmsAddrStreetWork))
+ aType = CCmsContactFieldItem::ECmsAddrStreetWork;
+ else if (!aDesc.Compare(KECmsAddrLocalWork))
+ aType = CCmsContactFieldItem::ECmsAddrLocalWork;
+ else if (!aDesc.Compare(KECmsAddrRegionWork))
+ aType = CCmsContactFieldItem::ECmsAddrRegionWork;
+ else if (!aDesc.Compare(KECmsAddrPostcodeWork))
+ aType = CCmsContactFieldItem::ECmsAddrPostcodeWork;
+ else if (!aDesc.Compare(KECmsAddrCountryWork))
+ aType = CCmsContactFieldItem::ECmsAddrCountryWork;
+
+ else if (!aDesc.Compare(KECmsImpp))
+ aType = CCmsContactFieldItem::ECmsImpp;
+ else if (!aDesc.Compare(KECmsFullName))
+ aType = CCmsContactFieldItem::ECmsFullName;
+ else if (!aDesc.Compare(KECmsNote))
+ aType = CCmsContactFieldItem::ECmsNote;
+ else if (!aDesc.Compare(KECmsNickname))
+ aType = CCmsContactFieldItem::ECmsNickname;
+ else if (!aDesc.Compare(KECmsJobTitle))
+ aType = CCmsContactFieldItem::ECmsJobTitle;
+ else if (!aDesc.Compare(KECmsDepartment))
+ aType = CCmsContactFieldItem::ECmsDepartment;
+ else if (!aDesc.Compare(KECmsBirthday))
+ aType = CCmsContactFieldItem::ECmsBirthday;
+ else if (!aDesc.Compare(KECmsAnniversary))
+ aType = CCmsContactFieldItem::ECmsAnniversary;
+ else if (!aDesc.Compare(KECmsCompanyName))
+ aType = CCmsContactFieldItem::ECmsCompanyName;
+ else if (!aDesc.Compare(KECmsAssistantNumber))
+ aType = CCmsContactFieldItem::ECmsAssistantNumber;
+ else if (!aDesc.Compare(KECmsCarPhone))
+ aType = CCmsContactFieldItem::ECmsCarPhone;
+ else if (!aDesc.Compare(KECmsPagerNumber))
+ aType = CCmsContactFieldItem::ECmsPagerNumber;
+ else if (!aDesc.Compare(KECmsPushToTalk))
+ aType = CCmsContactFieldItem::ECmsPushToTalk;
+ else if (!aDesc.Compare(KECmsShareView))
+ aType = CCmsContactFieldItem::ECmsShareView;
+ else
+ return KErrNotFound;
+ return KErrNone;
+ }
+
+ // ---------------------------------------------------------------------------
+ // CCCAppCommLauncherHeaderTextOrder::MapContactFieldToClipDirection
+ // ---------------------------------------------------------------------------
+ //
+ AknTextUtils::TClipDirection CCCAppCommLauncherHeaderTextOrder::MapContactFieldToClipDirection(CCmsContactFieldItem::TCmsContactField aType)
+ {
+ switch (aType)
+ {
+ case CCmsContactFieldItem::ECmsMobilePhoneGeneric:
+ case CCmsContactFieldItem::ECmsMobilePhoneWork:
+ case CCmsContactFieldItem::ECmsMobilePhoneHome:
+ case CCmsContactFieldItem::ECmsLandPhoneGeneric:
+ case CCmsContactFieldItem::ECmsLandPhoneWork:
+ case CCmsContactFieldItem::ECmsLandPhoneHome:
+ case CCmsContactFieldItem::ECmsVideoNumberGeneric:
+ case CCmsContactFieldItem::ECmsVideoNumberWork:
+ case CCmsContactFieldItem::ECmsVideoNumberHome:
+ case CCmsContactFieldItem::ECmsFaxNumberHome:
+ case CCmsContactFieldItem::ECmsFaxNumberWork:
+ case CCmsContactFieldItem::ECmsEmailGeneric:
+ case CCmsContactFieldItem::ECmsEmailWork:
+ case CCmsContactFieldItem::ECmsEmailHome:
+ case CCmsContactFieldItem::ECmsVoipNumberGeneric:
+ case CCmsContactFieldItem::ECmsVoipNumberHome:
+ case CCmsContactFieldItem::ECmsVoipNumberWork:
+ case CCmsContactFieldItem::ECmsSipAddress:
+ case CCmsContactFieldItem::ECmsImpp:
+ case CCmsContactFieldItem::ECmsAssistantNumber:
+ case CCmsContactFieldItem::ECmsCarPhone:
+ case CCmsContactFieldItem::ECmsPagerNumber:
+ case CCmsContactFieldItem::ECmsPushToTalk:
+ case CCmsContactFieldItem::ECmsShareView:
+ return AknTextUtils::EClipFromBeginning;
+ default:
+ return AknTextUtils::EClipFromEnd;
+ }
+ }