diff -r 94dc1107e8b2 -r 40a3f856b14d phoneapp/phoneuiutils/src/phonevanitydialingutils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiutils/src/phonevanitydialingutils.cpp Thu Aug 19 09:54:27 2010 +0300 @@ -0,0 +1,163 @@ +/* +* Copyright (c) 2010 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: +* Helper class for converting vanity dialing numbers +* +*/ + +// INCLUDE FILES +#include "phonevanitydialingutils.h" + +// CONSTANTS +const TInt KCharA = 'A'; +const TInt KCharB = 'B'; +const TInt KCharC = 'C'; +const TInt KCharD = 'D'; +const TInt KCharE = 'E'; +const TInt KCharF = 'F'; +const TInt KCharG = 'G'; +const TInt KCharH = 'H'; +const TInt KCharI = 'I'; +const TInt KCharJ = 'J'; +const TInt KCharK = 'K'; +const TInt KCharL = 'L'; +const TInt KCharM = 'M'; +const TInt KCharN = 'N'; +const TInt KCharO = 'O'; +const TInt KCharP = 'P'; +const TInt KCharQ = 'Q'; +const TInt KCharR = 'R'; +const TInt KCharS = 'S'; +const TInt KCharT = 'T'; +const TInt KCharU = 'U'; +const TInt KCharV = 'V'; +const TInt KCharW = 'W'; +const TInt KCharX = 'X'; +const TInt KCharY = 'Y'; +const TInt KCharZ = 'Z'; + +const TInt KChar2 = '2'; +const TInt KChar3 = '3'; +const TInt KChar4 = '4'; +const TInt KChar5 = '5'; +const TInt KChar6 = '6'; +const TInt KChar7 = '7'; +const TInt KChar8 = '8'; +const TInt KChar9 = '9'; + +_LIT( KPhoneVanityValidFirstChars, "0123456789+" ); +_LIT( KPhoneVanityValidChars, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789*#+pw" ); + +// --------------------------------------------------------- +// CouldBeVanityNumber +// +// Vanity dialing numbers start with a number, and after that they +// contain only upper case letters (A-Z) and numbers +// for example: 555PIZZA, +3583ONE2THREE +// --------------------------------------------------------- +// +TBool CouldBeVanityNumber( TDesC& aDes ) + { + if ( !aDes.Length() ) + { + return EFalse; + } + + TBool possibleVanityNumber = ETrue; + + // check first character + TPtrC validFirstChar( KPhoneVanityValidFirstChars ); + if ( validFirstChar.Locate( aDes[0] ) == KErrNotFound ) + { + possibleVanityNumber = EFalse; + } + + // check rest of the string + TInt i = 1; + TPtrC validChar( KPhoneVanityValidChars ); + while ( possibleVanityNumber && i < aDes.Length() ) + { + if ( validChar.Locate( aDes[i] ) == KErrNotFound ) + { + possibleVanityNumber = EFalse; + } + i++; + } + + return possibleVanityNumber; + } + +// --------------------------------------------------------- +// PhoneVanityDialingUtils::DoVanityNumberConversion +// +// --------------------------------------------------------- +// +EXPORT_C void PhoneVanityDialingUtils::DoVanityNumberConversion( TDes& aDes ) + { + if ( CouldBeVanityNumber( aDes ) ) + { + for ( TInt i = 0; i < aDes.Length(); i++ ) + { + switch ( aDes[i] ) + { + case KCharA: + case KCharB: + case KCharC: + aDes[i] = KChar2; + break; + case KCharD: + case KCharE: + case KCharF: + aDes[i] = KChar3; + break; + case KCharG: + case KCharH: + case KCharI: + aDes[i] = KChar4; + break; + case KCharJ: + case KCharK: + case KCharL: + aDes[i] = KChar5; + break; + case KCharM: + case KCharN: + case KCharO: + aDes[i] = KChar6; + break; + case KCharP: + case KCharQ: + case KCharR: + case KCharS: + aDes[i] = KChar7; + break; + case KCharT: + case KCharU: + case KCharV: + aDes[i] = KChar8; + break; + case KCharW: + case KCharX: + case KCharY: + case KCharZ: + aDes[i] = KChar9; + break; + default: + break; + } + } + } + } + +// End of File