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: sl@0: #include "MVSConfigAudioFormatDialog.h" sl@0: #include "MVSApp.hrh" sl@0: #include sl@0: sl@0: sl@0: #include "MVSAppUI.h" sl@0: sl@0: void CMVSConfigAudioFormatDialog::SetupDialogLD(CMVSAppUi* aAppUi,TUid aControllerId,CSettingsManager* aSettingsManager) sl@0: { sl@0: CMVSConfigAudioFormatDialog* dialog = new (ELeave) CMVSConfigAudioFormatDialog(aAppUi,aControllerId); sl@0: CleanupStack::PushL(dialog); sl@0: dialog->ConstructL(); sl@0: aSettingsManager->ReadAudioDataL(dialog,aControllerId); sl@0: CleanupStack::Pop(dialog); sl@0: dialog->ExecuteLD(R_MVS_DIALOG_CONFIGUREDATAFORMAT); sl@0: } sl@0: sl@0: sl@0: void CMVSConfigAudioFormatDialog::ConstructL() sl@0: { sl@0: iArrBitRates = new(ELeave) CDesCArrayFlat(8); sl@0: iArrSampleRates = new(ELeave) CDesCArrayFlat(8); sl@0: iArrChannels = new(ELeave) CDesCArrayFlat(8); sl@0: iArrCodecs = new(ELeave) CDesCArrayFlat(8); sl@0: } sl@0: sl@0: sl@0: void CMVSConfigAudioFormatDialog::PreLayoutDynInitL() sl@0: { sl@0: // Get a downcasted pointer to each of the controls sl@0: CEikChoiceList* bitrateList = static_cast(Control(EMVSSetBitrate)); sl@0: sl@0: CEikChoiceList* codecList = static_cast(Control(EMVSCmdSelectCodec)); sl@0: sl@0: CEikChoiceList* channelsList = static_cast(Control(EMVSSetNoOfChannels)); sl@0: sl@0: CEikChoiceList* sampleratesList = static_cast(Control(EMVSSetSamplerate)); sl@0: sl@0: CEikCheckBox* restoresettings = static_cast(Control(EMVSRestoreAudioSettings)); sl@0: iSettings = restoresettings; sl@0: TBuf<10> td; sl@0: TInt err = 0; sl@0: CDesCArray* tempArray = NULL; sl@0: if(restoresettings) sl@0: { sl@0: restoresettings->SetObserver(this); sl@0: } sl@0: if(bitrateList) sl@0: { sl@0: bitrateList->SetArrayL(iArrBitRates); sl@0: bitrateList->SetArrayExternalOwnership(ETrue); sl@0: tempArray = bitrateList->DesCArray(); sl@0: //get supported bit rates sl@0: TRAP(err,iAppUi->GetSupportedBitRatesL(iBitRatesArray)); sl@0: if(err == KErrNotSupported) sl@0: { sl@0: _LIT(KBitRateSupport, "Bitrates not supported"); sl@0: User::InfoPrint(KBitRateSupport); sl@0: iBitRateIdx = -1; sl@0: } sl@0: else sl@0: { sl@0: //copy from array to CDescCArray sl@0: for(TInt i = 0; i < iBitRatesArray.Count();i++) sl@0: { sl@0: td.Num(iBitRatesArray[i]); sl@0: tempArray->AppendL(td); sl@0: } sl@0: } sl@0: } sl@0: sl@0: if(sampleratesList) sl@0: { sl@0: sampleratesList->SetArrayL(iArrSampleRates); sl@0: sampleratesList->SetArrayExternalOwnership(ETrue); sl@0: tempArray = sampleratesList->DesCArray(); sl@0: //get supported sample rates sl@0: TRAP(err,iAppUi->GetSupportedSampleRatesArrayL(iSampleRatesArray)); sl@0: if(err == KErrNotSupported) sl@0: { sl@0: _LIT(KSampleRateSupport, "Samplerates not supported"); sl@0: User::InfoPrint(KSampleRateSupport); sl@0: iSampleRateIdx = -1; sl@0: } sl@0: else sl@0: { sl@0: //copy from array to CDescCArray sl@0: for(TInt i = 0; i < iSampleRatesArray.Count();i++) sl@0: { sl@0: td.Num(iSampleRatesArray[i]); sl@0: tempArray->AppendL(td); sl@0: } sl@0: } sl@0: } sl@0: sl@0: if(channelsList) sl@0: { sl@0: channelsList->SetArrayL(iArrChannels); sl@0: channelsList->SetArrayExternalOwnership(ETrue); sl@0: tempArray = channelsList->DesCArray(); sl@0: //get supported channels sl@0: TRAP(err,iAppUi->GetSupportedNoChannelsArrayL(iChannelsArray)); sl@0: if(err==KErrNotSupported) sl@0: { sl@0: _LIT(KChannelSupport, "Channels not supported"); sl@0: User::InfoPrint(KChannelSupport); sl@0: iChannelListIdx = -1; sl@0: } sl@0: else sl@0: { sl@0: //copy from array to CDescCArray sl@0: for(TInt i = 0; i < iChannelsArray.Count();i++) sl@0: { sl@0: td.Num(iChannelsArray[i]); sl@0: tempArray->AppendL(td); sl@0: } sl@0: } sl@0: } sl@0: sl@0: if(codecList) sl@0: { sl@0: codecList->SetArrayL(iArrCodecs); sl@0: codecList->SetArrayExternalOwnership(ETrue); sl@0: tempArray = codecList->DesCArray(); sl@0: sl@0: //get supported codecs sl@0: char *pch = NULL; sl@0: TUint32 unValue; sl@0: TRAP(err,iAppUi->GetSupportedCodecsArrayL(iCodecsArray)); sl@0: if(err==KErrNotSupported) sl@0: { sl@0: _LIT(KCodecSupport, "Codecs not supported"); sl@0: User::InfoPrint(KCodecSupport); sl@0: iCodecListIdx = -1; sl@0: } sl@0: else sl@0: { sl@0: tempArray->Reset(); sl@0: //copy from array to CDescCArray sl@0: for(TInt i = 0; i < iCodecsArray.Count(); i++) sl@0: { sl@0: unValue = iCodecsArray[i].FourCC(); sl@0: pch =reinterpret_cast(&unValue); sl@0: td.Zero(); sl@0: td.Append(pch[0]); sl@0: td.Append(pch[1]); sl@0: td.Append(pch[2]); sl@0: td.Append(pch[3]); sl@0: tempArray->AppendL(td); sl@0: } sl@0: } sl@0: } sl@0: //Seed the controls with their appropriate value. sl@0: if(iBitRateIdx >= 0) sl@0: { sl@0: bitrateList->SetCurrentItem(iBitRateIdx); sl@0: } sl@0: if(iSampleRateIdx >= 0) sl@0: { sl@0: sampleratesList->SetCurrentItem(iSampleRateIdx); sl@0: } sl@0: if(iChannelListIdx >= 0) sl@0: { sl@0: channelsList->SetCurrentItem(iChannelListIdx); sl@0: } sl@0: if(iCodecListIdx >= 0) sl@0: { sl@0: codecList->SetCurrentItem(iCodecListIdx); sl@0: } sl@0: } sl@0: sl@0: sl@0: sl@0: CMVSConfigAudioFormatDialog::CMVSConfigAudioFormatDialog(CMVSAppUi* aAppUi,TUid aControllerId) sl@0: :iContollerUid(aControllerId) , iAppUi(aAppUi) sl@0: { sl@0: } sl@0: sl@0: sl@0: sl@0: TBool CMVSConfigAudioFormatDialog::OkToExitL(TInt aButtonId) sl@0: { sl@0: if(aButtonId == EMVSButtonCancel) sl@0: { sl@0: return ETrue; sl@0: } sl@0: //the values have to go to store sl@0: // Get a downcasted pointer to each of the controls sl@0: CEikChoiceList* bitrateList = static_cast(Control(EMVSSetBitrate)); sl@0: sl@0: CEikChoiceList* codecList = static_cast(Control(EMVSCmdSelectCodec)); sl@0: sl@0: CEikChoiceList* channelsList = static_cast(Control(EMVSSetNoOfChannels)); sl@0: sl@0: CEikChoiceList* sampleratesList = static_cast(Control(EMVSSetSamplerate)); sl@0: sl@0: if(bitrateList && codecList && channelsList && sampleratesList) sl@0: { sl@0: if(iBitRateIdx != -1) sl@0: { sl@0: iBitRateIdx = bitrateList->CurrentItem(); sl@0: } sl@0: if(iSampleRateIdx != -1) sl@0: { sl@0: iSampleRateIdx = sampleratesList->CurrentItem(); sl@0: } sl@0: if(iChannelListIdx != -1) sl@0: { sl@0: iChannelListIdx = channelsList->CurrentItem(); sl@0: } sl@0: if(iCodecListIdx != -1) sl@0: { sl@0: iCodecListIdx = codecList->CurrentItem(); sl@0: } sl@0: iAppUi->WriteAudioDataL(this,iContollerUid); sl@0: if(aButtonId == EMVSButtonUpdate) sl@0: { sl@0: if(iBitRateIdx >= 0) sl@0: { sl@0: iAppUi->SetBitRateL(iBitRatesArray[iBitRateIdx]); sl@0: } sl@0: if(iSampleRateIdx >= 0) sl@0: { sl@0: iAppUi->SetSampleRateL(iSampleRatesArray[iSampleRateIdx]); sl@0: } sl@0: if(iChannelListIdx >= 0) sl@0: { sl@0: iAppUi->SetChannelsL(iChannelsArray[iChannelListIdx]); sl@0: } sl@0: if(iCodecListIdx >= 0) sl@0: { sl@0: iAppUi->SetCodecsL(iCodecsArray[iCodecListIdx]); sl@0: } sl@0: } sl@0: } sl@0: return ETrue; sl@0: } sl@0: sl@0: sl@0: TKeyResponse CMVSConfigAudioFormatDialog::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: sl@0: void CMVSConfigAudioFormatDialog::ExternalizeL(RWriteStream& aStream) sl@0: { sl@0: aStream.WriteInt8L(iBitRateIdx); sl@0: aStream.WriteInt8L(iSampleRateIdx); sl@0: aStream.WriteInt8L(iChannelListIdx); sl@0: aStream.WriteInt8L(iCodecListIdx); sl@0: } sl@0: sl@0: sl@0: void CMVSConfigAudioFormatDialog::InternalizeL(RReadStream& aStream) sl@0: { sl@0: iBitRateIdx = aStream.ReadInt8L(); sl@0: iSampleRateIdx = aStream.ReadInt8L(); sl@0: iChannelListIdx = aStream.ReadInt8L(); sl@0: iCodecListIdx = aStream.ReadInt8L(); sl@0: } sl@0: sl@0: sl@0: void CMVSConfigAudioFormatDialog::HandleControlEventL(CCoeControl *aControl, TCoeEvent aEventType) sl@0: { sl@0: CEikChoiceList* bitrateList = static_cast(Control(EMVSSetBitrate)); sl@0: sl@0: CEikChoiceList* codecList = static_cast(Control(EMVSCmdSelectCodec)); sl@0: sl@0: CEikChoiceList* channelsList = static_cast(Control(EMVSSetNoOfChannels)); sl@0: sl@0: CEikChoiceList* sampleratesList = static_cast(Control(EMVSSetSamplerate)); sl@0: sl@0: CEikDialog::HandleControlEventL(aControl,aEventType); sl@0: if(bitrateList && codecList && channelsList && sampleratesList) 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(iBitRateIdx >= 0) sl@0: { sl@0: bitrateList->SetCurrentItem(iBitRateIdx); sl@0: bitrateList->DrawDeferred(); sl@0: } sl@0: sl@0: if(iSampleRateIdx >= 0) sl@0: { sl@0: sampleratesList->SetCurrentItem(iSampleRateIdx); sl@0: sampleratesList->DrawDeferred(); sl@0: } sl@0: sl@0: if(iChannelListIdx >= 0) sl@0: { sl@0: channelsList->SetCurrentItem(iChannelListIdx); sl@0: channelsList->DrawDeferred(); sl@0: } sl@0: sl@0: if(iCodecListIdx >= 0) sl@0: { sl@0: codecList->SetCurrentItem(iCodecListIdx); sl@0: codecList->DrawDeferred(); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: if(iBitRateIdx >= 0) sl@0: { sl@0: bitrateList->SetCurrentItem(0); sl@0: bitrateList->DrawDeferred(); sl@0: } sl@0: sl@0: if(iSampleRateIdx >= 0) sl@0: { sl@0: sampleratesList->SetCurrentItem(0); sl@0: sampleratesList->DrawDeferred(); sl@0: } sl@0: sl@0: if(iChannelListIdx >= 0) sl@0: { sl@0: channelsList->SetCurrentItem(0); sl@0: channelsList->DrawDeferred(); sl@0: } sl@0: sl@0: if(iCodecListIdx >= 0) sl@0: { sl@0: codecList->SetCurrentItem(0); sl@0: codecList->DrawDeferred(); sl@0: } sl@0: } sl@0: return; sl@0: } sl@0: } sl@0: } sl@0: sl@0: sl@0: CMVSConfigAudioFormatDialog::~CMVSConfigAudioFormatDialog() sl@0: { sl@0: iBitRatesArray.Close(); sl@0: iSampleRatesArray.Close(); sl@0: iChannelsArray.Close(); sl@0: iCodecsArray.Close(); sl@0: delete iArrSampleRates; sl@0: delete iArrBitRates; sl@0: delete iArrChannels; sl@0: delete iArrCodecs; sl@0: }