mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteapp/inc/MVSAppUI.h
changeset 0 b8ed18f6c07b
equal deleted inserted replaced
-1:000000000000 0:b8ed18f6c07b
       
     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