williamr@2: /* williamr@2: * Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: #ifndef __TULPHONENUMBERUTILS_H__ williamr@2: #define __TULPHONENUMBERUTILS_H__ williamr@2: williamr@2: #include williamr@2: williamr@2: williamr@2: /** williamr@2: Class offers static methods for parsing and validating phone numbers. williamr@2: Phone Parser API provides methods which are used to parse and validate williamr@2: phone numbers. The API consists of the TulPhoneNumberUtils class. williamr@2: williamr@2: Examples of valid phone numbers: williamr@2: 1. +358501234567 williamr@2: 2. +358 (50) 123 4567 williamr@2: williamr@2: Even though both of the above examples are valid phone numbers, only 1) is williamr@2: accepted as a phone number by many systems. To convert 2) to 1), use the williamr@2: parsing method of the API. williamr@2: williamr@2: Usage: williamr@2: williamr@2: @code williamr@2: #include williamr@2: williamr@2: // Example shows how to use the parsing method of the API. williamr@2: williamr@2: // A number to be parsed. williamr@2: TBuf<50> number1 = _L("+358 (40) 123 132"); williamr@2: williamr@2: // Type of the phone number to be parsed is a regular phone number. williamr@2: TBool validNumber1 = williamr@2: TulPhoneNumberUtils::NormalizePhoneNumber( number1, williamr@2: TulPhoneNumberUtils::EPlainPhoneNumber ); williamr@2: williamr@2: // The phone number number1 is a valid regular phone number. williamr@2: // After parsing validNumber1 is ETrue and williamr@2: // number1 is "+35840123132". williamr@2: // Do something like SendSMS( number1 ) etc. williamr@2: williamr@2: // A number to be parsed. williamr@2: TBuf<50> number2 = _L("+358 (40) 123p132"); // note 'p' williamr@2: williamr@2: // Type of the phone number to be parsed is a regular phone number. williamr@2: TBool validNumber2 = williamr@2: TulPhoneNumberUtils::NormalizePhoneNumber( number2, williamr@2: TulPhoneNumberUtils::EPlainPhoneNumber ); williamr@2: williamr@2: // The phone number number2 is not a valid regular phone number. williamr@2: // After parsing validNumber2 is EFalse and williamr@2: // number2 is "+358 (40) 123p132" (unchanged). williamr@2: @endcode williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: NONSHARABLE_CLASS(TulPhoneNumberUtils) williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * Enumeration for phone number types. williamr@2: * Used to specify the type of phone numbers in methods of williamr@2: * TulPhoneNumberUtils class. williamr@2: */ williamr@2: enum TPhoneNumberType williamr@2: { williamr@2: /** The supplied phone number is a regular phone number. */ williamr@2: EPlainPhoneNumber, williamr@2: /** The supplied phone number is a contact card number. */ williamr@2: EContactCardNumber, williamr@2: /** The supplied phone number is is a phone client number. */ williamr@2: EPhoneClientNumber, williamr@2: /** The supplied phone number is an SMS number. */ williamr@2: ESMSNumber williamr@2: }; williamr@2: williamr@2: IMPORT_C static TBool Normalize( TDes& aNumber, TPhoneNumberType aType = EPlainPhoneNumber); williamr@2: IMPORT_C static TBool IsValid( const TDesC& aNumber, TPhoneNumberType aType = EPlainPhoneNumber ); williamr@2: public: // deprecated williamr@2: inline static TBool ParsePhoneNumber( TDes& aNumber, TInt aType ); williamr@2: inline static TBool IsValidPhoneNumber( const TDesC& aNumber, TInt aType ); williamr@2: private: williamr@2: static TBool IsValidPhoneNumber( const TDesC& aNumber, const TDesC& aValidChars); williamr@2: static void ParseInvalidChars( TDes& aNumber, const TDesC& aInvalidChars); williamr@2: }; williamr@2: williamr@2: // For source compatibility with S60 williamr@2: williamr@2: /** @deprecated */ williamr@2: inline TBool TulPhoneNumberUtils::ParsePhoneNumber( TDes& aNumber, TInt aType ) williamr@2: { return TulPhoneNumberUtils::Normalize(aNumber, static_cast(aType)); } williamr@2: /** @deprecated */ williamr@2: inline TBool TulPhoneNumberUtils::IsValidPhoneNumber( const TDesC& aNumber, TInt aType ) williamr@2: { return TulPhoneNumberUtils::IsValid(aNumber, static_cast(aType)); } williamr@2: williamr@2: #endif // __TULPHONENUMBERUTILS_H__ williamr@2: