srsf/nssvasapi/nssvascore/inc/nssvasttsutilitywrapper.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:29:17 +0100
branchRCL_3
changeset 19 e36f3802f733
parent 0 bf1d17376201
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* 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:  Wrapper class which forwards calls to TTS Utility
*
*/


#ifndef NSSVASTTSUTILITYWRAPPER_H
#define NSSVASTTSUTILITYWRAPPER_H

// INCLUDES
#include <e32base.h>
#include <nssttsutilityobserver.h>
#include <nssttscommon.h>

// FORWARD DECLARATIONS
class MTtsUtilityBase;

// CLASS DECLARATION

/**
* CNssTtsUtilityWrapper
* @since 3.1
* @see nssttsutility.h
* @see nssttsutilitybase.h
* @see nssttsutilityobserver.h
*/
NONSHARABLE_CLASS ( CNssTtsUtilityWrapper ) : public CActive, public MTtsClientUtilityObserver
    {
    public: // Constructors & destructor

        /**
        * Two-phased constructor
        * 
        * @since 3.1
        */
        static CNssTtsUtilityWrapper* NewL( MTtsClientUtilityObserver& aObserver,
                TInt aPriority = EMdaPriorityNormal,
                TMdaPriorityPreference aPref = EMdaPriorityPreferenceTimeAndQuality );

        /**
        * Destructor.
        */
	    virtual ~CNssTtsUtilityWrapper();

    public: // New functions
    
        /**
        * Adds new style to style collection.
        *
        * @since 3.1
        * @param "TTtsStyle& aStyle" Reference to style.
        * @return Assigned style ID.
        */
        TTtsStyleID AddStyleL( const TTtsStyle& aStyle );
        
       /**
        * Opens a parsed text source and plays it.
        *
        * @since 3.1
        * @param "CTtsParsedText& aText" Parsed text object to play.
        * @param "TInt aPriority" Playback priority.
        * @param "TMdaPriorityPreference aPref" Playback priority preference.
        */
        void OpenAndPlayParsedTextL( CTtsParsedText& aText, 
                TInt aPriority = EMdaPriorityNormal, 
                TMdaPriorityPreference aPref = EMdaPriorityPreferenceTimeAndQuality );
                                     
        /**
        * Stops playback of the audio sample as soon as possible.
        *
        * If the audio sample is playing, playback is stopped as soon as
        * possible. If playback is already complete, nothing further happens as
        * a result of calling this function. The callback function
        * <code>MMdaAudioPlayerCallback::MapcPlayComplete()</code> is not
        * called.
        *
        * @since 3.1
        */
        void Stop();                                     
        
        /**
        * Begins playback of the initialised audio sample at the current volume
        * and priority levels.
        *
        * When playing of the audio sample is complete, successfully or
        * otherwise, the callback function
        * <code>MMdaAudioPlayerCallback::MapcPlayComplete()</code> is
        * called.
        *
        * @since 3.1
        */
        void Play();
        
        /**
        * Closes the current audio clip (allowing another clip to be opened)
        *
        * @since 3.1
        */
        void Close();
 
    private: // Functions

	    /**
        * C++ constructor.
        */
	    CNssTtsUtilityWrapper( MTtsClientUtilityObserver& aObserver,
                               TInt aPriority,
                               TMdaPriorityPreference aPref );

	    /**
        * EPOC constructor.
        */
	    void ConstructL();
	    
	    /*
	    * From MTtsClientUtilityObserver
	    */
	    void MapcCustomCommandEvent( TInt aEvent, TInt aError );
	    
	    /*
	    * From MTtsClientUtilityObserver
	    */
        void MapcInitComplete( TInt aError, const TTimeIntervalMicroSeconds& aDuration );

	    /*
	    * From MTtsClientUtilityObserver
	    */
	    void MapcPlayComplete( TInt aError );
	    
	    /**
	    * From CActive
	    */
	    void RunL();
	    
	    /**
	    * From CActive
	    */
	    void DoCancel();
	    
	    /**
	    * Sets the active object ready to be run
	    */
	    void Ready();
	        
	private: // Member variables
	
	    // Handle to library loader
	    RLibrary iLib;
	    
	    // UID of the utility client
	    TUid iClientUid;
	    
	    // Pointer to the utility base class
	    MTtsUtilityBase* iUtility;
	    
	    // Reference to the observer
	    MTtsClientUtilityObserver& iObserver;
	    
	    // Audio priority and preference
        TInt iPriority;
        TMdaPriorityPreference iPref;
        
        // Stored callback parameters
        TInt iError;
        TTimeIntervalMicroSeconds iDuration;   
	    
	    // Callback function
	    enum TTtsUtilityVasCallback
	        {
            EInitComplete,
            EPlayComplete
            };
        
        TTtsUtilityVasCallback iState;
    };

#endif // NSSVASSIUTILITYWRAPPER_H

// End of file