uifw/AvKon/inc/AknSmileyModel.h
branchRCL_3
changeset 55 aecbbf00d063
parent 51 fcdfafb36fe7
child 56 d48ab3b357f1
--- 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 <AknIconObserver.h>
-#include <AknsItemID.h>
-#include "AknSmileyUtils.h"
+
 #include "AknSmileyImage.h"
 
 
@@ -34,9 +33,6 @@
 ////////////////////////////////////////////////////////////////////
 
 const TInt KSmileyNameLength = 8;
-typedef TBuf<KSmileyNameLength> TSmileyText;
-typedef RArray<TSmileyText> RSmileyTextArray;
-typedef RArray<TChar> 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<KSmileyNameLength> 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<CSmileyIcon*> 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<TSmileyCodeIndex> 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;
     
     };