voiceui/vcommand/src/vctonereader.cpp
changeset 0 bf1d17376201
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/voiceui/vcommand/src/vctonereader.cpp	Thu Dec 17 08:46:30 2009 +0200
@@ -0,0 +1,293 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  This class handles the tone playing for the Voice commands UI
+*
+*/
+
+
+// INCLUDE FILES
+#include <avkon.hrh>
+#include <aknSoundinfo.h>
+#include "vctonereader.h"
+#include <eikcolib.h>
+#include <aknsoundsystem.h>
+#include <aknappui.h>
+
+// CONSTANTS
+
+// ================= MEMBER FUNCTIONS =======================
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CVCToneReader::CVCToneReader()
+    {
+    }
+
+// Default constructor can leave.
+void CVCToneReader::ConstructL()
+    {
+#ifdef _DEBUG
+   RDebug::Print(_L("CVCToneReader::ConstructL"));
+#endif
+
+    iAbortInfo = CAknSoundInfo::NewL();
+    iErrorInfo = CAknSoundInfo::NewL();
+
+    iAbortToneSequence = ReadToneSequenceL(iAbortInfo,
+    							EAvkonSIDNameDiallerAbortTone,
+                            	&iAbortTonePriority,&iAbortTonePreference,
+                            	&iAbortToneVolume);
+                            	
+    iErrorToneSequence = ReadToneSequenceL(iErrorInfo,
+    							EAvkonSIDNameDiallerErrorTone,
+                            	&iErrorTonePriority,&iErrorTonePreference,
+                            	&iErrorToneVolume);
+
+    iToneUtility = CMdaAudioToneUtility::NewL(*this);    
+    }
+
+// Two-phased constructor.
+CVCToneReader* CVCToneReader::NewL()
+    {
+    CVCToneReader* self = new ( ELeave ) CVCToneReader;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+    
+// Destructor
+CVCToneReader::~CVCToneReader()
+    {
+#ifdef _DEBUG
+    RDebug::Print(_L("CVCToneReader::~CVCToneReader"));
+#endif
+   
+    delete iToneUtility;
+    
+    delete iAbortInfo;
+    delete iErrorInfo;
+    iAbortToneSequence = NULL;
+    iErrorToneSequence = NULL;
+    }
+
+// ---------------------------------------------------------
+// CVCToneReader::ReadToneSequenceL
+// Reads the tone sequence from the Avkon resource file
+// ---------------------------------------------------------
+//
+HBufC8* CVCToneReader::ReadToneSequenceL( CAknSoundInfo* aInfo, TInt aSid, 
+                                              TInt* aTonePriority,
+                                              TMdaPriorityPreference* aTonePreference, 
+                                              TInt* aToneVolume )
+   {
+#ifdef _DEBUG
+   RDebug::Print(_L("CVCToneReader::ReadToneSequenceL: aSid = %d"),aSid); 
+#endif
+	if (iAvkonAppUiBase)
+		{
+		iAvkonAppUiBase->KeySounds()->RequestSoundInfoL( aSid, *aInfo );	// Static access
+		}
+
+   *aTonePriority = aInfo->iPriority;
+   *aToneVolume = aInfo->iVolume;
+   *aTonePreference = (TMdaPriorityPreference)aInfo->iPreference;
+   return aInfo->iSequence;
+   }
+
+
+// ---------------------------------------------------------
+// CVCToneReader::TonePriority
+// Sets the tone priority 
+// ---------------------------------------------------------
+//
+TInt CVCToneReader::TonePriority(TInt aSid)
+   {
+#ifdef _DEBUG
+   RDebug::Print(_L("CVCToneReader::TonePriority"));  
+#endif
+
+   TInt priority = -1;
+   switch (aSid)
+      {
+      case EAvkonSIDNameDiallerErrorTone:
+         priority = iErrorTonePriority;
+         break;
+
+      case EAvkonSIDNameDiallerAbortTone:
+         priority = iAbortTonePriority;
+         break;
+
+      default:
+         break;
+      }
+   return priority;
+   }
+
+// ---------------------------------------------------------
+// CVCToneReader::TonePriorityPreference
+// Sets the appropriate priority preference
+// ---------------------------------------------------------
+//
+TMdaPriorityPreference CVCToneReader::TonePriorityPreference(TInt aSid)
+   {
+#ifdef _DEBUG
+   RDebug::Print(_L("CVCToneReader::TonePriorityPreference"));    
+#endif
+   TMdaPriorityPreference preference;
+   switch (aSid)
+      {
+      case EAvkonSIDNameDiallerErrorTone:
+         preference = iErrorTonePreference;
+         break;
+
+      case EAvkonSIDNameDiallerAbortTone:
+         preference = iAbortTonePreference;
+         break;
+
+      default:
+         preference = iErrorTonePreference;
+         break;
+      }
+   return preference;
+   }
+
+
+// ---------------------------------------------------------
+// CVCToneReader::ToneSequence
+// Sets the appropriate tone sequence
+// ---------------------------------------------------------
+//
+HBufC8* CVCToneReader::ToneSequence(TInt aSid)
+   {
+#ifdef _DEBUG
+   RDebug::Print(_L("CVCToneReader::ToneSequence"));  
+#endif
+   HBufC8* sequence = NULL;
+
+   switch (aSid)
+      {
+      case EAvkonSIDNameDiallerErrorTone:
+         sequence = iErrorToneSequence;
+         break;
+
+      case EAvkonSIDNameDiallerAbortTone:
+         sequence = iAbortToneSequence;
+         break;
+
+      default:
+         break;
+      }
+   return sequence;
+   }
+
+
+
+// ---------------------------------------------------------
+// CVCToneReader::ToneVolume
+// Sets the appropriate tone volume
+// ---------------------------------------------------------
+//
+TInt CVCToneReader::ToneVolume(TInt aSid)
+   {
+#ifdef _DEBUG
+   RDebug::Print(_L("CVCToneReader::ToneVolume"));    
+#endif
+   TInt volume = -1;
+
+   switch (aSid)
+      {
+      case EAvkonSIDNameDiallerErrorTone:
+         volume = iErrorToneVolume;
+         break;
+
+      case EAvkonSIDNameDiallerAbortTone:
+         volume = iAbortToneVolume;
+         break;
+
+      default:
+         break;
+      }
+   return volume;
+   }
+
+
+// ---------------------------------------------------------
+// CVCToneReader::PlayTone
+// Plays the appropriate tone
+// ---------------------------------------------------------
+//
+void CVCToneReader::PlayTone(MVCTonePlayer* aTonePlayer,TInt aSid)
+    {
+    iTonePlayer = aTonePlayer;
+    iTonePriority = TonePriority(aSid);
+    iTonePreference = TonePriorityPreference(aSid);
+    iToneVolume = ToneVolume(aSid);
+
+    iToneUtility->PrepareToPlayDesSequence(ToneSequence(aSid)->Des());
+    }
+
+
+// ---------------------------------------------------------
+// CVCToneReader::MatoPrepareComplete
+// Callback from the CMdaToneUtility when tone preparation is 
+// complete
+// ---------------------------------------------------------
+//
+void CVCToneReader::MatoPrepareComplete(TInt aError)
+    {
+   	if (aError == KErrNone)
+      	{
+      	iToneUtility->SetPriority(iTonePriority, iTonePreference);
+      	iToneUtility->SetVolume(iToneVolume);
+      	iToneUtility->Play();
+      	}
+      else
+      	{
+      	if (iTonePlayer)
+    		{
+    		iTonePlayer->MntpToneError();
+    		}
+      	}
+	}
+    
+
+// ---------------------------------------------------------
+// CVCToneReader::MatoPlayComplete
+// Callback from the CMdaToneUtility when the tone playing
+// is complete
+// ---------------------------------------------------------
+//
+void CVCToneReader::MatoPlayComplete(TInt /*aError*/)
+    {
+#ifdef _DEBUG
+   RDebug::Print(_L("CVCToneReader::MatoPlayComplete")); 
+#endif
+    if (iTonePlayer)
+    	{
+    	iTonePlayer->MntpToneComplete();
+    	}
+    }
+
+
+//  End of File  
+
+
+
+
+
+
+