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 "MVSConfigVideoFormatDialog.h" sl@0: #include "MVSApp.hrh" sl@0: #include sl@0: sl@0: #include "MVSAppUI.h" sl@0: sl@0: void CMVSConfigVideoFormatDialog::SetupDialogLD(CMVSAppUi* aAppUi,TUid aControllerId,CSettingsManager* aSettingsManager) sl@0: { sl@0: CMVSConfigVideoFormatDialog* dialog = new (ELeave) CMVSConfigVideoFormatDialog(aAppUi,aControllerId); sl@0: CleanupStack::PushL(dialog); sl@0: dialog->ConstructL(); sl@0: aSettingsManager->ReadVideoDataL(dialog,aControllerId); sl@0: CleanupStack::Pop(dialog); sl@0: dialog->ExecuteLD(R_MVS_DIALOG_VIDEOPLUGINS); sl@0: } sl@0: sl@0: sl@0: void CMVSConfigVideoFormatDialog::ConstructL() sl@0: { sl@0: iMimeTypeArray = new(ELeave) CDesC8ArrayFlat(8); sl@0: iArrFrameRate = new(ELeave) CDesCArrayFlat(8); sl@0: iArrFrameSize = new(ELeave) CDesCArrayFlat(8); sl@0: iArrVideoMimeType = new(ELeave) CDesCArrayFlat(8); sl@0: } sl@0: sl@0: void CMVSConfigVideoFormatDialog::PreLayoutDynInitL() sl@0: { sl@0: CEikChoiceList* frameRateCtl = static_cast(Control(EMVSCmdSelectVideoFrameRate)); sl@0: sl@0: CEikChoiceList* frameSizeCtl = static_cast(Control(EMVSCmdSelectVideoFrameSize)); sl@0: sl@0: CEikChoiceList* mimeTypeCtl = static_cast(Control(EMVSCmdSelectVideoMimeCodec)); sl@0: sl@0: CEikCheckBox* restoresettings = static_cast(Control(EMVSRestoreVideoSettings)); sl@0: sl@0: CEikCheckBox* audioenable = static_cast(Control(EMVSEnableAudio)); sl@0: sl@0: TBuf<10> td; sl@0: TBuf<20> sd; sl@0: TInt err = 0; sl@0: CDesCArray* tempArray = NULL; sl@0: if(frameRateCtl) sl@0: { sl@0: frameRateCtl->SetArrayL(iArrFrameRate); sl@0: frameRateCtl->SetArrayExternalOwnership(ETrue); sl@0: tempArray = frameRateCtl->DesCArray(); sl@0: //get supported frame rates sl@0: TRAP(err,iAppUi->GetSupportedFrameRatesL(iFrameRateArray)); sl@0: if(err == KErrNotSupported) sl@0: { sl@0: _LIT(KFrameRateSupport, "Frame Rates not supported"); sl@0: User::InfoPrint(KFrameRateSupport); sl@0: iFrameRateIdx = -1; sl@0: } sl@0: else sl@0: { sl@0: //copy from array to CDescCArray sl@0: iFrameRateIdx = 0; sl@0: for(TInt i = 0; i < iFrameRateArray.Count();i++) sl@0: { sl@0: td.Num(iFrameRateArray[i]); sl@0: tempArray->AppendL(td); sl@0: } sl@0: } sl@0: } sl@0: sl@0: if(frameSizeCtl) sl@0: { sl@0: _LIT(comma,","); sl@0: frameSizeCtl->SetArrayL(iArrFrameSize); sl@0: frameSizeCtl->SetArrayExternalOwnership(ETrue); sl@0: tempArray = frameSizeCtl->DesCArray(); sl@0: //get supported sample rates sl@0: TRAP(err,iAppUi->GetSupportedFrameSizeArrayL(iFrameSizeArray)); sl@0: if(err == KErrNotSupported) sl@0: { sl@0: _LIT(KSampleRateSupport, "Sample rates not supported"); sl@0: User::InfoPrint(KSampleRateSupport); sl@0: iFrameSizeIdx = -1; sl@0: } sl@0: else sl@0: { sl@0: //copy from array to CDescCArray sl@0: iFrameSizeIdx = 0; sl@0: for(TInt i = 0; i < iFrameSizeArray.Count();i++) sl@0: { sl@0: //code to append both TWidth and THeight into single cell of the Array sl@0: TSize temp=iFrameSizeArray[i]; sl@0: TInt width=temp.iWidth; sl@0: TInt height=temp.iHeight; sl@0: td.Num(width); sl@0: TInt8 size=td.Length()+1; sl@0: sd.Insert(0,td); sl@0: sd.Append(comma); sl@0: td.Num(height); sl@0: sd.Append(td); sl@0: tempArray->AppendL(sd); sl@0: td.Delete(0,size+5);//the Delete()function adjusts this value to ensure that no data sl@0: sd.Delete(0,size+5);//beyond the end of the descriptor data area is deleted. sl@0: } sl@0: } sl@0: } sl@0: sl@0: if(mimeTypeCtl) sl@0: { sl@0: //get supported frame rates sl@0: mimeTypeCtl->SetArrayL(iArrVideoMimeType); sl@0: mimeTypeCtl->SetArrayExternalOwnership(ETrue); sl@0: TRAP(err,iAppUi->GetSupportedVideoTypesL(*iMimeTypeArray)); sl@0: TInt counter=iMimeTypeArray->Count(); sl@0: for(TInt i=0; i temp; sl@0: temp.Copy(iMimeTypeArray->MdcaPoint(i)); sl@0: iArrVideoMimeType->AppendL(temp); sl@0: } sl@0: if(err == KErrNotSupported) sl@0: { sl@0: _LIT(KFrameRateSupport, "Frame Rates not supported"); sl@0: User::InfoPrint(KFrameRateSupport); sl@0: } sl@0: } sl@0: sl@0: if(restoresettings) sl@0: { sl@0: iSettings = restoresettings; sl@0: restoresettings->SetObserver(this); sl@0: } sl@0: if(audioenable) sl@0: { sl@0: iAudioEnableCtl = audioenable; sl@0: iAudioEnable = EFalse; sl@0: audioenable->SetObserver(this); sl@0: } sl@0: } sl@0: sl@0: sl@0: CMVSConfigVideoFormatDialog::CMVSConfigVideoFormatDialog(CMVSAppUi* aAppUi,TUid aControllerId) sl@0: :iContollerUid(aControllerId) , iAppUi(aAppUi) sl@0: { sl@0: } sl@0: sl@0: sl@0: TKeyResponse CMVSConfigVideoFormatDialog::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType) sl@0: { sl@0: if(aKeyEvent.iCode == EKeyEnter && aType == EEventKeyDown) sl@0: { sl@0: OkToExitL(EMVSButtonUpdate); sl@0: } sl@0: return CEikDialog::OfferKeyEventL(aKeyEvent,aType); sl@0: } sl@0: sl@0: sl@0: TBool CMVSConfigVideoFormatDialog::OkToExitL(TInt aButtonId) sl@0: { sl@0: if(aButtonId == EMVSButtonCancel) sl@0: { sl@0: return ETrue; sl@0: } sl@0: CEikChoiceList* frameRateCtl = static_cast(Control(EMVSCmdSelectVideoFrameRate)); sl@0: sl@0: CEikChoiceList* frameSizeCtl = static_cast(Control(EMVSCmdSelectVideoFrameSize)); sl@0: sl@0: CEikChoiceList* mimeTypeCtl = static_cast(Control(EMVSCmdSelectVideoMimeCodec)); sl@0: sl@0: if(frameRateCtl && frameSizeCtl && mimeTypeCtl) sl@0: { sl@0: if(iFrameRateIdx != -1) sl@0: { sl@0: iFrameRateIdx = frameRateCtl->CurrentItem(); sl@0: } sl@0: if(iFrameSizeIdx != -1) sl@0: { sl@0: iFrameSizeIdx = frameSizeCtl->CurrentItem(); sl@0: } sl@0: iMimeTypeIdx = mimeTypeCtl->CurrentItem(); sl@0: iAppUi->WriteVideoDataL(this,iContollerUid); sl@0: } sl@0: if(aButtonId == EMVSButtonUpdate) sl@0: { sl@0: if(iFrameRateIdx >= 0) sl@0: { sl@0: iAppUi->SetVideoFrameRateL(iFrameRateArray[iFrameRateIdx]); sl@0: } sl@0: if(iFrameSizeIdx >= 0) sl@0: { sl@0: iAppUi->SetVideoFrameSizeL(iFrameSizeArray[iFrameSizeIdx]); sl@0: } sl@0: if(iAudioEnable) sl@0: { sl@0: iAppUi->SetAudioEnabledL(iAudioEnable); sl@0: } sl@0: if(iMimeTypeIdx) sl@0: { sl@0: iAppUi->SetVideoTypeL((*iMimeTypeArray)[iMimeTypeIdx]); sl@0: } sl@0: } sl@0: return ETrue; sl@0: } sl@0: sl@0: sl@0: void CMVSConfigVideoFormatDialog::InternalizeL(RReadStream& aStream) sl@0: { sl@0: iFrameRateIdx = aStream.ReadInt8L(); sl@0: iFrameSizeIdx = aStream.ReadInt8L(); sl@0: } sl@0: sl@0: sl@0: void CMVSConfigVideoFormatDialog::ExternalizeL(RWriteStream& aStream) sl@0: { sl@0: aStream.WriteInt8L(iFrameRateIdx); sl@0: aStream.WriteInt8L(iFrameSizeIdx); sl@0: } sl@0: sl@0: void CMVSConfigVideoFormatDialog::HandleControlEventL(CCoeControl *aControl, TCoeEvent aEventType) sl@0: { sl@0: CEikChoiceList* frameRateCtl = static_cast(Control(EMVSCmdSelectVideoFrameRate)); sl@0: sl@0: CEikChoiceList* frameSizeCtl = static_cast(Control(EMVSCmdSelectVideoFrameSize)); sl@0: sl@0: CEikDialog::HandleControlEventL(aControl,aEventType); sl@0: if(frameRateCtl && frameSizeCtl) sl@0: { sl@0: if(iSettings == aControl && aEventType == EEventStateChanged) sl@0: { sl@0: if(iRestoreSettings == EFalse) sl@0: { sl@0: iRestoreSettings = ETrue; sl@0: } sl@0: else sl@0: { sl@0: iRestoreSettings = EFalse; sl@0: } sl@0: if(iRestoreSettings) sl@0: { sl@0: if(iFrameRateIdx>0) sl@0: { sl@0: frameRateCtl->SetCurrentItem(iFrameRateIdx); sl@0: frameRateCtl->DrawDeferred(); sl@0: } sl@0: if(iFrameSizeIdx>0) sl@0: { sl@0: frameSizeCtl->SetCurrentItem(iFrameSizeIdx); sl@0: frameSizeCtl->DrawDeferred(); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: if(iFrameRateIdx >= 0) sl@0: { sl@0: frameRateCtl->SetCurrentItem(0); sl@0: frameRateCtl->DrawDeferred(); sl@0: } sl@0: sl@0: if(iFrameSizeIdx >= 0) sl@0: { sl@0: frameSizeCtl->SetCurrentItem(0); sl@0: frameSizeCtl->DrawDeferred(); sl@0: } sl@0: } sl@0: return; sl@0: } sl@0: if(iAudioEnableCtl == aControl && aEventType == EEventStateChanged) sl@0: { sl@0: if(iAudioEnable == EFalse) sl@0: { sl@0: iAudioEnable = ETrue; sl@0: } sl@0: else sl@0: { sl@0: iAudioEnable = EFalse; sl@0: } sl@0: return; sl@0: } sl@0: } sl@0: } sl@0: sl@0: sl@0: CMVSConfigVideoFormatDialog::~CMVSConfigVideoFormatDialog() sl@0: { sl@0: iFrameRateArray.Close(); sl@0: iFrameSizeArray.Close(); sl@0: delete iArrFrameRate; sl@0: delete iArrFrameSize; sl@0: delete iMimeTypeArray; sl@0: delete iArrVideoMimeType; sl@0: }