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".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // Part of the MVS Application for TechView
17 #include <techview/eikfnlab.h>
18 #include <techview/eikcfdlg.h>
19 #include <techview/eikbtgpc.h>
20 #include <techview/eikdialg.h>
21 #include <techview/eikon.rsg>
27 #include "MVSViewTicker.h"
28 #include "MVSConstants.h"
29 #include "MVSVolumeDialog.h"
30 #include "MVSBalanceDialog.h"
31 #include "MVSRepeatDialog.h"
32 #include "MVSSelectPluginsDialog.h"
33 #include "MVSSaveAsDialog.h"
34 #include "MVSEditMetaInfoDialog.h"
35 #include "MVSConfigAudioFormatDialog.h"
36 #include "MVSConfigVideoFormatDialog.h"
37 #include "MVSSystemInfoDialog.h"
38 #include "MVSVideoSettingDialog.h"
39 #include "MVSAudioSettingDialog.h"
40 #include "MVSSetPlayWindowDialog.h"
41 #include "MVSViewMetaInfoDialog.h"
42 #include "MVSCropDialog.h"
43 #include "MVSMultipleScreenDialog.h"
44 #include "MVSResourceNotifyDialog.h"
46 const TInt KMaxSupportedPlugins = 10;
47 const TInt KMaxSupportedExtension = 10;
48 const TInt KMaxSupportedCodecs = 10;
49 const TInt KLabelCaptionMaxLength = 16;
50 const TInt KTimeValueLength = 12;
52 void CMVSAppUi::ConstructL()
54 CEikAppUi::ConstructL();
55 User::LeaveIfError(iLogs.Connect());
56 iLogs.MkDirAll(KLogsPath);
57 iButtons=iEikonEnv->AppUiFactory()->ToolBar();
58 //Meta entry initialization
59 iMetaTitle = CMMFMetaDataEntry::NewL(KTitle,Ka);
60 iMetaAuthor = CMMFMetaDataEntry::NewL(KAuthor,Ka);
61 iMetaCopyright = CMMFMetaDataEntry::NewL(KCopyrt,Ka);
62 iMetaRevision = CMMFMetaDataEntry::NewL(KRevision,Ka);
63 iMetaCategory = CMMFMetaDataEntry::NewL(KCategory,Ka);
64 iMetaComments = CMMFMetaDataEntry::NewL(KComments,Ka);
65 iVideoPlayAgent = CMVSVideoPlayAgent::NewL(*this);
66 iAppView = CMVSAppView::NewL(ClientRect(), *iVideoPlayAgent);
67 iPluginArray = new(ELeave) CDesCArrayFlat(KMaxSupportedPlugins);
68 iExtArray = new(ELeave) CDesCArrayFlat(KMaxSupportedExtension);
69 iCodecArray = new(ELeave) CDesCArrayFlat(KMaxSupportedCodecs);
70 iAudioPlayAgent = CMVSAudioPlayAgent::NewL(*this);
71 iAudioRecordAgent = CMVSAudioRecordAgent::NewL(*this);
72 iVideoRecordAgent = CMVSVideoRecordAgent::NewL(*this);
73 iPluginInfo=CMVSControllerPluginInfo::NewL();
76 User::LeaveIfError(iLogger.Connect());
77 iLogger.CreateLog(KLogsDir,KLogsFile,EFileLoggingModeAppend);
78 iSettingManager = CSettingsManager::NewL();
79 iRepeatDelay = 1000000;//initial value of 1 second in microseconds.
80 iPriority = 1;//default settings
81 iPriorityPreference = EMdaPriorityPreferenceNone;//default settings
82 iRotation = EVideoRotationNone;//default settings
85 if(!iSettingManager->FileExists())
87 iSettingManager->MakeSeedIndexL();
89 iSettingManager->ReadGeneralSettingsL(this);
90 iSelectedPluginIdx = -1;
91 iMediaType = 0; //set audio media initially
92 iPluginsCnt = iPluginInfo->GetPluginListL(iPluginArray,iUidArray );
93 iControllerUid = TUid::Null();
94 iViewTicker = CMVSViewTicker::NewL(this);
96 // Add one video control per screen
97 // except for screen 0 which already has a video control
99 const TInt numScreens = CCoeEnv::Static()->WsSession().NumberOfScreens();
101 for(TInt i = 1; i < numScreens; ++i)
103 CMVSVideoControl* videoCtl = CMVSVideoControl::NewLC(*iVideoPlayAgent, i, *(CCoeEnv::Static()->RootWin(i)));
104 CWsScreenDevice* screenDevice = new (ELeave) CWsScreenDevice(CCoeEnv::Static()->WsSession());
105 CleanupStack::PushL(screenDevice);
106 User::LeaveIfError(screenDevice->Construct(i));
107 videoCtl->SetExtent(TPoint(0, 0), screenDevice->SizeInPixels());
108 CleanupStack::PopAndDestroy(screenDevice);
109 videoCtl->ActivateL();
110 iVideoCtls.AppendL(videoCtl);
111 CleanupStack::Pop(videoCtl);
114 iVideoCtl = iAppView->iMainWindowControl;
115 iLogger.Write(_L("Application START"));
116 iSrcFName.Copy(KDefault);
117 iDestFilename = KDefault;
118 iRecordLimitSet = EFalse;
119 iAlreadyRegistered = EFalse;
122 CMVSAppUi::CMVSAppUi()
123 :iVolumeOrGain(10),iNoRepeats(0),iMainWindowText(8), iMaxFileBuffer(0)
124 #ifdef SYMBIAN_BUILD_GCE
125 ,iAutoScaleType(EAutoScaleNone),
126 iAutoScaleHorizPos(EHorizontalAlignCenter),
127 iAutoScaleVertPos(EVerticalAlignCenter)
132 CMVSAppUi::~CMVSAppUi()
134 delete iAudioPlayAgent;
135 delete iAudioRecordAgent;
136 delete iVideoPlayAgent;
137 delete iVideoRecordAgent;
139 iAudioUidArray.Close();
140 iVideoUidArray.Close();
141 iAudioPlayUidArray.Close();
142 iOverlayText.Close();
149 delete iMetaCopyright;
150 delete iMetaRevision;
151 delete iMetaCategory;
152 delete iMetaComments;
153 iMainWindowText.Reset();
161 delete iSettingManager;
162 iVideoCtls.ResetAndDestroy();
166 //All the user actvated actions in the UI is captured and handled
168 void CMVSAppUi::HandleCommandL(TInt aCommand)
170 TBool needsUpdating = ETrue;
177 return;//dont get into record mode,as the system is still in a previous active state,Playing/Recording.
179 FileOpenForRecordL();
186 if(iState == EAudioPlaying || iState == EVideoPlaying || iState == EAudioRecording || iState == EVideoRecording || iMode == EVideoRecord || iMode == EAudioRecord)
188 return;//dont get into record mode,as the system is still in a previous active state,Playing/Recording.
192 iLogger.Write(_L("Opened for Play"));
196 case EMVSCmdMultiScreen:
198 iSetScreen->SetupDialogLD(iScreenNumber,this);
202 case EMVSRegisterForNotification:
204 iRegisterForNotification->SetupDialogLD(this);
208 case EMVSCmdSetVolume:
210 if((iMode == EAudioPlay) || (iMode == EVideoPlay))
212 iVolumeDialog->SetupDialogLD(iVolumeOrGain,0,0, ETrue, this);
213 iLogger.Write(_L("volume set"));
215 else if((iMode == EAudioRecord)||(iMode == EVideoRecord))
217 iVolumeDialog->SetupDialogLD(iVolumeOrGain,0,0, EFalse, this);
218 iLogger.Write(_L("gain set"));
224 case EMVSCmdSetPlayBalance:
226 iBalanceDialog->SetupDialogLD(iBalance,this, ETrue);
227 iLogger.Write(_L("Balance Set"));
232 case EMVSCmdSetRecordBalance:
234 iBalanceDialog->SetupDialogLD(0,this, EFalse);
239 case EMVSCmdSetRepeats:
241 iRepeatDialog->SetupDialogLD(iNoRepeats,iRepeatDelay, this);
242 iLogger.Write(_L("Repeats Set"));
246 case EMVSCmdEditMetadata:
249 if(iMetaArray.Count() == 0)
251 InitializeMetaArrayL();
258 iEditMetaInfoDialog->SetupDialogLD(iMetaArray,this);
259 iLogger.Write(_L("MetaData Edited"));
267 iViewMetaInfoDialog->SetupDialogLD(iMetaArray,this);
268 iLogger.Write(_L("MetaData View"));
280 iVideoPlayAgent->RemoveDisplayWindowL(iVideoCtl->ControlWindow());
281 iVideoPlayAgent->RemoveDisplayWindowL(iVideoCtl->Pip().ControlWindow());
282 iVideoPlayAgent->RemoveDisplay(iVideoCtl->ScreenNumber());
283 iVideoCtl->Pip().Clear();
284 iDisplayAdded = EFalse;
287 iLogger.Write(_L("Application EXIT"));
288 iSettingManager->WriteGeneralSettingsL(this);
296 if(!iButtons->IsCommandDimmed(EMVSCmdPlay))
302 iAppView->iStatusWindowTimeControl->ResetText2L();
303 SetVolumeL(iVolumeOrGain,0);
304 iButtons->DimCommand(EMVSCmdRecord, ETrue);
306 if(iState == ENotReady)
313 iAudioPlayAgent->Play();
314 iLogger.Write(_L("Playing using AudioPlayAgent"));
321 iAppView->iStatusWindowTimeControl->ResetText2L();
322 SetVolumeL(iVolumeOrGain,0);
323 iAudioRecordAgent->PlayL();
324 iLogger.Write(_L("Playing using AudioRecordAgent"));
330 if (iVideoPlayAgent->AudioEnabledL())
332 SetVolumeL(iVolumeOrGain, 0);
334 iButtons->DimCommand(EMVSCmdSetRepeats, ETrue);
337 #ifdef SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS
338 if (iVideoPlayAgent->SupportVideoPlayerUtility2())
340 PrepareVideoControlsL();
342 #endif // SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS
343 iVideoPlayAgent->Play();
344 iLogger.Write(_L("Playing using VideoPlayAgent"));
359 needsUpdating = EFalse;
367 if(!iButtons->IsCommandDimmed(EMVSCmdRecord))
373 iAudioRecordAgent->RecordL();
374 iLogger.Write(_L("Recording using AudioRecordAgent"));
375 iButtons->DimCommand(EMVSCmdRecord, ETrue);
376 iButtons->DimCommand(EMVSCmdPlay, ETrue);
382 //start view finder and record
383 CCamera *camera = iVideoRecordAgent->Camera();
385 camera->EnumerateCaptureSizes(imageSize,1,CCamera::EFormatFbsBitmapColor16M);
386 TPoint pos = DrawBorders(imageSize);
387 TRect clientRect = ClientRect();
388 pos.iY += clientRect.iTl.iY;//add y-offset for menu bar
389 TRect screenRect(pos,imageSize);
390 TRect clipRect = screenRect ;
391 if (!camera->ViewFinderActive())
393 CCoeEnv *coenv = iAppView->iMainWindowControl->ControlEnv();
394 camera->StartViewFinderDirectL( coenv->WsSession(),
395 *coenv->ScreenDevice(),
396 *iAppView->DrawableWindow(),
402 SetVideoFrameRateL(iVideoFrameRate);
403 SetVideoFrameSizeL(iFrameSize);
404 SetAudioEnabledL(iAudioEnabled);
406 iVideoRecordAgent->Record();
407 iLogger.Write(_L("Recording using VideoRecordAgent"));
408 iButtons->DimCommand(EMVSCmdRecord, ETrue);
409 iButtons->DimCommand(EMVSCmdPlay, ETrue);
420 needsUpdating = EFalse;
428 if(!iButtons->IsCommandDimmed(EMVSCmdPause))
434 iAudioPlayAgent->Pause();
435 iLogger.Write(_L("AudioPlayAgent Paused"));
436 iButtons->DimCommand(EMVSCmdPlay, EFalse);
443 User::InfoPrint(KNotsupported);
449 iVideoPlayAgent->PauseL();
450 iLogger.Write(_L("AudioPlayAgent Paused"));
451 iButtons->DimCommand(EMVSCmdPlay, EFalse);
458 iVideoRecordAgent->PauseL();
459 iLogger.Write(_L("VideoRecordAgent Paused"));
460 iButtons->DimCommand(EMVSCmdRecord, EFalse);
475 needsUpdating = EFalse;
483 if(!iButtons->IsCommandDimmed(EMVSCmdStop))
489 iAudioPlayAgent->Stop();
490 iLogger.Write(_L("AudioPlayAgent Stopped"));
491 iButtons->DimCommand(EMVSCmdPlay, EFalse);
498 iAudioRecordAgent->Stop();
499 iLogger.Write(_L("AudioRecordAgent Stopped"));
500 iButtons->DimCommand(EMVSCmdRecord, EFalse);
502 iButtons->DimCommand(EMVSCmdPlay, EFalse);
509 iVideoPlayAgent->Stop();
510 iLogger.Write(_L("VideoPlayAgent Stopped"));
511 iButtons->DimCommand(EMVSCmdPlay, EFalse);
520 iVideoRecordAgent->Stop();
521 iLogger.Write(_L("VideoRecordAgent Stopped"));
522 iButtons->DimCommand(EMVSCmdRecord, EFalse);
537 needsUpdating = EFalse;
543 case EMVSCmdSetPlayWindow:
545 iSetPlayWindow->SetupDialogLD(iStart,iEnd,iDuration,this);
546 iLogger.Write(_L("AudioPlayAgent SetPlayWindow"));
551 case EMVSCmdClearPlayWindow:
554 iEnd = iAudioPlayAgent->Duration();
555 iAudioPlayAgent->ClearPlayWindow();
556 iLogger.Write(_L("AudioPlayAgent ClearPlayWindow"));
561 case EMVSCmdSystemInfo:
563 iSystemInfo->SetupDialogLD(this);
564 iLogger.Write(_L("System Info"));
569 case EMVSVideoCmdSettings:
571 if (iVideoPlayAgent->SupportVideoPlayerUtility2())
573 iVideoSetting->SetupDialogLD(iRotation, this, iVideoExtent, iWindowClipRect, ETrue, iPip, iCrp);
577 iVideoSetting->SetupDialogLD(iRotation,this, TRect(0, 0, 0, 0), TRect(0, 0, 0, 0), EFalse, EFalse, iCrp);
579 iLogger.Write(_L("Video Settings"));
584 case EMVSCmdAudioSetting:
586 iAudioSetting->SetupDialogLD(iNoRepeats,iRepeatDelay,iPriority,iPriorityPreference,iMaxFileBuffer, this);
587 iLogger.Write(_L("Audio Setting"));
595 iRecordLimitSet = EFalse;
600 case EMVSCmdSetCropWindow:
603 iCropStart=GetCropStart();
604 iClipLength = iAudioRecordAgent->Duration();
605 iCropEnd=iClipLength;
606 iCropDialog->SetupDialogLD(iCropPosition,iClipLength,0,iCropEnd,this);
607 iLogger.Write(_L("CropWindow set"));
611 case EMVSCmdClearLog:
616 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
617 case EMVSCmdEnableSubtitles :
619 iVideoPlayAgent->EnableSubtitlesL();
622 case EMVSCmdDisableSubtitles :
624 iVideoPlayAgent->DisableSubtitlesL();
627 #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
631 UpdateDisplayL(iState);
635 void CMVSAppUi::PrepareVideoControlsL()
639 iVideoPlayAgent->RemoveDisplayWindowL(iVideoCtl->ControlWindow());
640 iVideoPlayAgent->RemoveDisplay(iVideoCtl->ScreenNumber());
641 TRAP_IGNORE(iVideoPlayAgent->RemoveDisplayWindowL(iVideoCtl->Pip().ControlWindow()));
642 iDisplayAdded = EFalse;
645 iVideoCtl = iAppView->iMainWindowControl;
647 CCoeEnv* env = CCoeEnv::Static();
649 if (iScreenNumber > 0)
651 // Video ctls start at 0 in index for display 1
652 iVideoCtl = iVideoCtls[iScreenNumber - 1];
655 TRect extent = iVideoExtentSet ? iVideoExtent : iVideoCtl->Rect();
656 TRect clip = iWindowClipRectSet ? iWindowClipRect : iVideoCtl->Rect();
657 iVideoPlayAgent->AddDisplayWindowL(env->WsSession(), *(env->ScreenDevice(iScreenNumber)), iVideoCtl->ControlWindow(), extent, clip);
658 iDisplayAdded = ETrue;
662 // Picture-in-picture has been enabled.
663 TSize videoFrameSize;
664 iVideoPlayAgent->VideoFrameSizeL(videoFrameSize);
665 TSize winSize = iVideoCtl->Size();
667 // Picture-in-picture should be an 8th of original
668 videoFrameSize.iHeight /= 4;
669 videoFrameSize.iWidth /= 4;
671 TPoint pipLoc(winSize.iWidth - (videoFrameSize.iWidth + 4), 4);
673 iVideoCtl->Pip().SetExtent(pipLoc, videoFrameSize);
677 iVideoCtl->EnablePip(CMVSPipControl::EUseCrp);
678 iVideoPlayAgent->AddDisplayL(env->WsSession(), iScreenNumber, iVideoCtl->Pip());
682 iVideoCtl->EnablePip(CMVSPipControl::EUseMmf);
683 iVideoPlayAgent->AddDisplayWindowL(env->WsSession(), *(env->ScreenDevice(iScreenNumber)), iVideoCtl->Pip().ControlWindow());
684 iVideoPlayAgent->SetAutoScaleL(iVideoCtl->Pip().ControlWindow(), EAutoScaleBestFit, EHorizontalAlignCenter, EVerticalAlignCenter);
689 // Picture-in-picture has been disabled.
690 iVideoCtl->DisablePip();
694 void CMVSAppUi::SetPosition(TTimeIntervalMicroSeconds& aPos)
696 if(iMode == EAudioPlay)
698 iAudioPlayAgent->SetPosition(aPos);
700 else if(iMode == EAudioRecord)
702 iAudioRecordAgent->SetPosition(aPos);
706 //Opens a file for playing
707 void CMVSAppUi::FileOpenL()
709 //Open the file dialog
710 CEikFileOpenDialog* dialog = new (ELeave) CEikFileOpenDialog(&iSrcFName);
711 TInt val = dialog->ExecuteLD(R_EIK_DIALOG_FILE_OPEN);
714 TUid mediatype = iPluginInfo->GetMediaTypeL(iSrcFName);
715 if(mediatype == KUidMediaTypeVideo)
717 TRect rect, clipRect;
718 rect = clipRect = TRect(iAppView->iMainWindowControl->PositionRelativeToScreen(), iAppView->iMainWindowControl->Size());
721 clipRect.Shrink(2,2);
723 // Clear the area where the video will be displayed
724 #ifdef SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS
725 iVideoPlayAgent->SetVideoOutputL(iCoeEnv->WsSession(),
726 *iCoeEnv->ScreenDevice(iScreenNumber),
727 iVideoCtl->ControlWindow(),
731 iVideoPlayAgent->SetVideoOutputL(iCoeEnv->WsSession(),
732 *iCoeEnv->ScreenDevice(),
733 iVideoCtl->ControlWindow(),
736 #endif // SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS
738 TInt res = iVideoPlayAgent->SetScreenNumber(iScreenNumber);
739 if(res == KErrNotSupported)
741 User::InfoPrint(KMultiScreenNotsupported);
743 //Enable AP&R for register notification made before opening the file
746 TInt regerr = iVideoPlayAgent->RegisterForNotification();
747 if(regerr == KErrNone)
749 User::InfoPrint(KRegisterSuccess);
753 User::InfoPrint(KRegisterFailure);
756 else if(iAlreadyRegistered)
758 TInt cancelerr = iVideoPlayAgent->CancelNotification();
759 if(cancelerr == KErrNone)
761 iAlreadyRegistered = EFalse;
762 User::InfoPrint(KRegisterCancelation);
766 User::InfoPrint(KCancelationFailure);
769 iVideoPlayAgent->OpenFileL(iSrcFName);
772 else if(mediatype == KUidMediaTypeAudio)
774 iAudioPlayAgent->OpenFileL(iSrcFName);
776 iButtons->DimCommand(EMVSCmdSetVolume,EFalse);
781 User::InfoPrint(KNotSupported);
787 //Opens a new or existing file to record.
788 void CMVSAppUi::FileOpenForRecordL()
791 iPluginArray->Reset();
792 iCodecArray->Reset();
793 iSelectedPluginIdx = KBeforeSelectingController;
794 iSelectPluginsDialog->SetupDialogLD(iPluginArray,iExtArray, iCodecArray, this);
795 //Indicates that the controller wasnt selected, leave it to the MMF to select
796 //tha appropriate controller.
797 if(iSelectedPluginIdx == KControllerNotSelected)
799 iControllerUid = TUid::Null();
805 iControllerUid = iVideoUidArray[iSelectedPluginIdx];
809 iControllerUid = iAudioUidArray[iSelectedPluginIdx];
814 iMode = EAudioRecord;
818 iMode = EVideoRecord;
823 void CMVSAppUi::FileClose()
825 iButtons->DimCommand(EMVSCmdSetVolume, ETrue);
826 iButtons->DimCommand(EMVSCmdRecord, ETrue);
831 iAudioPlayAgent->Stop();
832 iLogger.Write(_L("AudioPlayAgent Close"));
838 iAudioRecordAgent->Stop();
839 iLogger.Write(_L("AudioRecordAgent Close"));
845 iVideoPlayAgent->Close();
846 iLogger.Write(_L("VideoPlayAgent Close"));
853 iVideoRecordAgent->Close();
854 iLogger.Write(_L("VideoRecordAgent Close"));
865 void CMVSAppUi::SaveAsDialogL()
867 iFileReplace = ETrue;
868 TInt errVal = iSaveAsDialog->SetupDialogLD(iDestFilename, &iFileReplace);
871 DetermineFinalFNameL();
874 iOpeningForRecord=ETrue;
875 RFs fs = CCoeEnv::Static()->FsSession();
876 if(iMode==EAudioRecord)
878 TInt uidcount = iAudioPlayUidArray.Count();
879 TUid playcontrollerUid = TUid::Null();
882 playcontrollerUid = iAudioPlayUidArray[0];
886 fs.Delete(iDestFilename);
888 iAudioRecordAgent->CreateNewFileL(iDestFilename,iControllerUid,playcontrollerUid);
889 iLogger.Write(_L("Opened file for Audio Record"));
890 iRecFName.Copy(iDestFilename);
891 iButtons->DimCommand(EMVSCmdRecord, EFalse);
895 else if(iMode==EVideoRecord)
899 fs.Delete(iDestFilename);
901 TInt err = iVideoRecordAgent->OpenFileL(iDestFilename,iControllerUid);
904 iLogger.Write(_L("ECam Object creation failed"));
905 User::InfoPrint(KVideoError);
909 iLogger.Write(_L("Opened file for Video Record"));
910 iRecFName.Copy(iDestFilename);
911 iButtons->DimCommand(EMVSCmdRecord, EFalse);
920 UpdateStateChange(ENotReady , KErrNone);
924 //The state change calls from the agents
925 void CMVSAppUi::UpdateStateChange(TMVSState aState, TInt aError)
928 //if state changes from EVideoRecording and view finder is running, stop it.
929 if(iState == EVideoRecording && aState != EVideoRecording)
933 //if playback stops, redraw the app view
934 if(iState == EVideoPlaying && aState != EVideoPlaying)
936 // the last frame is still on the display, but nothing is in charge
937 // of redrawing it. this would otherwise lead to graphical glitches
938 // as the frame is partially erased over time.
939 iAppView->iMainWindowControl->DrawNow();
942 if(error == KErrNone)
944 if(aState == EAudioOpened)
946 iAppView->ResetProgressBar();
947 iButtons->DimCommand(EMVSCmdPlay,EFalse);
949 if(iMode == EAudioPlay)
951 iButtons->DimCommand(EMVSCmdRecord,ETrue);
952 iDuration = iAudioPlayAgent->Duration();
953 if((iStart == 0) && (iEnd == 0))
959 if(iButtons->IsCommandDimmed(EMVSCmdSetRepeats))
961 iButtons->DimCommand(EMVSCmdSetRepeats,EFalse);
964 if(iButtons->IsCommandDimmed(EMVSCmdSetPlayBalance))
966 iButtons->DimCommand(EMVSCmdSetPlayBalance,EFalse);
969 //Provided to automatically start playing, when the play button is selected
970 //without opening a file through the file menu.
973 iAudioPlayAgent->Play();
976 if(iMode == EAudioRecord && !iOpeningForRecord)
978 iButtons->DimCommand(EMVSCmdRecord,EFalse);
979 iButtons->DimCommand(EMVSCmdPlay,EFalse);
982 //Pop the Audio Record Settings Dialogue
983 if(iMode == EAudioRecord && iOpeningForRecord && iSelectedPluginIdx !=-2)
985 iButtons->DimCommand(EMVSCmdSetPlayBalance,EFalse);
986 if(iButtons->IsCommandDimmed(EMVSCmdRecord))
988 iButtons->DimCommand(EMVSCmdRecord,EFalse);
991 //if appending to an existing file no need to re-enter the controller configuration.
994 if(!iMediaType && iSelectedPluginIdx !=-1)
996 TRAP(error, iConfigFormatDialog->SetupDialogLD(this,iAudioUidArray[iSelectedPluginIdx],iSettingManager) );
997 iOpeningForRecord = EFalse;
1002 else if(aState == EAudioPlaying)
1004 iButtons->DimCommand(EMVSCmdPlay, ETrue);
1005 iButtons->DimCommand(EMVSCmdRecord,ETrue);
1006 iButtons->DimCommand(EMVSCmdPause, EFalse);
1007 iButtons->DimCommand(EMVSCmdStop, EFalse);
1008 iButtons->DrawNow();
1010 else if(aState == ENotReady)
1012 iButtons->DimCommand(EMVSCmdSetPlayBalance,EFalse);
1013 iButtons->DimCommand(EMVSCmdSetVolume, ETrue);
1014 iButtons->DimCommand(EMVSCmdRecord, ETrue);
1015 iButtons->DimCommand(EMVSCmdPlay, EFalse);
1016 iButtons->DrawNow();
1018 // File has been closed. Remove the display window if it was added.
1021 TRAP(error, iVideoPlayAgent->RemoveDisplayWindowL(iVideoCtl->ControlWindow()));
1022 TRAP(error, iVideoPlayAgent->RemoveDisplayWindowL(iVideoCtl->Pip().ControlWindow()));
1023 iVideoPlayAgent->RemoveDisplay(iVideoCtl->ScreenNumber());
1024 iVideoCtl->Pip().Clear();
1025 iDisplayAdded = EFalse;
1028 else if(aState == EAudioOpening)
1030 iButtons->DimCommand(EMVSCmdSetVolume,EFalse);
1032 else if(aState == EAudioPaused)
1034 iButtons->DimCommand(EMVSCmdPause, ETrue);
1035 iButtons->DrawNow();
1037 else if(aState == EAudioStopped)
1039 iAppView->ResetProgressBar();
1040 iButtons->DimCommand(EMVSCmdStop, ETrue);
1041 iButtons->DimCommand(EMVSCmdPause, ETrue);
1042 iButtons->DrawNow();
1044 else if(aState == EVideoPaused)
1046 iButtons->DimCommand(EMVSCmdPause,ETrue);
1047 iButtons->DrawNow();
1049 else if(aState == EVideoStopped)
1051 iButtons->DimCommand(EMVSCmdStop,ETrue);
1052 iButtons->DimCommand(EMVSCmdPause, ETrue);
1053 iButtons->DrawNow();
1055 else if(aState == EVideoPlaying)
1057 iButtons->DimCommand(EMVSCmdPlay, ETrue);
1058 iButtons->DimCommand(EMVSCmdRecord,ETrue);
1059 iButtons->DimCommand(EMVSCmdPause,ETrue);
1060 iButtons->DimCommand(EMVSCmdStop,EFalse);
1061 iButtons->DrawNow();
1063 else if(aState == EVideoRecording)
1065 iButtons->DimCommand(EMVSCmdPlay, ETrue);
1066 iButtons->DimCommand(EMVSCmdRecord, ETrue);
1067 iButtons->DimCommand(EMVSCmdPause,EFalse);
1068 iButtons->DimCommand(EMVSCmdSetRepeats,ETrue);
1069 iButtons->DrawNow();
1072 else if(aState == EAudioRecording)
1074 iButtons->DimCommand(EMVSCmdPlay, ETrue);
1075 iButtons->DimCommand(EMVSCmdRecord,ETrue);
1076 iButtons->DimCommand(EMVSCmdPause,ETrue);
1077 iButtons->DrawNow();
1079 else if(aState == EVideoOpened )
1081 //Pop the Video Record Settings Dialogue
1082 iButtons->DimCommand(EMVSCmdPlay,EFalse);
1083 iButtons->DimCommand(EMVSCmdPause,ETrue);
1084 iButtons->DimCommand(EMVSCmdSetRepeats,ETrue);
1085 iButtons->DrawNow();
1086 if(iButtons->IsCommandDimmed(EMVSCmdSetPlayBalance))
1088 iButtons->DimCommand(EMVSCmdSetPlayBalance,EFalse);
1089 iButtons->DrawNow();
1091 if(iMode==EVideoRecord && iOpeningForRecord)
1093 iButtons->DimCommand(EMVSCmdSetPlayBalance,ETrue);
1096 if(iMediaType && iSelectedPluginIdx !=-1)
1098 TRAP(error, iVideoFormatDialog->SetupDialogLD(this,iVideoUidArray[iSelectedPluginIdx],iSettingManager) );
1099 iOpeningForRecord=EFalse;
1104 if(error != KErrNone)
1109 else if ((error == KErrEof) && (aState == EAudioStopped))
1111 iButtons->DimCommand(EMVSCmdPlay, EFalse);
1112 iButtons->DimCommand(EMVSCmdRecord,ETrue);
1113 iButtons->DimCommand(EMVSCmdPause,EFalse);
1114 iButtons->DimCommand(EMVSCmdStop,EFalse);
1115 iButtons->DrawNow();
1122 //As the state changes the display windows(views) contents also needs to be changed
1123 TRAPD(err,UpdateDisplayL(iState));
1132 void CMVSAppUi::MvsResourceNotification(const TDesC8& /*aNotificationData*/)
1134 if(iMode == EVideoPlay)
1136 iVideoPlayAgent->Play();
1139 //Return the current mode of the App
1140 void CMVSAppUi::Reset()
1155 TTimeIntervalMicroSeconds CMVSAppUi::GetCropStart() const
1161 // Returns the cropping end-point in microseconds
1162 TTimeIntervalMicroSeconds CMVSAppUi::GetCropEnd() const
1168 void CMVSAppUi::SetVolumeL(TInt aVolume, TTimeIntervalMicroSeconds aRamp)
1170 //Initialise the volume settings based on the parameters
1171 iVolumeOrGain = aVolume;
1177 //And set the maximum volume based on the device's audio capabilities
1178 iMaxVolume = iAudioPlayAgent->MaxVolume();
1179 //Set the volume, and volume ramps.
1180 iAudioPlayAgent->SetVolume((iVolumeOrGain*iMaxVolume)/100, iRamp);
1186 //And set the maximum volume based on the device's audio capabilities
1187 iMaxVolume = iAudioRecordAgent->MaxGain();
1188 //Set the volume, and volume ramps.
1189 iAudioRecordAgent->SetGain((iVolumeOrGain*iMaxVolume)/100);
1195 iMaxVolume = iVideoPlayAgent->MaxVolume();
1196 iVideoPlayAgent->SetVolumeL((iVolumeOrGain*iMaxVolume)/100);
1202 iMaxVolume = iVideoRecordAgent->MaxGainL();
1203 iVideoRecordAgent->SetGainL((iVolumeOrGain*iMaxVolume)/100);
1218 void CMVSAppUi::SetRepeats(TInt aNoRepeats, TTimeIntervalMicroSeconds aDelay)
1220 //Initialise the repeat variables based on the parameters
1221 iNoRepeats = aNoRepeats;
1222 iRepeatDelay = aDelay;
1226 //Set the repeat settings based on these values
1227 iAudioPlayAgent->SetRepeats(iNoRepeats, iRepeatDelay);
1231 //Set the repeat settings based on these values
1232 iAudioRecordAgent->SetRepeats(iNoRepeats, iRepeatDelay);
1243 // Sets the balance, based on the argument. This value is translated to both
1244 // the playback AND recording balance for the device.
1246 void CMVSAppUi::SetBalanceL(TInt aBalance)
1248 iBalance = aBalance;
1252 iAudioPlayAgent->SetBalance(iBalance);
1256 iAudioRecordAgent->SetRecordBalance(iBalance);
1260 iVideoPlayAgent->SetBalanceL(iBalance);
1264 User::InfoPrint(KNotsupported);
1281 // Sets the audio priority, and the priority preference, based on the
1284 void CMVSAppUi::SetPriorityL(TInt aPriority,
1285 TMdaPriorityPreference aPriorityPreference)
1287 iPriority = aPriority;
1288 iPriorityPreference = aPriorityPreference;
1292 iAudioPlayAgent->SetPriority(iPriority,iPriorityPreference);
1296 iVideoPlayAgent->SetPriorityL(iPriority,iPriorityPreference);
1300 iAudioRecordAgent->SetPriority(iPriority,iPriorityPreference);
1304 iVideoRecordAgent->SetPriorityL(iPriority,iPriorityPreference);
1318 //SetPlayWindow(...)
1320 // Sets the play window, based on the
1322 // return value indicates if the operation is successful or not.
1323 TBool CMVSAppUi::SetPlayWindow(TTimeIntervalMicroSeconds aStart,
1324 TTimeIntervalMicroSeconds aEnd)
1328 TInt err = iAudioPlayAgent->SetPlayWindow(iStart,iEnd);
1346 // Sets the MetaData, based on the arguments
1348 void CMVSAppUi::SetMetaDataL(RPointerArray<CMMFMetaDataEntry> aMetaArray)
1353 iAudioRecordAgent->SetMetaDataL(aMetaArray);
1357 iVideoRecordAgent->SetMetaDataL(aMetaArray);
1370 // Sets the MetaData, based on the arguments
1372 void CMVSAppUi::GetMetaDataL(RPointerArray<CMMFMetaDataEntry>& aMetaArray)
1377 iAudioPlayAgent->GetMetaArrayL(aMetaArray);
1381 iVideoPlayAgent->GetMetaDataArrayL(aMetaArray);
1395 // Sets the crop window, and also whether to crop from begining
1396 // or end, based on the arguments passed
1398 void CMVSAppUi::SetCropL(TTimeIntervalMicroSeconds aCropStart,TBool aCropFromBeginning)
1400 iAudioRecordAgent->CropClipL(aCropStart,aCropFromBeginning);
1401 iCropStart=aCropStart;
1402 iCropFromBeginning=aCropFromBeginning;
1406 void CMVSAppUi::SetBitRateL(TUint aBitRate)
1408 TRAPD(err,iAudioRecordAgent->SetDestinationBitRateL(aBitRate));
1411 iLogger.Write(_L("SetDestinationBitRateL returned err"));
1415 iBitRate = aBitRate;
1420 void CMVSAppUi::SetSampleRateL(TUint aSampleRate)
1422 iAudioRecordAgent->SetDestinationSampleRateL(aSampleRate);
1423 iSampleRate = aSampleRate;
1426 void CMVSAppUi::SetChannelsL(TUint aNumberOfChannels)
1428 iAudioRecordAgent->SetDestinationNumberOfChannelsL(aNumberOfChannels);
1429 iChannels = aNumberOfChannels;
1432 void CMVSAppUi::SetCodecsL(TFourCC aDataType)
1434 iAudioRecordAgent->SetDestinationDataTypeL(aDataType);
1439 void CMVSAppUi::InitializeMetaArrayL()
1441 //Reset the meta array
1443 if(iMetaTitle != NULL)
1445 iMetaArray.AppendL(iMetaTitle);
1448 if(iMetaAuthor != NULL)
1450 iMetaArray.AppendL(iMetaAuthor);
1453 if(iMetaCopyright != NULL)
1455 iMetaArray.AppendL(iMetaCopyright);
1458 if(iMetaRevision != NULL)
1460 iMetaArray.AppendL(iMetaRevision);
1463 if(iMetaCategory != NULL)
1465 iMetaArray.AppendL(iMetaCategory);
1468 if(iMetaComments != NULL)
1470 iMetaArray.AppendL(iMetaComments);
1475 //DynInitMenuPaneL(...) *** This method can LEAVE ***
1477 // Initialises the availibility of controls on the menu bar depending on the
1478 // current state of the MVSApp. This allows the application to
1479 // constrain the availibility of controls which are inappropriate in certain
1483 void CMVSAppUi::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane)
1487 case (EAudioRecord):
1489 if(aResourceId == R_MVS_FILE_MENU)
1491 aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue);
1492 aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue);
1493 aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse);
1494 aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse);
1495 aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse);
1499 if(aResourceId == R_MVS_EDIT_MENU)
1501 aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,EFalse);
1502 aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue);
1503 aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue);
1507 if(aResourceId == R_MVS_SETTINGS_MENU)
1509 aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,EFalse);
1510 aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,ETrue);
1511 aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,EFalse);
1512 aMenuPane->SetItemDimmed(EMVSCmdClearLog,ETrue);
1513 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1514 aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, ETrue);
1515 aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, ETrue);
1516 #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1519 if(iState == EAudioRecording)
1522 if(aResourceId == R_MVS_CONTROLS_MENU)
1524 aMenuPane->SetItemDimmed(EMVSCmdPlay,ETrue);
1525 aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue);
1526 aMenuPane->SetItemDimmed(EMVSCmdStop,EFalse);
1527 aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue);
1528 aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue);
1529 aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue);
1534 if(aResourceId == R_MVS_CONTROLS_MENU)
1536 aMenuPane->SetItemDimmed(EMVSCmdPlay,ETrue);
1537 aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue);
1538 aMenuPane->SetItemDimmed(EMVSCmdStop,ETrue);
1539 aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue);
1540 aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue);
1541 aMenuPane->SetItemDimmed(EMVSCmdRecord,EFalse);
1547 case (EVideoRecord):
1549 if(aResourceId == R_MVS_FILE_MENU)
1551 aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue);
1552 aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue);
1553 aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse);
1554 aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse);
1555 aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse);
1559 if(aResourceId == R_MVS_EDIT_MENU)
1561 aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue);
1562 aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue);
1563 aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue);
1567 if(aResourceId == R_MVS_SETTINGS_MENU)
1569 aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,ETrue);
1570 aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,ETrue);
1571 aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,EFalse);
1572 aMenuPane->SetItemDimmed(EMVSCmdClearLog,ETrue);
1573 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1574 aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, ETrue);
1575 aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, ETrue);
1576 #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1579 if(iState == EVideoRecording)
1582 if(aResourceId == R_MVS_FILE_MENU)
1584 aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue);
1585 aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue);
1586 aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse);
1587 aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse);
1588 aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse);
1592 if(aResourceId == R_MVS_CONTROLS_MENU)
1594 aMenuPane->SetItemDimmed(EMVSCmdPlay,ETrue);
1595 aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue);
1596 aMenuPane->SetItemDimmed(EMVSCmdStop,EFalse);
1597 aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue);
1598 aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue);
1599 aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue);
1604 if(aResourceId == R_MVS_CONTROLS_MENU)
1606 aMenuPane->SetItemDimmed(EMVSCmdPlay,ETrue);
1607 aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue);
1608 aMenuPane->SetItemDimmed(EMVSCmdStop,ETrue);
1609 aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue);
1610 aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue);
1611 aMenuPane->SetItemDimmed(EMVSCmdRecord,EFalse);
1614 if(iState == EVideoOpened)
1617 if(aResourceId == R_MVS_FILE_MENU)
1619 aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue);
1620 aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue);
1621 aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse);
1622 aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse);
1623 aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse);
1626 if(iState == EVideoStopped)
1629 if(aResourceId == R_MVS_FILE_MENU)
1631 aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue);
1632 aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue);
1633 aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse);
1634 aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse);
1635 aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse);
1642 if(iState == EAudioOpened)
1645 if(aResourceId == R_MVS_FILE_MENU)
1647 aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue);
1648 aMenuPane->SetItemDimmed(EMVSCmdOpen,EFalse);
1649 aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse);
1650 aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse);
1651 aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse);
1655 if(aResourceId == R_MVS_EDIT_MENU)
1657 aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue);
1658 aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,EFalse);
1659 aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,EFalse);
1663 if(aResourceId == R_MVS_SETTINGS_MENU)
1665 aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,EFalse);
1666 aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,ETrue);
1667 //aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue);
1668 aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse);
1669 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1670 aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, ETrue);
1671 aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, ETrue);
1672 #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1676 if(aResourceId == R_MVS_CONTROLS_MENU)
1678 aMenuPane->SetItemDimmed(EMVSCmdPlay,EFalse);
1679 aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue);
1680 aMenuPane->SetItemDimmed(EMVSCmdStop,ETrue);
1681 aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue);
1682 aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue);
1683 aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue);
1687 else if(iState == EAudioPlaying)
1690 if(aResourceId == R_MVS_FILE_MENU)
1692 aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue);
1693 aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue);
1694 aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse);
1695 aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse);
1696 aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse);
1700 if(aResourceId == R_MVS_EDIT_MENU)
1702 aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue);
1703 aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue);
1704 aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue);
1708 if(aResourceId == R_MVS_SETTINGS_MENU)
1710 aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,ETrue);
1711 aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,ETrue);
1712 aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue);
1713 aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse);
1714 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1715 aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, ETrue);
1716 aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, ETrue);
1717 #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1721 if(aResourceId == R_MVS_CONTROLS_MENU)
1723 aMenuPane->SetItemDimmed(EMVSCmdPlay,ETrue);
1724 aMenuPane->SetItemDimmed(EMVSCmdPause,EFalse);
1725 aMenuPane->SetItemDimmed(EMVSCmdStop,EFalse);
1726 aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue);
1727 aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue);
1728 aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue);
1732 else if(iState == EAudioPaused)
1735 if(aResourceId == R_MVS_FILE_MENU)
1737 aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue);
1738 aMenuPane->SetItemDimmed(EMVSCmdOpen,EFalse);
1739 aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse);
1740 aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse);
1741 aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse);
1745 if(aResourceId == R_MVS_EDIT_MENU)
1747 aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue);
1748 aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,EFalse);
1749 aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,EFalse);
1753 if(aResourceId == R_MVS_SETTINGS_MENU)
1755 aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,EFalse);
1756 aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,ETrue);
1757 aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue);
1758 aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse);
1759 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1760 aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, ETrue);
1761 aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, ETrue);
1762 #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1766 if(aResourceId == R_MVS_CONTROLS_MENU)
1768 aMenuPane->SetItemDimmed(EMVSCmdPlay,EFalse);
1769 aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue);
1770 aMenuPane->SetItemDimmed(EMVSCmdStop,EFalse);
1771 aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue);
1772 aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue);
1773 aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue);
1776 else if(iState == EAudioStopped)
1779 if(aResourceId == R_MVS_FILE_MENU)
1781 aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue);
1782 aMenuPane->SetItemDimmed(EMVSCmdOpen,EFalse);
1783 aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse);
1784 aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse);
1785 aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse);
1789 if(aResourceId == R_MVS_EDIT_MENU)
1791 aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue);
1792 aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,EFalse);
1793 aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,EFalse);
1797 if(aResourceId == R_MVS_SETTINGS_MENU)
1799 aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,EFalse);
1800 aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,ETrue);
1801 aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue);
1802 aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse);
1803 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1804 aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, ETrue);
1805 aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, ETrue);
1806 #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1810 if(aResourceId == R_MVS_CONTROLS_MENU)
1812 aMenuPane->SetItemDimmed(EMVSCmdPlay,EFalse);
1813 aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue);
1814 aMenuPane->SetItemDimmed(EMVSCmdStop,ETrue);
1815 aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue);
1816 aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue);
1817 aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue);
1823 if(iState == EVideoOpened)
1826 if(aResourceId == R_MVS_FILE_MENU)
1828 aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue);
1829 aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue);
1830 aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse);
1831 aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse);
1832 aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse);
1836 if(aResourceId == R_MVS_EDIT_MENU)
1838 aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue);
1839 aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue);
1840 aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue);
1844 if(aResourceId == R_MVS_SETTINGS_MENU)
1846 aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,ETrue);
1847 aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,EFalse);
1848 aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue);
1849 aMenuPane->SetItemDimmed(EMVSCmdMultiScreen,EFalse);
1850 aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse);
1851 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1852 TBool subAvail = iVideoPlayAgent->SubtitlesAvailable();
1853 aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, !subAvail);
1854 aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, !subAvail);
1855 #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1859 if(aResourceId == R_MVS_CONTROLS_MENU)
1861 aMenuPane->SetItemDimmed(EMVSCmdPlay,EFalse);
1862 aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue);
1863 aMenuPane->SetItemDimmed(EMVSCmdStop,ETrue);
1864 aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue);
1865 aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue);
1866 aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue);
1870 else if(iState == EVideoPlaying)
1873 if(aResourceId == R_MVS_FILE_MENU)
1875 aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue);
1876 aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue);
1877 aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse);
1878 aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,ETrue);
1879 aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse);
1883 if(aResourceId == R_MVS_EDIT_MENU)
1885 aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue);
1886 aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue);
1887 aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue);
1891 if(aResourceId == R_MVS_SETTINGS_MENU)
1893 aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,ETrue);
1894 aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,EFalse);
1895 aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue);
1896 aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse);
1897 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1898 TBool subAvail = iVideoPlayAgent->SubtitlesAvailable();
1899 aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, !subAvail);
1900 aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, !subAvail);
1901 #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1905 if(aResourceId == R_MVS_CONTROLS_MENU)
1907 aMenuPane->SetItemDimmed(EMVSCmdPlay,ETrue);
1908 aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue);
1909 aMenuPane->SetItemDimmed(EMVSCmdStop,EFalse);
1910 aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue);
1911 aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue);
1912 aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue);
1915 else if(iState == EVideoPaused)
1918 if(aResourceId == R_MVS_FILE_MENU)
1920 aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue);
1921 aMenuPane->SetItemDimmed(EMVSCmdOpen,EFalse);
1922 aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse);
1923 aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse);
1924 aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse);
1928 if(aResourceId == R_MVS_EDIT_MENU)
1930 aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue);
1931 aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue);
1932 aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue);
1936 if(aResourceId == R_MVS_SETTINGS_MENU)
1938 aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,ETrue);
1939 aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,EFalse);
1940 aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue);
1941 aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse);
1942 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1943 TBool subAvail = iVideoPlayAgent->SubtitlesAvailable();
1944 aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, !subAvail);
1945 aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, !subAvail);
1946 #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1950 if(aResourceId == R_MVS_CONTROLS_MENU)
1952 aMenuPane->SetItemDimmed(EMVSCmdPlay,EFalse);
1953 aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue);
1954 aMenuPane->SetItemDimmed(EMVSCmdStop,EFalse);
1955 aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue);
1956 aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue);
1957 aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue);
1960 else if(iState == EVideoStopped)
1963 if(aResourceId == R_MVS_FILE_MENU)
1965 aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue);
1966 aMenuPane->SetItemDimmed(EMVSCmdOpen,EFalse);
1967 aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse);
1968 aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse);
1969 aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse);
1973 if(aResourceId == R_MVS_EDIT_MENU)
1975 aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue);
1976 aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue);
1977 aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue);
1981 if(aResourceId == R_MVS_SETTINGS_MENU)
1983 aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,ETrue);
1984 aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,EFalse);
1985 aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue);
1986 aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse);
1987 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1988 TBool subAvail = iVideoPlayAgent->SubtitlesAvailable();
1989 aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, !subAvail);
1990 aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, !subAvail);
1991 #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
1995 if(aResourceId == R_MVS_CONTROLS_MENU)
1997 aMenuPane->SetItemDimmed(EMVSCmdPlay,EFalse);
1998 aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue);
1999 aMenuPane->SetItemDimmed(EMVSCmdStop,ETrue);
2000 aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue);
2001 aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue);
2002 aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue);
2009 if(aResourceId == R_MVS_FILE_MENU)
2011 aMenuPane->SetItemDimmed(EMVSCmdNew,EFalse);
2012 aMenuPane->SetItemDimmed(EMVSCmdOpen,EFalse);
2013 aMenuPane->SetItemDimmed(EMVSCmdClose,ETrue);
2014 aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse);
2015 aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse);
2019 if(aResourceId == R_MVS_EDIT_MENU)
2021 aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue);
2022 aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue);
2023 aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue);
2027 if(aResourceId == R_MVS_SETTINGS_MENU)
2029 aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,ETrue);
2030 aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,ETrue);
2031 aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue);
2032 aMenuPane->SetItemDimmed(EMVSCmdMultiScreen,EFalse);
2033 aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse);
2034 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
2035 aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, ETrue);
2036 aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, ETrue);
2037 #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
2041 if(aResourceId == R_MVS_CONTROLS_MENU)
2043 aMenuPane->SetItemDimmed(EMVSCmdPlay,ETrue);
2044 aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue);
2045 aMenuPane->SetItemDimmed(EMVSCmdStop,ETrue);
2046 aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue);
2047 aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue);
2048 aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue);
2059 void CMVSAppUi::InternalizeL(RReadStream& aStream)
2061 iVolumeOrGain = aStream.ReadInt32L();
2062 iBalance = aStream.ReadInt32L();
2063 iNoRepeats = aStream.ReadInt32L();
2064 iRepeatDelay = aStream.ReadReal64L();
2067 void CMVSAppUi::ExternalizeL(RWriteStream& aStream)
2069 aStream.WriteInt32L(iVolumeOrGain);
2070 aStream.WriteInt32L(iBalance);
2071 aStream.WriteInt32L(iNoRepeats);
2072 aStream.WriteReal64L(iRepeatDelay.Int64());
2075 //Returns the selected controller plugin from the UI
2076 void CMVSAppUi::SelectedPluginIdx(TInt aIdx)
2078 iSelectedPluginIdx = aIdx;
2081 //Returns the selected Extension from the UI
2082 void CMVSAppUi::SelectedExtension(TDesC16& aDes)
2084 iControllerExt = aDes;
2088 TInt CMVSAppUi::GetExtensionListL(CDesCArrayFlat* aExtArray,
2091 return iPluginInfo->GetExtensionListL(aMediaType,aExtArray);
2095 TInt CMVSAppUi::GetPluginListL(TInt8 aExtIdx,CDesCArrayFlat* aExtArray,CDesCArrayFlat* aPluginArray,TBool aMediaType)
2097 iControllerExt.Copy(aExtArray->operator[](aExtIdx));
2098 iAudioUidArray.Reset();
2099 iAudioPlayUidArray.Reset();
2100 iVideoUidArray.Reset();
2103 return iPluginInfo->GetAudioPluginListL(aPluginArray,iAudioUidArray,iAudioPlayUidArray,&iControllerExt);
2107 return iPluginInfo->GetVideoPluginListL(aPluginArray,iVideoUidArray,&iControllerExt);
2111 TInt CMVSAppUi::GetSystemInfoL(CDesCArrayFlat* aPluginArray)
2113 return iPluginInfo->GetPluginListL(aPluginArray,iUidArray);
2116 //Returnd the selected media type, ie Audio or Video
2117 void CMVSAppUi::SelectedMedia(TBool aMediaType)
2119 iMediaType = aMediaType;
2123 void CMVSAppUi::GetSupportedBitRatesL(RArray <TUint>& aBitRateArray)
2125 iAudioRecordAgent->GetSupportedBitRatesArrayL(aBitRateArray);
2128 void CMVSAppUi::GetSupportedSampleRatesArrayL(RArray<TUint>& aSampleRatesArray)
2130 iAudioRecordAgent->GetSupportedSampleRatesArrayL(aSampleRatesArray);
2133 void CMVSAppUi::GetSupportedNoChannelsArrayL(RArray<TUint>& aNoChannelsArray)
2135 iAudioRecordAgent->GetSupportedNoChannelsArrayL(aNoChannelsArray);
2138 void CMVSAppUi::GetSupportedCodecsArrayL(RArray<TFourCC>& aCodecsArray)
2140 iAudioRecordAgent->GetSupportedCodecsArrayL(aCodecsArray);
2143 void CMVSAppUi::GetSupportedFrameRatesL(RArray <TReal32>& aFrameRateArray)
2145 iVideoRecordAgent->GetSupportedFrameRatesArrayL(aFrameRateArray);
2148 void CMVSAppUi::GetSupportedFrameSizeArrayL(RArray <TSize>& aFrameSizeArray)
2150 iVideoRecordAgent->GetSupportedFrameSizesArrayL(aFrameSizeArray);
2153 void CMVSAppUi::SetVideoFrameRateL(TReal32 aFrameRate)
2155 TRAPD(err,iVideoRecordAgent->SetVideoFrameRateL(aFrameRate));
2158 iLogger.Write(_L("SetVideoFrameRateL returned err"));
2162 iVideoFrameRate = aFrameRate;
2166 void CMVSAppUi::SetVideoFrameSizeL(TSize aFrameSize)
2168 TRAPD(err,iVideoRecordAgent->SetVideoFrameSizeL(aFrameSize));
2171 iLogger.Write(_L("SetVideoFrameRateL returned err"));
2175 iFrameSize = aFrameSize;
2179 void CMVSAppUi::SetAudioEnabledL(TBool aAudioEnabled)
2181 iAudioEnabled = aAudioEnabled;
2182 iVideoRecordAgent->SetAudioEnabledL(iAudioEnabled);
2183 iLogger.Write(_L("Audio Enabled for Video"));
2186 void CMVSAppUi::GetSupportedVideoTypesL(CDesC8ArrayFlat& aMimeArray)
2188 iVideoRecordAgent->GetSupportedVideoTypesL(aMimeArray);
2191 void CMVSAppUi::SetVideoTypeL(const TDesC8 &aType)
2193 iVideoRecordAgent->SetVideoTypeL(aType);
2196 void CMVSAppUi::WriteAudioDataL(CMVSConfigAudioFormatDialog* aAudioFormatDlg,
2199 iSettingManager->WriteAudioDataL(aAudioFormatDlg,aUid);
2202 void CMVSAppUi::WriteVideoDataL(CMVSConfigVideoFormatDialog* aVideoFormatDlg,
2205 iSettingManager->WriteVideoDataL(aVideoFormatDlg,aUid);
2208 TReal32 CMVSAppUi::GetVideoFrameRateL()
2210 if(iMode == EVideoRecord)
2212 iVideoFrameRate=iVideoRecordAgent->VideoFrameRateL();
2214 else if(iMode == EVideoPlay)
2216 iVideoFrameRate=iVideoPlayAgent->VideoFrameRateL();
2218 return iVideoFrameRate;
2221 TVideoRotation CMVSAppUi::GetRotationL()
2223 iVideoRotation = iVideoPlayAgent->RotationL();
2224 return iVideoRotation;
2227 void CMVSAppUi::SetRotationL(TVideoRotation aRotation)
2229 TRAPD(err, iVideoPlayAgent->SetRotationL(aRotation));
2230 if (err == KErrNotSupported)
2232 User::InfoPrint(KNotsupported);
2233 iLogger.Write(_L("Error,This feature not supported by the controller"));
2235 else if (err == KErrNotReady)
2237 iLogger.Write(_L("Error, Videoplayer not yet created in the agent"));
2241 iRotation = aRotation;
2245 void CMVSAppUi::GetScaleFactorL(TReal32& aScaleWidth, TReal32& aScaleHeight, TBool& aAntiAliasFiltering)
2247 TRAPD(err, iVideoPlayAgent->GetScaleFactorL(aScaleWidth, aScaleHeight, aAntiAliasFiltering));
2248 if (err == KErrNotSupported)
2250 User::InfoPrint(KNotsupported);
2252 else if (err == KErrNotReady)
2254 iLogger.Write(_L("Error, Videoplayer not yet created in the agent"));
2258 void CMVSAppUi::SetScaleFactorL(TReal32 aScaleWidth,TReal32 aScaleHeight,TBool aAntiAliasFiltering)
2260 TRAPD(err, iVideoPlayAgent->SetScaleFactorL(aScaleWidth,aScaleHeight,aAntiAliasFiltering));
2261 if (err == KErrNotSupported)
2263 User::InfoPrint(KNotsupported);
2265 else if (err == KErrNotReady)
2267 iLogger.Write(_L("Error, Videoplayer not yet created in the agent"));
2271 void CMVSAppUi::SetCropRegionL(const TRect& aCropRegion)
2273 TRAPD(err, iVideoPlayAgent->SetCropRegionL(aCropRegion));
2274 if (err == KErrNotSupported)
2276 User::InfoPrint(KNotsupported);
2278 else if (err == KErrNotReady)
2280 iLogger.Write(_L("Error, Videoplayer not yet created in the agent"));
2284 void CMVSAppUi::GetCropRegionL(TRect& aCropRegion)
2286 TRAPD(err, iVideoPlayAgent->GetCropRegionL(aCropRegion));
2287 if (err == KErrNotSupported)
2289 User::InfoPrint(KNotsupported);
2291 else if (err == KErrNotReady)
2293 iLogger.Write(_L("Error, Videoplayer not yet created in the agent"));
2297 void CMVSAppUi::SetVideoExtent(const TRect& aVideoExtent)
2299 TRAPD(err, iVideoPlayAgent->SetVideoExtentL(aVideoExtent));
2300 if (err != KErrNone)
2303 text.AppendFormat(_L("SetVideoExtentL - %d"), err);
2304 User::InfoPrint(text);
2307 iVideoExtentSet = ETrue;
2308 iVideoExtent = aVideoExtent;
2311 void CMVSAppUi::SetWindowClippingRect(const TRect& aWindowClipRect)
2313 TRAPD(err, iVideoPlayAgent->SetWindowClipRectL(aWindowClipRect));
2314 if (err != KErrNone)
2317 text.AppendFormat(_L("SetWindowClippingRectL - %d"), err);
2318 User::InfoPrint(text);
2322 iWindowClipRectSet = ETrue;
2323 iWindowClipRect = aWindowClipRect;
2326 void CMVSAppUi::SetOverlayTextL(const TDesC& aOverlayText)
2328 iOverlayText.Close();
2329 iOverlayText.CreateL(aOverlayText);
2331 iAppView->iMainWindowControl->SetOverlayTextL(aOverlayText);
2334 const TDesC& CMVSAppUi::OverlayText() const
2336 return iOverlayText;
2339 void CMVSAppUi::SetAutoScaleL(TAutoScaleType aScaleType, TInt aHorizPos, TInt aVertPos)
2341 iVideoPlayAgent->SetAutoScaleL(aScaleType, aHorizPos, aVertPos);
2342 iAutoScaleType = aScaleType;
2343 iAutoScaleHorizPos = aHorizPos;
2344 iAutoScaleVertPos = aVertPos;
2347 void CMVSAppUi::GetAutoScale(TAutoScaleType& aScaleType, TInt& aHorizPos, TInt& aVertPos)
2349 aScaleType = iAutoScaleType;
2350 aHorizPos = iAutoScaleHorizPos;
2351 aVertPos = iAutoScaleVertPos;
2354 void CMVSAppUi::SetOutputScreen(TInt aScreenNumber)
2356 iScreenNumber = aScreenNumber;
2359 void CMVSAppUi::RegisterForNotification(TBool aRegistered)
2363 iAlreadyRegistered = ETrue;
2365 iRegistered = aRegistered;
2366 if(iMode == EVideoPlay)
2368 if(iRegistered && iAlreadyRegistered == EFalse)
2370 TInt regerr = iVideoPlayAgent->RegisterForNotification();
2371 if(regerr == KErrNone)
2373 User::InfoPrint(KRegisterSuccess);
2377 User::InfoPrint(KRegisterFailure);
2380 else if(iAlreadyRegistered && iRegistered == EFalse)
2382 TInt cancelerr = iVideoPlayAgent->CancelNotification();
2383 if(cancelerr == KErrNone)
2385 iAlreadyRegistered = EFalse;
2386 User::InfoPrint(KRegisterCancelation);
2390 User::InfoPrint(KCancelationFailure);
2394 else if(iMode == EAudioPlay && iRegistered)
2399 void CMVSAppUi::SetPip(TBool aPip)
2404 void CMVSAppUi::SetCrp(TBool aCrp)
2410 Used to populate all the view windows,based
2411 on the arguments passed this includes updating the time bar,the file name
2412 and the state of the app.
2414 void CMVSAppUi::UpdateDisplayL(TMVSState aState)
2416 TBuf<KTimeValueLength> disTime;
2419 disTime.Append(iDisplayTime);
2420 disFName.Append(iDisplayFName);
2421 disState.Append(iDisplayState);
2423 iDisplayFName.Zero();
2424 iDisplayState.Zero();
2425 iDisplayTime.Zero();
2430 iCoeEnv->ReadResourceL(iDisplayFName, R_NOFILE);
2431 iCoeEnv->ReadResourceL(iDisplayState, R_IDLE);
2432 iCoeEnv->ReadResourceL(iDisplayTime, R_ZEROTIME);
2436 if(iMode == EAudioPlay || iMode == EVideoPlay)
2438 iDisplayFName.Append(iSrcFName);
2440 if(iMode == EAudioRecord || iMode == EVideoRecord)
2442 iDisplayFName.Append(iRecFName);
2444 iCoeEnv->ReadResourceL(iDisplayState, R_OPEN);
2447 case(EAudioStopped):
2448 case(EVideoStopped):
2449 if(iMode == EAudioPlay || iMode == EVideoPlay)
2451 iDisplayFName.Append(iSrcFName);
2453 if(iMode == EAudioRecord || iMode == EVideoRecord)
2455 iDisplayFName.Append(iRecFName);
2457 iCoeEnv->ReadResourceL(iDisplayState, R_READY);
2460 case(EAudioPlaying):
2461 case(EVideoPlaying):
2462 if(iMode == EAudioPlay || iMode == EVideoPlay)
2464 iDisplayFName.Append(iSrcFName);
2466 if(iMode == EAudioRecord || iMode == EVideoRecord)
2468 iDisplayFName.Append(iRecFName);
2470 iCoeEnv->ReadResourceL(iDisplayState, R_PLAYING);
2473 case(EAudioRecording):
2474 iDisplayFName.Append(iRecFName);
2475 iCoeEnv->ReadResourceL(iDisplayState, R_RECORDING);
2476 ConvertTimeToDes(iAudioRecordAgent->Position(), iDisplayTime);
2479 case(EVideoRecording):
2480 iDisplayFName.Append(iRecFName);
2481 iCoeEnv->ReadResourceL(iDisplayState, R_RECORDING);
2482 ConvertTimeToDes(iVideoRecordAgent->DurationL(), iDisplayTime);
2487 if(iMode == EAudioPlay || iMode == EVideoPlay)
2489 iDisplayFName.Append(iSrcFName);
2491 if(iMode == EAudioRecord || iMode == EVideoRecord)
2493 iDisplayFName.Append(iRecFName);
2495 iCoeEnv->ReadResourceL(iDisplayState, R_PAUSED);
2499 iCoeEnv->ReadResourceL(iDisplayFName, R_NOFILE);
2500 iCoeEnv->ReadResourceL(iDisplayState, R_IDLE);
2501 iCoeEnv->ReadResourceL(iDisplayTime, R_ZEROTIME);
2505 if (iMode == EVideoPlay)
2507 if (aState != EVideoPlaying && iVideoPlayAgent->SupportVideoPlayerUtility2() && iDisplayAdded)
2509 iVideoCtl->Pip().Clear();
2510 PrepareVideoControlsL();
2514 PopulateInfoWindowDataL(aState);
2516 if(disFName.CompareF(iDisplayFName) != 0)
2518 iAppView->iStatusWindowFNameControl->SetTextL(iDisplayFName);
2519 iAppView->iStatusWindowFNameControl->DrawNow();
2521 if(disTime.CompareF(iDisplayTime) != 0)
2523 iAppView->iStatusWindowTimeControl->SetTextL(iDisplayTime);
2524 iAppView->iStatusWindowTimeControl->DrawNow();
2526 if(disState.CompareF(iDisplayState) != 0)
2528 iAppView->iStatusWindowStateControl->SetTextL(iDisplayState);
2529 iAppView->iStatusWindowStateControl->DrawNow();
2532 TBuf<256> dollarDes;
2533 BuildDollarDesFromArrayL(dollarDes);
2534 if(iDollarDes.CompareF(dollarDes) != 0)
2537 iDollarDes.Append(dollarDes);
2538 iAppView->iInfoWindowControl->SetTextL(dollarDes);
2539 iAppView->iInfoWindowControl->DrawNow();
2546 //PopulateMainWindowData(...) ***TRAPPED ERRORS***
2548 // Adds data to the array used to hold playback or recording data
2549 // such as the volume, cropping window and balance. This is then used to
2550 // build a $$-separated descriptor which is sent to the view to be
2551 // displayed as lines of text within the main window.
2553 void CMVSAppUi::PopulateInfoWindowDataL(TMVSState aState)
2558 iCoeEnv->ReadResourceL(welcome, R_WELCOME);
2561 iCoeEnv->ReadResourceL(format, R_FORMAT);
2564 iCoeEnv->ReadResourceL(left, R_LEFT);
2567 iCoeEnv->ReadResourceL(right, R_RIGHT);
2570 iCoeEnv->ReadResourceL(close, R_CLOSE);
2573 iCoeEnv->ReadResourceL(noCrop, R_NOCROP);
2575 TBuf<KLabelCaptionMaxLength> center;
2576 iCoeEnv->ReadResourceL(center, R_CENTER);
2578 TBuf<KLabelCaptionMaxLength> volume;
2579 iCoeEnv->ReadResourceL(volume, R_VOLUME);
2581 TBuf<KLabelCaptionMaxLength> ramp;
2582 iCoeEnv->ReadResourceL(ramp, R_RAMP);
2584 TBuf<KLabelCaptionMaxLength> balanceDes;
2585 iCoeEnv->ReadResourceL(balanceDes, R_BALANCE);
2587 TBuf<KLabelCaptionMaxLength> cropStart;
2588 iCoeEnv->ReadResourceL(cropStart, R_CROPSTART);
2590 TBuf<KLabelCaptionMaxLength> cropEnd;
2591 iCoeEnv->ReadResourceL(cropEnd, R_CROPEND);
2593 TBuf<KLabelCaptionMaxLength> noRepeats;
2594 iCoeEnv->ReadResourceL(noRepeats, R_NOREPEATS);
2596 TBuf<32> audioPriority;
2597 iCoeEnv->ReadResourceL(audioPriority, R_AUDIOPRIORITY);
2599 TBuf<KLabelCaptionMaxLength> gain;
2600 iCoeEnv->ReadResourceL(gain, R_GAIN);
2602 TBuf<KLabelCaptionMaxLength> clipLength;
2603 iCoeEnv->ReadResourceL(clipLength, R_CLIPLENGTH);
2605 TBuf<KLabelCaptionMaxLength> bitRate;
2606 iCoeEnv->ReadResourceL(bitRate, R_BITRATE);
2608 TBuf<KLabelCaptionMaxLength> sampleRate;
2609 iCoeEnv->ReadResourceL(sampleRate, R_SAMPLERATE);
2611 TBuf<KLabelCaptionMaxLength> channels;
2612 iCoeEnv->ReadResourceL(channels,R_CHANNELS);
2614 TBuf<KLabelCaptionMaxLength> AudioEnabled;
2615 iCoeEnv->ReadResourceL(AudioEnabled, R_AUDIOENABLED);
2617 TBuf<KLabelCaptionMaxLength> AudioNotEnabled;
2618 iCoeEnv->ReadResourceL(AudioNotEnabled, R_AUDIONOTENABLED);
2620 _LIT(KPercent, "%");
2622 TBuf<KTimeValueLength> clipLengthDes;
2624 //If the window text has anything in it, clear it out
2625 if(iMainWindowText.Count() > 0)
2627 iMainWindowText.Reset();
2629 TTimeIntervalMicroSeconds duration;
2630 TInt64 clipLengthVal =0;
2631 TUint bitrateValue = 0;
2632 TInt frameHeight = 0;
2633 TInt frameWidth = 0;
2635 //Populate the array based on the current state
2638 //Idle, the main window is all but empty
2640 iMainWindowText.AppendL(welcome);
2641 if(iButtons->IsCommandDimmed(EMVSCmdPause))
2643 iButtons->DimCommand(EMVSCmdPause,EFalse);
2644 iButtons->DrawNow();
2646 if(iButtons->IsCommandDimmed(EMVSCmdPlay))
2648 iButtons->DimCommand(EMVSCmdPlay,EFalse);
2649 iButtons->DrawNow();
2651 if(iButtons->IsCommandDimmed(EMVSCmdStop))
2653 iButtons->DimCommand(EMVSCmdStop,EFalse);
2654 iButtons->DrawNow();
2658 //Recording: show the gain, balance and crop window.
2659 case(EAudioRecording):
2660 if(iButtons->IsCommandDimmed(EMVSCmdStop))
2662 iButtons->DimCommand(EMVSCmdStop,EFalse);
2663 iButtons->DrawNow();
2665 infoBuf.Append(KAudioRecording);
2666 iMainWindowText.AppendL(infoBuf);
2668 infoBuf.Append(gain);
2669 infoBuf.AppendNum(iVolumeOrGain);
2670 infoBuf.Append(KPercent);
2671 iMainWindowText.AppendL(infoBuf);
2673 infoBuf.Append(balanceDes);
2674 //Convert the balance to a number between 0 and 100
2675 iAudioRecordAgent->GetRecordBalance(iBalance);
2676 balance = (iBalance/2) + 50;
2677 //Translate this figure into 'Left', 'Right' or 'Center'
2680 infoBuf.Append(left);
2681 infoBuf.AppendNum(balance);
2682 infoBuf.Append(close);
2684 else if(balance == 50)
2686 infoBuf.Append(center);
2690 infoBuf.Append(right);
2691 infoBuf.AppendNum(balance);
2692 infoBuf.Append(close);
2694 iMainWindowText.AppendL(infoBuf);
2696 infoBuf.Append(bitRate);
2699 infoBuf.Append(KNotSupported);
2703 infoBuf.AppendNum(iBitRate);
2705 iMainWindowText.AppendL(infoBuf);
2707 infoBuf.Append(sampleRate);
2708 infoBuf.AppendNum(iSampleRate);
2709 iMainWindowText.AppendL(infoBuf);
2713 infoBuf.Append(channels);
2714 infoBuf.Append(KMono);
2715 iMainWindowText.AppendL(infoBuf);
2718 else if(iChannels == 2)
2720 infoBuf.Append(channels);
2721 infoBuf.Append(KStereo);
2722 iMainWindowText.AppendL(infoBuf);
2727 case(EVideoRecording):
2728 if(iButtons->IsCommandDimmed(EMVSCmdStop))
2730 iButtons->DimCommand(EMVSCmdStop,EFalse);
2731 iButtons->DrawNow();
2733 infoBuf.Append(KVideoRecording);
2734 iMainWindowText.AppendL(infoBuf);
2736 if(iVideoRecordAgent->AudioEnabledL())
2739 infoBuf.Append(AudioEnabled);
2740 iMainWindowText.AppendL(infoBuf);
2742 infoBuf.Append(gain);
2743 infoBuf.AppendNum(iVolumeOrGain);
2744 infoBuf.Append(KPercent);
2745 iMainWindowText.AppendL(infoBuf);
2751 infoBuf.Append(AudioNotEnabled);
2752 iMainWindowText.AppendL(infoBuf);
2755 infoBuf.Append(KFrameSize);
2756 frameHeight = iFrameSize.iHeight;
2757 frameWidth = iFrameSize.iWidth;
2758 infoBuf.AppendNum(frameWidth);
2759 infoBuf.Append(KComma);
2760 infoBuf.AppendNum(frameHeight);
2761 iMainWindowText.AppendL(infoBuf);
2763 infoBuf.Append(KFrameRate);
2764 frameRate = TInt(iVideoFrameRate);
2765 infoBuf.AppendNum(frameRate);
2766 iMainWindowText.AppendL(infoBuf);
2770 //The default state displays all playback information such as
2771 //Volume, balance, cropping points, audio priority & the number of
2774 if(iMode == EAudioPlay)
2776 infoBuf.Append(volume);
2778 if(iMode == EAudioRecord)
2780 infoBuf.Append(KGain);
2782 infoBuf.AppendNum(iVolumeOrGain);
2783 infoBuf.Append(KPercent);
2784 iMainWindowText.AppendL(infoBuf);
2786 infoBuf.Append(balanceDes);
2787 balance = (iBalance/2) + 50;
2790 infoBuf.Append(left);
2791 infoBuf.AppendNum(balance);
2792 infoBuf.Append(close);
2794 else if(balance == 50)
2796 infoBuf.Append(center);
2800 infoBuf.Append(right);
2801 infoBuf.AppendNum(balance);
2802 infoBuf.Append(close);
2804 iMainWindowText.AppendL(infoBuf);
2806 infoBuf.Append(noRepeats);
2807 infoBuf.AppendNum(iNoRepeats);
2808 iMainWindowText.AppendL(infoBuf);
2811 infoBuf.Append(audioPriority);
2812 infoBuf.AppendNum(iPriority);
2813 iMainWindowText.AppendL(infoBuf);
2815 infoBuf.Append(KDuration);
2816 if(iMode == EAudioPlay)
2818 duration = iAudioPlayAgent->Duration();
2820 else if(iMode == EAudioRecord)
2822 duration = iAudioRecordAgent->Duration();
2825 iButtons->DimCommand(EMVSCmdPlay,EFalse);
2829 iButtons->DimCommand(EMVSCmdPlay,ETrue);
2831 iButtons->DimCommand(EMVSCmdPause,ETrue);
2832 iButtons->DimCommand(EMVSCmdStop,ETrue);
2833 iButtons->DrawNow();
2835 clipLengthVal = duration.Int64();
2836 infoBuf.AppendNum(clipLengthVal);
2837 infoBuf.Append(KMs);
2838 iMainWindowText.AppendL(infoBuf);
2840 infoBuf.Append(KBitRate);
2841 if(iMode == EAudioPlay)
2843 iAudioPlayAgent->GetBitRate(bitrateValue);
2844 infoBuf.AppendNum(bitrateValue);
2846 else if(iMode == EAudioRecord)
2850 infoBuf.Append(KNotSupported);
2854 infoBuf.AppendNum(iBitRate);
2857 iMainWindowText.AppendL(infoBuf);
2861 case(EAudioStopped):
2862 infoBuf.Append(KStopped);
2863 iMainWindowText.AppendL(infoBuf);
2865 infoBuf.Append(volume);
2866 infoBuf.AppendNum(iVolumeOrGain);
2867 infoBuf.Append(KPercent);
2868 iMainWindowText.AppendL(infoBuf);
2870 infoBuf.Append(balanceDes);
2871 balance = (iBalance/2) + 50;
2874 infoBuf.Append(left);
2875 infoBuf.AppendNum(balance);
2876 infoBuf.Append(close);
2878 else if(balance == 50)
2880 infoBuf.Append(center);
2884 infoBuf.Append(right);
2885 infoBuf.AppendNum(balance);
2886 infoBuf.Append(close);
2888 iMainWindowText.AppendL(infoBuf);
2890 infoBuf.Append(noRepeats);
2891 infoBuf.AppendNum(iNoRepeats);
2892 iMainWindowText.AppendL(infoBuf);
2895 infoBuf.Append(audioPriority);
2896 infoBuf.AppendNum(iPriority);
2897 iMainWindowText.AppendL(infoBuf);
2899 infoBuf.Append(KDuration);
2900 if(iMode == EAudioPlay)
2902 duration = iAudioPlayAgent->Duration();
2904 else if(iMode == EAudioRecord)
2906 duration = iAudioRecordAgent->Duration();
2908 clipLengthVal = duration.Int64();
2909 infoBuf.AppendNum(clipLengthVal);
2910 infoBuf.Append(KMs);
2911 iMainWindowText.AppendL(infoBuf);
2913 infoBuf.Append(KBitRate);
2914 if(iMode == EAudioPlay)
2916 iAudioPlayAgent->GetBitRate(bitrateValue);
2917 infoBuf.AppendNum(bitrateValue);
2919 else if(iMode == EAudioRecord)
2923 infoBuf.Append(KNotSupported);
2927 infoBuf.AppendNum(iBitRate);
2930 iMainWindowText.AppendL(infoBuf);
2934 case(EAudioPlaying):
2935 infoBuf.Append(KAudioPlaying);
2936 iMainWindowText.AppendL(infoBuf);
2938 infoBuf.Append(volume);
2939 infoBuf.AppendNum(iVolumeOrGain);
2940 infoBuf.Append(KPercent);
2941 iMainWindowText.AppendL(infoBuf);
2943 infoBuf.Append(balanceDes);
2944 balance = (iBalance/2) + 50;
2947 infoBuf.Append(left);
2948 infoBuf.AppendNum(balance);
2949 infoBuf.Append(close);
2951 else if(balance == 50)
2953 infoBuf.Append(center);
2957 infoBuf.Append(right);
2958 infoBuf.AppendNum(balance);
2959 infoBuf.Append(close);
2961 iMainWindowText.AppendL(infoBuf);
2963 infoBuf.Append(noRepeats);
2964 infoBuf.AppendNum(iNoRepeats);
2965 iMainWindowText.AppendL(infoBuf);
2968 infoBuf.Append(audioPriority);
2969 infoBuf.AppendNum(iPriority);
2970 iMainWindowText.AppendL(infoBuf);
2972 infoBuf.Append(KDuration);
2973 if(iMode == EAudioPlay)
2975 duration = iAudioPlayAgent->Duration();
2977 else if(iMode == EAudioRecord)
2979 duration = iAudioRecordAgent->Duration();
2981 clipLengthVal = duration.Int64();
2982 infoBuf.AppendNum(clipLengthVal);
2983 infoBuf.Append(KMs);
2984 iMainWindowText.AppendL(infoBuf);
2986 infoBuf.Append(KBitRate);
2987 if(iMode == EAudioPlay)
2989 iAudioPlayAgent->GetBitRate(bitrateValue);
2990 infoBuf.AppendNum(bitrateValue);
2992 else if(iMode == EAudioRecord)
2996 infoBuf.Append(KNotSupported);
3000 infoBuf.AppendNum(iBitRate);
3003 iMainWindowText.AppendL(infoBuf);
3008 infoBuf.Append(KPaused);
3009 iMainWindowText.AppendL(infoBuf);
3011 infoBuf.Append(volume);
3012 infoBuf.AppendNum(iVolumeOrGain);
3013 infoBuf.Append(KPercent);
3014 iMainWindowText.AppendL(infoBuf);
3016 infoBuf.Append(balanceDes);
3017 balance = (iBalance/2) + 50;
3020 infoBuf.Append(left);
3021 infoBuf.AppendNum(balance);
3022 infoBuf.Append(close);
3024 else if(balance == 50)
3026 infoBuf.Append(center);
3030 infoBuf.Append(right);
3031 infoBuf.AppendNum(balance);
3032 infoBuf.Append(close);
3034 iMainWindowText.AppendL(infoBuf);
3036 infoBuf.Append(noRepeats);
3037 infoBuf.AppendNum(iNoRepeats);
3038 iMainWindowText.AppendL(infoBuf);
3041 infoBuf.Append(audioPriority);
3042 infoBuf.AppendNum(iPriority);
3043 iMainWindowText.AppendL(infoBuf);
3045 infoBuf.Append(KDuration);
3046 if(iMode == EAudioPlay)
3048 duration = iAudioPlayAgent->Duration();
3050 else if(iMode == EAudioRecord)
3052 duration = iAudioRecordAgent->Duration();
3054 clipLengthVal = duration.Int64();
3055 infoBuf.AppendNum(clipLengthVal);
3056 infoBuf.Append(KMs);
3057 iMainWindowText.AppendL(infoBuf);
3059 infoBuf.Append(KBitRate);
3060 if(iMode == EAudioPlay)
3062 iAudioPlayAgent->GetBitRate(bitrateValue);
3063 infoBuf.AppendNum(bitrateValue);
3065 else if(iMode == EAudioRecord)
3069 infoBuf.Append(KNotSupported);
3073 infoBuf.AppendNum(iBitRate);
3076 iMainWindowText.AppendL(infoBuf);
3081 if(iMode == EVideoPlay)
3083 infoBuf.Append(KVideoOpened);
3084 iMainWindowText.AppendL(infoBuf);
3086 if(iVideoPlayAgent->AudioEnabledL())
3089 infoBuf.Append(AudioEnabled);
3090 iMainWindowText.AppendL(infoBuf);
3092 infoBuf.Append(volume);
3093 infoBuf.AppendNum(iVolumeOrGain);
3094 infoBuf.Append(KPercent);
3095 iMainWindowText.AppendL(infoBuf);
3097 if(iButtons->IsCommandDimmed(EMVSCmdSetVolume))
3099 iButtons->DimCommand(EMVSCmdSetVolume,EFalse);
3100 iButtons->DrawNow();
3106 infoBuf.Append(AudioNotEnabled);
3107 iMainWindowText.AppendL(infoBuf);
3110 infoBuf.Append(KDuration);
3111 duration = iVideoPlayAgent->DurationL();
3112 clipLengthVal = duration.Int64();
3113 infoBuf.AppendNum(clipLengthVal);
3114 iMainWindowText.AppendL(infoBuf);
3116 iVideoPlayAgent->VideoFrameSizeL(iFrameSize);
3117 frameHeight = iFrameSize.iHeight;
3118 frameWidth = iFrameSize.iWidth;
3119 infoBuf.Append(KFrameSize);
3120 infoBuf.AppendNum(frameWidth);
3121 infoBuf.Append(KComma);
3122 infoBuf.AppendNum(frameHeight);
3123 iMainWindowText.AppendL(infoBuf);
3125 iVideoFrameRate = GetVideoFrameRateL();
3127 else if(iMode == EVideoRecord)
3129 iButtons->DimCommand(EMVSCmdPlay,ETrue);
3130 iButtons->DimCommand(EMVSCmdPause,ETrue);
3131 iButtons->DimCommand(EMVSCmdStop,ETrue);
3132 iButtons->DrawNow();
3133 infoBuf.Append(KVideoOpenedForRecord);
3134 iMainWindowText.AppendL(infoBuf);
3135 if(iVideoRecordAgent->AudioEnabledL())
3137 iButtons->DimCommand(EMVSCmdSetVolume, EFalse);
3138 iButtons->DrawNow();
3140 infoBuf.Append(AudioEnabled);
3141 iMainWindowText.AppendL(infoBuf);
3143 infoBuf.Append(gain);
3144 infoBuf.AppendNum(iVolumeOrGain);
3145 infoBuf.Append(KPercent);
3146 iMainWindowText.AppendL(infoBuf);
3152 infoBuf.Append(AudioNotEnabled);
3153 iMainWindowText.AppendL(infoBuf);
3156 infoBuf.Append(KFrameSize);
3157 frameHeight =iFrameSize.iHeight;
3158 frameWidth =iFrameSize.iWidth;
3159 infoBuf.AppendNum(frameWidth);
3160 infoBuf.Append(KComma);
3161 infoBuf.AppendNum(frameHeight);
3162 iMainWindowText.AppendL(infoBuf);
3166 infoBuf.Append(KFrameRate);
3167 frameRate = TInt(iVideoFrameRate);
3168 infoBuf.AppendNum(frameRate);
3169 iMainWindowText.AppendL(infoBuf);
3173 case(EVideoPlaying):
3174 infoBuf.Append(KVideoPlaying);
3175 iMainWindowText.AppendL(infoBuf);
3177 if( iVideoPlayAgent->AudioEnabledL())
3180 infoBuf.Append(AudioEnabled);
3181 iMainWindowText.AppendL(infoBuf);
3183 infoBuf.Append(volume);
3184 infoBuf.AppendNum(iVolumeOrGain);
3185 infoBuf.Append(KPercent);
3186 iMainWindowText.AppendL(infoBuf);
3192 infoBuf.Append(AudioNotEnabled);
3193 iMainWindowText.AppendL(infoBuf);
3196 infoBuf.Append(KDuration);
3197 duration = iVideoPlayAgent->DurationL();
3198 clipLengthVal = duration.Int64();
3199 infoBuf.AppendNum(clipLengthVal);
3200 iMainWindowText.AppendL(infoBuf);
3202 iVideoPlayAgent->VideoFrameSizeL(iFrameSize);
3203 frameHeight = iFrameSize.iHeight;
3204 frameWidth = iFrameSize.iWidth;
3205 infoBuf.Append(KFrameSize);
3206 infoBuf.AppendNum(frameWidth);
3207 infoBuf.Append(KComma);
3208 infoBuf.AppendNum(frameHeight);
3209 iMainWindowText.AppendL(infoBuf);
3211 infoBuf.Append(KFrameRate);
3212 iVideoFrameRate = GetVideoFrameRateL();
3213 frameRate = TInt(iVideoFrameRate);
3214 infoBuf.AppendNum(frameRate);
3215 iMainWindowText.AppendL(infoBuf);
3220 infoBuf.Append(KPaused);
3221 iMainWindowText.AppendL(infoBuf);
3222 if(iMode == EVideoRecord)
3224 if(iVideoRecordAgent->AudioEnabledL())
3227 infoBuf.Append(AudioEnabled);
3228 iMainWindowText.AppendL(infoBuf);
3234 infoBuf.Append(AudioNotEnabled);
3235 iMainWindowText.AppendL(infoBuf);
3238 infoBuf.Append(KDuration);
3239 duration = iVideoRecordAgent->DurationL();
3240 clipLengthVal = duration.Int64();
3241 infoBuf.AppendNum(clipLengthVal);
3242 iMainWindowText.AppendL(infoBuf);
3246 if(iMode == EVideoPlay)
3248 if(iVideoPlayAgent->AudioEnabledL())
3251 infoBuf.Append(AudioEnabled);
3252 iMainWindowText.AppendL(infoBuf);
3254 infoBuf.Append(volume);
3255 infoBuf.AppendNum(iVolumeOrGain);
3256 infoBuf.Append(KPercent);
3257 iMainWindowText.AppendL(infoBuf);
3263 infoBuf.Append(AudioNotEnabled);
3264 iMainWindowText.AppendL(infoBuf);
3267 infoBuf.Append(KDuration);
3268 duration = iVideoPlayAgent->DurationL();
3269 clipLengthVal = duration.Int64();
3270 infoBuf.AppendNum(clipLengthVal);
3271 iMainWindowText.AppendL(infoBuf);
3273 iVideoPlayAgent->VideoFrameSizeL(iFrameSize);
3274 frameHeight = iFrameSize.iHeight;
3275 frameWidth = iFrameSize.iWidth;
3276 infoBuf.Append(KFrameSize);
3277 infoBuf.AppendNum(frameWidth);
3278 infoBuf.Append(KComma);
3279 infoBuf.AppendNum(frameHeight);
3280 iMainWindowText.AppendL(infoBuf);
3282 infoBuf.Append(KFrameRate);
3283 iVideoFrameRate = GetVideoFrameRateL();
3284 frameRate = TInt(iVideoFrameRate);
3285 infoBuf.AppendNum(frameRate);
3286 iMainWindowText.AppendL(infoBuf);
3291 case(EVideoStopped):
3292 infoBuf.Append(KStopped);
3293 iMainWindowText.AppendL(infoBuf);
3294 if(iMode == EVideoPlay)
3296 if(iVideoPlayAgent->AudioEnabledL())
3299 infoBuf.Append(AudioEnabled);
3300 iMainWindowText.AppendL(infoBuf);
3302 infoBuf.Append(volume);
3303 infoBuf.AppendNum(iVolumeOrGain);
3304 infoBuf.Append(KPercent);
3305 iMainWindowText.AppendL(infoBuf);
3311 infoBuf.Append(AudioNotEnabled);
3312 iMainWindowText.AppendL(infoBuf);
3315 infoBuf.Append(KDuration);
3316 duration = iVideoPlayAgent->DurationL();
3317 clipLengthVal = duration.Int64();
3318 infoBuf.AppendNum(clipLengthVal);
3319 iMainWindowText.AppendL(infoBuf);
3321 iVideoPlayAgent->VideoFrameSizeL(iFrameSize);
3322 frameHeight = iFrameSize.iHeight;
3323 frameWidth = iFrameSize.iWidth;
3324 infoBuf.Append(KFrameSize);
3325 infoBuf.AppendNum(frameWidth);
3326 infoBuf.Append(KComma);
3327 infoBuf.AppendNum(frameHeight);
3328 iMainWindowText.AppendL(infoBuf);
3330 iVideoFrameRate = GetVideoFrameRateL();
3332 else if(iMode == EVideoRecord)
3334 if(iVideoRecordAgent->AudioEnabledL())
3337 infoBuf.Append(AudioEnabled);
3338 iMainWindowText.AppendL(infoBuf);
3340 infoBuf.Append(gain);
3341 infoBuf.AppendNum(iVolumeOrGain);
3342 infoBuf.Append(KPercent);
3343 iMainWindowText.AppendL(infoBuf);
3348 infoBuf.Append(AudioNotEnabled);
3349 iMainWindowText.AppendL(infoBuf);
3353 infoBuf.Append(KDuration);
3354 duration = iVideoRecordAgent->DurationL();
3355 clipLengthVal = duration.Int64();
3356 infoBuf.AppendNum(clipLengthVal);
3357 iMainWindowText.AppendL(infoBuf);
3359 infoBuf.Append(KFrameSize);
3360 frameHeight =iFrameSize.iHeight;
3361 frameWidth =iFrameSize.iWidth;
3362 infoBuf.AppendNum(frameWidth);
3363 infoBuf.Append(KComma);
3364 infoBuf.AppendNum(frameHeight);
3365 iMainWindowText.AppendL(infoBuf);
3369 infoBuf.Append(KFrameRate);
3370 frameRate = TInt(iVideoFrameRate);
3371 infoBuf.AppendNum(frameRate);
3372 iMainWindowText.AppendL(infoBuf);
3376 TInt clipLen = I64INT(clipLengthVal);
3377 iAppView->SetClipLength(clipLen);
3380 void CMVSAppUi::BuildDollarDesFromArrayL(TDes& aDollarDes)
3382 //take the CDesCArrayFlat and build a dollar separated descriptor
3385 for(counter = 0; counter < iMainWindowText.Count(); ++counter)
3387 aDollarDes.Append(iMainWindowText[counter]);
3388 iCoeEnv->ReadResourceL(dollar, R_DOLLARDOLLAR);
3389 aDollarDes.Append(dollar);
3395 //ConvertTimeToDes(...)
3397 // Converts the time to a descriptor for display purposes. The display is
3398 // in the format HH:MM:SS:SS.
3400 void CMVSAppUi::ConvertTimeToDes(TTimeIntervalMicroSeconds aPosition,
3404 _LIT(KZeroDes, "0");
3405 RArray<TInt> addZero; //array to record whether we need to append a '0'
3406 //to each value in the times array.
3407 RArray<TInt> times; //The array of times, stored hour, minute, second...
3409 TInt64 milliseconds = I64INT(aPosition.Int64())/1000;
3410 TInt seconds = milliseconds/1000;
3411 milliseconds = milliseconds - (seconds * 1000);
3413 TInt hundreds = milliseconds/10; //hundreds of seconds
3415 TInt minutes = seconds/60;
3416 seconds = seconds - minutes*60; //seconds
3418 TInt hours = minutes/60; //hours
3419 minutes = minutes - hours*60; //minutes
3421 times.Append(hours);
3422 times.Append(minutes);
3423 times.Append(seconds);
3424 times.Append(hundreds); //fill the array
3426 TBuf<256> timeDes; //descriptor holding each element of the times array
3429 TInt counter = 0; //counter
3430 for(counter = 0; counter < 4; ++counter)
3433 timeDes.AppendNum(times[counter]);
3435 if(timeDes.Length() == 1)
3437 //If the time value is a single digit, we need to add a '0'
3442 //Otherwise, we do not.
3447 //Add zeros where required.
3449 aDes.Append(KZeroDes);
3450 aDes.AppendNum(hours);
3451 aDes.Append(KColon);
3453 aDes.Append(KZeroDes);
3454 aDes.AppendNum(minutes);
3455 aDes.Append(KColon);
3457 aDes.Append(KZeroDes);
3458 aDes.AppendNum(seconds);
3459 aDes.Append(KColon);
3461 aDes.Append(KZeroDes);
3462 aDes.AppendNum(hundreds);
3464 //Close the RArrays and return
3471 //UpdatePositionViewL()
3473 // Updates the view if the state is recording or playing. Otherwise, this is
3476 void CMVSAppUi::UpdatePositionViewL()
3480 TInt64 currentposition = 0;
3481 if(iState == EAudioRecording || iState == EAudioPlaying || iState == EVideoRecording
3482 || iState == EVideoPlaying || iState == EAudioPaused || iState == EVideoPaused
3483 || iState == EVideoStopped || iState == EAudioStopped)
3485 iDisplayTime.Zero();
3486 if(iMode==EAudioRecord)
3489 TBuf<32> recTimeLeft;
3490 TTimeIntervalMicroSeconds timeLeft = iAudioRecordAgent->RecordTimeAvailable();
3491 if(iRecordLimitSet && iState == EAudioRecording)
3493 ConvertTimeToDes(timeLeft, recTimeLeft);
3494 dispStr2.Copy(_L("Time Left:"));
3495 dispStr2.Append(recTimeLeft);
3496 iAppView->iStatusWindowTimeControl->SetText2L(dispStr2);
3497 dispStr1.Copy(_L("Rec. Time:"));
3500 if(iMode==EAudioRecord && iState==EAudioRecording)
3502 iClipLength = iAudioRecordAgent->Duration();
3503 iTimeElapsed = iAudioRecordAgent->Position();
3504 TInt64 duration = iClipLength.Int64();
3505 TInt64 position = iTimeElapsed.Int64();
3506 currentposition = duration + position;
3507 iTimeElapsed = TTimeIntervalMicroSeconds(currentposition);
3509 else if(iMode==EAudioRecord && iState==EAudioPlaying)
3511 iTimeElapsed=iAudioRecordAgent->Position();
3512 iAppView->UpdatePlayProgress(iTimeElapsed);
3514 else if(iMode==EAudioPlay)
3516 iAudioPlayAgent->GetPosition(iTimeElapsed);
3517 iAppView->UpdatePlayProgress(iTimeElapsed);
3519 else if(iMode==EVideoPlay)
3521 iTimeElapsed = iVideoPlayAgent->PositionL();
3523 else if(iMode==EVideoRecord)
3525 iTimeElapsed = iVideoRecordAgent->DurationL();
3527 temp.AppendNum(currentposition);
3529 ConvertTimeToDes(iTimeElapsed, iDisplayTime);
3530 dispStr1.Append(iDisplayTime);
3531 iAppView->iStatusWindowTimeControl->SetTextL(dispStr1);
3532 iAppView->iStatusWindowTimeControl->DrawNow();
3537 void CMVSAppUi::SetMaxFileSize(TInt& aVal)
3541 iRecordLimitSet = ETrue;
3542 iAudioRecordAgent->SetMaxWriteLength(aVal);
3546 iRecordLimitSet = EFalse;
3547 iAudioRecordAgent->SetMaxWriteLength(aVal);
3548 TRAP_IGNORE(iAppView->iStatusWindowTimeControl->ResetText2L());
3552 //Handling the errors and logging it to the
3554 void CMVSAppUi::LogErrors(TInt aError)
3556 TBuf<KErrorTextLength> erorrDes;
3557 CEikonEnv::Static()->GetErrorText(erorrDes,aError);
3558 CEikonEnv::Static()->AlertWin(erorrDes);
3559 iLogger.Write(erorrDes);
3563 void CMVSAppUi::DetermineFinalFNameL()
3565 //check whether the extension and the controller
3566 //has been selected or not.If not selected proceed
3567 //to the next dialog, nothing to be appended here to
3568 //the filename.Else append the selected extension to
3570 if(iSelectedPluginIdx == KControllerNotSelected)
3575 TParsePtr parser(iDestFilename);
3576 TPtrC extensionval = parser.Ext();
3577 if(extensionval.Length() == 0)
3579 iDestFilename.Append(iControllerExt);
3585 //If the extension is too long, report an error.
3586 if(extensionval.Length() > 4)
3588 _LIT(KExtTooLong, "Extension TOO long");
3589 User::InfoPrint(KExtTooLong);
3593 //Otherwise record the extension given in the filename
3594 if(extensionval.CompareF(iControllerExt)==0)
3600 //Otherwise, append the right extension to the filename and return.
3603 _LIT(KWrongExt, "Wrong Extension");
3604 _LIT(KWrongExtBody, "Extension mismatch,Please re-enter");
3605 CEikonEnv::Static()->InfoWinL(KWrongExt, KWrongExtBody);
3612 TPoint CMVSAppUi::DrawBorders(const TSize& aSize) const
3614 CWindowGc& gc = iAppView->iMainWindowControl->SystemGc();
3615 gc.Activate(iAppView->iMainWindowControl->ControlWindow());
3616 TRect rect(iAppView->iMainWindowControl->Size());
3617 TPoint pos( rect.iTl.iX + rect.Width()/2 - aSize.iWidth/2,
3618 rect.iTl.iY + rect.Height()/2 - aSize.iHeight/2);
3619 TRect drawRect(pos,aSize);
3620 gc.SetPenColor(KRgbBlack);
3622 gc.DrawRect(drawRect);
3624 iAppView->iMainWindowControl->ControlEnv()->WsSession().Flush();
3628 void CMVSAppUi::StopViewFinder()
3630 if(!iVideoRecordAgent)
3634 CCamera *camera = iVideoRecordAgent->Camera();
3635 if (camera->ViewFinderActive())
3637 camera->StopViewFinder();
3638 iAppView->iMainWindowControl->DrawNow();