sl@0: // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // Part of the MVS Application for TechView sl@0: // sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include "MVSAppUI.h" sl@0: #include "MVSApp.hrh" sl@0: #include "MVSViewTicker.h" sl@0: #include "MVSConstants.h" sl@0: #include "MVSVolumeDialog.h" sl@0: #include "MVSBalanceDialog.h" sl@0: #include "MVSRepeatDialog.h" sl@0: #include "MVSSelectPluginsDialog.h" sl@0: #include "MVSSaveAsDialog.h" sl@0: #include "MVSEditMetaInfoDialog.h" sl@0: #include "MVSConfigAudioFormatDialog.h" sl@0: #include "MVSConfigVideoFormatDialog.h" sl@0: #include "MVSSystemInfoDialog.h" sl@0: #include "MVSVideoSettingDialog.h" sl@0: #include "MVSAudioSettingDialog.h" sl@0: #include "MVSSetPlayWindowDialog.h" sl@0: #include "MVSViewMetaInfoDialog.h" sl@0: #include "MVSCropDialog.h" sl@0: #include "MVSMultipleScreenDialog.h" sl@0: #include "MVSResourceNotifyDialog.h" sl@0: sl@0: const TInt KMaxSupportedPlugins = 10; sl@0: const TInt KMaxSupportedExtension = 10; sl@0: const TInt KMaxSupportedCodecs = 10; sl@0: const TInt KLabelCaptionMaxLength = 16; sl@0: const TInt KTimeValueLength = 12; sl@0: sl@0: void CMVSAppUi::ConstructL() sl@0: { sl@0: CEikAppUi::ConstructL(); sl@0: User::LeaveIfError(iLogs.Connect()); sl@0: iLogs.MkDirAll(KLogsPath); sl@0: iButtons=iEikonEnv->AppUiFactory()->ToolBar(); sl@0: //Meta entry initialization sl@0: iMetaTitle = CMMFMetaDataEntry::NewL(KTitle,Ka); sl@0: iMetaAuthor = CMMFMetaDataEntry::NewL(KAuthor,Ka); sl@0: iMetaCopyright = CMMFMetaDataEntry::NewL(KCopyrt,Ka); sl@0: iMetaRevision = CMMFMetaDataEntry::NewL(KRevision,Ka); sl@0: iMetaCategory = CMMFMetaDataEntry::NewL(KCategory,Ka); sl@0: iMetaComments = CMMFMetaDataEntry::NewL(KComments,Ka); sl@0: iVideoPlayAgent = CMVSVideoPlayAgent::NewL(*this); sl@0: iAppView = CMVSAppView::NewL(ClientRect(), *iVideoPlayAgent); sl@0: iPluginArray = new(ELeave) CDesCArrayFlat(KMaxSupportedPlugins); sl@0: iExtArray = new(ELeave) CDesCArrayFlat(KMaxSupportedExtension); sl@0: iCodecArray = new(ELeave) CDesCArrayFlat(KMaxSupportedCodecs); sl@0: iAudioPlayAgent = CMVSAudioPlayAgent::NewL(*this); sl@0: iAudioRecordAgent = CMVSAudioRecordAgent::NewL(*this); sl@0: iVideoRecordAgent = CMVSVideoRecordAgent::NewL(*this); sl@0: iPluginInfo=CMVSControllerPluginInfo::NewL(); sl@0: iAutoplay = EFalse; sl@0: iMode=EIdle; sl@0: User::LeaveIfError(iLogger.Connect()); sl@0: iLogger.CreateLog(KLogsDir,KLogsFile,EFileLoggingModeAppend); sl@0: iSettingManager = CSettingsManager::NewL(); sl@0: iRepeatDelay = 1000000;//initial value of 1 second in microseconds. sl@0: iPriority = 1;//default settings sl@0: iPriorityPreference = EMdaPriorityPreferenceNone;//default settings sl@0: iRotation = EVideoRotationNone;//default settings sl@0: iNoRepeats = 0; sl@0: iScreenNumber = 0; sl@0: if(!iSettingManager->FileExists()) sl@0: { sl@0: iSettingManager->MakeSeedIndexL(); sl@0: } sl@0: iSettingManager->ReadGeneralSettingsL(this); sl@0: iSelectedPluginIdx = -1; sl@0: iMediaType = 0; //set audio media initially sl@0: iPluginsCnt = iPluginInfo->GetPluginListL(iPluginArray,iUidArray ); sl@0: iControllerUid = TUid::Null(); sl@0: iViewTicker = CMVSViewTicker::NewL(this); sl@0: sl@0: // Add one video control per screen sl@0: // except for screen 0 which already has a video control sl@0: // via the app view sl@0: const TInt numScreens = CCoeEnv::Static()->WsSession().NumberOfScreens(); sl@0: sl@0: for(TInt i = 1; i < numScreens; ++i) sl@0: { sl@0: CMVSVideoControl* videoCtl = CMVSVideoControl::NewLC(*iVideoPlayAgent, i, *(CCoeEnv::Static()->RootWin(i))); sl@0: CWsScreenDevice* screenDevice = new (ELeave) CWsScreenDevice(CCoeEnv::Static()->WsSession()); sl@0: CleanupStack::PushL(screenDevice); sl@0: User::LeaveIfError(screenDevice->Construct(i)); sl@0: videoCtl->SetExtent(TPoint(0, 0), screenDevice->SizeInPixels()); sl@0: CleanupStack::PopAndDestroy(screenDevice); sl@0: videoCtl->ActivateL(); sl@0: iVideoCtls.AppendL(videoCtl); sl@0: CleanupStack::Pop(videoCtl); sl@0: } sl@0: sl@0: iVideoCtl = iAppView->iMainWindowControl; sl@0: iLogger.Write(_L("Application START")); sl@0: iSrcFName.Copy(KDefault); sl@0: iDestFilename = KDefault; sl@0: iRecordLimitSet = EFalse; sl@0: iAlreadyRegistered = EFalse; sl@0: } sl@0: sl@0: CMVSAppUi::CMVSAppUi() sl@0: :iVolumeOrGain(10),iNoRepeats(0),iMainWindowText(8), iMaxFileBuffer(0) sl@0: #ifdef SYMBIAN_BUILD_GCE sl@0: ,iAutoScaleType(EAutoScaleNone), sl@0: iAutoScaleHorizPos(EHorizontalAlignCenter), sl@0: iAutoScaleVertPos(EVerticalAlignCenter) sl@0: #endif sl@0: { sl@0: } sl@0: sl@0: CMVSAppUi::~CMVSAppUi() sl@0: { sl@0: delete iAudioPlayAgent; sl@0: delete iAudioRecordAgent; sl@0: delete iVideoPlayAgent; sl@0: delete iVideoRecordAgent; sl@0: iUidArray.Close(); sl@0: iAudioUidArray.Close(); sl@0: iVideoUidArray.Close(); sl@0: iAudioPlayUidArray.Close(); sl@0: iOverlayText.Close(); sl@0: delete iPluginInfo; sl@0: delete iPluginArray; sl@0: delete iExtArray; sl@0: delete iCodecArray; sl@0: delete iMetaTitle; sl@0: delete iMetaAuthor; sl@0: delete iMetaCopyright; sl@0: delete iMetaRevision; sl@0: delete iMetaCategory; sl@0: delete iMetaComments; sl@0: iMainWindowText.Reset(); sl@0: if(iLogger.Handle()) sl@0: { sl@0: iLogger.CloseLog(); sl@0: iLogger.Close(); sl@0: } sl@0: iLogs.Close(); sl@0: delete iViewTicker; sl@0: delete iSettingManager; sl@0: iVideoCtls.ResetAndDestroy(); sl@0: delete iAppView; sl@0: } sl@0: sl@0: //All the user actvated actions in the UI is captured and handled sl@0: //through here sl@0: void CMVSAppUi::HandleCommandL(TInt aCommand) sl@0: { sl@0: TBool needsUpdating = ETrue; sl@0: switch (aCommand) sl@0: { sl@0: case EMVSCmdNew: sl@0: { sl@0: if( iMode != EIdle ) sl@0: { sl@0: return;//dont get into record mode,as the system is still in a previous active state,Playing/Recording. sl@0: } sl@0: FileOpenForRecordL(); sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdOpen: sl@0: { sl@0: if(iState == EAudioPlaying || iState == EVideoPlaying || iState == EAudioRecording || iState == EVideoRecording || iMode == EVideoRecord || iMode == EAudioRecord) sl@0: { sl@0: return;//dont get into record mode,as the system is still in a previous active state,Playing/Recording. sl@0: } sl@0: Reset(); sl@0: FileOpenL(); sl@0: iLogger.Write(_L("Opened for Play")); sl@0: } sl@0: break; sl@0: sl@0: case EMVSCmdMultiScreen: sl@0: { sl@0: iSetScreen->SetupDialogLD(iScreenNumber,this); sl@0: } sl@0: break; sl@0: sl@0: case EMVSRegisterForNotification: sl@0: { sl@0: iRegisterForNotification->SetupDialogLD(this); sl@0: } sl@0: break; sl@0: sl@0: case EMVSCmdSetVolume: sl@0: { sl@0: if((iMode == EAudioPlay) || (iMode == EVideoPlay)) sl@0: { sl@0: iVolumeDialog->SetupDialogLD(iVolumeOrGain,0,0, ETrue, this); sl@0: iLogger.Write(_L("volume set")); sl@0: } sl@0: else if((iMode == EAudioRecord)||(iMode == EVideoRecord)) sl@0: { sl@0: iVolumeDialog->SetupDialogLD(iVolumeOrGain,0,0, EFalse, this); sl@0: iLogger.Write(_L("gain set")); sl@0: } sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdSetPlayBalance: sl@0: { sl@0: iBalanceDialog->SetupDialogLD(iBalance,this, ETrue); sl@0: iLogger.Write(_L("Balance Set")); sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdSetRecordBalance: sl@0: { sl@0: iBalanceDialog->SetupDialogLD(0,this, EFalse); sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdSetRepeats: sl@0: { sl@0: iRepeatDialog->SetupDialogLD(iNoRepeats,iRepeatDelay, this); sl@0: iLogger.Write(_L("Repeats Set")); sl@0: } sl@0: break; sl@0: sl@0: case EMVSCmdEditMetadata: sl@0: { sl@0: iMetaArray.Reset(); sl@0: if(iMetaArray.Count() == 0) sl@0: { sl@0: InitializeMetaArrayL(); sl@0: } sl@0: switch(iMode) sl@0: { sl@0: case EAudioRecord: sl@0: case EVideoRecord: sl@0: { sl@0: iEditMetaInfoDialog->SetupDialogLD(iMetaArray,this); sl@0: iLogger.Write(_L("MetaData Edited")); sl@0: iMetaArray.Close(); sl@0: } sl@0: break; sl@0: sl@0: case EAudioPlay: sl@0: case EVideoPlay: sl@0: { sl@0: iViewMetaInfoDialog->SetupDialogLD(iMetaArray,this); sl@0: iLogger.Write(_L("MetaData View")); sl@0: iMetaArray.Close(); sl@0: } sl@0: } sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdExit: sl@0: { sl@0: if (iDisplayAdded) sl@0: { sl@0: iVideoPlayAgent->RemoveDisplayWindowL(iVideoCtl->ControlWindow()); sl@0: iVideoPlayAgent->RemoveDisplayWindowL(iVideoCtl->Pip().ControlWindow()); sl@0: iVideoPlayAgent->RemoveDisplay(iVideoCtl->ScreenNumber()); sl@0: iVideoCtl->Pip().Clear(); sl@0: iDisplayAdded = EFalse; sl@0: } sl@0: sl@0: iLogger.Write(_L("Application EXIT")); sl@0: iSettingManager->WriteGeneralSettingsL(this); sl@0: Exit(); sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdPlay: sl@0: { sl@0: if(!iButtons->IsCommandDimmed(EMVSCmdPlay)) sl@0: { sl@0: switch(iMode) sl@0: { sl@0: case EAudioPlay: sl@0: { sl@0: iAppView->iStatusWindowTimeControl->ResetText2L(); sl@0: SetVolumeL(iVolumeOrGain,0); sl@0: iButtons->DimCommand(EMVSCmdRecord, ETrue); sl@0: iButtons->DrawNow(); sl@0: if(iState == ENotReady) sl@0: { sl@0: FileOpenL(); sl@0: iAutoplay=ETrue; sl@0: } sl@0: else sl@0: { sl@0: iAudioPlayAgent->Play(); sl@0: iLogger.Write(_L("Playing using AudioPlayAgent")); sl@0: } sl@0: } sl@0: break; sl@0: sl@0: case EAudioRecord: sl@0: { sl@0: iAppView->iStatusWindowTimeControl->ResetText2L(); sl@0: SetVolumeL(iVolumeOrGain,0); sl@0: iAudioRecordAgent->PlayL(); sl@0: iLogger.Write(_L("Playing using AudioRecordAgent")); sl@0: } sl@0: break; sl@0: sl@0: case EVideoPlay: sl@0: { sl@0: if (iVideoPlayAgent->AudioEnabledL()) sl@0: { sl@0: SetVolumeL(iVolumeOrGain, 0); sl@0: } sl@0: iButtons->DimCommand(EMVSCmdSetRepeats, ETrue); sl@0: iButtons->DrawNow(); sl@0: sl@0: #ifdef SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS sl@0: if (iVideoPlayAgent->SupportVideoPlayerUtility2()) sl@0: { sl@0: PrepareVideoControlsL(); sl@0: } sl@0: #endif // SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS sl@0: iVideoPlayAgent->Play(); sl@0: iLogger.Write(_L("Playing using VideoPlayAgent")); sl@0: } sl@0: break; sl@0: sl@0: case EIdle: sl@0: case EVideoRecord: sl@0: break; sl@0: sl@0: default: sl@0: ASSERT(EFalse); sl@0: break; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: needsUpdating = EFalse; sl@0: } sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdRecord: sl@0: { sl@0: if(!iButtons->IsCommandDimmed(EMVSCmdRecord)) sl@0: { sl@0: switch(iMode) sl@0: { sl@0: case EAudioRecord: sl@0: { sl@0: iAudioRecordAgent->RecordL(); sl@0: iLogger.Write(_L("Recording using AudioRecordAgent")); sl@0: iButtons->DimCommand(EMVSCmdRecord, ETrue); sl@0: iButtons->DimCommand(EMVSCmdPlay, ETrue); sl@0: iButtons->DrawNow(); sl@0: } sl@0: break; sl@0: case EVideoRecord: sl@0: { sl@0: //start view finder and record sl@0: CCamera *camera = iVideoRecordAgent->Camera(); sl@0: TSize imageSize; sl@0: camera->EnumerateCaptureSizes(imageSize,1,CCamera::EFormatFbsBitmapColor16M); sl@0: TPoint pos = DrawBorders(imageSize); sl@0: TRect clientRect = ClientRect(); sl@0: pos.iY += clientRect.iTl.iY;//add y-offset for menu bar sl@0: TRect screenRect(pos,imageSize); sl@0: TRect clipRect = screenRect ; sl@0: if (!camera->ViewFinderActive()) sl@0: { sl@0: CCoeEnv *coenv = iAppView->iMainWindowControl->ControlEnv(); sl@0: camera->StartViewFinderDirectL( coenv->WsSession(), sl@0: *coenv->ScreenDevice(), sl@0: *iAppView->DrawableWindow(), sl@0: screenRect, sl@0: clipRect); sl@0: } sl@0: if (!iFileReplace) sl@0: { sl@0: SetVideoFrameRateL(iVideoFrameRate); sl@0: SetVideoFrameSizeL(iFrameSize); sl@0: SetAudioEnabledL(iAudioEnabled); sl@0: } sl@0: iVideoRecordAgent->Record(); sl@0: iLogger.Write(_L("Recording using VideoRecordAgent")); sl@0: iButtons->DimCommand(EMVSCmdRecord, ETrue); sl@0: iButtons->DimCommand(EMVSCmdPlay, ETrue); sl@0: iButtons->DrawNow(); sl@0: } sl@0: break; sl@0: default: sl@0: ASSERT(EFalse); sl@0: break; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: needsUpdating = EFalse; sl@0: } sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdPause: sl@0: { sl@0: if(!iButtons->IsCommandDimmed(EMVSCmdPause)) sl@0: { sl@0: switch(iMode) sl@0: { sl@0: case EAudioPlay: sl@0: { sl@0: iAudioPlayAgent->Pause(); sl@0: iLogger.Write(_L("AudioPlayAgent Paused")); sl@0: iButtons->DimCommand(EMVSCmdPlay, EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: break; sl@0: sl@0: case EAudioRecord: sl@0: { sl@0: User::InfoPrint(KNotsupported); sl@0: } sl@0: break; sl@0: sl@0: case EVideoPlay: sl@0: { sl@0: iVideoPlayAgent->PauseL(); sl@0: iLogger.Write(_L("AudioPlayAgent Paused")); sl@0: iButtons->DimCommand(EMVSCmdPlay, EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: break; sl@0: sl@0: case EVideoRecord: sl@0: { sl@0: iVideoRecordAgent->PauseL(); sl@0: iLogger.Write(_L("VideoRecordAgent Paused")); sl@0: iButtons->DimCommand(EMVSCmdRecord, EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: break; sl@0: sl@0: case EIdle: sl@0: break; sl@0: sl@0: default: sl@0: ASSERT(EFalse); sl@0: break; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: needsUpdating = EFalse; sl@0: } sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdStop: sl@0: { sl@0: if(!iButtons->IsCommandDimmed(EMVSCmdStop)) sl@0: { sl@0: switch(iMode) sl@0: { sl@0: case EAudioPlay: sl@0: { sl@0: iAudioPlayAgent->Stop(); sl@0: iLogger.Write(_L("AudioPlayAgent Stopped")); sl@0: iButtons->DimCommand(EMVSCmdPlay, EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: break; sl@0: sl@0: case EAudioRecord: sl@0: { sl@0: iAudioRecordAgent->Stop(); sl@0: iLogger.Write(_L("AudioRecordAgent Stopped")); sl@0: iButtons->DimCommand(EMVSCmdRecord, EFalse); sl@0: iButtons->DrawNow(); sl@0: iButtons->DimCommand(EMVSCmdPlay, EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: break; sl@0: sl@0: case EVideoPlay: sl@0: { sl@0: iVideoPlayAgent->Stop(); sl@0: iLogger.Write(_L("VideoPlayAgent Stopped")); sl@0: iButtons->DimCommand(EMVSCmdPlay, EFalse); sl@0: iButtons->DrawNow(); sl@0: iAppView->DrawNow(); sl@0: } sl@0: break; sl@0: sl@0: case EVideoRecord: sl@0: { sl@0: StopViewFinder(); sl@0: iVideoRecordAgent->Stop(); sl@0: iLogger.Write(_L("VideoRecordAgent Stopped")); sl@0: iButtons->DimCommand(EMVSCmdRecord, EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: break; sl@0: sl@0: case EIdle: sl@0: break; sl@0: sl@0: default: sl@0: ASSERT(EFalse); sl@0: break; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: needsUpdating = EFalse; sl@0: } sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdSetPlayWindow: sl@0: { sl@0: iSetPlayWindow->SetupDialogLD(iStart,iEnd,iDuration,this); sl@0: iLogger.Write(_L("AudioPlayAgent SetPlayWindow")); sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdClearPlayWindow: sl@0: { sl@0: iStart = 0; sl@0: iEnd = iAudioPlayAgent->Duration(); sl@0: iAudioPlayAgent->ClearPlayWindow(); sl@0: iLogger.Write(_L("AudioPlayAgent ClearPlayWindow")); sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdSystemInfo: sl@0: { sl@0: iSystemInfo->SetupDialogLD(this); sl@0: iLogger.Write(_L("System Info")); sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSVideoCmdSettings: sl@0: { sl@0: if (iVideoPlayAgent->SupportVideoPlayerUtility2()) sl@0: { sl@0: iVideoSetting->SetupDialogLD(iRotation, this, iVideoExtent, iWindowClipRect, ETrue, iPip, iCrp); sl@0: } sl@0: else sl@0: { sl@0: iVideoSetting->SetupDialogLD(iRotation,this, TRect(0, 0, 0, 0), TRect(0, 0, 0, 0), EFalse, EFalse, iCrp); sl@0: } sl@0: iLogger.Write(_L("Video Settings")); sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdAudioSetting: sl@0: { sl@0: iAudioSetting->SetupDialogLD(iNoRepeats,iRepeatDelay,iPriority,iPriorityPreference,iMaxFileBuffer, this); sl@0: iLogger.Write(_L("Audio Setting")); sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdClose: sl@0: { sl@0: FileClose(); sl@0: iRecordLimitSet = EFalse; sl@0: } sl@0: break; sl@0: sl@0: sl@0: case EMVSCmdSetCropWindow: sl@0: { sl@0: iCropPosition=0; sl@0: iCropStart=GetCropStart(); sl@0: iClipLength = iAudioRecordAgent->Duration(); sl@0: iCropEnd=iClipLength; sl@0: iCropDialog->SetupDialogLD(iCropPosition,iClipLength,0,iCropEnd,this); sl@0: iLogger.Write(_L("CropWindow set")); sl@0: } sl@0: break; sl@0: sl@0: case EMVSCmdClearLog: sl@0: { sl@0: sl@0: } sl@0: break; sl@0: #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: case EMVSCmdEnableSubtitles : sl@0: { sl@0: iVideoPlayAgent->EnableSubtitlesL(); sl@0: } sl@0: break; sl@0: case EMVSCmdDisableSubtitles : sl@0: { sl@0: iVideoPlayAgent->DisableSubtitlesL(); sl@0: } sl@0: break; sl@0: #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: } sl@0: if(needsUpdating) sl@0: { sl@0: UpdateDisplayL(iState); sl@0: } sl@0: } sl@0: sl@0: void CMVSAppUi::PrepareVideoControlsL() sl@0: { sl@0: if (iDisplayAdded) sl@0: { sl@0: iVideoPlayAgent->RemoveDisplayWindowL(iVideoCtl->ControlWindow()); sl@0: iVideoPlayAgent->RemoveDisplay(iVideoCtl->ScreenNumber()); sl@0: TRAP_IGNORE(iVideoPlayAgent->RemoveDisplayWindowL(iVideoCtl->Pip().ControlWindow())); sl@0: iDisplayAdded = EFalse; sl@0: } sl@0: sl@0: iVideoCtl = iAppView->iMainWindowControl; sl@0: sl@0: CCoeEnv* env = CCoeEnv::Static(); sl@0: sl@0: if (iScreenNumber > 0) sl@0: { sl@0: // Video ctls start at 0 in index for display 1 sl@0: iVideoCtl = iVideoCtls[iScreenNumber - 1]; sl@0: } sl@0: sl@0: TRect extent = iVideoExtentSet ? iVideoExtent : iVideoCtl->Rect(); sl@0: TRect clip = iWindowClipRectSet ? iWindowClipRect : iVideoCtl->Rect(); sl@0: iVideoPlayAgent->AddDisplayWindowL(env->WsSession(), *(env->ScreenDevice(iScreenNumber)), iVideoCtl->ControlWindow(), extent, clip); sl@0: iDisplayAdded = ETrue; sl@0: sl@0: if (iPip) sl@0: { sl@0: // Picture-in-picture has been enabled. sl@0: TSize videoFrameSize; sl@0: iVideoPlayAgent->VideoFrameSizeL(videoFrameSize); sl@0: TSize winSize = iVideoCtl->Size(); sl@0: sl@0: // Picture-in-picture should be an 8th of original sl@0: videoFrameSize.iHeight /= 4; sl@0: videoFrameSize.iWidth /= 4; sl@0: sl@0: TPoint pipLoc(winSize.iWidth - (videoFrameSize.iWidth + 4), 4); sl@0: sl@0: iVideoCtl->Pip().SetExtent(pipLoc, videoFrameSize); sl@0: sl@0: if (iCrp) sl@0: { sl@0: iVideoCtl->EnablePip(CMVSPipControl::EUseCrp); sl@0: iVideoPlayAgent->AddDisplayL(env->WsSession(), iScreenNumber, iVideoCtl->Pip()); sl@0: } sl@0: else sl@0: { sl@0: iVideoCtl->EnablePip(CMVSPipControl::EUseMmf); sl@0: iVideoPlayAgent->AddDisplayWindowL(env->WsSession(), *(env->ScreenDevice(iScreenNumber)), iVideoCtl->Pip().ControlWindow()); sl@0: iVideoPlayAgent->SetAutoScaleL(iVideoCtl->Pip().ControlWindow(), EAutoScaleBestFit, EHorizontalAlignCenter, EVerticalAlignCenter); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: // Picture-in-picture has been disabled. sl@0: iVideoCtl->DisablePip(); sl@0: } sl@0: } sl@0: sl@0: void CMVSAppUi::SetPosition(TTimeIntervalMicroSeconds& aPos) sl@0: { sl@0: if(iMode == EAudioPlay) sl@0: { sl@0: iAudioPlayAgent->SetPosition(aPos); sl@0: } sl@0: else if(iMode == EAudioRecord) sl@0: { sl@0: iAudioRecordAgent->SetPosition(aPos); sl@0: } sl@0: } sl@0: sl@0: //Opens a file for playing sl@0: void CMVSAppUi::FileOpenL() sl@0: { sl@0: //Open the file dialog sl@0: CEikFileOpenDialog* dialog = new (ELeave) CEikFileOpenDialog(&iSrcFName); sl@0: TInt val = dialog->ExecuteLD(R_EIK_DIALOG_FILE_OPEN); sl@0: if(val != 0) sl@0: { sl@0: TUid mediatype = iPluginInfo->GetMediaTypeL(iSrcFName); sl@0: if(mediatype == KUidMediaTypeVideo) sl@0: { sl@0: TRect rect, clipRect; sl@0: rect = clipRect = TRect(iAppView->iMainWindowControl->PositionRelativeToScreen(), iAppView->iMainWindowControl->Size()); sl@0: sl@0: rect.Shrink(2,2); sl@0: clipRect.Shrink(2,2); sl@0: sl@0: // Clear the area where the video will be displayed sl@0: #ifdef SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS sl@0: iVideoPlayAgent->SetVideoOutputL(iCoeEnv->WsSession(), sl@0: *iCoeEnv->ScreenDevice(iScreenNumber), sl@0: iVideoCtl->ControlWindow(), sl@0: rect, sl@0: clipRect); sl@0: #else sl@0: iVideoPlayAgent->SetVideoOutputL(iCoeEnv->WsSession(), sl@0: *iCoeEnv->ScreenDevice(), sl@0: iVideoCtl->ControlWindow(), sl@0: rect, sl@0: clipRect); sl@0: #endif // SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS sl@0: sl@0: TInt res = iVideoPlayAgent->SetScreenNumber(iScreenNumber); sl@0: if(res == KErrNotSupported) sl@0: { sl@0: User::InfoPrint(KMultiScreenNotsupported); sl@0: } sl@0: //Enable AP&R for register notification made before opening the file sl@0: if(iRegistered) sl@0: { sl@0: TInt regerr = iVideoPlayAgent->RegisterForNotification(); sl@0: if(regerr == KErrNone) sl@0: { sl@0: User::InfoPrint(KRegisterSuccess); sl@0: } sl@0: else sl@0: { sl@0: User::InfoPrint(KRegisterFailure); sl@0: } sl@0: } sl@0: else if(iAlreadyRegistered) sl@0: { sl@0: TInt cancelerr = iVideoPlayAgent->CancelNotification(); sl@0: if(cancelerr == KErrNone) sl@0: { sl@0: iAlreadyRegistered = EFalse; sl@0: User::InfoPrint(KRegisterCancelation); sl@0: } sl@0: else sl@0: { sl@0: User::InfoPrint(KCancelationFailure); sl@0: } sl@0: } sl@0: iVideoPlayAgent->OpenFileL(iSrcFName); sl@0: iMode = EVideoPlay; sl@0: } sl@0: else if(mediatype == KUidMediaTypeAudio) sl@0: { sl@0: iAudioPlayAgent->OpenFileL(iSrcFName); sl@0: iMode = EAudioPlay; sl@0: iButtons->DimCommand(EMVSCmdSetVolume,EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: else sl@0: { sl@0: User::InfoPrint(KNotSupported); sl@0: } sl@0: } sl@0: return; sl@0: } sl@0: sl@0: //Opens a new or existing file to record. sl@0: void CMVSAppUi::FileOpenForRecordL() sl@0: { sl@0: iExtArray->Reset(); sl@0: iPluginArray->Reset(); sl@0: iCodecArray->Reset(); sl@0: iSelectedPluginIdx = KBeforeSelectingController; sl@0: iSelectPluginsDialog->SetupDialogLD(iPluginArray,iExtArray, iCodecArray, this); sl@0: //Indicates that the controller wasnt selected, leave it to the MMF to select sl@0: //tha appropriate controller. sl@0: if(iSelectedPluginIdx == KControllerNotSelected) sl@0: { sl@0: iControllerUid = TUid::Null(); sl@0: } sl@0: else sl@0: { sl@0: if(iMediaType) sl@0: { sl@0: iControllerUid = iVideoUidArray[iSelectedPluginIdx]; sl@0: } sl@0: else sl@0: { sl@0: iControllerUid = iAudioUidArray[iSelectedPluginIdx]; sl@0: } sl@0: } sl@0: if(!iMediaType) sl@0: { sl@0: iMode = EAudioRecord; sl@0: } sl@0: else if(iMediaType) sl@0: { sl@0: iMode = EVideoRecord; sl@0: } sl@0: SaveAsDialogL(); sl@0: } sl@0: sl@0: void CMVSAppUi::FileClose() sl@0: { sl@0: iButtons->DimCommand(EMVSCmdSetVolume, ETrue); sl@0: iButtons->DimCommand(EMVSCmdRecord, ETrue); sl@0: switch(iMode) sl@0: { sl@0: case EAudioPlay: sl@0: { sl@0: iAudioPlayAgent->Stop(); sl@0: iLogger.Write(_L("AudioPlayAgent Close")); sl@0: } sl@0: break; sl@0: sl@0: case EAudioRecord: sl@0: { sl@0: iAudioRecordAgent->Stop(); sl@0: iLogger.Write(_L("AudioRecordAgent Close")); sl@0: } sl@0: break; sl@0: sl@0: case EVideoPlay: sl@0: { sl@0: iVideoPlayAgent->Close(); sl@0: iLogger.Write(_L("VideoPlayAgent Close")); sl@0: iAppView->DrawNow(); sl@0: } sl@0: break; sl@0: sl@0: case EVideoRecord: sl@0: { sl@0: iVideoRecordAgent->Close(); sl@0: iLogger.Write(_L("VideoRecordAgent Close")); sl@0: } sl@0: break; sl@0: sl@0: default: sl@0: break; sl@0: } sl@0: Reset(); sl@0: } sl@0: sl@0: sl@0: void CMVSAppUi::SaveAsDialogL() sl@0: { sl@0: iFileReplace = ETrue; sl@0: TInt errVal = iSaveAsDialog->SetupDialogLD(iDestFilename, &iFileReplace); sl@0: if(errVal) sl@0: { sl@0: DetermineFinalFNameL(); sl@0: if(iProceed) sl@0: { sl@0: iOpeningForRecord=ETrue; sl@0: RFs fs = CCoeEnv::Static()->FsSession(); sl@0: if(iMode==EAudioRecord) sl@0: { sl@0: TInt uidcount = iAudioPlayUidArray.Count(); sl@0: TUid playcontrollerUid = TUid::Null(); sl@0: if(uidcount) sl@0: { sl@0: playcontrollerUid = iAudioPlayUidArray[0]; sl@0: } sl@0: if(iFileReplace) sl@0: { sl@0: fs.Delete(iDestFilename); sl@0: } sl@0: iAudioRecordAgent->CreateNewFileL(iDestFilename,iControllerUid,playcontrollerUid); sl@0: iLogger.Write(_L("Opened file for Audio Record")); sl@0: iRecFName.Copy(iDestFilename); sl@0: iButtons->DimCommand(EMVSCmdRecord, EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: sl@0: else if(iMode==EVideoRecord) sl@0: { sl@0: if(iFileReplace) sl@0: { sl@0: fs.Delete(iDestFilename); sl@0: } sl@0: TInt err = iVideoRecordAgent->OpenFileL(iDestFilename,iControllerUid); sl@0: if(err != KErrNone) sl@0: { sl@0: iLogger.Write(_L("ECam Object creation failed")); sl@0: User::InfoPrint(KVideoError); sl@0: } sl@0: else sl@0: { sl@0: iLogger.Write(_L("Opened file for Video Record")); sl@0: iRecFName.Copy(iDestFilename); sl@0: iButtons->DimCommand(EMVSCmdRecord, EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: } sl@0: } sl@0: } sl@0: else sl@0: { sl@0: iMode = EIdle; sl@0: UpdateStateChange(ENotReady , KErrNone); sl@0: } sl@0: } sl@0: sl@0: //The state change calls from the agents sl@0: void CMVSAppUi::UpdateStateChange(TMVSState aState, TInt aError) sl@0: { sl@0: TInt error = aError; sl@0: //if state changes from EVideoRecording and view finder is running, stop it. sl@0: if(iState == EVideoRecording && aState != EVideoRecording) sl@0: { sl@0: StopViewFinder(); sl@0: } sl@0: //if playback stops, redraw the app view sl@0: if(iState == EVideoPlaying && aState != EVideoPlaying) sl@0: { sl@0: // the last frame is still on the display, but nothing is in charge sl@0: // of redrawing it. this would otherwise lead to graphical glitches sl@0: // as the frame is partially erased over time. sl@0: iAppView->iMainWindowControl->DrawNow(); sl@0: } sl@0: iState=aState; sl@0: if(error == KErrNone) sl@0: { sl@0: if(aState == EAudioOpened) sl@0: { sl@0: iAppView->ResetProgressBar(); sl@0: iButtons->DimCommand(EMVSCmdPlay,EFalse); sl@0: iButtons->DrawNow(); sl@0: if(iMode == EAudioPlay) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdRecord,ETrue); sl@0: iDuration = iAudioPlayAgent->Duration(); sl@0: if((iStart == 0) && (iEnd == 0)) sl@0: { sl@0: iStart = 0; sl@0: iEnd = iDuration; sl@0: } sl@0: } sl@0: if(iButtons->IsCommandDimmed(EMVSCmdSetRepeats)) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdSetRepeats,EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: if(iButtons->IsCommandDimmed(EMVSCmdSetPlayBalance)) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdSetPlayBalance,EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: //Provided to automatically start playing, when the play button is selected sl@0: //without opening a file through the file menu. sl@0: if(iAutoplay) sl@0: { sl@0: iAudioPlayAgent->Play(); sl@0: iAutoplay=EFalse; sl@0: } sl@0: if(iMode == EAudioRecord && !iOpeningForRecord) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdRecord,EFalse); sl@0: iButtons->DimCommand(EMVSCmdPlay,EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: //Pop the Audio Record Settings Dialogue sl@0: if(iMode == EAudioRecord && iOpeningForRecord && iSelectedPluginIdx !=-2) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdSetPlayBalance,EFalse); sl@0: if(iButtons->IsCommandDimmed(EMVSCmdRecord)) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdRecord,EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: //if appending to an existing file no need to re-enter the controller configuration. sl@0: if(iFileReplace) sl@0: { sl@0: if(!iMediaType && iSelectedPluginIdx !=-1) sl@0: { sl@0: TRAP(error, iConfigFormatDialog->SetupDialogLD(this,iAudioUidArray[iSelectedPluginIdx],iSettingManager) ); sl@0: iOpeningForRecord = EFalse; sl@0: } sl@0: } sl@0: } sl@0: } sl@0: else if(aState == EAudioPlaying) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdPlay, ETrue); sl@0: iButtons->DimCommand(EMVSCmdRecord,ETrue); sl@0: iButtons->DimCommand(EMVSCmdPause, EFalse); sl@0: iButtons->DimCommand(EMVSCmdStop, EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: else if(aState == ENotReady) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdSetPlayBalance,EFalse); sl@0: iButtons->DimCommand(EMVSCmdSetVolume, ETrue); sl@0: iButtons->DimCommand(EMVSCmdRecord, ETrue); sl@0: iButtons->DimCommand(EMVSCmdPlay, EFalse); sl@0: iButtons->DrawNow(); sl@0: sl@0: // File has been closed. Remove the display window if it was added. sl@0: if (iDisplayAdded) sl@0: { sl@0: TRAP(error, iVideoPlayAgent->RemoveDisplayWindowL(iVideoCtl->ControlWindow())); sl@0: TRAP(error, iVideoPlayAgent->RemoveDisplayWindowL(iVideoCtl->Pip().ControlWindow())); sl@0: iVideoPlayAgent->RemoveDisplay(iVideoCtl->ScreenNumber()); sl@0: iVideoCtl->Pip().Clear(); sl@0: iDisplayAdded = EFalse; sl@0: } sl@0: } sl@0: else if(aState == EAudioOpening) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdSetVolume,EFalse); sl@0: } sl@0: else if(aState == EAudioPaused) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdPause, ETrue); sl@0: iButtons->DrawNow(); sl@0: } sl@0: else if(aState == EAudioStopped) sl@0: { sl@0: iAppView->ResetProgressBar(); sl@0: iButtons->DimCommand(EMVSCmdStop, ETrue); sl@0: iButtons->DimCommand(EMVSCmdPause, ETrue); sl@0: iButtons->DrawNow(); sl@0: } sl@0: else if(aState == EVideoPaused) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdPause,ETrue); sl@0: iButtons->DrawNow(); sl@0: } sl@0: else if(aState == EVideoStopped) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdStop,ETrue); sl@0: iButtons->DimCommand(EMVSCmdPause, ETrue); sl@0: iButtons->DrawNow(); sl@0: } sl@0: else if(aState == EVideoPlaying) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdPlay, ETrue); sl@0: iButtons->DimCommand(EMVSCmdRecord,ETrue); sl@0: iButtons->DimCommand(EMVSCmdPause,ETrue); sl@0: iButtons->DimCommand(EMVSCmdStop,EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: else if(aState == EVideoRecording) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdPlay, ETrue); sl@0: iButtons->DimCommand(EMVSCmdRecord, ETrue); sl@0: iButtons->DimCommand(EMVSCmdPause,EFalse); sl@0: iButtons->DimCommand(EMVSCmdSetRepeats,ETrue); sl@0: iButtons->DrawNow(); sl@0: } sl@0: sl@0: else if(aState == EAudioRecording) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdPlay, ETrue); sl@0: iButtons->DimCommand(EMVSCmdRecord,ETrue); sl@0: iButtons->DimCommand(EMVSCmdPause,ETrue); sl@0: iButtons->DrawNow(); sl@0: } sl@0: else if(aState == EVideoOpened ) sl@0: { sl@0: //Pop the Video Record Settings Dialogue sl@0: iButtons->DimCommand(EMVSCmdPlay,EFalse); sl@0: iButtons->DimCommand(EMVSCmdPause,ETrue); sl@0: iButtons->DimCommand(EMVSCmdSetRepeats,ETrue); sl@0: iButtons->DrawNow(); sl@0: if(iButtons->IsCommandDimmed(EMVSCmdSetPlayBalance)) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdSetPlayBalance,EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: if(iMode==EVideoRecord && iOpeningForRecord) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdSetPlayBalance,ETrue); sl@0: if(iFileReplace) sl@0: { sl@0: if(iMediaType && iSelectedPluginIdx !=-1) sl@0: { sl@0: TRAP(error, iVideoFormatDialog->SetupDialogLD(this,iVideoUidArray[iSelectedPluginIdx],iSettingManager) ); sl@0: iOpeningForRecord=EFalse; sl@0: } sl@0: } sl@0: } sl@0: } sl@0: if(error != KErrNone) sl@0: { sl@0: LogErrors(error); sl@0: } sl@0: } sl@0: else if ((error == KErrEof) && (aState == EAudioStopped)) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdPlay, EFalse); sl@0: iButtons->DimCommand(EMVSCmdRecord,ETrue); sl@0: iButtons->DimCommand(EMVSCmdPause,EFalse); sl@0: iButtons->DimCommand(EMVSCmdStop,EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: else sl@0: { sl@0: LogErrors(error); sl@0: } sl@0: sl@0: //As the state changes the display windows(views) contents also needs to be changed sl@0: TRAPD(err,UpdateDisplayL(iState)); sl@0: if(err) sl@0: { sl@0: LogErrors(err); sl@0: iState = ENotReady; sl@0: FileClose(); sl@0: } sl@0: } sl@0: sl@0: void CMVSAppUi::MvsResourceNotification(const TDesC8& /*aNotificationData*/) sl@0: { sl@0: if(iMode == EVideoPlay) sl@0: { sl@0: iVideoPlayAgent->Play(); sl@0: } sl@0: } sl@0: //Return the current mode of the App sl@0: void CMVSAppUi::Reset() sl@0: { sl@0: iMode =EIdle; sl@0: iState =ENotReady; sl@0: iBitRate = 0; sl@0: iSampleRate = 0; sl@0: iChannels =0; sl@0: iAutoplay = EFalse; sl@0: iStart = 0; sl@0: iEnd = 0; sl@0: iDuration = 0; sl@0: } sl@0: sl@0: sl@0: //GetCropStart() sl@0: TTimeIntervalMicroSeconds CMVSAppUi::GetCropStart() const sl@0: { sl@0: return iCropStart; sl@0: } sl@0: sl@0: sl@0: // Returns the cropping end-point in microseconds sl@0: TTimeIntervalMicroSeconds CMVSAppUi::GetCropEnd() const sl@0: { sl@0: return iCropEnd; sl@0: } sl@0: sl@0: //Volume setting sl@0: void CMVSAppUi::SetVolumeL(TInt aVolume, TTimeIntervalMicroSeconds aRamp) sl@0: { sl@0: //Initialise the volume settings based on the parameters sl@0: iVolumeOrGain = aVolume; sl@0: iRamp = aRamp; sl@0: switch(iMode) sl@0: { sl@0: case EAudioPlay: sl@0: { sl@0: //And set the maximum volume based on the device's audio capabilities sl@0: iMaxVolume = iAudioPlayAgent->MaxVolume(); sl@0: //Set the volume, and volume ramps. sl@0: iAudioPlayAgent->SetVolume((iVolumeOrGain*iMaxVolume)/100, iRamp); sl@0: } sl@0: break; sl@0: sl@0: case EAudioRecord: sl@0: { sl@0: //And set the maximum volume based on the device's audio capabilities sl@0: iMaxVolume = iAudioRecordAgent->MaxGain(); sl@0: //Set the volume, and volume ramps. sl@0: iAudioRecordAgent->SetGain((iVolumeOrGain*iMaxVolume)/100); sl@0: } sl@0: break; sl@0: sl@0: case EVideoPlay: sl@0: { sl@0: iMaxVolume = iVideoPlayAgent->MaxVolume(); sl@0: iVideoPlayAgent->SetVolumeL((iVolumeOrGain*iMaxVolume)/100); sl@0: } sl@0: break; sl@0: sl@0: case EVideoRecord: sl@0: { sl@0: iMaxVolume = iVideoRecordAgent->MaxGainL(); sl@0: iVideoRecordAgent->SetGainL((iVolumeOrGain*iMaxVolume)/100); sl@0: } sl@0: break; sl@0: sl@0: case EIdle: sl@0: break; sl@0: sl@0: default: sl@0: ASSERT(EFalse); sl@0: break; sl@0: } sl@0: } sl@0: sl@0: sl@0: //Set repeats sl@0: void CMVSAppUi::SetRepeats(TInt aNoRepeats, TTimeIntervalMicroSeconds aDelay) sl@0: { sl@0: //Initialise the repeat variables based on the parameters sl@0: iNoRepeats = aNoRepeats; sl@0: iRepeatDelay = aDelay; sl@0: switch(iMode) sl@0: { sl@0: case EAudioPlay: sl@0: //Set the repeat settings based on these values sl@0: iAudioPlayAgent->SetRepeats(iNoRepeats, iRepeatDelay); sl@0: break; sl@0: sl@0: case EAudioRecord: sl@0: //Set the repeat settings based on these values sl@0: iAudioRecordAgent->SetRepeats(iNoRepeats, iRepeatDelay); sl@0: break; sl@0: default: sl@0: break; sl@0: } sl@0: } sl@0: sl@0: //Balance settings sl@0: // sl@0: // sl@0: // sl@0: // Sets the balance, based on the argument. This value is translated to both sl@0: // the playback AND recording balance for the device. sl@0: // sl@0: void CMVSAppUi::SetBalanceL(TInt aBalance) sl@0: { sl@0: iBalance = aBalance; sl@0: switch(iMode) sl@0: { sl@0: case EAudioPlay: sl@0: iAudioPlayAgent->SetBalance(iBalance); sl@0: break; sl@0: sl@0: case EAudioRecord: sl@0: iAudioRecordAgent->SetRecordBalance(iBalance); sl@0: break; sl@0: sl@0: case EVideoPlay: sl@0: iVideoPlayAgent->SetBalanceL(iBalance); sl@0: break; sl@0: sl@0: case EVideoRecord: sl@0: User::InfoPrint(KNotsupported); sl@0: break; sl@0: sl@0: case EIdle: sl@0: break; sl@0: sl@0: default: sl@0: ASSERT(EFalse); sl@0: break; sl@0: sl@0: } sl@0: } sl@0: sl@0: sl@0: // sl@0: //SetPriorityL(...) sl@0: // sl@0: // Sets the audio priority, and the priority preference, based on the sl@0: // arguments. sl@0: // sl@0: void CMVSAppUi::SetPriorityL(TInt aPriority, sl@0: TMdaPriorityPreference aPriorityPreference) sl@0: { sl@0: iPriority = aPriority; sl@0: iPriorityPreference = aPriorityPreference; sl@0: switch(iMode) sl@0: { sl@0: case EAudioPlay: sl@0: iAudioPlayAgent->SetPriority(iPriority,iPriorityPreference); sl@0: break; sl@0: sl@0: case EVideoPlay: sl@0: iVideoPlayAgent->SetPriorityL(iPriority,iPriorityPreference); sl@0: break; sl@0: sl@0: case EAudioRecord: sl@0: iAudioRecordAgent->SetPriority(iPriority,iPriorityPreference); sl@0: break; sl@0: sl@0: case EVideoRecord: sl@0: iVideoRecordAgent->SetPriorityL(iPriority,iPriorityPreference); sl@0: break; sl@0: sl@0: case EIdle: sl@0: break; sl@0: sl@0: default: sl@0: ASSERT(EFalse); sl@0: break; sl@0: } sl@0: } sl@0: sl@0: sl@0: // sl@0: //SetPlayWindow(...) sl@0: // sl@0: // Sets the play window, based on the sl@0: // arguments. sl@0: // return value indicates if the operation is successful or not. sl@0: TBool CMVSAppUi::SetPlayWindow(TTimeIntervalMicroSeconds aStart, sl@0: TTimeIntervalMicroSeconds aEnd) sl@0: { sl@0: iStart = aStart; sl@0: iEnd = aEnd; sl@0: TInt err = iAudioPlayAgent->SetPlayWindow(iStart,iEnd); sl@0: if(err != KErrNone) sl@0: { sl@0: LogErrors(err); sl@0: iStart = 0; sl@0: iEnd = iDuration; sl@0: return EFalse; sl@0: } sl@0: else sl@0: { sl@0: return ETrue; sl@0: } sl@0: } sl@0: sl@0: sl@0: // sl@0: //SetMetaDataL(...) sl@0: // sl@0: // Sets the MetaData, based on the arguments sl@0: // sl@0: void CMVSAppUi::SetMetaDataL(RPointerArray aMetaArray) sl@0: { sl@0: switch(iMode) sl@0: { sl@0: case EAudioRecord: sl@0: iAudioRecordAgent->SetMetaDataL(aMetaArray); sl@0: break; sl@0: sl@0: case EVideoRecord: sl@0: iVideoRecordAgent->SetMetaDataL(aMetaArray); sl@0: break; sl@0: default: sl@0: ASSERT(EFalse); sl@0: break; sl@0: } sl@0: sl@0: } sl@0: sl@0: sl@0: // sl@0: //GetMetaDataL(...) sl@0: // sl@0: // Sets the MetaData, based on the arguments sl@0: // sl@0: void CMVSAppUi::GetMetaDataL(RPointerArray& aMetaArray) sl@0: { sl@0: switch(iMode) sl@0: { sl@0: case EAudioPlay: sl@0: iAudioPlayAgent->GetMetaArrayL(aMetaArray); sl@0: break; sl@0: sl@0: case EVideoPlay: sl@0: iVideoPlayAgent->GetMetaDataArrayL(aMetaArray); sl@0: break; sl@0: default: sl@0: ASSERT(EFalse); sl@0: break; sl@0: } sl@0: sl@0: } sl@0: sl@0: sl@0: sl@0: // sl@0: //SetCrop(...) sl@0: // sl@0: // Sets the crop window, and also whether to crop from begining sl@0: // or end, based on the arguments passed sl@0: // sl@0: void CMVSAppUi::SetCropL(TTimeIntervalMicroSeconds aCropStart,TBool aCropFromBeginning) sl@0: { sl@0: iAudioRecordAgent->CropClipL(aCropStart,aCropFromBeginning); sl@0: iCropStart=aCropStart; sl@0: iCropFromBeginning=aCropFromBeginning; sl@0: } sl@0: sl@0: sl@0: void CMVSAppUi::SetBitRateL(TUint aBitRate) sl@0: { sl@0: TRAPD(err,iAudioRecordAgent->SetDestinationBitRateL(aBitRate)); sl@0: if(err != KErrNone) sl@0: { sl@0: iLogger.Write(_L("SetDestinationBitRateL returned err")); sl@0: } sl@0: else sl@0: { sl@0: iBitRate = aBitRate; sl@0: } sl@0: } sl@0: sl@0: sl@0: void CMVSAppUi::SetSampleRateL(TUint aSampleRate) sl@0: { sl@0: iAudioRecordAgent->SetDestinationSampleRateL(aSampleRate); sl@0: iSampleRate = aSampleRate; sl@0: } sl@0: sl@0: void CMVSAppUi::SetChannelsL(TUint aNumberOfChannels) sl@0: { sl@0: iAudioRecordAgent->SetDestinationNumberOfChannelsL(aNumberOfChannels); sl@0: iChannels = aNumberOfChannels; sl@0: } sl@0: sl@0: void CMVSAppUi::SetCodecsL(TFourCC aDataType) sl@0: { sl@0: iAudioRecordAgent->SetDestinationDataTypeL(aDataType); sl@0: } sl@0: sl@0: sl@0: sl@0: void CMVSAppUi::InitializeMetaArrayL() sl@0: { sl@0: //Reset the meta array sl@0: iMetaArray.Reset(); sl@0: if(iMetaTitle != NULL) sl@0: { sl@0: iMetaArray.AppendL(iMetaTitle); sl@0: } sl@0: sl@0: if(iMetaAuthor != NULL) sl@0: { sl@0: iMetaArray.AppendL(iMetaAuthor); sl@0: } sl@0: sl@0: if(iMetaCopyright != NULL) sl@0: { sl@0: iMetaArray.AppendL(iMetaCopyright); sl@0: } sl@0: sl@0: if(iMetaRevision != NULL) sl@0: { sl@0: iMetaArray.AppendL(iMetaRevision); sl@0: } sl@0: sl@0: if(iMetaCategory != NULL) sl@0: { sl@0: iMetaArray.AppendL(iMetaCategory); sl@0: } sl@0: sl@0: if(iMetaComments != NULL) sl@0: { sl@0: iMetaArray.AppendL(iMetaComments); sl@0: } sl@0: } sl@0: sl@0: // sl@0: //DynInitMenuPaneL(...) *** This method can LEAVE *** sl@0: // sl@0: // Initialises the availibility of controls on the menu bar depending on the sl@0: // current state of the MVSApp. This allows the application to sl@0: // constrain the availibility of controls which are inappropriate in certain sl@0: // states. sl@0: // sl@0: sl@0: void CMVSAppUi::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane) sl@0: { sl@0: switch(iMode) sl@0: { sl@0: case (EAudioRecord): sl@0: //File menu sl@0: if(aResourceId == R_MVS_FILE_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse); sl@0: } sl@0: sl@0: //Edit Menu sl@0: if(aResourceId == R_MVS_EDIT_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue); sl@0: } sl@0: sl@0: //Settings menu > sl@0: if(aResourceId == R_MVS_SETTINGS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearLog,ETrue); sl@0: #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, ETrue); sl@0: #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: } sl@0: sl@0: if(iState == EAudioRecording) sl@0: { sl@0: //Controls menu sl@0: if(aResourceId == R_MVS_CONTROLS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdPlay,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdStop,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: if(aResourceId == R_MVS_CONTROLS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdPlay,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdStop,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRecord,EFalse); sl@0: } sl@0: } sl@0: break; sl@0: sl@0: sl@0: case (EVideoRecord): sl@0: //File menu sl@0: if(aResourceId == R_MVS_FILE_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse); sl@0: } sl@0: sl@0: //Edit Menu sl@0: if(aResourceId == R_MVS_EDIT_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue); sl@0: } sl@0: sl@0: //Settings menu > sl@0: if(aResourceId == R_MVS_SETTINGS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearLog,ETrue); sl@0: #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, ETrue); sl@0: #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: } sl@0: sl@0: if(iState == EVideoRecording) sl@0: { sl@0: //File menu sl@0: if(aResourceId == R_MVS_FILE_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse); sl@0: } sl@0: sl@0: //Controls menu sl@0: if(aResourceId == R_MVS_CONTROLS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdPlay,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdStop,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: if(aResourceId == R_MVS_CONTROLS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdPlay,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdStop,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRecord,EFalse); sl@0: } sl@0: } sl@0: if(iState == EVideoOpened) sl@0: { sl@0: //File menu sl@0: if(aResourceId == R_MVS_FILE_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse); sl@0: } sl@0: } sl@0: if(iState == EVideoStopped) sl@0: { sl@0: //File menu sl@0: if(aResourceId == R_MVS_FILE_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse); sl@0: } sl@0: } sl@0: break; sl@0: sl@0: case (EAudioPlay): sl@0: sl@0: if(iState == EAudioOpened) sl@0: { sl@0: //File menu sl@0: if(aResourceId == R_MVS_FILE_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdOpen,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse); sl@0: } sl@0: sl@0: //Edit Menu sl@0: if(aResourceId == R_MVS_EDIT_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,EFalse); sl@0: } sl@0: sl@0: //Settings menu sl@0: if(aResourceId == R_MVS_SETTINGS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,ETrue); sl@0: //aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse); sl@0: #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, ETrue); sl@0: #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: } sl@0: sl@0: //Controls menu sl@0: if(aResourceId == R_MVS_CONTROLS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdPlay,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdStop,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue); sl@0: } sl@0: } sl@0: sl@0: else if(iState == EAudioPlaying) sl@0: { sl@0: //File menu sl@0: if(aResourceId == R_MVS_FILE_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse); sl@0: } sl@0: sl@0: //Edit Menu sl@0: if(aResourceId == R_MVS_EDIT_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue); sl@0: } sl@0: sl@0: //Settings menu sl@0: if(aResourceId == R_MVS_SETTINGS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse); sl@0: #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, ETrue); sl@0: #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: } sl@0: sl@0: //Controls menu sl@0: if(aResourceId == R_MVS_CONTROLS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdPlay,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdPause,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdStop,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue); sl@0: } sl@0: } sl@0: sl@0: else if(iState == EAudioPaused) sl@0: { sl@0: //File menu sl@0: if(aResourceId == R_MVS_FILE_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdOpen,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse); sl@0: } sl@0: sl@0: //Edit Menu sl@0: if(aResourceId == R_MVS_EDIT_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,EFalse); sl@0: } sl@0: sl@0: //Settings menu sl@0: if(aResourceId == R_MVS_SETTINGS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse); sl@0: #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, ETrue); sl@0: #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: } sl@0: sl@0: //Controls menu sl@0: if(aResourceId == R_MVS_CONTROLS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdPlay,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdStop,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue); sl@0: } sl@0: } sl@0: else if(iState == EAudioStopped) sl@0: { sl@0: //File menu sl@0: if(aResourceId == R_MVS_FILE_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdOpen,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse); sl@0: } sl@0: sl@0: //Edit Menu sl@0: if(aResourceId == R_MVS_EDIT_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,EFalse); sl@0: } sl@0: sl@0: //Settings menu sl@0: if(aResourceId == R_MVS_SETTINGS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse); sl@0: #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, ETrue); sl@0: #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: } sl@0: sl@0: //Controls menu sl@0: if(aResourceId == R_MVS_CONTROLS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdPlay,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdStop,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue); sl@0: } sl@0: } sl@0: break; sl@0: sl@0: case (EVideoPlay): sl@0: if(iState == EVideoOpened) sl@0: { sl@0: //File menu sl@0: if(aResourceId == R_MVS_FILE_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse); sl@0: } sl@0: sl@0: //Edit Menu sl@0: if(aResourceId == R_MVS_EDIT_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue); sl@0: } sl@0: sl@0: //Settings menu sl@0: if(aResourceId == R_MVS_SETTINGS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdMultiScreen,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse); sl@0: #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: TBool subAvail = iVideoPlayAgent->SubtitlesAvailable(); sl@0: aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, !subAvail); sl@0: aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, !subAvail); sl@0: #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: } sl@0: sl@0: //Controls menu sl@0: if(aResourceId == R_MVS_CONTROLS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdPlay,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdStop,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue); sl@0: } sl@0: } sl@0: sl@0: else if(iState == EVideoPlaying) sl@0: { sl@0: //File menu sl@0: if(aResourceId == R_MVS_FILE_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdOpen,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse); sl@0: } sl@0: sl@0: //Edit Menu sl@0: if(aResourceId == R_MVS_EDIT_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue); sl@0: } sl@0: sl@0: //Settings menu sl@0: if(aResourceId == R_MVS_SETTINGS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse); sl@0: #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: TBool subAvail = iVideoPlayAgent->SubtitlesAvailable(); sl@0: aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, !subAvail); sl@0: aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, !subAvail); sl@0: #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: } sl@0: sl@0: //Controls menu sl@0: if(aResourceId == R_MVS_CONTROLS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdPlay,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdStop,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue); sl@0: } sl@0: } sl@0: else if(iState == EVideoPaused) sl@0: { sl@0: //File menu sl@0: if(aResourceId == R_MVS_FILE_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdOpen,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse); sl@0: } sl@0: sl@0: //Edit Menu sl@0: if(aResourceId == R_MVS_EDIT_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue); sl@0: } sl@0: sl@0: //Settings menu sl@0: if(aResourceId == R_MVS_SETTINGS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse); sl@0: #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: TBool subAvail = iVideoPlayAgent->SubtitlesAvailable(); sl@0: aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, !subAvail); sl@0: aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, !subAvail); sl@0: #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: } sl@0: sl@0: //Controls menu sl@0: if(aResourceId == R_MVS_CONTROLS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdPlay,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdStop,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue); sl@0: } sl@0: } sl@0: else if(iState == EVideoStopped) sl@0: { sl@0: //File menu sl@0: if(aResourceId == R_MVS_FILE_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdNew,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdOpen,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClose,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse); sl@0: } sl@0: sl@0: //Edit Menu sl@0: if(aResourceId == R_MVS_EDIT_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue); sl@0: } sl@0: sl@0: //Settings menu sl@0: if(aResourceId == R_MVS_SETTINGS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse); sl@0: #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: TBool subAvail = iVideoPlayAgent->SubtitlesAvailable(); sl@0: aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, !subAvail); sl@0: aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, !subAvail); sl@0: #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: } sl@0: sl@0: //Controls menu sl@0: if(aResourceId == R_MVS_CONTROLS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdPlay,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdStop,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue); sl@0: } sl@0: } sl@0: break; sl@0: sl@0: case (EIdle): sl@0: //File menu sl@0: if(aResourceId == R_MVS_FILE_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdNew,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdOpen,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClose,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSystemInfo,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdExit,EFalse); sl@0: } sl@0: sl@0: //Edit Menu sl@0: if(aResourceId == R_MVS_EDIT_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetCropWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdSetPlayWindow,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearPlayWindow,ETrue); sl@0: } sl@0: sl@0: //Settings menu > sl@0: if(aResourceId == R_MVS_SETTINGS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdAudioSetting,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSVideoCmdSettings,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdEditMetadata,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdMultiScreen,EFalse); sl@0: aMenuPane->SetItemDimmed(EMVSCmdClearLog,EFalse); sl@0: #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: aMenuPane->SetItemDimmed(EMVSCmdEnableSubtitles, ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdDisableSubtitles, ETrue); sl@0: #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT sl@0: } sl@0: sl@0: //Controls menu sl@0: if(aResourceId == R_MVS_CONTROLS_MENU) sl@0: { sl@0: aMenuPane->SetItemDimmed(EMVSCmdPlay,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdPause,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdStop,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRewind,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdFastForward,ETrue); sl@0: aMenuPane->SetItemDimmed(EMVSCmdRecord,ETrue); sl@0: } sl@0: break; sl@0: sl@0: default: sl@0: ASSERT(EFalse); sl@0: break; sl@0: } sl@0: } sl@0: sl@0: sl@0: void CMVSAppUi::InternalizeL(RReadStream& aStream) sl@0: { sl@0: iVolumeOrGain = aStream.ReadInt32L(); sl@0: iBalance = aStream.ReadInt32L(); sl@0: iNoRepeats = aStream.ReadInt32L(); sl@0: iRepeatDelay = aStream.ReadReal64L(); sl@0: } sl@0: sl@0: void CMVSAppUi::ExternalizeL(RWriteStream& aStream) sl@0: { sl@0: aStream.WriteInt32L(iVolumeOrGain); sl@0: aStream.WriteInt32L(iBalance); sl@0: aStream.WriteInt32L(iNoRepeats); sl@0: aStream.WriteReal64L(iRepeatDelay.Int64()); sl@0: } sl@0: sl@0: //Returns the selected controller plugin from the UI sl@0: void CMVSAppUi::SelectedPluginIdx(TInt aIdx) sl@0: { sl@0: iSelectedPluginIdx = aIdx; sl@0: } sl@0: sl@0: //Returns the selected Extension from the UI sl@0: void CMVSAppUi::SelectedExtension(TDesC16& aDes) sl@0: { sl@0: iControllerExt = aDes; sl@0: } sl@0: sl@0: sl@0: TInt CMVSAppUi::GetExtensionListL(CDesCArrayFlat* aExtArray, sl@0: TBool aMediaType) sl@0: { sl@0: return iPluginInfo->GetExtensionListL(aMediaType,aExtArray); sl@0: } sl@0: sl@0: sl@0: TInt CMVSAppUi::GetPluginListL(TInt8 aExtIdx,CDesCArrayFlat* aExtArray,CDesCArrayFlat* aPluginArray,TBool aMediaType) sl@0: { sl@0: iControllerExt.Copy(aExtArray->operator[](aExtIdx)); sl@0: iAudioUidArray.Reset(); sl@0: iAudioPlayUidArray.Reset(); sl@0: iVideoUidArray.Reset(); sl@0: if(!aMediaType) sl@0: { sl@0: return iPluginInfo->GetAudioPluginListL(aPluginArray,iAudioUidArray,iAudioPlayUidArray,&iControllerExt); sl@0: } sl@0: else sl@0: { sl@0: return iPluginInfo->GetVideoPluginListL(aPluginArray,iVideoUidArray,&iControllerExt); sl@0: } sl@0: } sl@0: sl@0: TInt CMVSAppUi::GetSystemInfoL(CDesCArrayFlat* aPluginArray) sl@0: { sl@0: return iPluginInfo->GetPluginListL(aPluginArray,iUidArray); sl@0: } sl@0: sl@0: //Returnd the selected media type, ie Audio or Video sl@0: void CMVSAppUi::SelectedMedia(TBool aMediaType) sl@0: { sl@0: iMediaType = aMediaType; sl@0: } sl@0: sl@0: sl@0: void CMVSAppUi::GetSupportedBitRatesL(RArray & aBitRateArray) sl@0: { sl@0: iAudioRecordAgent->GetSupportedBitRatesArrayL(aBitRateArray); sl@0: } sl@0: sl@0: void CMVSAppUi::GetSupportedSampleRatesArrayL(RArray& aSampleRatesArray) sl@0: { sl@0: iAudioRecordAgent->GetSupportedSampleRatesArrayL(aSampleRatesArray); sl@0: } sl@0: sl@0: void CMVSAppUi::GetSupportedNoChannelsArrayL(RArray& aNoChannelsArray) sl@0: { sl@0: iAudioRecordAgent->GetSupportedNoChannelsArrayL(aNoChannelsArray); sl@0: } sl@0: sl@0: void CMVSAppUi::GetSupportedCodecsArrayL(RArray& aCodecsArray) sl@0: { sl@0: iAudioRecordAgent->GetSupportedCodecsArrayL(aCodecsArray); sl@0: } sl@0: sl@0: void CMVSAppUi::GetSupportedFrameRatesL(RArray & aFrameRateArray) sl@0: { sl@0: iVideoRecordAgent->GetSupportedFrameRatesArrayL(aFrameRateArray); sl@0: } sl@0: sl@0: void CMVSAppUi::GetSupportedFrameSizeArrayL(RArray & aFrameSizeArray) sl@0: { sl@0: iVideoRecordAgent->GetSupportedFrameSizesArrayL(aFrameSizeArray); sl@0: } sl@0: sl@0: void CMVSAppUi::SetVideoFrameRateL(TReal32 aFrameRate) sl@0: { sl@0: TRAPD(err,iVideoRecordAgent->SetVideoFrameRateL(aFrameRate)); sl@0: if(err != KErrNone) sl@0: { sl@0: iLogger.Write(_L("SetVideoFrameRateL returned err")); sl@0: } sl@0: else sl@0: { sl@0: iVideoFrameRate = aFrameRate; sl@0: } sl@0: } sl@0: sl@0: void CMVSAppUi::SetVideoFrameSizeL(TSize aFrameSize) sl@0: { sl@0: TRAPD(err,iVideoRecordAgent->SetVideoFrameSizeL(aFrameSize)); sl@0: if(err != KErrNone) sl@0: { sl@0: iLogger.Write(_L("SetVideoFrameRateL returned err")); sl@0: } sl@0: else sl@0: { sl@0: iFrameSize = aFrameSize; sl@0: } sl@0: } sl@0: sl@0: void CMVSAppUi::SetAudioEnabledL(TBool aAudioEnabled) sl@0: { sl@0: iAudioEnabled = aAudioEnabled; sl@0: iVideoRecordAgent->SetAudioEnabledL(iAudioEnabled); sl@0: iLogger.Write(_L("Audio Enabled for Video")); sl@0: } sl@0: sl@0: void CMVSAppUi::GetSupportedVideoTypesL(CDesC8ArrayFlat& aMimeArray) sl@0: { sl@0: iVideoRecordAgent->GetSupportedVideoTypesL(aMimeArray); sl@0: } sl@0: sl@0: void CMVSAppUi::SetVideoTypeL(const TDesC8 &aType) sl@0: { sl@0: iVideoRecordAgent->SetVideoTypeL(aType); sl@0: } sl@0: sl@0: void CMVSAppUi::WriteAudioDataL(CMVSConfigAudioFormatDialog* aAudioFormatDlg, sl@0: const TUid& aUid) sl@0: { sl@0: iSettingManager->WriteAudioDataL(aAudioFormatDlg,aUid); sl@0: } sl@0: sl@0: void CMVSAppUi::WriteVideoDataL(CMVSConfigVideoFormatDialog* aVideoFormatDlg, sl@0: const TUid& aUid) sl@0: { sl@0: iSettingManager->WriteVideoDataL(aVideoFormatDlg,aUid); sl@0: } sl@0: sl@0: TReal32 CMVSAppUi::GetVideoFrameRateL() sl@0: { sl@0: if(iMode == EVideoRecord) sl@0: { sl@0: iVideoFrameRate=iVideoRecordAgent->VideoFrameRateL(); sl@0: } sl@0: else if(iMode == EVideoPlay) sl@0: { sl@0: iVideoFrameRate=iVideoPlayAgent->VideoFrameRateL(); sl@0: } sl@0: return iVideoFrameRate; sl@0: } sl@0: sl@0: TVideoRotation CMVSAppUi::GetRotationL() sl@0: { sl@0: iVideoRotation = iVideoPlayAgent->RotationL(); sl@0: return iVideoRotation; sl@0: } sl@0: sl@0: void CMVSAppUi::SetRotationL(TVideoRotation aRotation) sl@0: { sl@0: TRAPD(err, iVideoPlayAgent->SetRotationL(aRotation)); sl@0: if (err == KErrNotSupported) sl@0: { sl@0: User::InfoPrint(KNotsupported); sl@0: iLogger.Write(_L("Error,This feature not supported by the controller")); sl@0: } sl@0: else if (err == KErrNotReady) sl@0: { sl@0: iLogger.Write(_L("Error, Videoplayer not yet created in the agent")); sl@0: } sl@0: else sl@0: { sl@0: iRotation = aRotation; sl@0: } sl@0: } sl@0: sl@0: void CMVSAppUi::GetScaleFactorL(TReal32& aScaleWidth, TReal32& aScaleHeight, TBool& aAntiAliasFiltering) sl@0: { sl@0: TRAPD(err, iVideoPlayAgent->GetScaleFactorL(aScaleWidth, aScaleHeight, aAntiAliasFiltering)); sl@0: if (err == KErrNotSupported) sl@0: { sl@0: User::InfoPrint(KNotsupported); sl@0: } sl@0: else if (err == KErrNotReady) sl@0: { sl@0: iLogger.Write(_L("Error, Videoplayer not yet created in the agent")); sl@0: } sl@0: } sl@0: sl@0: void CMVSAppUi::SetScaleFactorL(TReal32 aScaleWidth,TReal32 aScaleHeight,TBool aAntiAliasFiltering) sl@0: { sl@0: TRAPD(err, iVideoPlayAgent->SetScaleFactorL(aScaleWidth,aScaleHeight,aAntiAliasFiltering)); sl@0: if (err == KErrNotSupported) sl@0: { sl@0: User::InfoPrint(KNotsupported); sl@0: } sl@0: else if (err == KErrNotReady) sl@0: { sl@0: iLogger.Write(_L("Error, Videoplayer not yet created in the agent")); sl@0: } sl@0: } sl@0: sl@0: void CMVSAppUi::SetCropRegionL(const TRect& aCropRegion) sl@0: { sl@0: TRAPD(err, iVideoPlayAgent->SetCropRegionL(aCropRegion)); sl@0: if (err == KErrNotSupported) sl@0: { sl@0: User::InfoPrint(KNotsupported); sl@0: } sl@0: else if (err == KErrNotReady) sl@0: { sl@0: iLogger.Write(_L("Error, Videoplayer not yet created in the agent")); sl@0: } sl@0: } sl@0: sl@0: void CMVSAppUi::GetCropRegionL(TRect& aCropRegion) sl@0: { sl@0: TRAPD(err, iVideoPlayAgent->GetCropRegionL(aCropRegion)); sl@0: if (err == KErrNotSupported) sl@0: { sl@0: User::InfoPrint(KNotsupported); sl@0: } sl@0: else if (err == KErrNotReady) sl@0: { sl@0: iLogger.Write(_L("Error, Videoplayer not yet created in the agent")); sl@0: } sl@0: } sl@0: sl@0: void CMVSAppUi::SetVideoExtent(const TRect& aVideoExtent) sl@0: { sl@0: TRAPD(err, iVideoPlayAgent->SetVideoExtentL(aVideoExtent)); sl@0: if (err != KErrNone) sl@0: { sl@0: TBuf<50> text; sl@0: text.AppendFormat(_L("SetVideoExtentL - %d"), err); sl@0: User::InfoPrint(text); sl@0: return; sl@0: } sl@0: iVideoExtentSet = ETrue; sl@0: iVideoExtent = aVideoExtent; sl@0: } sl@0: sl@0: void CMVSAppUi::SetWindowClippingRect(const TRect& aWindowClipRect) sl@0: { sl@0: TRAPD(err, iVideoPlayAgent->SetWindowClipRectL(aWindowClipRect)); sl@0: if (err != KErrNone) sl@0: { sl@0: TBuf<50> text; sl@0: text.AppendFormat(_L("SetWindowClippingRectL - %d"), err); sl@0: User::InfoPrint(text); sl@0: return; sl@0: } sl@0: sl@0: iWindowClipRectSet = ETrue; sl@0: iWindowClipRect = aWindowClipRect; sl@0: } sl@0: sl@0: void CMVSAppUi::SetOverlayTextL(const TDesC& aOverlayText) sl@0: { sl@0: iOverlayText.Close(); sl@0: iOverlayText.CreateL(aOverlayText); sl@0: sl@0: iAppView->iMainWindowControl->SetOverlayTextL(aOverlayText); sl@0: } sl@0: sl@0: const TDesC& CMVSAppUi::OverlayText() const sl@0: { sl@0: return iOverlayText; sl@0: } sl@0: sl@0: void CMVSAppUi::SetAutoScaleL(TAutoScaleType aScaleType, TInt aHorizPos, TInt aVertPos) sl@0: { sl@0: iVideoPlayAgent->SetAutoScaleL(aScaleType, aHorizPos, aVertPos); sl@0: iAutoScaleType = aScaleType; sl@0: iAutoScaleHorizPos = aHorizPos; sl@0: iAutoScaleVertPos = aVertPos; sl@0: } sl@0: sl@0: void CMVSAppUi::GetAutoScale(TAutoScaleType& aScaleType, TInt& aHorizPos, TInt& aVertPos) sl@0: { sl@0: aScaleType = iAutoScaleType; sl@0: aHorizPos = iAutoScaleHorizPos; sl@0: aVertPos = iAutoScaleVertPos; sl@0: } sl@0: sl@0: void CMVSAppUi::SetOutputScreen(TInt aScreenNumber) sl@0: { sl@0: iScreenNumber = aScreenNumber; sl@0: } sl@0: sl@0: void CMVSAppUi::RegisterForNotification(TBool aRegistered) sl@0: { sl@0: if(iRegistered) sl@0: { sl@0: iAlreadyRegistered = ETrue; sl@0: } sl@0: iRegistered = aRegistered; sl@0: if(iMode == EVideoPlay) sl@0: { sl@0: if(iRegistered && iAlreadyRegistered == EFalse) sl@0: { sl@0: TInt regerr = iVideoPlayAgent->RegisterForNotification(); sl@0: if(regerr == KErrNone) sl@0: { sl@0: User::InfoPrint(KRegisterSuccess); sl@0: } sl@0: else sl@0: { sl@0: User::InfoPrint(KRegisterFailure); sl@0: } sl@0: } sl@0: else if(iAlreadyRegistered && iRegistered == EFalse) sl@0: { sl@0: TInt cancelerr = iVideoPlayAgent->CancelNotification(); sl@0: if(cancelerr == KErrNone) sl@0: { sl@0: iAlreadyRegistered = EFalse; sl@0: User::InfoPrint(KRegisterCancelation); sl@0: } sl@0: else sl@0: { sl@0: User::InfoPrint(KCancelationFailure); sl@0: } sl@0: } sl@0: } sl@0: else if(iMode == EAudioPlay && iRegistered) sl@0: { sl@0: } sl@0: } sl@0: sl@0: void CMVSAppUi::SetPip(TBool aPip) sl@0: { sl@0: iPip = aPip; sl@0: } sl@0: sl@0: void CMVSAppUi::SetCrp(TBool aCrp) sl@0: { sl@0: iCrp = aCrp; sl@0: } sl@0: /* sl@0: UpdteDisplay(....) sl@0: Used to populate all the view windows,based sl@0: on the arguments passed this includes updating the time bar,the file name sl@0: and the state of the app. sl@0: */ sl@0: void CMVSAppUi::UpdateDisplayL(TMVSState aState) sl@0: { sl@0: TBuf disTime; sl@0: TFileName disFName; sl@0: TBuf<32> disState; sl@0: disTime.Append(iDisplayTime); sl@0: disFName.Append(iDisplayFName); sl@0: disState.Append(iDisplayState); sl@0: sl@0: iDisplayFName.Zero(); sl@0: iDisplayState.Zero(); sl@0: iDisplayTime.Zero(); sl@0: sl@0: switch(aState) sl@0: { sl@0: case(ENotReady): sl@0: iCoeEnv->ReadResourceL(iDisplayFName, R_NOFILE); sl@0: iCoeEnv->ReadResourceL(iDisplayState, R_IDLE); sl@0: iCoeEnv->ReadResourceL(iDisplayTime, R_ZEROTIME); sl@0: break; sl@0: case(EAudioOpened): sl@0: case(EVideoOpened): sl@0: if(iMode == EAudioPlay || iMode == EVideoPlay) sl@0: { sl@0: iDisplayFName.Append(iSrcFName); sl@0: } sl@0: if(iMode == EAudioRecord || iMode == EVideoRecord) sl@0: { sl@0: iDisplayFName.Append(iRecFName); sl@0: } sl@0: iCoeEnv->ReadResourceL(iDisplayState, R_OPEN); sl@0: break; sl@0: sl@0: case(EAudioStopped): sl@0: case(EVideoStopped): sl@0: if(iMode == EAudioPlay || iMode == EVideoPlay) sl@0: { sl@0: iDisplayFName.Append(iSrcFName); sl@0: } sl@0: if(iMode == EAudioRecord || iMode == EVideoRecord) sl@0: { sl@0: iDisplayFName.Append(iRecFName); sl@0: } sl@0: iCoeEnv->ReadResourceL(iDisplayState, R_READY); sl@0: break; sl@0: sl@0: case(EAudioPlaying): sl@0: case(EVideoPlaying): sl@0: if(iMode == EAudioPlay || iMode == EVideoPlay) sl@0: { sl@0: iDisplayFName.Append(iSrcFName); sl@0: } sl@0: if(iMode == EAudioRecord || iMode == EVideoRecord) sl@0: { sl@0: iDisplayFName.Append(iRecFName); sl@0: } sl@0: iCoeEnv->ReadResourceL(iDisplayState, R_PLAYING); sl@0: break; sl@0: sl@0: case(EAudioRecording): sl@0: iDisplayFName.Append(iRecFName); sl@0: iCoeEnv->ReadResourceL(iDisplayState, R_RECORDING); sl@0: ConvertTimeToDes(iAudioRecordAgent->Position(), iDisplayTime); sl@0: break; sl@0: sl@0: case(EVideoRecording): sl@0: iDisplayFName.Append(iRecFName); sl@0: iCoeEnv->ReadResourceL(iDisplayState, R_RECORDING); sl@0: ConvertTimeToDes(iVideoRecordAgent->DurationL(), iDisplayTime); sl@0: break; sl@0: sl@0: case(EAudioPaused): sl@0: case(EVideoPaused): sl@0: if(iMode == EAudioPlay || iMode == EVideoPlay) sl@0: { sl@0: iDisplayFName.Append(iSrcFName); sl@0: } sl@0: if(iMode == EAudioRecord || iMode == EVideoRecord) sl@0: { sl@0: iDisplayFName.Append(iRecFName); sl@0: } sl@0: iCoeEnv->ReadResourceL(iDisplayState, R_PAUSED); sl@0: break; sl@0: sl@0: default: sl@0: iCoeEnv->ReadResourceL(iDisplayFName, R_NOFILE); sl@0: iCoeEnv->ReadResourceL(iDisplayState, R_IDLE); sl@0: iCoeEnv->ReadResourceL(iDisplayTime, R_ZEROTIME); sl@0: break; sl@0: } sl@0: sl@0: if (iMode == EVideoPlay) sl@0: { sl@0: if (aState != EVideoPlaying && iVideoPlayAgent->SupportVideoPlayerUtility2() && iDisplayAdded) sl@0: { sl@0: iVideoCtl->Pip().Clear(); sl@0: PrepareVideoControlsL(); sl@0: } sl@0: } sl@0: sl@0: PopulateInfoWindowDataL(aState); sl@0: sl@0: if(disFName.CompareF(iDisplayFName) != 0) sl@0: { sl@0: iAppView->iStatusWindowFNameControl->SetTextL(iDisplayFName); sl@0: iAppView->iStatusWindowFNameControl->DrawNow(); sl@0: } sl@0: if(disTime.CompareF(iDisplayTime) != 0) sl@0: { sl@0: iAppView->iStatusWindowTimeControl->SetTextL(iDisplayTime); sl@0: iAppView->iStatusWindowTimeControl->DrawNow(); sl@0: } sl@0: if(disState.CompareF(iDisplayState) != 0) sl@0: { sl@0: iAppView->iStatusWindowStateControl->SetTextL(iDisplayState); sl@0: iAppView->iStatusWindowStateControl->DrawNow(); sl@0: } sl@0: sl@0: TBuf<256> dollarDes; sl@0: BuildDollarDesFromArrayL(dollarDes); sl@0: if(iDollarDes.CompareF(dollarDes) != 0) sl@0: { sl@0: iDollarDes.Zero(); sl@0: iDollarDes.Append(dollarDes); sl@0: iAppView->iInfoWindowControl->SetTextL(dollarDes); sl@0: iAppView->iInfoWindowControl->DrawNow(); sl@0: } sl@0: } sl@0: sl@0: sl@0: sl@0: // sl@0: //PopulateMainWindowData(...) ***TRAPPED ERRORS*** sl@0: // sl@0: // Adds data to the array used to hold playback or recording data sl@0: // such as the volume, cropping window and balance. This is then used to sl@0: // build a $$-separated descriptor which is sent to the view to be sl@0: // displayed as lines of text within the main window. sl@0: // sl@0: void CMVSAppUi::PopulateInfoWindowDataL(TMVSState aState) sl@0: { sl@0: TInt balance; sl@0: TBuf<256> infoBuf; sl@0: TBuf<75> welcome; sl@0: iCoeEnv->ReadResourceL(welcome, R_WELCOME); sl@0: sl@0: TBuf<32> format; sl@0: iCoeEnv->ReadResourceL(format, R_FORMAT); sl@0: sl@0: TBuf<10> left; sl@0: iCoeEnv->ReadResourceL(left, R_LEFT); sl@0: sl@0: TBuf<10> right; sl@0: iCoeEnv->ReadResourceL(right, R_RIGHT); sl@0: sl@0: TBuf<1> close; sl@0: iCoeEnv->ReadResourceL(close, R_CLOSE); sl@0: sl@0: TBuf<56> noCrop; sl@0: iCoeEnv->ReadResourceL(noCrop, R_NOCROP); sl@0: sl@0: TBuf center; sl@0: iCoeEnv->ReadResourceL(center, R_CENTER); sl@0: sl@0: TBuf volume; sl@0: iCoeEnv->ReadResourceL(volume, R_VOLUME); sl@0: sl@0: TBuf ramp; sl@0: iCoeEnv->ReadResourceL(ramp, R_RAMP); sl@0: sl@0: TBuf balanceDes; sl@0: iCoeEnv->ReadResourceL(balanceDes, R_BALANCE); sl@0: sl@0: TBuf cropStart; sl@0: iCoeEnv->ReadResourceL(cropStart, R_CROPSTART); sl@0: sl@0: TBuf cropEnd; sl@0: iCoeEnv->ReadResourceL(cropEnd, R_CROPEND); sl@0: sl@0: TBuf noRepeats; sl@0: iCoeEnv->ReadResourceL(noRepeats, R_NOREPEATS); sl@0: sl@0: TBuf<32> audioPriority; sl@0: iCoeEnv->ReadResourceL(audioPriority, R_AUDIOPRIORITY); sl@0: sl@0: TBuf gain; sl@0: iCoeEnv->ReadResourceL(gain, R_GAIN); sl@0: sl@0: TBuf clipLength; sl@0: iCoeEnv->ReadResourceL(clipLength, R_CLIPLENGTH); sl@0: sl@0: TBuf bitRate; sl@0: iCoeEnv->ReadResourceL(bitRate, R_BITRATE); sl@0: sl@0: TBuf sampleRate; sl@0: iCoeEnv->ReadResourceL(sampleRate, R_SAMPLERATE); sl@0: sl@0: TBuf channels; sl@0: iCoeEnv->ReadResourceL(channels,R_CHANNELS); sl@0: sl@0: TBuf AudioEnabled; sl@0: iCoeEnv->ReadResourceL(AudioEnabled, R_AUDIOENABLED); sl@0: sl@0: TBuf AudioNotEnabled; sl@0: iCoeEnv->ReadResourceL(AudioNotEnabled, R_AUDIONOTENABLED); sl@0: sl@0: _LIT(KPercent, "%"); sl@0: sl@0: TBuf clipLengthDes; sl@0: sl@0: //If the window text has anything in it, clear it out sl@0: if(iMainWindowText.Count() > 0) sl@0: { sl@0: iMainWindowText.Reset(); sl@0: } sl@0: TTimeIntervalMicroSeconds duration; sl@0: TInt64 clipLengthVal =0; sl@0: TUint bitrateValue = 0; sl@0: TInt frameHeight = 0; sl@0: TInt frameWidth = 0; sl@0: TInt frameRate = 0; sl@0: //Populate the array based on the current state sl@0: switch(aState) sl@0: { sl@0: //Idle, the main window is all but empty sl@0: case(ENotReady): sl@0: iMainWindowText.AppendL(welcome); sl@0: if(iButtons->IsCommandDimmed(EMVSCmdPause)) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdPause,EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: if(iButtons->IsCommandDimmed(EMVSCmdPlay)) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdPlay,EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: if(iButtons->IsCommandDimmed(EMVSCmdStop)) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdStop,EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: break; sl@0: sl@0: //Recording: show the gain, balance and crop window. sl@0: case(EAudioRecording): sl@0: if(iButtons->IsCommandDimmed(EMVSCmdStop)) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdStop,EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: infoBuf.Append(KAudioRecording); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(gain); sl@0: infoBuf.AppendNum(iVolumeOrGain); sl@0: infoBuf.Append(KPercent); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(balanceDes); sl@0: //Convert the balance to a number between 0 and 100 sl@0: iAudioRecordAgent->GetRecordBalance(iBalance); sl@0: balance = (iBalance/2) + 50; sl@0: //Translate this figure into 'Left', 'Right' or 'Center' sl@0: if(balance < 50) sl@0: { sl@0: infoBuf.Append(left); sl@0: infoBuf.AppendNum(balance); sl@0: infoBuf.Append(close); sl@0: } sl@0: else if(balance == 50) sl@0: { sl@0: infoBuf.Append(center); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.Append(right); sl@0: infoBuf.AppendNum(balance); sl@0: infoBuf.Append(close); sl@0: } sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(bitRate); sl@0: if(iBitRate == 0) sl@0: { sl@0: infoBuf.Append(KNotSupported); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.AppendNum(iBitRate); sl@0: } sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(sampleRate); sl@0: infoBuf.AppendNum(iSampleRate); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: if(iChannels == 1) sl@0: { sl@0: infoBuf.Append(channels); sl@0: infoBuf.Append(KMono); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: else if(iChannels == 2) sl@0: { sl@0: infoBuf.Append(channels); sl@0: infoBuf.Append(KStereo); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: break; sl@0: sl@0: case(EVideoRecording): sl@0: if(iButtons->IsCommandDimmed(EMVSCmdStop)) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdStop,EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: infoBuf.Append(KVideoRecording); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: if(iVideoRecordAgent->AudioEnabledL()) sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(gain); sl@0: infoBuf.AppendNum(iVolumeOrGain); sl@0: infoBuf.Append(KPercent); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioNotEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: infoBuf.Append(KFrameSize); sl@0: frameHeight = iFrameSize.iHeight; sl@0: frameWidth = iFrameSize.iWidth; sl@0: infoBuf.AppendNum(frameWidth); sl@0: infoBuf.Append(KComma); sl@0: infoBuf.AppendNum(frameHeight); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KFrameRate); sl@0: frameRate = TInt(iVideoFrameRate); sl@0: infoBuf.AppendNum(frameRate); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: break; sl@0: sl@0: //The default state displays all playback information such as sl@0: //Volume, balance, cropping points, audio priority & the number of sl@0: //repeats. sl@0: case(EAudioOpened): sl@0: if(iMode == EAudioPlay) sl@0: { sl@0: infoBuf.Append(volume); sl@0: } sl@0: if(iMode == EAudioRecord) sl@0: { sl@0: infoBuf.Append(KGain); sl@0: } sl@0: infoBuf.AppendNum(iVolumeOrGain); sl@0: infoBuf.Append(KPercent); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(balanceDes); sl@0: balance = (iBalance/2) + 50; sl@0: if(balance < 50) sl@0: { sl@0: infoBuf.Append(left); sl@0: infoBuf.AppendNum(balance); sl@0: infoBuf.Append(close); sl@0: } sl@0: else if(balance == 50) sl@0: { sl@0: infoBuf.Append(center); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.Append(right); sl@0: infoBuf.AppendNum(balance); sl@0: infoBuf.Append(close); sl@0: } sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(noRepeats); sl@0: infoBuf.AppendNum(iNoRepeats); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: //Audio Priority sl@0: infoBuf.Append(audioPriority); sl@0: infoBuf.AppendNum(iPriority); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KDuration); sl@0: if(iMode == EAudioPlay) sl@0: { sl@0: duration = iAudioPlayAgent->Duration(); sl@0: } sl@0: else if(iMode == EAudioRecord) sl@0: { sl@0: duration = iAudioRecordAgent->Duration(); sl@0: if(duration > 0) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdPlay,EFalse); sl@0: } sl@0: else sl@0: { sl@0: iButtons->DimCommand(EMVSCmdPlay,ETrue); sl@0: } sl@0: iButtons->DimCommand(EMVSCmdPause,ETrue); sl@0: iButtons->DimCommand(EMVSCmdStop,ETrue); sl@0: iButtons->DrawNow(); sl@0: } sl@0: clipLengthVal = duration.Int64(); sl@0: infoBuf.AppendNum(clipLengthVal); sl@0: infoBuf.Append(KMs); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KBitRate); sl@0: if(iMode == EAudioPlay) sl@0: { sl@0: iAudioPlayAgent->GetBitRate(bitrateValue); sl@0: infoBuf.AppendNum(bitrateValue); sl@0: } sl@0: else if(iMode == EAudioRecord) sl@0: { sl@0: if(iBitRate == 0) sl@0: { sl@0: infoBuf.Append(KNotSupported); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.AppendNum(iBitRate); sl@0: } sl@0: } sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: break; sl@0: sl@0: case(EAudioStopped): sl@0: infoBuf.Append(KStopped); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(volume); sl@0: infoBuf.AppendNum(iVolumeOrGain); sl@0: infoBuf.Append(KPercent); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(balanceDes); sl@0: balance = (iBalance/2) + 50; sl@0: if(balance < 50) sl@0: { sl@0: infoBuf.Append(left); sl@0: infoBuf.AppendNum(balance); sl@0: infoBuf.Append(close); sl@0: } sl@0: else if(balance == 50) sl@0: { sl@0: infoBuf.Append(center); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.Append(right); sl@0: infoBuf.AppendNum(balance); sl@0: infoBuf.Append(close); sl@0: } sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(noRepeats); sl@0: infoBuf.AppendNum(iNoRepeats); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: //Audio Priority sl@0: infoBuf.Append(audioPriority); sl@0: infoBuf.AppendNum(iPriority); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KDuration); sl@0: if(iMode == EAudioPlay) sl@0: { sl@0: duration = iAudioPlayAgent->Duration(); sl@0: } sl@0: else if(iMode == EAudioRecord) sl@0: { sl@0: duration = iAudioRecordAgent->Duration(); sl@0: } sl@0: clipLengthVal = duration.Int64(); sl@0: infoBuf.AppendNum(clipLengthVal); sl@0: infoBuf.Append(KMs); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KBitRate); sl@0: if(iMode == EAudioPlay) sl@0: { sl@0: iAudioPlayAgent->GetBitRate(bitrateValue); sl@0: infoBuf.AppendNum(bitrateValue); sl@0: } sl@0: else if(iMode == EAudioRecord) sl@0: { sl@0: if(iBitRate == 0) sl@0: { sl@0: infoBuf.Append(KNotSupported); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.AppendNum(iBitRate); sl@0: } sl@0: } sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: break; sl@0: sl@0: case(EAudioPlaying): sl@0: infoBuf.Append(KAudioPlaying); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(volume); sl@0: infoBuf.AppendNum(iVolumeOrGain); sl@0: infoBuf.Append(KPercent); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(balanceDes); sl@0: balance = (iBalance/2) + 50; sl@0: if(balance < 50) sl@0: { sl@0: infoBuf.Append(left); sl@0: infoBuf.AppendNum(balance); sl@0: infoBuf.Append(close); sl@0: } sl@0: else if(balance == 50) sl@0: { sl@0: infoBuf.Append(center); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.Append(right); sl@0: infoBuf.AppendNum(balance); sl@0: infoBuf.Append(close); sl@0: } sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(noRepeats); sl@0: infoBuf.AppendNum(iNoRepeats); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: //Audio Priority sl@0: infoBuf.Append(audioPriority); sl@0: infoBuf.AppendNum(iPriority); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KDuration); sl@0: if(iMode == EAudioPlay) sl@0: { sl@0: duration = iAudioPlayAgent->Duration(); sl@0: } sl@0: else if(iMode == EAudioRecord) sl@0: { sl@0: duration = iAudioRecordAgent->Duration(); sl@0: } sl@0: clipLengthVal = duration.Int64(); sl@0: infoBuf.AppendNum(clipLengthVal); sl@0: infoBuf.Append(KMs); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KBitRate); sl@0: if(iMode == EAudioPlay) sl@0: { sl@0: iAudioPlayAgent->GetBitRate(bitrateValue); sl@0: infoBuf.AppendNum(bitrateValue); sl@0: } sl@0: else if(iMode == EAudioRecord) sl@0: { sl@0: if(iBitRate == 0) sl@0: { sl@0: infoBuf.Append(KNotSupported); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.AppendNum(iBitRate); sl@0: } sl@0: } sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: break; sl@0: sl@0: case(EAudioPaused): sl@0: infoBuf.Append(KPaused); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(volume); sl@0: infoBuf.AppendNum(iVolumeOrGain); sl@0: infoBuf.Append(KPercent); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(balanceDes); sl@0: balance = (iBalance/2) + 50; sl@0: if(balance < 50) sl@0: { sl@0: infoBuf.Append(left); sl@0: infoBuf.AppendNum(balance); sl@0: infoBuf.Append(close); sl@0: } sl@0: else if(balance == 50) sl@0: { sl@0: infoBuf.Append(center); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.Append(right); sl@0: infoBuf.AppendNum(balance); sl@0: infoBuf.Append(close); sl@0: } sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(noRepeats); sl@0: infoBuf.AppendNum(iNoRepeats); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: //Audio Priority sl@0: infoBuf.Append(audioPriority); sl@0: infoBuf.AppendNum(iPriority); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KDuration); sl@0: if(iMode == EAudioPlay) sl@0: { sl@0: duration = iAudioPlayAgent->Duration(); sl@0: } sl@0: else if(iMode == EAudioRecord) sl@0: { sl@0: duration = iAudioRecordAgent->Duration(); sl@0: } sl@0: clipLengthVal = duration.Int64(); sl@0: infoBuf.AppendNum(clipLengthVal); sl@0: infoBuf.Append(KMs); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KBitRate); sl@0: if(iMode == EAudioPlay) sl@0: { sl@0: iAudioPlayAgent->GetBitRate(bitrateValue); sl@0: infoBuf.AppendNum(bitrateValue); sl@0: } sl@0: else if(iMode == EAudioRecord) sl@0: { sl@0: if(iBitRate == 0) sl@0: { sl@0: infoBuf.Append(KNotSupported); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.AppendNum(iBitRate); sl@0: } sl@0: } sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: break; sl@0: sl@0: case(EVideoOpened): sl@0: if(iMode == EVideoPlay) sl@0: { sl@0: infoBuf.Append(KVideoOpened); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: if(iVideoPlayAgent->AudioEnabledL()) sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(volume); sl@0: infoBuf.AppendNum(iVolumeOrGain); sl@0: infoBuf.Append(KPercent); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: if(iButtons->IsCommandDimmed(EMVSCmdSetVolume)) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdSetVolume,EFalse); sl@0: iButtons->DrawNow(); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioNotEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: infoBuf.Append(KDuration); sl@0: duration = iVideoPlayAgent->DurationL(); sl@0: clipLengthVal = duration.Int64(); sl@0: infoBuf.AppendNum(clipLengthVal); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: iVideoPlayAgent->VideoFrameSizeL(iFrameSize); sl@0: frameHeight = iFrameSize.iHeight; sl@0: frameWidth = iFrameSize.iWidth; sl@0: infoBuf.Append(KFrameSize); sl@0: infoBuf.AppendNum(frameWidth); sl@0: infoBuf.Append(KComma); sl@0: infoBuf.AppendNum(frameHeight); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: iVideoFrameRate = GetVideoFrameRateL(); sl@0: } sl@0: else if(iMode == EVideoRecord) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdPlay,ETrue); sl@0: iButtons->DimCommand(EMVSCmdPause,ETrue); sl@0: iButtons->DimCommand(EMVSCmdStop,ETrue); sl@0: iButtons->DrawNow(); sl@0: infoBuf.Append(KVideoOpenedForRecord); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: if(iVideoRecordAgent->AudioEnabledL()) sl@0: { sl@0: iButtons->DimCommand(EMVSCmdSetVolume, EFalse); sl@0: iButtons->DrawNow(); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(gain); sl@0: infoBuf.AppendNum(iVolumeOrGain); sl@0: infoBuf.Append(KPercent); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioNotEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: infoBuf.Append(KFrameSize); sl@0: frameHeight =iFrameSize.iHeight; sl@0: frameWidth =iFrameSize.iWidth; sl@0: infoBuf.AppendNum(frameWidth); sl@0: infoBuf.Append(KComma); sl@0: infoBuf.AppendNum(frameHeight); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KFrameRate); sl@0: frameRate = TInt(iVideoFrameRate); sl@0: infoBuf.AppendNum(frameRate); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: break; sl@0: sl@0: case(EVideoPlaying): sl@0: infoBuf.Append(KVideoPlaying); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: if( iVideoPlayAgent->AudioEnabledL()) sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(volume); sl@0: infoBuf.AppendNum(iVolumeOrGain); sl@0: infoBuf.Append(KPercent); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioNotEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: infoBuf.Append(KDuration); sl@0: duration = iVideoPlayAgent->DurationL(); sl@0: clipLengthVal = duration.Int64(); sl@0: infoBuf.AppendNum(clipLengthVal); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: iVideoPlayAgent->VideoFrameSizeL(iFrameSize); sl@0: frameHeight = iFrameSize.iHeight; sl@0: frameWidth = iFrameSize.iWidth; sl@0: infoBuf.Append(KFrameSize); sl@0: infoBuf.AppendNum(frameWidth); sl@0: infoBuf.Append(KComma); sl@0: infoBuf.AppendNum(frameHeight); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KFrameRate); sl@0: iVideoFrameRate = GetVideoFrameRateL(); sl@0: frameRate = TInt(iVideoFrameRate); sl@0: infoBuf.AppendNum(frameRate); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: break; sl@0: sl@0: case(EVideoPaused): sl@0: infoBuf.Append(KPaused); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: if(iMode == EVideoRecord) sl@0: { sl@0: if(iVideoRecordAgent->AudioEnabledL()) sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioNotEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: infoBuf.Append(KDuration); sl@0: duration = iVideoRecordAgent->DurationL(); sl@0: clipLengthVal = duration.Int64(); sl@0: infoBuf.AppendNum(clipLengthVal); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: sl@0: } sl@0: if(iMode == EVideoPlay) sl@0: { sl@0: if(iVideoPlayAgent->AudioEnabledL()) sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(volume); sl@0: infoBuf.AppendNum(iVolumeOrGain); sl@0: infoBuf.Append(KPercent); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioNotEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: infoBuf.Append(KDuration); sl@0: duration = iVideoPlayAgent->DurationL(); sl@0: clipLengthVal = duration.Int64(); sl@0: infoBuf.AppendNum(clipLengthVal); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: iVideoPlayAgent->VideoFrameSizeL(iFrameSize); sl@0: frameHeight = iFrameSize.iHeight; sl@0: frameWidth = iFrameSize.iWidth; sl@0: infoBuf.Append(KFrameSize); sl@0: infoBuf.AppendNum(frameWidth); sl@0: infoBuf.Append(KComma); sl@0: infoBuf.AppendNum(frameHeight); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KFrameRate); sl@0: iVideoFrameRate = GetVideoFrameRateL(); sl@0: frameRate = TInt(iVideoFrameRate); sl@0: infoBuf.AppendNum(frameRate); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: break; sl@0: sl@0: case(EVideoStopped): sl@0: infoBuf.Append(KStopped); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: if(iMode == EVideoPlay) sl@0: { sl@0: if(iVideoPlayAgent->AudioEnabledL()) sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(volume); sl@0: infoBuf.AppendNum(iVolumeOrGain); sl@0: infoBuf.Append(KPercent); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioNotEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: infoBuf.Append(KDuration); sl@0: duration = iVideoPlayAgent->DurationL(); sl@0: clipLengthVal = duration.Int64(); sl@0: infoBuf.AppendNum(clipLengthVal); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: iVideoPlayAgent->VideoFrameSizeL(iFrameSize); sl@0: frameHeight = iFrameSize.iHeight; sl@0: frameWidth = iFrameSize.iWidth; sl@0: infoBuf.Append(KFrameSize); sl@0: infoBuf.AppendNum(frameWidth); sl@0: infoBuf.Append(KComma); sl@0: infoBuf.AppendNum(frameHeight); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: iVideoFrameRate = GetVideoFrameRateL(); sl@0: } sl@0: else if(iMode == EVideoRecord) sl@0: { sl@0: if(iVideoRecordAgent->AudioEnabledL()) sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(gain); sl@0: infoBuf.AppendNum(iVolumeOrGain); sl@0: infoBuf.Append(KPercent); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: } sl@0: else sl@0: { sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(AudioNotEnabled); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KDuration); sl@0: duration = iVideoRecordAgent->DurationL(); sl@0: clipLengthVal = duration.Int64(); sl@0: infoBuf.AppendNum(clipLengthVal); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KFrameSize); sl@0: frameHeight =iFrameSize.iHeight; sl@0: frameWidth =iFrameSize.iWidth; sl@0: infoBuf.AppendNum(frameWidth); sl@0: infoBuf.Append(KComma); sl@0: infoBuf.AppendNum(frameHeight); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: } sl@0: infoBuf.Zero(); sl@0: infoBuf.Append(KFrameRate); sl@0: frameRate = TInt(iVideoFrameRate); sl@0: infoBuf.AppendNum(frameRate); sl@0: iMainWindowText.AppendL(infoBuf); sl@0: infoBuf.Zero(); sl@0: break; sl@0: } sl@0: TInt clipLen = I64INT(clipLengthVal); sl@0: iAppView->SetClipLength(clipLen); sl@0: } sl@0: sl@0: void CMVSAppUi::BuildDollarDesFromArrayL(TDes& aDollarDes) sl@0: { sl@0: //take the CDesCArrayFlat and build a dollar separated descriptor sl@0: TInt counter; sl@0: TBuf<2> dollar; sl@0: for(counter = 0; counter < iMainWindowText.Count(); ++counter) sl@0: { sl@0: aDollarDes.Append(iMainWindowText[counter]); sl@0: iCoeEnv->ReadResourceL(dollar, R_DOLLARDOLLAR); sl@0: aDollarDes.Append(dollar); sl@0: } sl@0: return; sl@0: } sl@0: sl@0: // sl@0: //ConvertTimeToDes(...) sl@0: // sl@0: // Converts the time to a descriptor for display purposes. The display is sl@0: // in the format HH:MM:SS:SS. sl@0: // sl@0: void CMVSAppUi::ConvertTimeToDes(TTimeIntervalMicroSeconds aPosition, sl@0: TDes& aDes) sl@0: { sl@0: _LIT(KColon, ":"); sl@0: _LIT(KZeroDes, "0"); sl@0: RArray addZero; //array to record whether we need to append a '0' sl@0: //to each value in the times array. sl@0: RArray times; //The array of times, stored hour, minute, second... sl@0: sl@0: TInt64 milliseconds = I64INT(aPosition.Int64())/1000; sl@0: TInt seconds = milliseconds/1000; sl@0: milliseconds = milliseconds - (seconds * 1000); sl@0: sl@0: TInt hundreds = milliseconds/10; //hundreds of seconds sl@0: sl@0: TInt minutes = seconds/60; sl@0: seconds = seconds - minutes*60; //seconds sl@0: sl@0: TInt hours = minutes/60; //hours sl@0: minutes = minutes - hours*60; //minutes sl@0: sl@0: times.Append(hours); sl@0: times.Append(minutes); sl@0: times.Append(seconds); sl@0: times.Append(hundreds); //fill the array sl@0: sl@0: TBuf<256> timeDes; //descriptor holding each element of the times array sl@0: //in turn. sl@0: sl@0: TInt counter = 0; //counter sl@0: for(counter = 0; counter < 4; ++counter) sl@0: { sl@0: timeDes.Zero(); sl@0: timeDes.AppendNum(times[counter]); sl@0: sl@0: if(timeDes.Length() == 1) sl@0: { sl@0: //If the time value is a single digit, we need to add a '0' sl@0: addZero.Append(1); sl@0: } sl@0: else sl@0: { sl@0: //Otherwise, we do not. sl@0: addZero.Append(0); sl@0: } sl@0: } sl@0: sl@0: //Add zeros where required. sl@0: if(addZero[0]) sl@0: aDes.Append(KZeroDes); sl@0: aDes.AppendNum(hours); sl@0: aDes.Append(KColon); sl@0: if(addZero[1]) sl@0: aDes.Append(KZeroDes); sl@0: aDes.AppendNum(minutes); sl@0: aDes.Append(KColon); sl@0: if(addZero[2]) sl@0: aDes.Append(KZeroDes); sl@0: aDes.AppendNum(seconds); sl@0: aDes.Append(KColon); sl@0: if(addZero[3]) sl@0: aDes.Append(KZeroDes); sl@0: aDes.AppendNum(hundreds); sl@0: sl@0: //Close the RArrays and return sl@0: addZero.Close(); sl@0: times.Close(); sl@0: return; sl@0: } sl@0: sl@0: // sl@0: //UpdatePositionViewL() sl@0: // sl@0: // Updates the view if the state is recording or playing. Otherwise, this is sl@0: // unnecessary. sl@0: // sl@0: void CMVSAppUi::UpdatePositionViewL() sl@0: { sl@0: TBuf<64> dispStr1; sl@0: TBuf<256> temp; sl@0: TInt64 currentposition = 0; sl@0: if(iState == EAudioRecording || iState == EAudioPlaying || iState == EVideoRecording sl@0: || iState == EVideoPlaying || iState == EAudioPaused || iState == EVideoPaused sl@0: || iState == EVideoStopped || iState == EAudioStopped) sl@0: { sl@0: iDisplayTime.Zero(); sl@0: if(iMode==EAudioRecord) sl@0: { sl@0: TBuf<64> dispStr2; sl@0: TBuf<32> recTimeLeft; sl@0: TTimeIntervalMicroSeconds timeLeft = iAudioRecordAgent->RecordTimeAvailable(); sl@0: if(iRecordLimitSet && iState == EAudioRecording) sl@0: { sl@0: ConvertTimeToDes(timeLeft, recTimeLeft); sl@0: dispStr2.Copy(_L("Time Left:")); sl@0: dispStr2.Append(recTimeLeft); sl@0: iAppView->iStatusWindowTimeControl->SetText2L(dispStr2); sl@0: dispStr1.Copy(_L("Rec. Time:")); sl@0: } sl@0: } sl@0: if(iMode==EAudioRecord && iState==EAudioRecording) sl@0: { sl@0: iClipLength = iAudioRecordAgent->Duration(); sl@0: iTimeElapsed = iAudioRecordAgent->Position(); sl@0: TInt64 duration = iClipLength.Int64(); sl@0: TInt64 position = iTimeElapsed.Int64(); sl@0: currentposition = duration + position; sl@0: iTimeElapsed = TTimeIntervalMicroSeconds(currentposition); sl@0: } sl@0: else if(iMode==EAudioRecord && iState==EAudioPlaying) sl@0: { sl@0: iTimeElapsed=iAudioRecordAgent->Position(); sl@0: iAppView->UpdatePlayProgress(iTimeElapsed); sl@0: } sl@0: else if(iMode==EAudioPlay) sl@0: { sl@0: iAudioPlayAgent->GetPosition(iTimeElapsed); sl@0: iAppView->UpdatePlayProgress(iTimeElapsed); sl@0: } sl@0: else if(iMode==EVideoPlay) sl@0: { sl@0: iTimeElapsed = iVideoPlayAgent->PositionL(); sl@0: } sl@0: else if(iMode==EVideoRecord) sl@0: { sl@0: iTimeElapsed = iVideoRecordAgent->DurationL(); sl@0: } sl@0: temp.AppendNum(currentposition); sl@0: sl@0: ConvertTimeToDes(iTimeElapsed, iDisplayTime); sl@0: dispStr1.Append(iDisplayTime); sl@0: iAppView->iStatusWindowTimeControl->SetTextL(dispStr1); sl@0: iAppView->iStatusWindowTimeControl->DrawNow(); sl@0: } sl@0: } sl@0: sl@0: sl@0: void CMVSAppUi::SetMaxFileSize(TInt& aVal) sl@0: { sl@0: if(aVal>0) sl@0: { sl@0: iRecordLimitSet = ETrue; sl@0: iAudioRecordAgent->SetMaxWriteLength(aVal); sl@0: } sl@0: else sl@0: { sl@0: iRecordLimitSet = EFalse; sl@0: iAudioRecordAgent->SetMaxWriteLength(aVal); sl@0: TRAP_IGNORE(iAppView->iStatusWindowTimeControl->ResetText2L()); sl@0: } sl@0: } sl@0: sl@0: //Handling the errors and logging it to the sl@0: //log file sl@0: void CMVSAppUi::LogErrors(TInt aError) sl@0: { sl@0: TBuf erorrDes; sl@0: CEikonEnv::Static()->GetErrorText(erorrDes,aError); sl@0: CEikonEnv::Static()->AlertWin(erorrDes); sl@0: iLogger.Write(erorrDes); sl@0: } sl@0: sl@0: sl@0: void CMVSAppUi::DetermineFinalFNameL() sl@0: { sl@0: //check whether the extension and the controller sl@0: //has been selected or not.If not selected proceed sl@0: //to the next dialog, nothing to be appended here to sl@0: //the filename.Else append the selected extension to sl@0: //the filename. sl@0: if(iSelectedPluginIdx == KControllerNotSelected) sl@0: { sl@0: iProceed = ETrue; sl@0: } sl@0: TFileName givenExt; sl@0: TParsePtr parser(iDestFilename); sl@0: TPtrC extensionval = parser.Ext(); sl@0: if(extensionval.Length() == 0) sl@0: { sl@0: iDestFilename.Append(iControllerExt); sl@0: iProceed = ETrue; sl@0: return; sl@0: } sl@0: else sl@0: { sl@0: //If the extension is too long, report an error. sl@0: if(extensionval.Length() > 4) sl@0: { sl@0: _LIT(KExtTooLong, "Extension TOO long"); sl@0: User::InfoPrint(KExtTooLong); sl@0: iProceed = EFalse; sl@0: } sl@0: sl@0: //Otherwise record the extension given in the filename sl@0: if(extensionval.CompareF(iControllerExt)==0) sl@0: { sl@0: iProceed = ETrue; sl@0: return; sl@0: } sl@0: sl@0: //Otherwise, append the right extension to the filename and return. sl@0: else sl@0: { sl@0: _LIT(KWrongExt, "Wrong Extension"); sl@0: _LIT(KWrongExtBody, "Extension mismatch,Please re-enter"); sl@0: CEikonEnv::Static()->InfoWinL(KWrongExt, KWrongExtBody); sl@0: SaveAsDialogL(); sl@0: iProceed = EFalse; sl@0: } sl@0: } sl@0: } sl@0: sl@0: TPoint CMVSAppUi::DrawBorders(const TSize& aSize) const sl@0: { sl@0: CWindowGc& gc = iAppView->iMainWindowControl->SystemGc(); sl@0: gc.Activate(iAppView->iMainWindowControl->ControlWindow()); sl@0: TRect rect(iAppView->iMainWindowControl->Size()); sl@0: TPoint pos( rect.iTl.iX + rect.Width()/2 - aSize.iWidth/2, sl@0: rect.iTl.iY + rect.Height()/2 - aSize.iHeight/2); sl@0: TRect drawRect(pos,aSize); sl@0: gc.SetPenColor(KRgbBlack); sl@0: drawRect.Grow(1,1); sl@0: gc.DrawRect(drawRect); sl@0: gc.Deactivate(); sl@0: iAppView->iMainWindowControl->ControlEnv()->WsSession().Flush(); sl@0: return pos; sl@0: } sl@0: sl@0: void CMVSAppUi::StopViewFinder() sl@0: { sl@0: if(!iVideoRecordAgent) sl@0: { sl@0: return; sl@0: } sl@0: CCamera *camera = iVideoRecordAgent->Camera(); sl@0: if (camera->ViewFinderActive()) sl@0: { sl@0: camera->StopViewFinder(); sl@0: iAppView->iMainWindowControl->DrawNow(); sl@0: } sl@0: }