os/mm/mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteapp/inc/MVSAppUI.h
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // Part of the MVS Application for TechView
    15 //
    16 
    17 
    18 #ifndef MVSAPPUI_H
    19 #define MVSAPPUI_H
    20 
    21 
    22 #include <mda/common/controller.h>
    23 #include <flogger.h>
    24 #include <techview/eikdialg.h>
    25 
    26 #include "MVSApp.h"
    27 #include "MVSAppView.h"
    28 #include "audioplayagent.h"
    29 #include "audiorecordagent.h"
    30 #include "videoplayagent.h"
    31 #include "videorecordagent.h"
    32 #include "SettingsManager.h"
    33 
    34 const TInt KMaxExtensionSize = 16;
    35 const TInt KMaxDisplayLabelSize = 32;
    36 const TInt KMaxDollarPaddingBufferSize = 256;
    37 const TInt KErrorTextLength = 80;
    38 
    39 //forward declariotions.
    40 //The volume dialog class, used to increase/decrease volume.
    41 class CMVSVolumeDialog;
    42 //The balance dialog class, used to set the balance to right/left/centre. 
    43 class CMVSBalanceDialog;
    44 //The repeats dialog class, used to set the number of times a clip has to be played back, along with the delay between the playback.
    45 class CMVSRepeatDialog;
    46 //The Controller selction dialog class, used to select the format and the controller,before recording.
    47 class CMVSSelectPluginsDialog;
    48 //The SaveAs dialog class, used to input the file name in which the recorded data would be stored.
    49 class CMVSSaveAsDialog;
    50 //The MetaInfo Editing dialog class, used to edit the Metadata info for a clip.
    51 class CMVSEditMetaInfoDialog;
    52 //The audio controller settings dialog class, used to set controller specific features like bitrates,samplerates,channels etc.
    53 class CMVSConfigAudioFormatDialog;
    54 //The system info dialog class,used to display a list of all the supported controllers and codecs by the system.
    55 class CMVSSystemInfoDialog;
    56 //The video Setting dialog class, used to set the video playing/recording properties such as Rotation and Cropping.
    57 class CMVSVideoSettingDialog;
    58 //The audio Setting dialog class, used to set the audio playing properties such as priority preferences,repeats etc.
    59 class CMVSAudioSettingDialog;
    60 //The Play Window dialog class, used to set the play window for a audio clip, specifying the start and end position.
    61 class CMVSSetPlayWindowDialog;
    62 //The crop window setting class, used to set the cropping position for a recorded clip.
    63 class CMVSCropDialog;
    64 //The video controller settings dialog class, used to set controller specific features like framerates,framsize,codecs etc.
    65 class CMVSConfigVideoFormatDialog;
    66 //The timer class, used to refresh the timer in the app periodically,while playing/recording a clip.
    67 class CMVSViewTicker;
    68 //The MetaInfo viewing dialog class, used to view the Metadata info of a clip.
    69 class CMVSViewMetaInfoDialog;
    70 //The class provides the interface to set the video output screen.
    71 class CMVSMultipleScreenDialog;
    72 //This class used to register the application for AP&R
    73 class CMVSResourceNotifyDialog;
    74 
    75 class CMVSVideoControl;
    76 
    77 //The main class that links to all the dialog windows in the application. This class implements the HandleCommandL() 
    78 //function that handles any input generated by the user on the UI,and calls the respective dialouge.It acts as an interface
    79 //between all the dialouges and the user.Also this class is responsible for processing the commands and linking with
    80 //the agents to the UI.
    81 class CMVSAppUi : public CEikAppUi, MMVSClientObserver
    82 	{
    83 public:
    84     void ConstructL();
    85     ~CMVSAppUi();
    86     CMVSAppUi();
    87     void SetRepeats(TInt aNoRepeats, TTimeIntervalMicroSeconds aDelay);
    88     void SetBalanceL(TInt aBalance);
    89     void SetVolumeL(TInt aVolume, TTimeIntervalMicroSeconds aRamp);
    90     //for audio aMediaType = 0; for video aMediaType = 1;
    91 	TInt GetExtensionListL(CDesCArrayFlat* aExtArray,TBool aMediaType);
    92 	//for audio aMediaType = 0; for video aMediaType = 1;
    93 	TInt GetPluginListL(TInt8 aExtIdx,CDesCArrayFlat* aExtArray,CDesCArrayFlat* aPluginArray,TBool aMediaType);
    94 	void SetMetaDataL(RPointerArray<CMMFMetaDataEntry> aMetaArray);
    95     void GetMetaDataL(RPointerArray<CMMFMetaDataEntry>& aMetaArray);
    96     void SelectedPluginIdx(TInt aIdx);
    97 	void SelectedExtension(TDesC16& aDes);
    98 	void GetSupportedBitRatesL(RArray <TUint>& aBitRateArray); 
    99 	void GetSupportedSampleRatesArrayL(RArray<TUint>& aSampleRatesArray);
   100 	void GetSupportedNoChannelsArrayL(RArray<TUint>& aNoChannelsArray);
   101 	void GetSupportedCodecsArrayL(RArray<TFourCC>& aCodecsArray);
   102 	void SelectedMedia(TBool aMediaType);
   103 	void SetSampleRateL(TUint aSampleRate);
   104     void SetChannelsL(TUint aNumberOfChannels);
   105     void SetBitRateL(TUint aBitRate);
   106     void SetCodecsL(TFourCC aDataType);
   107     void GetSupportedFrameRatesL(RArray <TReal32>& aFrameRateArray);
   108 	void GetSupportedFrameSizeArrayL(RArray <TSize>& aFrameRateArray);
   109 	TInt GetSystemInfoL(CDesCArrayFlat* aPluginArray);
   110 	void SetVideoFrameRateL(TReal32 aFrameRate);
   111 	void SetVideoFrameSizeL(TSize aFrameSize);
   112 	void SetAudioEnabledL(TBool aAudioEnabled);
   113 	void SetRotationL(TVideoRotation aRotation);
   114 	
   115  	void SetScaleFactorL(TReal32 aScaleWidth,TReal32 aScaleHeight,TBool aAntiAliasFiltering);
   116  	void GetScaleFactorL(TReal32& aScaleWidth, TReal32& aScaleHeight, TBool& aAntiAliasFiltering);
   117 
   118  	void SetCropRegionL(const TRect& aCropRegion);
   119  	void GetCropRegionL(TRect& aCropRegion);
   120  	
   121  	void SetVideoExtent(const TRect& aVideoExtent);
   122  	void SetWindowClippingRect(const TRect& aWindowClipRect);
   123  	void SetOverlayTextL(const TDesC& aOverlayText); 	
   124     const TDesC& OverlayText() const;	
   125     
   126     void SetAutoScaleL(TAutoScaleType aAutoScaleType, TInt aHorizPos, TInt aVertPos);
   127     void GetAutoScale(TAutoScaleType& aScaleType, TInt& aHorizPos, TInt& aVertPos);
   128  	
   129 	void GetSupportedVideoTypesL(CDesC8ArrayFlat& aMimeArray); 
   130  	void SetVideoTypeL(const TDesC8 &aType);
   131  	void SetPriorityL(TInt aPriority, TMdaPriorityPreference aPriorityPreference);
   132     void SetCropL(TTimeIntervalMicroSeconds aCropStart,TBool aCropFromBeginning);
   133     TBool SetPlayWindow(TTimeIntervalMicroSeconds aStart,TTimeIntervalMicroSeconds aEnd);
   134     void WriteAudioDataL(CMVSConfigAudioFormatDialog* apAudioFormat,
   135 				  	 const TUid& aUid);
   136 	void WriteVideoDataL(CMVSConfigVideoFormatDialog* apVideoFormatDlg,
   137 					 const TUid& aUid);
   138 	void UpdatePositionViewL();
   139 	void InternalizeL(RReadStream& aStream);
   140 	void ExternalizeL(RWriteStream& aStream);
   141 	void SetPosition(TTimeIntervalMicroSeconds& aPos);
   142 	void SetMaxFileSize(TInt& aVal);
   143 	void SetOutputScreen(TInt aScreenNumber);
   144 	void RegisterForNotification(TBool aRegisterd);
   145 	void SetPip(TBool aPip);
   146 	void SetCrp(TBool aCrp);
   147 private:
   148 	inline void FileOpenL();
   149 	inline void FileOpenForRecordL();
   150     void FileClose();
   151     TTimeIntervalMicroSeconds GetCropStart() const;
   152     TTimeIntervalMicroSeconds GetCropEnd() const;
   153     void InitializeMetaArrayL();
   154 	TReal32 GetVideoFrameRateL();
   155 	void SaveAsDialogL();
   156 	void DetermineFinalFNameL();
   157  	TVideoRotation GetRotationL();
   158 	void LogErrors(TInt aError);
   159 	void Reset();
   160     void HandleCommandL(TInt aCommand); //Handles command invocations
   161 	void BuildDollarDesFromArrayL(TDes& aDollarDes);
   162     void PopulateInfoWindowDataL(TMVSState aState);
   163     //from MMVSClientObserver
   164     void UpdateStateChange(TMVSState aState, TInt aError);
   165     void MvsResourceNotification(const TDesC8& aNotificationData);
   166     //Dynamically alter the availability of controls in the menu by
   167     // 'dimming' and 'undimming' them.
   168     void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane); //Menu set-up
   169     void UpdateDisplayL(TMVSState aState);
   170     void ConvertTimeToDes(TTimeIntervalMicroSeconds aPosition,
   171                                         TDes& aDes);
   172     TPoint DrawBorders(const TSize& aSize) const;
   173     void StopViewFinder();
   174    
   175    	void PrepareVideoControlsL();
   176 
   177 private:
   178     //The view
   179     CMVSAppView* iAppView; //The application view
   180     CMVSVolumeDialog* iVolumeDialog;
   181     CMVSBalanceDialog* iBalanceDialog;
   182     CMVSRepeatDialog* iRepeatDialog;
   183     CMVSSelectPluginsDialog* iSelectPluginsDialog;
   184     CDesCArrayFlat* iPluginArray; //Array of supported plugins
   185     CDesCArrayFlat* iExtArray; //Array of supported Extensions
   186     CDesCArrayFlat* iCodecArray;//Array of supported Codecs
   187     CMVSSaveAsDialog* iSaveAsDialog;
   188    // CMVSSetPriorityDialog* iSetAudioPriorityDialog;
   189     CMVSEditMetaInfoDialog* iEditMetaInfoDialog;
   190     CMVSViewMetaInfoDialog* iViewMetaInfoDialog;
   191     CMVSConfigAudioFormatDialog* iConfigFormatDialog;
   192     CMVSConfigVideoFormatDialog* iVideoFormatDialog; 
   193     CMVSSystemInfoDialog* iSystemInfo;
   194     CMVSVideoSettingDialog* iVideoSetting;
   195     CMVSAudioSettingDialog* iAudioSetting;
   196     CMVSSetPlayWindowDialog* iSetPlayWindow;
   197     TFileName iSrcFName;
   198     TFileName iRecFName;
   199     RPointerArray<CMMFMetaDataEntry> iMetaArray;
   200     CMMFMetaDataEntry* iMetaTitle;
   201     CMMFMetaDataEntry* iMetaAuthor;
   202     CMMFMetaDataEntry* iMetaCopyright;
   203     CMMFMetaDataEntry* iMetaRevision;
   204     CMMFMetaDataEntry* iMetaCategory;
   205     CMMFMetaDataEntry* iMetaComments;
   206     //MVSClient
   207     CDesCArrayFlat* iPluginNames;
   208     CMVSAudioPlayAgent* iAudioPlayAgent;
   209     CMVSAudioRecordAgent* iAudioRecordAgent;
   210     CMVSVideoPlayAgent* iVideoPlayAgent;
   211     CMVSVideoRecordAgent* iVideoRecordAgent;
   212     CMVSControllerPluginInfo* iPluginInfo;
   213     CMVSCropDialog* iCropDialog;
   214     CMVSViewTicker* iViewTicker;
   215     CMVSMultipleScreenDialog* iSetScreen;
   216     CMVSResourceNotifyDialog* iRegisterForNotification;
   217     CSettingsManager* iSettingManager;
   218     RArray<TUid> iUidArray;
   219  	RArray<TUid> iAudioUidArray;
   220  	RArray<TUid> iAudioPlayUidArray;
   221  	RArray<TUid> iVideoUidArray;
   222  	TInt iSelectedPluginIdx;		 
   223  	TInt iPluginsCnt;
   224  	TBool iMediaType;
   225  	TUid iControllerUid;
   226  	TBuf<KMaxExtensionSize> iControllerExt;
   227  	TInt iRec;	 
   228   	TInt iVolumeOrGain;
   229     TTimeIntervalMicroSeconds iRamp;
   230     TInt iMaxVolume;
   231     TInt iBalance;
   232     TMVSMode iMode;
   233     TInt iPriority;
   234     TMdaPriorityPreference iPriorityPreference;
   235    	TInt iNoRepeats;
   236    	TTimeIntervalMicroSeconds iStart;
   237    	TTimeIntervalMicroSeconds iEnd;
   238    	TTimeIntervalMicroSeconds iCropStart;
   239    	TTimeIntervalMicroSeconds iCropEnd;
   240    	TTimeIntervalMicroSeconds iCropPosition;
   241    	TTimeIntervalMicroSeconds iClipLength;
   242    	TBool iCropFromBeginning;
   243    	TFileName iDestFilename;
   244    	TTimeIntervalMicroSeconds iRepeatDelay;
   245     TBuf<KMaxDisplayLabelSize> iDisplayState;
   246     TFileName iDisplayFName;
   247     TBuf<KMaxDisplayLabelSize> iDisplayTime;
   248     CDesCArrayFlat iMainWindowText;
   249     TBuf<KMaxDollarPaddingBufferSize> iDollarDes;
   250     TTimeIntervalMicroSeconds iTimeElapsed;
   251     TReal32 iVideoFrameRate;
   252     TVideoRotation iVideoRotation;
   253     TUint iBitRate;
   254     TUint iSampleRate;
   255     TUint iChannels;
   256     TVideoRotation iRotation;
   257     TSize iFrameSize;
   258     TBool iFileReplace;
   259     TTimeIntervalMicroSeconds iDuration;
   260  	TBool iAutoplay;
   261  	TBool iOpeningForRecord;
   262  	TMVSState iState;
   263  	RFileLogger iLogger;
   264  	RFs iLogs;
   265  	CEikButtonGroupContainer* iButtons;
   266  	TBool iProceed;
   267  	TBool iRecordLimitSet;
   268  	TInt iMaxFileBuffer;
   269 	TInt iScreenNumber;
   270  	TBool iRegistered;
   271  	TBool iAlreadyRegistered;
   272  	TBool iAudioEnabled;
   273     TRect iVideoExtent;
   274     TRect iWindowClipRect;
   275     RBuf  iOverlayText;
   276     TAutoScaleType iAutoScaleType;
   277     TInt iAutoScaleHorizPos; 
   278     TInt iAutoScaleVertPos;
   279   
   280 	TBool iPip;
   281 	TBool iCrp;
   282 	TBool iVideoExtentSet;
   283 	TBool iWindowClipRectSet;
   284 
   285 	CMVSVideoControl* iVideoCtl;
   286 	// Controls displaying video, window owning
   287 	RPointerArray<CMVSVideoControl> iVideoCtls;
   288 
   289 	TBool iDisplayAdded;
   290  	};
   291  
   292 #endif  MVSAPPUI_H