--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/srsf/nssvasapi/nssvascore/src/nssvasccontext.cpp Wed Sep 01 12:29:17 2010 +0100
@@ -0,0 +1,369 @@
+/*
+* Copyright (c) 2004-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: CNssContext class does all context processing. It implements
+* MNssContext interface.
+*
+*/
+
+
+// INCLUDE FILES
+#include "nssvasccontext.h"
+#include "rubydebug.h"
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// ---------------------------------------------------------
+// CNssContext::CNssContext
+// C++ default constructor can NOT contain any code that
+// might leave.
+// ---------------------------------------------------------
+//
+CNssContext::CNssContext( CNssContextSrsPortal* aContextSrsPortal )
+ {
+ // These take forever in strain test
+ RUBY_DEBUG0( "CNssContext::CNssContext" );
+
+ iContextSrsPortal = aContextSrsPortal;
+ iGlobal = EFalse;
+ iContextId = KNssVASDbDefaultValue;
+ iContextSrsPortal->Register();
+ iRecognitionMode = ENSSSdSiMode;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::~CNssContext
+// Destructor
+// ---------------------------------------------------------
+//
+CNssContext::~CNssContext()
+ {
+ // These take forever in strain test:
+ // RUBY_DEBUG0( "CNssContext::~CNssContext" );
+
+ if ( iContextSrsPortal )
+ {
+ iContextSrsPortal->Deregister();
+ }
+ if ( iName )
+ {
+ delete iName;
+ }
+ }
+
+// ---------------------------------------------------------
+// CNssContext::ContextName
+// returns the name of the context as a reference
+// ---------------------------------------------------------
+//
+TDesC& CNssContext::ContextName()
+ {
+ return *iName;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::IsGlobal
+// returns the global flag
+// ---------------------------------------------------------
+//
+TBool CNssContext::IsGlobal()
+ {
+ return iGlobal;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::SetNameL
+// sets the name of the context to aName,
+// old name, if any is deleted.
+// ---------------------------------------------------------
+//
+void CNssContext::SetNameL( const TDesC& aName )
+ {
+ if ( iName )
+ {
+ delete iName;
+ iName = NULL;
+ }
+ iName = aName.AllocL();
+ }
+
+// ---------------------------------------------------------
+// CNssContext::SetGlobal
+// sets the global flag to ETrue or EFalse
+// ---------------------------------------------------------
+//
+void CNssContext::SetGlobal( TBool aGlobal )
+ {
+ iGlobal = aGlobal;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::ContextId
+// return the context id
+// for internal use
+// ---------------------------------------------------------
+//
+TInt CNssContext::ContextId() const
+ {
+ return iContextId;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::GrammarId
+// returns the grammar id
+// for internal use
+// ---------------------------------------------------------
+//
+TUint32 CNssContext::GrammarId() const
+ {
+ return iGrammarId;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::LexiconId
+// returns the lexicon id
+// for internal use
+// ---------------------------------------------------------
+//
+TUint32 CNssContext::LexiconId() const
+ {
+ return iLexiconId;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::ModelBankId
+// returns the model bank id
+// for internal use
+// ---------------------------------------------------------
+//
+TUint32 CNssContext::ModelBankId() const
+ {
+ return iModelBankId;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::RecognitionMode
+// returns the recognition technology
+// for internal use
+// ---------------------------------------------------------
+//
+TNSSRecognitionMode CNssContext::RecognitionMode() const
+ {
+ return iRecognitionMode;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::SetContextId
+// sets the context id to the given value
+// for internal use
+// ---------------------------------------------------------
+//
+void CNssContext::SetContextId( TInt aContextId )
+ {
+ iContextId = aContextId;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::SetGrammarId
+// sets the grammar id to the given value
+// for internal use
+// ---------------------------------------------------------
+//
+void CNssContext::SetGrammarId( TUint32 aGrammarId )
+ {
+ iGrammarId = aGrammarId;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::SetLexiconId
+// sets the lexicon id to the given value
+// for internal use
+// ---------------------------------------------------------
+//
+void CNssContext::SetLexiconId( TUint32 aLexiconId )
+ {
+ iLexiconId = aLexiconId;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::SetModelBankId
+// sets the model bank id to the given value
+// for internal use
+// ---------------------------------------------------------
+//
+void CNssContext::SetModelBankId( TUint32 aModelBankId )
+ {
+ iModelBankId = aModelBankId;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::SetRecognitionMode
+// sets the model bank id to the given value
+// for internal use
+// ---------------------------------------------------------
+//
+void CNssContext::SetRecognitionMode( TNSSRecognitionMode aRecogMode )
+ {
+ iRecognitionMode = aRecogMode;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::SaveToSrsL
+// for internal use
+// This method is used to save the context to the SRS.
+// This creates the model bank,
+// lexicon, and grammar for a context. Model bank, and lexicon
+// are created only for the first time, and are thus, fixed.
+// For every context, there is one grammar id. After, model bank,
+// lexicon, and grammar are created, the corresponding Ids are
+// set in the context object.
+// ---------------------------------------------------------
+//
+void CNssContext::BeginSaveToSrsL( MNssCoreSrsDBEventHandler* aSrsDBEventHandler )
+ {
+ iContextSrsPortal->BeginSaveContextL( this, aSrsDBEventHandler );
+ }
+
+// ---------------------------------------------------------
+// CNssContext::DeleteFromSrsL
+// for internal use
+// This method is used to delete a context from the SRS.
+// This deletes the grammar from the SRS.
+// ---------------------------------------------------------
+//
+void CNssContext::BeginDeleteFromSrsL( MNssCoreSrsDBEventHandler* aSrsDBEventHandler )
+ {
+ iContextSrsPortal->BeginDeleteContextL( this, aSrsDBEventHandler );
+ }
+
+// ---------------------------------------------------------
+// CNssContext::CommitSrsChanges
+// for internal use
+// This method is used to commit a context change from the SRS.
+// ---------------------------------------------------------
+//
+TInt CNssContext::CommitSrsChanges()
+ {
+ return iContextSrsPortal->CommitSaveContext();
+ }
+
+// ---------------------------------------------------------
+// CNssContext::RollbackSrsChanges
+// for internal use
+// This method is used to commit a context change from the SRS.
+// ---------------------------------------------------------
+//
+TInt CNssContext::RollbackSrsChanges()
+ {
+ return iContextSrsPortal->RollbackSaveContext();
+ }
+
+// ---------------------------------------------------------
+// CNssContext::SetModelBankAndLexiconExist
+// for internal use
+// sets the iModelBankAndLexiconExist flag to ETrue or EFalse
+// ---------------------------------------------------------
+//
+void CNssContext::SetModelBankAndLexiconExist( TBool aVal )
+ {
+ iModelBankAndLexiconExist = aVal;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::ModelBankAndLexiconExist
+// for internal use
+// gets the value of the iModelBankAndLexiconExist flag
+// ---------------------------------------------------------
+//
+TBool CNssContext::ModelBankAndLexiconExist()
+ {
+ return iModelBankAndLexiconExist;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::operator=
+// for internal use
+// overloaded assignment operator
+// ---------------------------------------------------------
+//
+CNssContext& CNssContext::operator=( const CNssContext& aContext )
+ {
+ RUBY_DEBUG0( "CNssContext::operator=" );
+
+ if ( this != &aContext )
+ {
+ if ( iName )
+ {
+ delete iName;
+ }
+ iName = (aContext.iName)->Alloc();
+ iContextId = aContext.iContextId;
+ iGlobal = aContext.iGlobal;
+ iGrammarId = aContext.iGrammarId;
+ iLexiconId = aContext.iLexiconId;
+ iModelBankId = aContext.iModelBankId;
+ iContextSrsPortal = aContext.iContextSrsPortal;
+ iModelBankAndLexiconExist = aContext.iModelBankAndLexiconExist;
+ iRecognitionMode = aContext.iRecognitionMode;
+ }
+ return *this;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::CopyL
+// for internal use
+// creates a copy of this context
+// ---------------------------------------------------------
+//
+CNssContext* CNssContext::CopyL()
+ {
+ // Takes ages in strain test
+ RUBY_DEBUG0( "CNssContext::CopyL" );
+
+ CNssContext* copy = new (ELeave) CNssContext( iContextSrsPortal );
+ copy->iName = iName->Alloc();
+ copy->iContextId = iContextId;
+ copy->iGlobal = iGlobal;
+ copy->iGrammarId = iGrammarId;
+ copy->iLexiconId = iLexiconId;
+ copy->iModelBankId = iModelBankId;
+ copy->iContextSrsPortal = iContextSrsPortal;
+ copy->iModelBankAndLexiconExist = iModelBankAndLexiconExist;
+ copy->iClientData.Copy( iClientData );
+
+ return copy;
+ }
+
+// ---------------------------------------------------------
+// CNssContext::SetClientData
+// Sets/Resets the client data. The data must be saved
+// to VAS DBwith CNssContextMgr::SaveClientData.
+// ---------------------------------------------------------
+//
+void CNssContext::SetClientData(const TDesC8& aData)
+ {
+ iClientData.Copy( aData );
+ }
+
+// ---------------------------------------------------------
+// CNssContext::ClientData
+// Gets the client data.
+// ---------------------------------------------------------
+//
+const TDesC8& CNssContext::ClientData(void)
+ {
+ return iClientData;
+ }
+
+// End of File