--- /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 <e32base.h>
+#include <f32file.h>
+#include <charconv.h>
+
+// 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