notepad/notepad1/inc/NpdUtil.h
changeset 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/notepad/notepad1/inc/NpdUtil.h	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,171 @@
+/*
+* Copyright (c) 2002 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:  Declaration of Notepad Libaray utilitiy functions.
+*
+*/
+
+
+#ifndef NPDUTIL_H
+#define NPDUTIL_H
+
+// INCLUDES
+#include <e32std.h>
+
+// FORWARD DECLARATIONS
+class CCoeEnv;
+class CPlainText;
+
+/**
+* Utitilties used in Notepad Library.
+* NotepadUtil has some static library functions of Notepad Library.
+*  
+*/
+class NotepadUtil
+    {
+    public:
+
+        /**
+        * Leave with KErrDiskFull if writing aBytesToWrite makes the 
+        * free disk space under the critical level.
+        *
+        * @param aCoeEnv environment (for resource reading and RFs).
+        * @param aBtyesToWrite expected data size to write
+        */
+        static void LeaveIfCriticalLevelL(
+            CCoeEnv& aCoeEnv,
+            TInt aBytesToWrite = 0 );
+
+        /**
+        * Show the database corrupted information note defined in 
+        * "Low Memory and Error Handling".
+        */
+        static void ShowCorruptedNoteL(CCoeEnv& aCoeEnv);
+
+        /**
+        * Check whether a text is empty.
+        *
+        * @param aText text to be tested.
+        * @return ETrue if aText is judged as empty
+        */
+        static TBool IsEmpty(const TDesC& aText);
+
+        /**
+        * Append aText to aBuf.
+        *
+        * Perl like semantics:
+        *     $x = aText;
+        *     if ( aShortenConsecutiveSpaces ) { $x =~ s/\s+/ /g; }
+        *     else { $x =~ s/\s/ /g; }
+        *     aBuf .= $x;
+        *
+        * If aText is longer than rest length of aBuf, some characters in 
+        * aText will be discarded.
+        *
+        * @param aBuf buffer.
+        * @param text to be appended.
+        * @param aRemoveHeadingSpaces Doesn't append heading spaces if ETrue.
+        */
+        static void AppendLabel(
+            TDes& aBuf, 
+            const TDesC& aText, 
+            const TBool aRemoveHeadingSpaces );
+
+        /**
+        * Load contents of a text file.
+        * Character encoding of the file is detected automatically.
+        *
+        * @param aCoeEnv environment (for resource reading and RFs).
+        * @param aFileName file name to be loaded.
+        * @param aGuessEncoding guess encoding if ETrue (ignore aEncoding).
+        * @param aEncoding encoding of the File
+        * @param aText CPlainText object.
+        */
+        static void LoadFileL(
+            CCoeEnv& aCoeEnv,
+            const TDesC& aFileName, 
+            TBool aGuessEncoding,
+            TUint aEncoding, 
+            CPlainText& aText);
+ 
+        /**
+        * Load contents of a text file.
+        * Character encoding of the file is detected automatically.
+        *
+        * @param aCoeEnv environment (for resource reading and RFs).
+        * @param aFile file handle.
+        * @param aGuessEncoding guess encoding if ETrue (ignore aEncoding).
+        * @param aEncoding encoding of the File
+        * @param aText CPlainText object.
+        */
+        static TBool LoadFileL(
+            CCoeEnv& aCoeEnv,
+            RFile& aFile, 
+            TBool aGuessEncoding,
+            TUint aEncoding, 
+            CPlainText& aText);
+
+        /**
+        * Checks wether the descriptor contains SHIFT-JIS encoded text
+        * 
+        * @param aText Text to be analyzed
+        * @return ETrue if the text is encoded with SHIFT-JIS
+        */
+        static bool IsShiftJisText(TDesC8& aText);
+
+        /**
+        * Checks wether the descriptor contains big endian unicode text
+        * 
+        * @param aText Text to be analyzed
+        * @return ETrue if the text is big endian unicode text
+        */
+        static bool IsBigEndianUnicodeText(TDesC8& aText);
+
+        /**
+        * Checks wether the descriptor contains little endian unicode text
+        * 
+        * @param aText Text to be analyzed
+        * @return ETrue if the text is little endian unicode text
+        */
+        static bool IsLittleEndianUnicodeText(TDesC8& aText);
+
+        /**
+        * Checks wether the descriptor contains UTF8 text
+        * 
+        * @param aText Text to be analyzed
+        * @return ETrue if the text is UTF8 text
+        */
+        static bool IsUTF8Text(TDesC8& aText);
+
+        /**
+        */
+        static TUint GuessEncodingFromLanguage();
+
+        /**
+        */
+        static TUint GetISO8859Variant(TLanguage aLanguage);
+
+    private:
+        /**
+        * Checks wether the given two TUints contain SHIFT-JIS encoded
+        * character.
+        * 
+        * @param aFirst First byte of the encoded character
+        * @param aSecond Second byte of the encoded character
+        * @return ETrue if the character is encoded with SHIFT-JIS
+        */
+        static bool IsShiftJisChar(const TUint& aFirst, const TUint& aSecond);
+    };
+
+#endif
+// End of File