VideoFileDetailsDialog.h
上传用户:xinrui0099
上传日期:2010-03-05
资源大小:48k
文件大小:10k
源码类别:

Symbian

开发平台:

C/C++

  1. /*
  2. * ==============================================================================
  3. *  Name        : VideoFileDetailsDialog.h
  4. *  Part of     : Video
  5. *  Created    : 10/14/2003 by Forum Nokia
  6. *  Description : Declares media file details dialog
  7. *  Version     : 
  8. *  Copyright   : Nokia Corporation, 2003
  9. * ==============================================================================
  10. */
  11. #ifndef _VIDEO_FILEDETAILSDIALOG_H
  12. #define _VIDEO_FILEDETAILSDIALOG_H
  13. #include <aknpopup.h>
  14. #include <VideoPlayer.h>
  15. #include <MdaAudioSamplePlayer.h>
  16. #include "VideoFileDetails.h"
  17. class CAknDoublePopupMenuStyleListBox;
  18. /**
  19.  *  CVideoFileDetailsDialog 
  20.  *  A dialog used to list the detailed information regarding a video file.
  21.  */
  22. class CVideoFileDetailsDialog : public CBase, public MMdaAudioPlayerCallback, public MVideoPlayerUtilityObserver
  23.     {
  24.     public:  // Constructors and destructor
  25.         
  26.         /**
  27.         * Two-phased constructor.
  28.         */
  29.         static CVideoFileDetailsDialog* NewL();
  30.         
  31.         /**
  32.         * Destructor.
  33.         */
  34.         virtual ~CVideoFileDetailsDialog();
  35.     public: // New functions
  36.         
  37.         /**
  38.          * Shows file details to user in dialog. 
  39.          * @param aFileName Media file which details are shown to user.
  40.          * @leaves Leaves with KErrNotSupported if file is not valid media file.
  41.          * @return void
  42.          */
  43.         void ExecuteLD(const TDesC& aFileName);
  44.         
  45.         /**
  46.          * Shows file details to user in dialog. 
  47.          * @param aFileDetails File details which are shown to user.
  48.          * @return void
  49.          */
  50.         void ExecuteLD(CVideoFileDetails* aFileDetails);
  51.     public: // Functions from MMdaAudioPlayerCallback
  52.         
  53.         /** 
  54.  * See MMdaAudioPlayerCallback::MapcInitComplete() 
  55.  */
  56.         void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration);
  57.         
  58.         /** 
  59.  * See MMdaAudioPlayerCallback::MapcPlayComplete 
  60.  */
  61.         void MapcPlayComplete(TInt aError);
  62.      
  63.     public: // Functions from MVideoPlayerUtilityObserver
  64.         /** 
  65.  * See MVideoPlayerUtilityObserver::MvpuoOpenComplete 
  66.  */
  67.         void MvpuoOpenComplete(TInt aError);
  68.         /** 
  69.  * See MVideoPlayerUtilityObserver::MvpuoPrepareComplete 
  70.  */
  71.         void MvpuoPrepareComplete(TInt aError);
  72.         /** 
  73.  * See MVideoPlayerUtilityObserver::MvpuoFrameReady 
  74.  */
  75.         void MvpuoFrameReady(CFbsBitmap& aFrame,TInt aError);
  76.         /** 
  77.  * See MVideoPlayerUtilityObserver::MvpuoPlayComplete 
  78.  */
  79.         void MvpuoPlayComplete(TInt aError);
  80.         
  81.         /** 
  82.  * See MVideoPlayerUtilityObserver::MvpuoEvent 
  83.  */
  84.         void MvpuoEvent(const TMMFEvent& aEvent);
  85.     
  86.     private:
  87.         /**
  88.          * C++ default constructor.
  89.          */
  90.         CVideoFileDetailsDialog();
  91.         /**
  92.          * By default Symbian 2nd phase constructor is private.
  93.          */
  94.         void ConstructL();
  95.     private: // New functions
  96.         
  97.         /**
  98.          * Sets title for CAknPopupList.
  99.          * @param aPopupList CAknPopupList which title is modified
  100.          * @return void
  101.          */
  102.         void SetTitleL(CAknPopupList* aPopupList);
  103.         /**
  104.          * Fills listbox with file details information.
  105.          * @param aFileDetails File details
  106.          * @return void
  107.          */
  108.         void FillListBoxL(CVideoFileDetails* aFileDetails);
  109.         /**
  110.          * Adds header and value to list.
  111.          * @param aHeading Heading
  112.          * @param aValue Value
  113.          * @param aItemArray Array where value and header are added.
  114.          * @return void
  115.          */
  116.         void AddItemToListBoxL(const TDesC& aHeading, const TDesC& aValue, CDesCArray* aItemArray);
  117.         /**
  118.          * Constructs clip title item. 
  119.          * @param aItemArray Array where constructed item is put.
  120.          * @param aFileDetails File details.
  121.          * @return void
  122.          */
  123.         void MakeTitleItemL(CDesCArray* aItemArray, CVideoFileDetails* aFileDetails);
  124.         
  125.         /**
  126.          * Constructs clip url item. 
  127.          * @param aItemArray Array where constructed item is put.
  128.          * @param aFileDetails File details.
  129.          * @return void
  130.          */
  131.         void MakeUrlItemL(CDesCArray* aItemArray, CVideoFileDetails* aFileDetails);
  132.         
  133.         /**
  134.          * Constructs media format item. 
  135.          * @param aItemArray Array where constructed item is put.
  136.          * @param aFileDetails File details.
  137.          * @return void
  138.          */
  139.         void MakeFormatItemL(CDesCArray* aItemArray, CVideoFileDetails* aFileDetails);
  140.         /**
  141.          * Constructs video resolution item. 
  142.          * @param aItemArray Array where constructed item is put.
  143.          * @param aFileDetails File details.
  144.          * @return void
  145.          */
  146.         void MakeResolutionItemL(CDesCArray* aItemArray,CVideoFileDetails* aFileDetails);
  147.         
  148.         /**
  149.          * Constructs media duration item. 
  150.          * @param aItemArray Array where constructed item is put.
  151.          * @param aFileDetails File details.
  152.          * @return void
  153.          */
  154.         void MakeDurationItemL(CDesCArray* aItemArray,CVideoFileDetails* aFileDetails);
  155.         /**
  156.          * Constructs bitrate item. 
  157.          * @param aItemArray Array where constructed item is put.
  158.          * @param aFileDetails File details.
  159.          * @return void
  160.          */
  161.         void MakeBitrateItemL(CDesCArray* aItemArray,CVideoFileDetails* aFileDetails);
  162.         /**
  163.          * Constructs file size item. 
  164.          * @param aItemArray Array where constructed item is put.
  165.          * @param aFileDetails File details.
  166.          * @return void
  167.          */
  168.         void MakeSizeItemL(CDesCArray* aItemArray,CVideoFileDetails* aFileDetails);
  169.         /**
  170.          * Constructs date item. 
  171.          * @param aItemArray Array where constructed item is put.
  172.          * @param aFileDetails File details.
  173.          * @return void
  174.          */
  175.         void MakeDateItemL(CDesCArray* aItemArray,CVideoFileDetails* aFileDetails);
  176.         /**
  177.          * Constructs time item. 
  178.          * @param aItemArray Array where constructed item is put.
  179.          * @param aFileDetails File details.
  180.          * @return void
  181.          */
  182.         void MakeTimeItemL(CDesCArray* aItemArray,CVideoFileDetails* aFileDetails);
  183.         /**
  184.          * Constructs copyright item. 
  185.          * @param aItemArray Array where constructed item is put.
  186.          * @param aFileDetails File details.
  187.          * @return void
  188.          */
  189.         void MakeCopyrightItemL(CDesCArray* aItemArray,CVideoFileDetails* aFileDetails);
  190.     private:    // Data
  191.         CAknDoublePopupMenuStyleListBox* iListBox;
  192.         CActiveSchedulerWait iWait;
  193.         TInt iResult;
  194.     };
  195. /**
  196.  *  CPDummyController  
  197.  *  Used together with CVideoFileDetailsDialog to retrieve the information for 
  198.  *  the video file. Basically, it does nothing but abording all the key presses.
  199.  */
  200. class CPDummyController : public CCoeControl
  201.     {
  202.     public:  // Constructors and destructor
  203.         
  204.         /**
  205.          * Two-phased constructor.
  206.          */
  207.         static CPDummyController* NewLC();
  208.         
  209.         /**
  210.          * Destructor.
  211.          */
  212.         virtual ~CPDummyController();
  213.     public: // New functions
  214.         
  215.         /**
  216.          * Controls window handle.
  217.          * @return Controllers RWindow
  218.          */
  219.         inline RWindow& GetClientWindow();
  220.                 
  221.         /**
  222.          * Controls WsSession.
  223.          * @return Controllers RWsSession
  224.          */
  225.         inline RWsSession& GetClientWsSession();
  226.         
  227.         /**
  228.          * Controls ScreenDevice
  229.          * @return Controllers CWsScreenDevice
  230.          */
  231.         inline CWsScreenDevice& GetScreenDevice();
  232.     private: // Functions from CCoeControl
  233.         
  234.         /** 
  235.  * See CCoeControl::OfferKeyEventL() 
  236.  */
  237.         virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
  238.     private:
  239.         /**
  240.          * C++ default constructor.
  241.          */
  242.         CPDummyController();
  243.         /**
  244.          * By default Symbian 2nd phase constructor is private.
  245.          */
  246.         void ConstructL();
  247.     };
  248. /*
  249. -----------------------------------------------------------------------------
  250.     inline RWindow& CPDummyController::GetClientWindow()
  251. Description: Returns client window handle
  252. Comments   :
  253.     Return values: Returns client window handle
  254. -----------------------------------------------------------------------------
  255. */
  256.     inline RWindow& CPDummyController::GetClientWindow()
  257.         {
  258.         return Window();
  259.         }
  260. /*
  261. -----------------------------------------------------------------------------
  262.     inline RWsSession& CPDummyController::GetClientWsSession()
  263. Description: Returns client WsSession
  264. Comments   :
  265.     Return values: Returns client WsSession
  266. -----------------------------------------------------------------------------
  267. */
  268.     inline RWsSession& CPDummyController::GetClientWsSession()
  269.         {
  270.         return ControlEnv()->WsSession();
  271.         }
  272. /*
  273. -----------------------------------------------------------------------------
  274.     inline CWsScreenDevice& CPDummyController::GetScreenDevice()
  275. Description: Returns client ScreenDevice
  276. Comments   :
  277.     Return values: Returns client ScreenDevice
  278. -----------------------------------------------------------------------------
  279. */
  280.     inline CWsScreenDevice& CPDummyController::GetScreenDevice()
  281.         {
  282.         return *(ControlEnv()->ScreenDevice());
  283.         }
  284. #endif // _VIDEO_FILEDETAILSDIALOG_H