diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/USIMExtension/inc/CPsu2CharConv.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/USIMExtension/inc/CPsu2CharConv.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,158 @@ +/* +* Copyright (c) 2002-2007 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: A class for converting characters and checking if the data is +* too long. +* +*/ + + +#ifndef CPSU2CHARCONV_H +#define CPSU2CHARCONV_H + +// INCLUDE FILES +#include +#include +#include + +// FORWARD DECLARATIONS +class RFs; +class CCnvCharacterSetConverter; + +// CLASS DECLARATION +class CPsu2CharConv : public CBase + { + public: + + /** + * Two-phased constructor. + * + * @param aFs an open file system session + * @param aCharacterSet The character set to use. See charconv.h. + * @return a new instance of this class + */ + static CPsu2CharConv* NewL( RFs& aFs, const TUint aChacterSet ); + + /** + * Two-phased constructor. + * + * @param aFs an open file system session + * @param aCharacterSet The character set to use. See charconv.h. + * @return a new instance of this class + */ + static CPsu2CharConv* NewLC( RFs& aFs, const TUint aChacterSet ); + + /** + * Destructor. + */ + ~CPsu2CharConv(); + + public: // Data structures + + /// Used for indicating contact field validity + /// from (U)SIM store point of view + enum TPsu2FieldValidity + { + /// It's OK to add the field to the entry + EOk, + /// The data is too long for this field type + ETooLong + }; + + public: // Interface + + void SetDownGradeLf( CCnvCharacterSetConverter:: + TDowngradeForExoticLineTerminatingCharacters aDowngrade ); + + /** + * Checks contact field validity. + * + * @param aData The data to be saved to the field. + * @param aMaxLength Maximum length of the field. + * @param aValidity Contains the validity value afterwards. + * @return A pointer to the given data. The length depends + * on aValidity. If ETooLong, the pointer points to + * the aData but the length is cut. Can be used to add + * the data to the entry without problems. In other cases + * the pointer points to the given aData and + * the length is same. + */ + TPtrC CheckFieldValidityL( + const TDesC& aData, + TInt aMaxLength, + TPsu2FieldValidity& aValidity ); + + /** + * Checks unicode descriptor data length with the current character set + * so that conversion from unicode to 8-bit descriptor will not exceed + * the given maximum length. Returns either the given descriptor or a + * truncated descriptor that can be converted to an 8-bit descriptor + * with the given maximum length. + * + * @param aData The data to be saved to the field. + * @param aMaxLength Maximum allowed length of the field for the + * converted data. + * @param aUnconvertedCount On return, contains the count of + * characters that could not be converted. + * @return A pointer to the given data. The pointer points to the + * aData but the length is truncated to the length that allows + * making the conversion so that the result length does not + * exceed aMaxLength that was given as a parameter. + */ + TPtrC CheckFieldLengthL( + const TDesC& aData, + TInt aMaxLength, + TInt& aUnconvertedCount ); + + /** + * To check if the text includes unicode characters. + * @param aText The text to be checked. + * @return ETrue if the text included unicode characters. + * EFalse otherwise. + */ + TBool IsUnicodeL( const TDesC& aText ); + + private: // Construction + + /** + * Constructor. + */ + CPsu2CharConv( RFs& aFs, const TUint aChacterSet ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Checks some special cases to need if extra space needs to be + * reserved for the data when saving to (U)SIM. + * @param aData The data to be saved to (U)SIM. + * @param aConvertedLength The length of the conversion. The function + * increases this if any extra space needs to be reserved. + */ + void ReviseLength( + const TDesC& aData, TInt& aConvertedLength ); + + private: // Data + /// A file system session for characted converter + RFs iFs; + /// Own: Symbian's character converter + CCnvCharacterSetConverter* iConverter; + /// Character set identier as given to the constructors + TUint iCharacterSetIdentifier; + }; + +#endif // CPSU2CHARCONV_H + +// End of File