examples/Multimedia/AudioClientEx/CMediaClientAppUI.h

00001 // Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
00002 // All rights reserved.
00003 // This component and the accompanying materials are made available
00004 // under the terms of "Eclipse Public License v1.0"
00005 // which accompanies this distribution, and is available
00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
00007 //
00008 // Initial Contributors:
00009 // Nokia Corporation - initial contribution.
00010 //
00011 // Contributors:
00012 //
00013 // Description:
00014 //
00015 
00016 #ifndef CMEDIACLIENTAPPUI
00017 #define CMEDIACLIENTAPPUI
00018 
00019 #include <eikappui.h>
00020 #include <eikmsg.h>
00021 #include <badesca.h>
00022 
00023 #include "CMediaClientEngine.h"
00024 
00025 class CMediaClientView;
00026 class CAudioStreamSource;
00027 class CAudioStreamSourceWithQueue;
00028 
00032 class CMediaClientAppUi : public CEikAppUi, public MExEngineObserver
00033     {
00034 public:
00036     void ConstructL();
00038     ~CMediaClientAppUi();
00045         static TInt DoExit(TAny* aUI);
00046 
00047 private:
00050     void HandleCommandL(TInt aCommand);
00055         void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
00058         CMediaClientEngine& MediaClientEngine() const;
00060         void ToneDialogL();
00062         void PlayFileDialogL();
00064         void RecordFileDialogL();
00066         void FileMetaDataL();
00068         void DisplayMetaDataL();
00070         void ConvertFileDialogL();
00071 
00072         // From MExEngineObserver
00076         void HandleEngineState(CMediaClientEngine::TState aState, TInt aError);
00077 
00079         void StreamSourceCleanUp();
00080 
00081 private:
00083         CMediaClientView* iAppView;
00085         TFileName iFileName;
00087         CAudioStreamSource* iAudioStreamSource;
00089         CAudioStreamSourceWithQueue* iAudioStreamSourceWithQueue;
00091         RMetaDataArray iMetaData;
00093         CMediaClientEngine::TState iState;
00095         CAsyncCallBack* iExitCallBack;
00097         TFormatOptions iFormatOptions;
00099         TRecordFormatOptions iRecordFormatOptions;
00101         TBuf<5> iTargetType;
00102     };
00103 
00104 
00105 #include <eikdialg.h>
00106 
00108 class CToneDialog: public CEikDialog
00109         {
00110 public:
00115         static TBool RunDlgLD(TInt& aFrequency, TTimeIntervalMicroSeconds& aDuration);
00116 
00117 private:
00121         CToneDialog(TInt& aFrequency, TTimeIntervalMicroSeconds& aDuration);
00125         TBool OkToExitL(TInt aKeycode);
00126 
00127 private:
00129         TInt& iFrequency;
00131         TTimeIntervalMicroSeconds& iDuration;
00132         };
00133 
00134 
00136 class CRecordDialog: public CEikDialog
00137         {
00138 public:
00141         static TBool RunDlgLD(
00142                 TFileName& aFileName, CMediaClientEngine& aMediaClientEngine,
00143                 TRecordFormatOptions& aFormatOptions);
00144         ~CRecordDialog();
00145 
00146 private:
00147         // construct/destruct
00148         CRecordDialog(TFileName& aFileName, CMediaClientEngine& aMediaClientEngine,
00149                 TRecordFormatOptions& aFormatOptions);
00150         // from CEikDialog
00151         TBool OkToExitL(TInt aKeycode);
00152         void PreLayoutDynInitL();
00153         void HandleControlStateChangeL(TInt aControlId);
00154 
00155 private:
00156         TFileName& iFileName;
00157         CMediaClientEngine& iMediaClientEngine;
00158         // Format options
00159         TRecordFormatOptions& iRecordFormatOptions;
00160         // Flag for options set
00161         TInt iOptionsSetFor;
00162         };
00163 
00164 
00166 class CConverterDialog: public CEikDialog
00167         {
00168 public:
00171         static TBool RunDlgLD(
00172                 // input parameters
00173                 const TFileName& aFileName, CMediaClientEngine& aMediaClientEngine,
00174                 TFormatOptions& aFormatOptions, TDes& aTargetType);
00175         ~CConverterDialog();
00176 
00177 private:
00178         // construct/destruct
00179         CConverterDialog(const TFileName& aFileName, CMediaClientEngine& aMediaClientEngine,
00180                 TFormatOptions& aFormatOptions, TDes& aTargetType);
00181         // from CEikDialog
00182         TBool OkToExitL(TInt aKeycode);
00183         void PreLayoutDynInitL();
00184         void HandleControlStateChangeL(TInt aControlId);
00185 
00186 private:
00187         // Input params
00188         const TFileName& iFileName;
00189         CMediaClientEngine& iMediaClientEngine;
00190         // Format options
00191         TFormatOptions& iFormatOptions;
00192         // Format type
00193         TDes& iTargetType;
00194         // Flag for options set
00195         TInt iOptionsSetFor;
00196         };
00197 
00198 
00199 // Format options dialog
00200 class CFormatOptionsDialog: public CEikDialog
00201         {
00202 public:
00203         static TBool RunDlgLD(const TFileName& aInputFile, const TDesC& aTargetType, 
00204                 CMediaClientEngine& aMediaClientEngine, TFormatOptions& aFormatOptions);
00205         ~CFormatOptionsDialog();
00206 
00207 protected:
00208         // construct/destruct
00209         CFormatOptionsDialog(const TFileName& aInputFile, const TDesC& aTargetType, 
00210                 CMediaClientEngine& aMediaClientEngine, TFormatOptions& aFormatOptions);
00211         void ConstructL();
00212         void TUintChoiceListL(TInt aResourceId, const RArray<TUint>& aArray);
00213         // from CEikDialog
00214         TBool OkToExitL(TInt aKeycode);
00215         void PreLayoutDynInitL();
00216 
00217 protected:
00218         // Input params
00219         const TFileName& iFileName;
00220         const TDesC& iTargetType;
00221         CMediaClientEngine& iMediaClientEngine;
00222         // Output
00223         TFormatOptions& iFormatOptions;
00224 
00225         // Cached info
00226         RArray<TFourCC> iDataTypes;
00227         RArray<TUint> iBitRates;
00228         RArray<TUint> iSampleRates;
00229         RArray<TUint> iChannels;
00230         };
00231 
00232 // Recording format options dialog
00233 class CRecordFormatOptionsDialog: public CFormatOptionsDialog
00234         {
00235 public:
00236         static TBool RunDlgLD(const TDesC& aTargetType, 
00237                 CMediaClientEngine& aMediaClientEngine, TRecordFormatOptions& aFormatOptions);
00238         ~CRecordFormatOptionsDialog();
00239 
00240 private:
00241         // construct/destruct
00242         CRecordFormatOptionsDialog(const TDesC& aTargetType, 
00243                 CMediaClientEngine& aMediaClientEngine, TRecordFormatOptions& aFormatOptions);
00244         void ConstructL();
00245         // from CEikDialog
00246         TBool OkToExitL(TInt aKeycode);
00247         void PreLayoutDynInitL();
00248 
00249 private:
00250         // Cached info
00251         TInt iMaxGain;
00252         // Output
00253         TRecordFormatOptions& iRecordFormatOptions;
00254         // 
00255         TBuf<1> iBuf;
00256         };
00257 
00258 
00260 const TInt KSliceSize = 4096;
00262 typedef TBuf8<KSliceSize> TSoundSlice;
00263 
00267 class CAudioStreamSource: public CActive
00268         {
00269 public:
00270 
00276         static CAudioStreamSource* NewL(RFs& aFs,CMediaClientEngine& aEngine);
00277 
00279         void Next();
00280 
00283         ~CAudioStreamSource();
00284 
00285 private:
00288         void ConstructL();
00289 
00294         CAudioStreamSource(RFs& aFs, CMediaClientEngine& aEngine);
00295 
00298         void RunL();
00301         void DoCancel();
00302 
00303 private:
00305         RFile iSourceFile;
00307         RFs& iFs;
00309         CMediaClientEngine& iEngine;
00311         TSoundSlice iBuf;
00312         };
00313 
00320 class CSoundSlice: public CBase
00321         {
00322 public:
00323 
00330         static CSoundSlice* NewL(const TDesC8& aData);
00334         ~CSoundSlice();
00335         const TDesC8& GetData();
00336 public:
00337     static const TInt iOffset; 
00338 private:
00343         CSoundSlice();
00348         void ConstructL(const TDesC8& aData);
00349 private:
00351         HBufC8* iData;
00353         TSglQueLink iLink;
00354         };
00355 
00356 
00362 class CAudioStreamSourceWithQueue: public CTimer
00363         {
00364 public: static CAudioStreamSourceWithQueue* NewL(RFs& aFs,CMediaClientEngine& aEngine);
00374         ~CAudioStreamSourceWithQueue();
00378         void Next();
00379 
00384         void RemoveFromQueue();
00385 
00386 private:
00392         CAudioStreamSourceWithQueue(RFs& aFs, CMediaClientEngine& aEngine);
00396         void ConstructL();
00400         void RunL();
00404         void DoCancel();
00405 
00406 private:
00408         RFile iSourceFile;
00410         RFs& iFs;
00412         CMediaClientEngine& iEngine;
00414         TSoundSlice iBuf;
00416         TSglQue<CSoundSlice> iQueue;
00418         TSglQueIter<CSoundSlice> iQueueIter;
00419         };
00420 
00421 
00422 #endif // CMEDIACLIENTAPPUI

Generated on Thu Jan 21 10:32:59 2010 for TB10.1 Example Applications by  doxygen 1.5.3