uifw/EikStd/coctlinc/smileymanager.h
changeset 0 2f259fa3e83a
child 6 9f56a4e1b8ab
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/EikStd/coctlinc/smileymanager.h	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,117 @@
+/*
+* Copyright (c) 2008 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:  smiley utility class
+*
+*/
+
+#ifndef C_SMILEYMANAGER_H
+#define C_SMILEYMANAGER_H
+
+#include <e32base.h>
+#include <e32std.h>
+
+class CCoeControl;
+class CBitmapContext;
+class CSmileyModel;
+class CSmileyInfoReader;
+class CSmileyDrawer;
+class TRgb;
+class CEikEdwin;
+class CSmileyIconRecord;
+
+_LIT( KSmileyString, "\xf8e4i" );
+
+/**
+ *  smiley engine class, manage smiley character strings and icons
+ *
+ *  @lib ?library
+ *  @since S60 v5.0
+ */
+NONSHARABLE_CLASS( CSmileyManager ) : public CBase
+    {
+public:
+    static const TText KPlaceHolder = 0xfff0;
+    static const TInt KMaxLength = 5;
+    static const TInt KMinLength = 2;
+    static const TText KZeroCode = 0;
+    static const TText KCompensateChar = 'i'; 
+    static const TUint KSmileyCodeMin = 0xf880;
+    static const TUint KSmileyCodeMax = 0xf8e4;    
+    
+    enum TOperationType
+        {
+        EDelete = 0,
+        EInsert,
+        ESetCursor,
+        ESelection
+        };
+    
+//static constructors
+    static CSmileyManager* NewL( CEikEdwin& aEdwin );
+    static CSmileyManager* NewLC( CEikEdwin& aEdwin );
+
+    virtual ~CSmileyManager();
+
+//new functions    
+    TBool ConvertTextForSmileyL( TInt aStart, TDes& aText, 
+        TBool aStringToCodes = ETrue );
+    void SetVisibleRange( TInt aDocPos, TInt aLength );
+    
+    void DrawIconL( CBitmapContext& aGc, const TRect& aRect, 
+        TInt aDocPos );
+    
+    void HandleDeleteL( TInt aStart, TInt aLength );
+    void HandleInsertL( TInt aStart, TInt aLength );
+    void HandleSetCursor( TInt aOldCursor, TInt& aNewCursor );
+    void HandleSelection( TInt aStart, TInt aLength  );
+    
+    void SetHighlightColor( TRgb aColor );
+
+    void SetAnimationPlayTimes( TInt aPlayTimes );
+    TText SmileyCodeByPos( TInt aDocPos );
+    TInt SmileyLength( TInt aDocPos );
+    
+    static TBool IsSmileyCode( TText aCode );
+    void RemoveIconsInRange( TInt aStart, TInt aLength );
+    
+    TBool HasSmileyIconsInText();
+    TBool IsDisabledSmileyIcon( TInt aDocPos );
+    void DisableSmileyIcon( TInt aDocPos );
+    
+private:
+//constructors    
+    CSmileyManager();
+    void ConstructL( CEikEdwin& aEdwin );
+    TBool ConvertCodesToTextL( TDes& aText, TInt aStart );
+    TBool ConvertTextToCodesL( TDes& aText, TInt aStart );
+    void AddSmileyToRecordL( const TDesC& aSmileyText, TInt aDocPos, 
+        TText aCode );
+    
+private: // data    
+    // own
+    CSmileyModel* iModel;
+    // own
+    CSmileyInfoReader* iReader;
+    // own
+    CSmileyDrawer* iDrawer;
+    // own
+    CSmileyIconRecord* iIconRecord;
+
+    TInt iSelStart;
+    TInt iSelLength;
+    TInt iVisibleStart;
+    TInt iVisibleLength;
+    };
+
+#endif // C_SMILEYMANAGER_H