diff -r fcdfafb36fe7 -r aecbbf00d063 uifw/AvKon/inc/AknSmileyModel.h --- a/uifw/AvKon/inc/AknSmileyModel.h Thu Aug 19 10:11:06 2010 +0300 +++ b/uifw/AvKon/inc/AknSmileyModel.h Tue Aug 31 15:28:30 2010 +0300 @@ -23,8 +23,7 @@ // INCLUDES #include -#include -#include "AknSmileyUtils.h" + #include "AknSmileyImage.h" @@ -34,9 +33,6 @@ //////////////////////////////////////////////////////////////////// const TInt KSmileyNameLength = 8; -typedef TBuf TSmileyText; -typedef RArray RSmileyTextArray; -typedef RArray RSmileyCodeArray; NONSHARABLE_CLASS(TSmileyIconInfo) { @@ -44,69 +40,72 @@ TSmileyIconInfo(); TSmileyIconInfo(const TSmileyIconInfo& aInfo); void Reset(); - - TInt iIndex; - TAknsItemID iSkinItemID; // from skin - TInt iDefaultStillImageID; // from mif - TInt iDefaultAnimationImageID; // from mif + + TBuf iName; + TInt iId; + TAknsItemID iSkinItemID; // from skin + TInt iDefaultThumbnailID; // from mif + TInt iDefaultAnimationID; // from mif + }; + +//////////////////////////////////////////////////////////////////// + +class CSmileyIcon; + +class MSmileyIconObserver + { +public: + virtual void ThumbnailLoaded(CSmileyIcon* aSmileyIcon)=0; + virtual void AnimationChanged(CSmileyIcon* aSmileyIcon)=0; }; //////////////////////////////////////////////////////////////////// -class CSmileyIcon : public CAknSmileyIcon, public MSmileyImageObserver +class CSmileyIcon : public CBase, public MSmileyImageObserver { public: - static CSmileyIcon* NewL(const TSmileyIconInfo& aInfo, MAknSmileyObserver* aObserver); + static CSmileyIcon* NewL(const TSmileyIconInfo& aInfo, MSmileyIconObserver* aObserver); virtual ~CSmileyIcon(); private: - CSmileyIcon(MAknSmileyObserver* aObserver); - void ConstructL(const TSmileyIconInfo& aInfo); + CSmileyIcon(const TSmileyIconInfo& aInfo, MSmileyIconObserver* aObserver); + void ConstructL(); + +public: + const TDesC& Name() const { return iInfo.iName; } + TInt Id() const { return iInfo.iId; } + + TBool ReadyToDraw() const; + const CFbsBitmap* Image() const; + const CFbsBitmap* Mask() const; -public: // from AknSmileyIcon - virtual const CFbsBitmap* Image() const; - virtual const CFbsBitmap* Mask() const; - virtual TBool ReadyToDraw() const; - virtual void SetSize(const TSize& aSize); - virtual const TSize& Size() const; - virtual void PlayAnimationL(TInt aRepeat=0, TInt aDelay=0); - virtual void StopAnimation(); +public: + void LoadThumbnailL(); + TBool ThumbnailReady() const; + + void PlayAnimationL(TInt aRepeat, TInt aDelay); + void StopAnimation(); + +public: + void SetSize(const TSize& aSize); + const TSize& Size() const; private: // from MSmileyImageObserver virtual void BitmapChanged(CSmileyImage* aSmileyImage, CFbsBitmap* aBitmap); - -public: - TInt Index() const; - void LoadStillImageL(TInt aDelay=0); - TBool StillImageIsReadyToDraw() const; - TBool AnimationImageIsReadyToDraw() const; - void AddVariant(const TDesC& aText, TChar aBaseCode); - TInt VariantCount() const; - const TDesC& Text(TInt aVariant=0) const; - TChar Code(TInt aVariant=0) const; +private: + TBool ShouldShowAnimation() const; private: - MAknSmileyObserver* iSmileyIconObserver; - TInt iIndex; - CSmileyImage* iStillImage; + const TSmileyIconInfo iInfo; + MSmileyIconObserver* iSmileyIconObserver; + + CSmileyImage* iThumbnailImage; CSmileyImage* iAnimationImage; - RSmileyTextArray iTextArray; - RSmileyCodeArray iCodeArray; + }; typedef RArray RSmileyIconPtrArray; -NONSHARABLE_CLASS(TSmileyCodeIndex) - { -public: - TSmileyCodeIndex(CSmileyIcon* aSmileyIcon, TInt aVariant=0) : iSmileyIcon(aSmileyIcon), iVariant(aVariant) {} - CSmileyIcon* Smiley() const { return iSmileyIcon; } - const TDesC& Text() const { return iSmileyIcon->Text(iVariant); } -private: - CSmileyIcon* iSmileyIcon; - TInt iVariant; - }; -typedef RArray RSmileyCodeIndexArray; //////////////////////////////////////////////////////////////////// @@ -123,82 +122,44 @@ void DoNextTaskL(); private: - RSmileyIconPtrArray iLoadingTaskArray; + RSmileyIconPtrArray iTaskArray; + TBool iIsLoading; }; //////////////////////////////////////////////////////////////////// -class CSmileyTextTreeNode; - -class CSmileyModel : public CBase, public MAknSmileyObserver +class CSmileyModel : public CBase, public MSmileyIconObserver { public: - CSmileyModel(MAknSmileyObserver* aObserver); - virtual ~CSmileyModel(); + CSmileyModel(MSmileyIconObserver* aObserver); + ~CSmileyModel(); public: void LoadResourceL(); void ReleaseResource(); + void LoadThumbnailAsyn(TInt aIndex); + void SetSize(const TSize& aSize); public: - TInt ConvertCodesToTextL(TDes& aText); - TInt ConvertTextToCodesL(TDes& aText); - const TDesC& Text(TChar aCode) const; - TBool IsSmiley(TChar aCode) const; - -public: - void SetSize(const TSize& aSize); - void SetSizeByFont(const CFont* aFont); - -public: - void DrawText(CWindowGc& aGc, const TDesC& aText, const CFont* aFont, const TPoint& aPosition) const; - void DrawText(CWindowGc& aGc, const TDesC& aText, const TAknLayoutText& aLayout, TBool aUseLogicalToVisualConversion=EFalse) const; - void DrawText(CWindowGc& aGc, const TDesC& aText, const CFont* aFont, const TRect& aBox, TInt aBaselineOffset, - CGraphicsContext::TTextAlign aAlignment=CGraphicsContext::ELeft, TInt aLeftMargin=0) const; + enum TIconId + { + EIconSwitchToSmiley = 0, + EIconSwitchToSct, + EIconSmiley + }; -private: - void DrawText(CWindowGc& aGc, const TDesC& aText, const CFont* aFont, const TRect& aBox, const TPoint& aOffset) const; - -public: + CSmileyIcon* operator[](TInt aIndex) const; TInt Count() const; - CAknSmileyIcon* Smiley(TChar aCode) const; - CAknSmileyIcon* operator[](TInt aIndex) const; private: // from MSmileyIconObserver - virtual void SmileyStillImageLoaded(CAknSmileyIcon* aSmileyIcon); - virtual void SmileyAnimationChanged(CAknSmileyIcon* aSmileyIcon); - -public: // for smiley picker - CAknSmileyIcon* SwitchToSmileyIcon() const; - CAknSmileyIcon* SwitchToSctIcon() const; - TChar SwitchToSmileyCode() const; - TChar SwitchToSctCode() const; - - TChar SmileyCode(TInt aIndex, TInt aVariant=0) const; - TChar SmileyCode(const CAknSmileyIcon* aSmileyIcon) const; - - void LoadStillImagesL(const TDesC& aText); - void PlayAnimationL(const TDesC& aText, TInt aRepeat=0, TInt aDelay=0); - void StopAnimation(const TDesC& aText); - -private: - void LoadStillImageL(TChar aChar); - void PlayAnimationL(TChar aChar, TInt aRepeat=0, TInt aDelay=0); - void StopAnimation(TChar aChar); + virtual void ThumbnailLoaded(CSmileyIcon* aSmileyIcon); + virtual void AnimationChanged(CSmileyIcon* aSmileyIcon); private: - const TDesC& Text(TInt aIndex, TInt aVariant=0) const; - TInt ArrayCount() const; - -private: - MAknSmileyObserver* iSmileyIconObserver; - CSmileyTnumbnailAsynLoader iSmileyLoader; + MSmileyIconObserver* iSmileyIconObserver; RSmileyIconPtrArray iSmileyIconArray; - RSmileyCodeIndexArray iSmileyCodeIndexArray; - - CSmileyTextTreeNode* iTextSearchTree; - TBuf<1024*2> iConvertBuffer; + CSmileyTnumbnailAsynLoader iSmileyThumbnailLoader; };