srsf/vcommandhandler/src/vcommand.cpp
changeset 13 57b735022c18
parent 1 b13cd05eeb2f
--- a/srsf/vcommandhandler/src/vcommand.cpp	Mon Jan 18 20:20:30 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,253 +0,0 @@
-/*
-* 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:  Implementation of the VCommand class
-*
-*/
-
-
-
-#include <e32def.h>
-#include <vcommandapi.h>
-#include "rubydebug.h"
-
-/**
-* The version of the streamed data protocol
-* It is rather likely, that the format of the data streamed changes in the future.
-* Using the protocol version, the code can check if it knows how to parse the 
-* input stream
-*/
-const TInt32 KVCommandProtocolVersion = 1;
-
-/**
-* Create a const snapshop of exe-ui-vastext collection
-* @param aText Text to be trained by VAS. No longer, than KMaxVCTextLength. 
-*        CVCommand doesn't take the ownership
-* @param aRunnable Executable to be fired when the command is recognized. 
-*        VCommand doesn't take the ownership
-* @param aUi visible strings to be displayed in VC App. 
-*        VCommand doesn't take the ownership
-*/
-EXPORT_C CVCommand* CVCommand::NewL( const TDesC& aText, const CVCRunnable& aRunnable, 
-                            const CVCCommandUi& aUi )
-    {
-    RUBY_DEBUG_BLOCKL( "CVCCommand::NewL with args" );
-    CVCommand* self = new (ELeave) CVCommand;
-    CleanupStack::PushL( self );
-    self->ConstructL( aText, aRunnable, aUi );
-    CleanupStack::Pop( self );
-    return self;
-    }
-    
-/** 
-* Internalizes the command from stream 
-*/
-EXPORT_C CVCommand* CVCommand::NewL( RReadStream &aStream )
-    {
-    CVCommand* self = new (ELeave) CVCommand;
-    CleanupStack::PushL( self );
-    self->ConstructL( aStream );
-    CleanupStack::Pop( self );
-    return self;    
-    }
-
-EXPORT_C CVCommand* CVCommand::NewL( const CVCommand& aOriginal )
-    {
-    // Original knows better how to copy itself
-    return aOriginal.CloneL();    
-    }
-
-void CVCommand::ConstructL( RReadStream &aStream )
-	{
-	TInt32 ver;
-    aStream >> ver;
-    __ASSERT_ALWAYS( ver == KVCommandProtocolVersion, User::Leave( KErrNotSupported  ) );
-    iSpokenText = HBufC::NewL( aStream.ReadInt32L() );
-    TPtr pSpokenText = iSpokenText->Des();
-    aStream >> pSpokenText;
-    iRunnable = CVCRunnable::NewL( aStream );
-    iCommandUi = CVCCommandUi::NewL( aStream );
-	}
-	
-void CVCommand::ConstructL( const TDesC& aText, const CVCRunnable& aRunnable, 
-                            const CVCCommandUi& aUi )
-    {
-    __ASSERT_ALWAYS( aText.Length() > 0, User::Leave( KErrUnderflow ) );
-    iSpokenText = HBufC::NewL( aText.Length() );
-    *iSpokenText = aText;
-  	iRunnable = CVCRunnable::NewL( aRunnable );
-    iCommandUi = CVCCommandUi::NewL( aUi );    
-    }
-	
-	
-EXPORT_C CVCommand::~CVCommand()
-    {
-    delete iCommandUi;
-    delete iRunnable;
-    delete iSpokenText;
-    }
-
-CVCommand* CVCommand::CloneL() const
-    {
-    CVCommand* clone = CVCommand::NewL( SpokenText(), Runnable(), CommandUi() );
-    return clone;
-    }
-    
-/**
-* Saves the command to stream 
-* Format: <protocol version: int32><SpokenTextLength: int32><SpokenText descriptor>
-*         <runnable><commandui>
-*/
-EXPORT_C void CVCommand::ExternalizeL( RWriteStream &aStream ) const
-    {
-    aStream << KVCommandProtocolVersion;
-    aStream << static_cast<TInt32>( iSpokenText->Length() );
-    aStream << *iSpokenText;
-    aStream << *iRunnable;
-    aStream << *iCommandUi;
-    }
-    
-EXPORT_C TBool CVCommand::operator==( const CVCommand& aCommand ) const
-    {
-    return (
-            ( *iSpokenText == aCommand.SpokenText() ) &&
-            ( *iRunnable == aCommand.Runnable() ) &&
-            ( *iCommandUi == aCommand.CommandUi() ) 
-           );
-    
-    }	
-
-
-/**
-* @return the Runnable component of the command
-*/
-EXPORT_C const CVCRunnable& CVCommand::Runnable() const
-    {
-    return *iRunnable;
-    }
-
-/**
-* @return the UI-related component of the command
-*/
-EXPORT_C const CVCCommandUi& CVCommand::CommandUi() const
-    {
-    return *iCommandUi;
-    }
-
-/**
-* @return the text, that user is expected to pronounce
-*/
-EXPORT_C const TDesC& CVCommand::SpokenText() const
-    {
-    return *iSpokenText;
-    }
-    
-/**
-* @return the user specified text, that user can pronounce to
-*         recognize the command. Is always identical to the 
-*         CVCommandUi::UserText()
-*         Can be KNullDesC
-*/
-EXPORT_C const TDesC& CVCommand::AlternativeSpokenText() const
-    {
-    return iCommandUi->UserText();
-    }
-    
-/**
-* Asynchronous
-* Attempts to play back the text expected to be recognized. 
-* To be playable command has to be added to CVCommandHandler AND
-* then retrieved back
-*
-* @param aHandler CVCommandHandler where the command is stored
-* @todo Consider storing link to CVCommandHandler within the CVCommand (CStoredVCommand)
-*       Pros: No clumsy aHandler argument for the playback
-*       Pros: No need to remember in which handler the command is stored
-*             and why specifying storage is needed during the playback
-*       Cons: In case of internal link the linked handler should still
-*             exist. It cannot be e.g. destroyed and recreated later even
-*             if the latter one is using the same VAS
-*
-* @param aPlayEventHandler Entity that handles the playback callbacks
-* @see NssVasMPlayEventHandler.h
-*
-* @leave KErrBadHandle if the current command has not been retrieved 
-*        from CVCommandHandler (i.e. was not trained for recognition)
-* @leave KErrNotFound if this command cannot be found in aHandler
-* @leave KErrNotReady @see nssvasmspeechitem.h MNssSpeechItem::TNssSpeechItemResult 
-*                                              EVasUnexpectedRequest
-* @leave KErrInUse @see nssvasmspeechitem.h MNssSpeechItem::TNssSpeechItemResult 
-*                                              EVasInUse
-* @leave KErrArgument @see nssvasmspeechitem.h MNssSpeechItem::TNssSpeechItemResult 
-*                                              EVasInvalidParameter
-* @leave KErrGeneral @see nssvasmspeechitem.h MNssSpeechItem::TNssSpeechItemResult 
-*                                             EVasPlayFailed
-*/
-EXPORT_C void CVCommand::PlaySpokenTextL( const CVCommandHandler& /*aHandler*/, 
-                          MNssPlayEventHandler& /*aPlayEventHandler*/ ) const
-    {
-    RUBY_DEBUG_BLOCK( "CVCommand::PlaySpokenTextL" );
-    RUBY_ERROR0( "Attempt to play never added command" );
-    User::Leave( KErrBadHandle );
-    }
-
-/**
-* Asynchronous
-* Plays back the user-specified alternative spoken text. 
-* Otherwise is identical to PlaySpokenTextL
-* @see PlaySpokenTextL
-* @leave KErrNotFound if this command cannot be found in aHandler of if 
-*        it doesn't have a user-specified text
-*/     
-EXPORT_C void CVCommand::PlayAlternativeSpokenTextL( const CVCommandHandler& /*aHandler*/, 
-                          MNssPlayEventHandler& /*aPlayEventHandler*/ ) const
-    {
-    RUBY_DEBUG_BLOCK( "CVCommand::PlaySpokenTextL" );
-    RUBY_ERROR0( "Attempt to play never added command" );
-    User::Leave( KErrBadHandle );
-    }
-    
-/**
-* Cancels playback of a spoken or alternative spoken text
-* To be playable command has to be added to CVCommandHandler AND
-* then retrieved back. After this function neither HandlePlayStarted,
-* nor HandlePlayComplete will be called
-*
-* @param aHandler CVCommandHandler where the command is stored
-*
-* @leave KErrBadHandle if the current command has not been retrieved 
-*        from CVCommandHandler (i.e. was not trained for recognition)
-* @leave KErrNotReady if playback has never been started
-*
-*/
-EXPORT_C void CVCommand::CancelPlaybackL( const CVCommandHandler& /*aHandler*/ ) const
-    {
-    RUBY_DEBUG_BLOCK( "CVCommand::CancelPlaybackL" );
-    RUBY_ERROR0( "CVCommand::CancelPlaybackL Attempt to cancel playback of the command\
-                  never added to the VCommandHandler" );
-    User::Leave( KErrBadHandle );
-    }
-
-/**
- * Tells if all non user-changeable parts of aCommand are equal to this command
- * @return ETrue if equal, EFalse otherwise
- */
-EXPORT_C TBool CVCommand::EqualNonUserChangeableData( const CVCommand& aCommand ) const
-    {
-    if( SpokenText() != aCommand.SpokenText() ) return EFalse;
-    if( !(Runnable() == aCommand.Runnable() ) ) return EFalse;
-    
-    return CommandUi().EqualNonUserChangeableData( aCommand.CommandUi() );
-    }
-    
-//End of file