diff -r 000000000000 -r bde4ae8d615e os/mm/mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteapp/inc/MVSAppUI.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/mm/mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteapp/inc/MVSAppUI.h Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,292 @@ +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// Part of the MVS Application for TechView +// + + +#ifndef MVSAPPUI_H +#define MVSAPPUI_H + + +#include +#include +#include + +#include "MVSApp.h" +#include "MVSAppView.h" +#include "audioplayagent.h" +#include "audiorecordagent.h" +#include "videoplayagent.h" +#include "videorecordagent.h" +#include "SettingsManager.h" + +const TInt KMaxExtensionSize = 16; +const TInt KMaxDisplayLabelSize = 32; +const TInt KMaxDollarPaddingBufferSize = 256; +const TInt KErrorTextLength = 80; + +//forward declariotions. +//The volume dialog class, used to increase/decrease volume. +class CMVSVolumeDialog; +//The balance dialog class, used to set the balance to right/left/centre. +class CMVSBalanceDialog; +//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. +class CMVSRepeatDialog; +//The Controller selction dialog class, used to select the format and the controller,before recording. +class CMVSSelectPluginsDialog; +//The SaveAs dialog class, used to input the file name in which the recorded data would be stored. +class CMVSSaveAsDialog; +//The MetaInfo Editing dialog class, used to edit the Metadata info for a clip. +class CMVSEditMetaInfoDialog; +//The audio controller settings dialog class, used to set controller specific features like bitrates,samplerates,channels etc. +class CMVSConfigAudioFormatDialog; +//The system info dialog class,used to display a list of all the supported controllers and codecs by the system. +class CMVSSystemInfoDialog; +//The video Setting dialog class, used to set the video playing/recording properties such as Rotation and Cropping. +class CMVSVideoSettingDialog; +//The audio Setting dialog class, used to set the audio playing properties such as priority preferences,repeats etc. +class CMVSAudioSettingDialog; +//The Play Window dialog class, used to set the play window for a audio clip, specifying the start and end position. +class CMVSSetPlayWindowDialog; +//The crop window setting class, used to set the cropping position for a recorded clip. +class CMVSCropDialog; +//The video controller settings dialog class, used to set controller specific features like framerates,framsize,codecs etc. +class CMVSConfigVideoFormatDialog; +//The timer class, used to refresh the timer in the app periodically,while playing/recording a clip. +class CMVSViewTicker; +//The MetaInfo viewing dialog class, used to view the Metadata info of a clip. +class CMVSViewMetaInfoDialog; +//The class provides the interface to set the video output screen. +class CMVSMultipleScreenDialog; +//This class used to register the application for AP&R +class CMVSResourceNotifyDialog; + +class CMVSVideoControl; + +//The main class that links to all the dialog windows in the application. This class implements the HandleCommandL() +//function that handles any input generated by the user on the UI,and calls the respective dialouge.It acts as an interface +//between all the dialouges and the user.Also this class is responsible for processing the commands and linking with +//the agents to the UI. +class CMVSAppUi : public CEikAppUi, MMVSClientObserver + { +public: + void ConstructL(); + ~CMVSAppUi(); + CMVSAppUi(); + void SetRepeats(TInt aNoRepeats, TTimeIntervalMicroSeconds aDelay); + void SetBalanceL(TInt aBalance); + void SetVolumeL(TInt aVolume, TTimeIntervalMicroSeconds aRamp); + //for audio aMediaType = 0; for video aMediaType = 1; + TInt GetExtensionListL(CDesCArrayFlat* aExtArray,TBool aMediaType); + //for audio aMediaType = 0; for video aMediaType = 1; + TInt GetPluginListL(TInt8 aExtIdx,CDesCArrayFlat* aExtArray,CDesCArrayFlat* aPluginArray,TBool aMediaType); + void SetMetaDataL(RPointerArray aMetaArray); + void GetMetaDataL(RPointerArray& aMetaArray); + void SelectedPluginIdx(TInt aIdx); + void SelectedExtension(TDesC16& aDes); + void GetSupportedBitRatesL(RArray & aBitRateArray); + void GetSupportedSampleRatesArrayL(RArray& aSampleRatesArray); + void GetSupportedNoChannelsArrayL(RArray& aNoChannelsArray); + void GetSupportedCodecsArrayL(RArray& aCodecsArray); + void SelectedMedia(TBool aMediaType); + void SetSampleRateL(TUint aSampleRate); + void SetChannelsL(TUint aNumberOfChannels); + void SetBitRateL(TUint aBitRate); + void SetCodecsL(TFourCC aDataType); + void GetSupportedFrameRatesL(RArray & aFrameRateArray); + void GetSupportedFrameSizeArrayL(RArray & aFrameRateArray); + TInt GetSystemInfoL(CDesCArrayFlat* aPluginArray); + void SetVideoFrameRateL(TReal32 aFrameRate); + void SetVideoFrameSizeL(TSize aFrameSize); + void SetAudioEnabledL(TBool aAudioEnabled); + void SetRotationL(TVideoRotation aRotation); + + void SetScaleFactorL(TReal32 aScaleWidth,TReal32 aScaleHeight,TBool aAntiAliasFiltering); + void GetScaleFactorL(TReal32& aScaleWidth, TReal32& aScaleHeight, TBool& aAntiAliasFiltering); + + void SetCropRegionL(const TRect& aCropRegion); + void GetCropRegionL(TRect& aCropRegion); + + void SetVideoExtent(const TRect& aVideoExtent); + void SetWindowClippingRect(const TRect& aWindowClipRect); + void SetOverlayTextL(const TDesC& aOverlayText); + const TDesC& OverlayText() const; + + void SetAutoScaleL(TAutoScaleType aAutoScaleType, TInt aHorizPos, TInt aVertPos); + void GetAutoScale(TAutoScaleType& aScaleType, TInt& aHorizPos, TInt& aVertPos); + + void GetSupportedVideoTypesL(CDesC8ArrayFlat& aMimeArray); + void SetVideoTypeL(const TDesC8 &aType); + void SetPriorityL(TInt aPriority, TMdaPriorityPreference aPriorityPreference); + void SetCropL(TTimeIntervalMicroSeconds aCropStart,TBool aCropFromBeginning); + TBool SetPlayWindow(TTimeIntervalMicroSeconds aStart,TTimeIntervalMicroSeconds aEnd); + void WriteAudioDataL(CMVSConfigAudioFormatDialog* apAudioFormat, + const TUid& aUid); + void WriteVideoDataL(CMVSConfigVideoFormatDialog* apVideoFormatDlg, + const TUid& aUid); + void UpdatePositionViewL(); + void InternalizeL(RReadStream& aStream); + void ExternalizeL(RWriteStream& aStream); + void SetPosition(TTimeIntervalMicroSeconds& aPos); + void SetMaxFileSize(TInt& aVal); + void SetOutputScreen(TInt aScreenNumber); + void RegisterForNotification(TBool aRegisterd); + void SetPip(TBool aPip); + void SetCrp(TBool aCrp); +private: + inline void FileOpenL(); + inline void FileOpenForRecordL(); + void FileClose(); + TTimeIntervalMicroSeconds GetCropStart() const; + TTimeIntervalMicroSeconds GetCropEnd() const; + void InitializeMetaArrayL(); + TReal32 GetVideoFrameRateL(); + void SaveAsDialogL(); + void DetermineFinalFNameL(); + TVideoRotation GetRotationL(); + void LogErrors(TInt aError); + void Reset(); + void HandleCommandL(TInt aCommand); //Handles command invocations + void BuildDollarDesFromArrayL(TDes& aDollarDes); + void PopulateInfoWindowDataL(TMVSState aState); + //from MMVSClientObserver + void UpdateStateChange(TMVSState aState, TInt aError); + void MvsResourceNotification(const TDesC8& aNotificationData); + //Dynamically alter the availability of controls in the menu by + // 'dimming' and 'undimming' them. + void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane); //Menu set-up + void UpdateDisplayL(TMVSState aState); + void ConvertTimeToDes(TTimeIntervalMicroSeconds aPosition, + TDes& aDes); + TPoint DrawBorders(const TSize& aSize) const; + void StopViewFinder(); + + void PrepareVideoControlsL(); + +private: + //The view + CMVSAppView* iAppView; //The application view + CMVSVolumeDialog* iVolumeDialog; + CMVSBalanceDialog* iBalanceDialog; + CMVSRepeatDialog* iRepeatDialog; + CMVSSelectPluginsDialog* iSelectPluginsDialog; + CDesCArrayFlat* iPluginArray; //Array of supported plugins + CDesCArrayFlat* iExtArray; //Array of supported Extensions + CDesCArrayFlat* iCodecArray;//Array of supported Codecs + CMVSSaveAsDialog* iSaveAsDialog; + // CMVSSetPriorityDialog* iSetAudioPriorityDialog; + CMVSEditMetaInfoDialog* iEditMetaInfoDialog; + CMVSViewMetaInfoDialog* iViewMetaInfoDialog; + CMVSConfigAudioFormatDialog* iConfigFormatDialog; + CMVSConfigVideoFormatDialog* iVideoFormatDialog; + CMVSSystemInfoDialog* iSystemInfo; + CMVSVideoSettingDialog* iVideoSetting; + CMVSAudioSettingDialog* iAudioSetting; + CMVSSetPlayWindowDialog* iSetPlayWindow; + TFileName iSrcFName; + TFileName iRecFName; + RPointerArray iMetaArray; + CMMFMetaDataEntry* iMetaTitle; + CMMFMetaDataEntry* iMetaAuthor; + CMMFMetaDataEntry* iMetaCopyright; + CMMFMetaDataEntry* iMetaRevision; + CMMFMetaDataEntry* iMetaCategory; + CMMFMetaDataEntry* iMetaComments; + //MVSClient + CDesCArrayFlat* iPluginNames; + CMVSAudioPlayAgent* iAudioPlayAgent; + CMVSAudioRecordAgent* iAudioRecordAgent; + CMVSVideoPlayAgent* iVideoPlayAgent; + CMVSVideoRecordAgent* iVideoRecordAgent; + CMVSControllerPluginInfo* iPluginInfo; + CMVSCropDialog* iCropDialog; + CMVSViewTicker* iViewTicker; + CMVSMultipleScreenDialog* iSetScreen; + CMVSResourceNotifyDialog* iRegisterForNotification; + CSettingsManager* iSettingManager; + RArray iUidArray; + RArray iAudioUidArray; + RArray iAudioPlayUidArray; + RArray iVideoUidArray; + TInt iSelectedPluginIdx; + TInt iPluginsCnt; + TBool iMediaType; + TUid iControllerUid; + TBuf iControllerExt; + TInt iRec; + TInt iVolumeOrGain; + TTimeIntervalMicroSeconds iRamp; + TInt iMaxVolume; + TInt iBalance; + TMVSMode iMode; + TInt iPriority; + TMdaPriorityPreference iPriorityPreference; + TInt iNoRepeats; + TTimeIntervalMicroSeconds iStart; + TTimeIntervalMicroSeconds iEnd; + TTimeIntervalMicroSeconds iCropStart; + TTimeIntervalMicroSeconds iCropEnd; + TTimeIntervalMicroSeconds iCropPosition; + TTimeIntervalMicroSeconds iClipLength; + TBool iCropFromBeginning; + TFileName iDestFilename; + TTimeIntervalMicroSeconds iRepeatDelay; + TBuf iDisplayState; + TFileName iDisplayFName; + TBuf iDisplayTime; + CDesCArrayFlat iMainWindowText; + TBuf iDollarDes; + TTimeIntervalMicroSeconds iTimeElapsed; + TReal32 iVideoFrameRate; + TVideoRotation iVideoRotation; + TUint iBitRate; + TUint iSampleRate; + TUint iChannels; + TVideoRotation iRotation; + TSize iFrameSize; + TBool iFileReplace; + TTimeIntervalMicroSeconds iDuration; + TBool iAutoplay; + TBool iOpeningForRecord; + TMVSState iState; + RFileLogger iLogger; + RFs iLogs; + CEikButtonGroupContainer* iButtons; + TBool iProceed; + TBool iRecordLimitSet; + TInt iMaxFileBuffer; + TInt iScreenNumber; + TBool iRegistered; + TBool iAlreadyRegistered; + TBool iAudioEnabled; + TRect iVideoExtent; + TRect iWindowClipRect; + RBuf iOverlayText; + TAutoScaleType iAutoScaleType; + TInt iAutoScaleHorizPos; + TInt iAutoScaleVertPos; + + TBool iPip; + TBool iCrp; + TBool iVideoExtentSet; + TBool iWindowClipRectSet; + + CMVSVideoControl* iVideoCtl; + // Controls displaying video, window owning + RPointerArray iVideoCtls; + + TBool iDisplayAdded; + }; + +#endif MVSAPPUI_H