--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneringingtoneplayer/inc/cphonettsplayer.h Tue Aug 31 15:14:29 2010 +0300
@@ -0,0 +1,200 @@
+/*
+* Copyright (c) 2009 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:
+*
+*/
+
+#ifndef CPHONETTSPLAYER_H_
+#define CPHONETTSPLAYER_H_
+
+// System includes
+#include <e32base.h>
+#include <Profile.hrh>
+
+// User includes
+#include "cphonetimer.h"
+#include "cphoneaudioplayer.h"
+#include "mphoneaudioplayerobserver.h"
+
+// Forward declarations
+class CPhoneRingingTone;
+class CPhoneRingingtonePlayer;
+
+NONSHARABLE_CLASS(CPhoneTTSPlayer): public CBase,
+ public MPhoneAudioPlayerObserver
+
+ {
+public:
+ CPhoneTTSPlayer(CPhoneRingingtonePlayer* aRingingtonePlayer);
+ virtual ~CPhoneTTSPlayer();
+
+ /**
+ * Two-phased constructor.
+ * @return new instance.
+ */
+ static CPhoneTTSPlayer* NewL(CPhoneRingingtonePlayer* aRingingtonePlayer);
+
+
+public:
+
+ /**
+ * Play TTS tone simultaneously with Personal or Default tones.
+ * This method does not command phone to play TTS immediately. Instead
+ * it registers a request to play TTS, when Personal or default tones
+ * are played.
+ *
+ * @since Series 60 3.0
+ * @param aTextToSay Text, that should be pronounced by the
+ * Text-To-Speech engine. This is normal descriptor, no UTF-8
+ * and no "(tts)" prefix
+ */
+ void PlayTtsTone(
+ const TDesC& aTextToSay,
+ CPhoneRingingTone* aAudioVideoRingingTone );
+
+ void StopPlaying();
+
+
+ /**
+ * Checks if TTS component should be played for the current ringtone
+ * playback and initializes the TTS playback. This method is to be
+ * called from within PlayXXXXTone methods
+ * @since Series 60 3.0
+ * @param aRingingType ringing type
+ */
+ void AddTtsPlaybackIfNeeded();
+
+
+private: // from MPhoneAudioPlayerObserver
+ /**
+ * Handle the error of audio file player.
+ */
+ virtual void HandleAudioPlayerError(
+ TPhoneAudioPlayerErrorEvent aEvent,
+ TInt aError,
+ TInt aId = KPhoneAudioPlayerNotSpecified );
+
+ /**
+ * Handle audio player initialize complete.
+ */
+ virtual void HandleAudioPlayerInitComplete(
+ TInt aId = KPhoneAudioPlayerNotSpecified );
+
+ /**
+ * Handle auido file playing complete successfully.
+ */
+ virtual void HandlePlayingComplete(
+ TInt aId = KPhoneAudioPlayerNotSpecified );
+
+private:
+
+ /**
+ * Enumerates how many times TTs is played
+ * ESaidOnce -once
+ * ESaidTwice twice
+ */
+ enum TTtsStatus
+ {
+ ESaidOnce,
+ ESaidTwice
+ };
+
+ /**
+ * Wrapper of DoHandleTtsDelayTimeout, that can be used as TCallback.
+ * Immediately passes control to DoHandleTtsDelayTimeout method.
+ * @since Series 60 3.0
+ * @param object Object to call DoHandleTtsDelayTimeout() on, .
+ * instance of CPhoneRingingTonePlayer.
+ * @return KErrNone.
+ */
+ static TInt HandleTtsDelayTimeout( TAny* object );
+
+ /**
+ * It is called after TTS delay elapsed. Starts playing TTS.
+ */
+ void DoHandleTtsDelayTimeout();
+
+ /**
+ * Returns currently active player which is used with TTS player.
+ * @return pointer to CPhoneAudioPlayer.
+ */
+ CPhoneAudioPlayer* GetCurrentlyActiveAudioPlayerWithTTs();
+
+ /**
+ * TTs cases only. Calculates new volume and ramptimes
+ * for Ascending TTS ringing case and normal TTS ringing case.
+ * @param aStatus -status of TTs player.
+ */
+ void SolveNewVolumeAndRamptime( TTtsStatus aStatus );
+
+ /**
+ * Retarts currently active ringingtone player.
+ */
+ void ReStartRingingTonePlayer();
+
+ /**
+ * Convert ringing type from PhoneAppEnging to the ringing type in
+ * CPhoneAudioPlayer.
+ * @param aRingingType the ringing type form PhoneAppEngine.
+ * @return ringing type of CPhoneAudioPlayer.
+ */
+ CPhoneAudioPlayer::TRingingType ConvertRingingType(
+ TProfileRingingType aRingingType );
+
+private:
+
+ /**
+ * By default Symbian OS constructor is private.
+ */
+ void ConstructL();
+
+private:
+
+ // Tts player.
+ CPhoneAudioPlayer* iTtsPlayer;
+
+ // True if Tts is currently playing. Is different from
+ // iTonePlayingStatus, because TTS is played in
+ // parallel with the other tone types
+ TBool iTtsTonePlaying;
+
+ // Index of the TTS delay that is "executed" currently or is to be
+ // "executed" after the current playing of the TTS tone. Is zero based
+ TInt iTtsDelayIndex;
+
+ // True if TTS tone should be played when the next playing of the
+ // default or personal tone is fired.
+ TBool iTtsToneToBePlayed;
+
+ // Timer, that tracks delays before playing TTS
+ CPhoneTimer* iTtsDelayTimer;
+
+ // Number of times TTS tone should be played for the CURRENT ringtone
+ // If ringing tone is to be played just once, iTtsDelayCount == 1,
+ // otherwise iTtsDelayCount == KTtsDelayCount
+ TInt iTtsDelaysCount;
+
+ // Counter for TTs timeouts
+ TInt iTTsTimeOutCounter;
+
+ // RingingType for TtsPlayer only.
+ TProfileRingingType iTtsRingingType;
+
+ // Volume of the text pronounced by the TTS engine
+ TInt iTtsVolume;
+
+ CPhoneRingingtonePlayer* iRingingtonePlayer;
+ };
+
+#endif /* CPHONETTSPLAYER_H_ */