diff -r 000000000000 -r 2f259fa3e83a uifw/EikStd/coctlinc/smileymanager.h --- /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 +#include + +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