chxavnavipanecontrol.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:3k
源码类别:

Symbian

开发平台:

C/C++

  1. /************************************************************************
  2.  * chxavnavipanecontrol.h
  3.  * ----------------------
  4.  *
  5.  * Synopsis:
  6.  * Contains the declaration of the navi pane control.  This control
  7.  * diplays all the bells and whistles of the play view.
  8.  *
  9.  * Target:
  10.  * Symbian OS
  11.  *
  12.  *
  13.  * (c) 1995-2003 RealNetworks, Inc. Patents pending. All rights reserved.
  14.  *
  15.  ************************************************************************/
  16. #ifndef _chxavnavipanecontrol_h_
  17. #define _chxavnavipanecontrol_h_
  18. #include "chxavrefptr.h"
  19. #include "chxavtextcontrol.h"
  20. #include "chxavplayer.h"
  21. #include "chxavcallback.h"
  22. #include "comptr.h"
  23. // class CHXAvNaviPaneControl...
  24. class CHXAvNaviPaneControl 
  25. : public CCoeControl
  26. , public IHXSymPlayerStateObserver
  27. {
  28. public:
  29.     CHXAvNaviPaneControl();
  30.     virtual ~CHXAvNaviPaneControl();
  31. public:
  32.    static CHXAvNaviPaneControl*  NewL(CHXAvPlayer* pPlayer, const CCoeControl& parent);
  33.    void ConstructL(CHXAvPlayer* pPlayer, const CCoeControl& parent);
  34.     void SetRefreshCommandL(const CHXAvCommand& cmd);
  35.     // IHXSymPlayerStateObserver
  36.     void OnPlayInitiate(const char* url);
  37.     void OnNetConnect();
  38.     void OnLoadSession(IHXRequest* request);
  39.     void OnResume();
  40.     void OnStop();
  41.     void OnPause();
  42.     void OnBeginBuffering(bool bIsBegin);
  43.     void OnBuffering(UINT16 percent);
  44.     void OnBeginSeek();
  45.     void OnMute(bool bMute);
  46.     void OnNewPos (ULONG32 msNewTime);
  47.     void OnAdvancePlaylist();
  48.     void UpdateEverythingL();
  49. private:
  50.     virtual void Draw(const TRect& rect) const;
  51.     virtual TInt CountComponentControls() const;
  52.     virtual CCoeControl* ComponentControl(TInt aIndex) const;
  53.     virtual void SizeChanged();
  54.     void GetTimerTextL(TUint msNow, TDes& timerTextOut) const;
  55.     void ToggleStatusBlinkAndDraw();
  56.     void ShowPauseIndication(bool bShow);
  57.     void UpdateTimerTextL();
  58.     void UpdateTimerTextVisibility();
  59.     void UpdateStatusAreaL();
  60.     void DoStaticLayout();
  61.     void GetTimerTextMaxArea(TRect& rc);
  62.     void SizeAndSetTimerAreaText(refptr<CHXAvTextControl>& pControl, const TDesC& text);
  63.     void UpdateLiveStateIndicator();
  64.     void DoTimerTextUpdateAndDraw();
  65.     void DoUpdateEverythingAndDraw();
  66.     void UpdateVisibilityHelper(CCoeControl* pControl, bool bShow);
  67.     void UpdateTextHelper(CHXAvTextControl* pControl, const TDesC& text);
  68.     void UpdateRectHelper(CCoeControl* pControl, const TRect& rc);
  69.     void OnAnimateEllipseTick();
  70.     void ToggleEllipseAnimation(bool bOn);
  71. private:
  72.     // controls
  73.     refptr<CHXAvTextControl> m_spTimerText;
  74.     refptr<CHXAvTextControl> m_spStatusText;
  75.     refptr<CHXAvTextControl>    m_spEllipseText;
  76.     
  77.     refptr<CEikImage> m_spPlayStateImage;
  78.     refptr<CEikImage> m_spVolStateImage;
  79.     refptr<CEikImage>   m_spLiveStateOnImage;
  80.     refptr<CEikImage>   m_spLiveStateOffImage;
  81.     CHXAvCommandPtr m_spRefreshCmd;
  82.     
  83.     bool m_bBlinkIsVisible;
  84.     CHXAvCallback m_cbBlink;
  85.     CHXAvCallback       m_cbAnimateEllipse;
  86.     bool                m_bNeedRefresh;
  87.     
  88.     comptr<CHXAvPlayer> m_spPlayer;
  89.     TRect               m_rcMaxTextArea;
  90.     bool                m_bHideTimerForStatusText;
  91.     TRect               m_rcParent;
  92.     TUint               m_ellipseCount;
  93. };
  94. inline
  95. void CHXAvNaviPaneControl::SetRefreshCommandL(const CHXAvCommand& cmd)
  96. {
  97.     m_spRefreshCmd = cmd.CloneL();
  98. }
  99. #endif // _chxavnavipanecontrol_h_