--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteapp/inc/MVSAppUI.h Tue Feb 02 01:56:55 2010 +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 <mda/common/controller.h>
+#include <flogger.h>
+#include <techview/eikdialg.h>
+
+#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<CMMFMetaDataEntry> aMetaArray);
+ void GetMetaDataL(RPointerArray<CMMFMetaDataEntry>& aMetaArray);
+ void SelectedPluginIdx(TInt aIdx);
+ void SelectedExtension(TDesC16& aDes);
+ void GetSupportedBitRatesL(RArray <TUint>& aBitRateArray);
+ void GetSupportedSampleRatesArrayL(RArray<TUint>& aSampleRatesArray);
+ void GetSupportedNoChannelsArrayL(RArray<TUint>& aNoChannelsArray);
+ void GetSupportedCodecsArrayL(RArray<TFourCC>& aCodecsArray);
+ void SelectedMedia(TBool aMediaType);
+ void SetSampleRateL(TUint aSampleRate);
+ void SetChannelsL(TUint aNumberOfChannels);
+ void SetBitRateL(TUint aBitRate);
+ void SetCodecsL(TFourCC aDataType);
+ void GetSupportedFrameRatesL(RArray <TReal32>& aFrameRateArray);
+ void GetSupportedFrameSizeArrayL(RArray <TSize>& 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<CMMFMetaDataEntry> 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<TUid> iUidArray;
+ RArray<TUid> iAudioUidArray;
+ RArray<TUid> iAudioPlayUidArray;
+ RArray<TUid> iVideoUidArray;
+ TInt iSelectedPluginIdx;
+ TInt iPluginsCnt;
+ TBool iMediaType;
+ TUid iControllerUid;
+ TBuf<KMaxExtensionSize> 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<KMaxDisplayLabelSize> iDisplayState;
+ TFileName iDisplayFName;
+ TBuf<KMaxDisplayLabelSize> iDisplayTime;
+ CDesCArrayFlat iMainWindowText;
+ TBuf<KMaxDollarPaddingBufferSize> 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<CMVSVideoControl> iVideoCtls;
+
+ TBool iDisplayAdded;
+ };
+
+#endif MVSAPPUI_H