os/mm/mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteapp/src/MVSConfigAudioFormatDialog.cpp
First public contribution.
1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // Part of the MVS Application for TechView
18 #include "MVSConfigAudioFormatDialog.h"
25 void CMVSConfigAudioFormatDialog::SetupDialogLD(CMVSAppUi* aAppUi,TUid aControllerId,CSettingsManager* aSettingsManager)
27 CMVSConfigAudioFormatDialog* dialog = new (ELeave) CMVSConfigAudioFormatDialog(aAppUi,aControllerId);
28 CleanupStack::PushL(dialog);
30 aSettingsManager->ReadAudioDataL(dialog,aControllerId);
31 CleanupStack::Pop(dialog);
32 dialog->ExecuteLD(R_MVS_DIALOG_CONFIGUREDATAFORMAT);
36 void CMVSConfigAudioFormatDialog::ConstructL()
38 iArrBitRates = new(ELeave) CDesCArrayFlat(8);
39 iArrSampleRates = new(ELeave) CDesCArrayFlat(8);
40 iArrChannels = new(ELeave) CDesCArrayFlat(8);
41 iArrCodecs = new(ELeave) CDesCArrayFlat(8);
45 void CMVSConfigAudioFormatDialog::PreLayoutDynInitL()
47 // Get a downcasted pointer to each of the controls
48 CEikChoiceList* bitrateList = static_cast<CEikChoiceList*>(Control(EMVSSetBitrate));
50 CEikChoiceList* codecList = static_cast<CEikChoiceList*>(Control(EMVSCmdSelectCodec));
52 CEikChoiceList* channelsList = static_cast<CEikChoiceList*>(Control(EMVSSetNoOfChannels));
54 CEikChoiceList* sampleratesList = static_cast<CEikChoiceList*>(Control(EMVSSetSamplerate));
56 CEikCheckBox* restoresettings = static_cast<CEikCheckBox*>(Control(EMVSRestoreAudioSettings));
57 iSettings = restoresettings;
60 CDesCArray* tempArray = NULL;
63 restoresettings->SetObserver(this);
67 bitrateList->SetArrayL(iArrBitRates);
68 bitrateList->SetArrayExternalOwnership(ETrue);
69 tempArray = bitrateList->DesCArray();
70 //get supported bit rates
71 TRAP(err,iAppUi->GetSupportedBitRatesL(iBitRatesArray));
72 if(err == KErrNotSupported)
74 _LIT(KBitRateSupport, "Bitrates not supported");
75 User::InfoPrint(KBitRateSupport);
80 //copy from array to CDescCArray
81 for(TInt i = 0; i < iBitRatesArray.Count();i++)
83 td.Num(iBitRatesArray[i]);
84 tempArray->AppendL(td);
91 sampleratesList->SetArrayL(iArrSampleRates);
92 sampleratesList->SetArrayExternalOwnership(ETrue);
93 tempArray = sampleratesList->DesCArray();
94 //get supported sample rates
95 TRAP(err,iAppUi->GetSupportedSampleRatesArrayL(iSampleRatesArray));
96 if(err == KErrNotSupported)
98 _LIT(KSampleRateSupport, "Samplerates not supported");
99 User::InfoPrint(KSampleRateSupport);
104 //copy from array to CDescCArray
105 for(TInt i = 0; i < iSampleRatesArray.Count();i++)
107 td.Num(iSampleRatesArray[i]);
108 tempArray->AppendL(td);
115 channelsList->SetArrayL(iArrChannels);
116 channelsList->SetArrayExternalOwnership(ETrue);
117 tempArray = channelsList->DesCArray();
118 //get supported channels
119 TRAP(err,iAppUi->GetSupportedNoChannelsArrayL(iChannelsArray));
120 if(err==KErrNotSupported)
122 _LIT(KChannelSupport, "Channels not supported");
123 User::InfoPrint(KChannelSupport);
124 iChannelListIdx = -1;
128 //copy from array to CDescCArray
129 for(TInt i = 0; i < iChannelsArray.Count();i++)
131 td.Num(iChannelsArray[i]);
132 tempArray->AppendL(td);
139 codecList->SetArrayL(iArrCodecs);
140 codecList->SetArrayExternalOwnership(ETrue);
141 tempArray = codecList->DesCArray();
143 //get supported codecs
146 TRAP(err,iAppUi->GetSupportedCodecsArrayL(iCodecsArray));
147 if(err==KErrNotSupported)
149 _LIT(KCodecSupport, "Codecs not supported");
150 User::InfoPrint(KCodecSupport);
156 //copy from array to CDescCArray
157 for(TInt i = 0; i < iCodecsArray.Count(); i++)
159 unValue = iCodecsArray[i].FourCC();
160 pch =reinterpret_cast<char*>(&unValue);
166 tempArray->AppendL(td);
170 //Seed the controls with their appropriate value.
173 bitrateList->SetCurrentItem(iBitRateIdx);
175 if(iSampleRateIdx >= 0)
177 sampleratesList->SetCurrentItem(iSampleRateIdx);
179 if(iChannelListIdx >= 0)
181 channelsList->SetCurrentItem(iChannelListIdx);
183 if(iCodecListIdx >= 0)
185 codecList->SetCurrentItem(iCodecListIdx);
191 CMVSConfigAudioFormatDialog::CMVSConfigAudioFormatDialog(CMVSAppUi* aAppUi,TUid aControllerId)
192 :iContollerUid(aControllerId) , iAppUi(aAppUi)
198 TBool CMVSConfigAudioFormatDialog::OkToExitL(TInt aButtonId)
200 if(aButtonId == EMVSButtonCancel)
204 //the values have to go to store
205 // Get a downcasted pointer to each of the controls
206 CEikChoiceList* bitrateList = static_cast<CEikChoiceList*>(Control(EMVSSetBitrate));
208 CEikChoiceList* codecList = static_cast<CEikChoiceList*>(Control(EMVSCmdSelectCodec));
210 CEikChoiceList* channelsList = static_cast<CEikChoiceList*>(Control(EMVSSetNoOfChannels));
212 CEikChoiceList* sampleratesList = static_cast<CEikChoiceList*>(Control(EMVSSetSamplerate));
214 if(bitrateList && codecList && channelsList && sampleratesList)
216 if(iBitRateIdx != -1)
218 iBitRateIdx = bitrateList->CurrentItem();
220 if(iSampleRateIdx != -1)
222 iSampleRateIdx = sampleratesList->CurrentItem();
224 if(iChannelListIdx != -1)
226 iChannelListIdx = channelsList->CurrentItem();
228 if(iCodecListIdx != -1)
230 iCodecListIdx = codecList->CurrentItem();
232 iAppUi->WriteAudioDataL(this,iContollerUid);
233 if(aButtonId == EMVSButtonUpdate)
237 iAppUi->SetBitRateL(iBitRatesArray[iBitRateIdx]);
239 if(iSampleRateIdx >= 0)
241 iAppUi->SetSampleRateL(iSampleRatesArray[iSampleRateIdx]);
243 if(iChannelListIdx >= 0)
245 iAppUi->SetChannelsL(iChannelsArray[iChannelListIdx]);
247 if(iCodecListIdx >= 0)
249 iAppUi->SetCodecsL(iCodecsArray[iCodecListIdx]);
257 TKeyResponse CMVSConfigAudioFormatDialog::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
259 if(aKeyEvent.iCode == EKeyEnter && aType == EEventKeyDown)
261 OkToExitL(EMVSButtonUpdate);
263 return CEikDialog::OfferKeyEventL(aKeyEvent,aType);
268 void CMVSConfigAudioFormatDialog::ExternalizeL(RWriteStream& aStream)
270 aStream.WriteInt8L(iBitRateIdx);
271 aStream.WriteInt8L(iSampleRateIdx);
272 aStream.WriteInt8L(iChannelListIdx);
273 aStream.WriteInt8L(iCodecListIdx);
277 void CMVSConfigAudioFormatDialog::InternalizeL(RReadStream& aStream)
279 iBitRateIdx = aStream.ReadInt8L();
280 iSampleRateIdx = aStream.ReadInt8L();
281 iChannelListIdx = aStream.ReadInt8L();
282 iCodecListIdx = aStream.ReadInt8L();
286 void CMVSConfigAudioFormatDialog::HandleControlEventL(CCoeControl *aControl, TCoeEvent aEventType)
288 CEikChoiceList* bitrateList = static_cast<CEikChoiceList*>(Control(EMVSSetBitrate));
290 CEikChoiceList* codecList = static_cast<CEikChoiceList*>(Control(EMVSCmdSelectCodec));
292 CEikChoiceList* channelsList = static_cast<CEikChoiceList*>(Control(EMVSSetNoOfChannels));
294 CEikChoiceList* sampleratesList = static_cast<CEikChoiceList*>(Control(EMVSSetSamplerate));
296 CEikDialog::HandleControlEventL(aControl,aEventType);
297 if(bitrateList && codecList && channelsList && sampleratesList)
299 if(iSettings == aControl && aEventType == EEventStateChanged)
301 if(iRestoreSettings == EFalse)
303 iRestoreSettings=ETrue;
307 iRestoreSettings=EFalse;
313 bitrateList->SetCurrentItem(iBitRateIdx);
314 bitrateList->DrawDeferred();
317 if(iSampleRateIdx >= 0)
319 sampleratesList->SetCurrentItem(iSampleRateIdx);
320 sampleratesList->DrawDeferred();
323 if(iChannelListIdx >= 0)
325 channelsList->SetCurrentItem(iChannelListIdx);
326 channelsList->DrawDeferred();
329 if(iCodecListIdx >= 0)
331 codecList->SetCurrentItem(iCodecListIdx);
332 codecList->DrawDeferred();
339 bitrateList->SetCurrentItem(0);
340 bitrateList->DrawDeferred();
343 if(iSampleRateIdx >= 0)
345 sampleratesList->SetCurrentItem(0);
346 sampleratesList->DrawDeferred();
349 if(iChannelListIdx >= 0)
351 channelsList->SetCurrentItem(0);
352 channelsList->DrawDeferred();
355 if(iCodecListIdx >= 0)
357 codecList->SetCurrentItem(0);
358 codecList->DrawDeferred();
367 CMVSConfigAudioFormatDialog::~CMVSConfigAudioFormatDialog()
369 iBitRatesArray.Close();
370 iSampleRatesArray.Close();
371 iChannelsArray.Close();
372 iCodecsArray.Close();
373 delete iArrSampleRates;