--- a/srsf/nssvasapi/nssvasrecognition/src/nssvasctagselectnotification.cpp Mon Jan 18 20:20:30 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,239 +0,0 @@
-/*
-* Copyright (c) 2003-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: The CNssTagSelectNotification class allows the client to
-* register and deregister for a voice tag select event.
-*
-*/
-
-
-// INCLUDE FILES
-#include <e32std.h>
-#include "nssvasctagselectnotification.h"
-#include "nssvasmtagselecthandler.h"
-#include "nssvasctagselectdata.h"
-#include "rubydebug.h"
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-
-// -----------------------------------------------------------------------------
-// CNssTagSelectNotification::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CNssTagSelectNotification* CNssTagSelectNotification::NewL()
- {
- // version of NewLC which leaves nothing on the cleanup stack
- CNssTagSelectNotification* self=NewLC();
- CleanupStack::Pop(self);
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CNssTagSelectNotification::NewLC
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CNssTagSelectNotification* CNssTagSelectNotification::NewLC()
- {
- // NewLC with two stage construct
- CNssTagSelectNotification* self=new (ELeave) CNssTagSelectNotification();
- // get new, leave if can't
- CleanupStack::PushL(self);
- // push onto cleanup stack
- // (in case self->ConstructL leaves)
- self->ConstructL(); // use two-stage construct
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CNssTagSelectNotification::~CNssTagSelectNotification
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CNssTagSelectNotification::~CNssTagSelectNotification()
- {
- RUBY_DEBUG0( "CNssTagSelectNotification::~CNssTagSelectNotification" );
-
- if ( iDBTagSelectNotifier )
- {
- iDBTagSelectNotifier->Deregister( this );
- }
-
- if ( iTagSelectDataList )
- {
- iTagSelectDataList->ResetAndDestroy();
- delete iTagSelectDataList;
- }
- CNssVASDBBuilder::RemoveInstance(); // remove iVasDBBuilder instance
- }
-
-// -----------------------------------------------------------------------------
-// CNssTagSelectNotification::RegisterL
-// Method to register for voice tag select notification.
-// -----------------------------------------------------------------------------
-//
-MNssTagSelectNotification::TNssSelectResult CNssTagSelectNotification::RegisterL(
- MNssContext* aContext,
- MNssTagSelectHandler* aTagSelectHandler )
- {
- RUBY_DEBUG_BLOCK( "CNssTagSelectNotification::RegisterL" );
-
- if ( iTagSelectDataList->Count() == 0 )
- {
- // register ourself
- TInt dbErrorCode;
- dbErrorCode = iDBTagSelectNotifier->RegisterForNotification( this );
- if ( dbErrorCode != KErrNone )
- {
- return EVasSelectFailed;
- }
- }
- CNssTagSelectData* tagSelectData = CNssTagSelectData::NewL( (CNssContext *) aContext,
- aTagSelectHandler );
-
- CleanupStack::PushL(tagSelectData);
- iTagSelectDataList->AppendL( tagSelectData );
- CleanupStack::Pop(tagSelectData); // do not destroy tagSelectData; it is appended
- return EVasErrorNone;
- }
-
-// -----------------------------------------------------------------------------
-// CNssTagSelectNotification::Deregister
-// Method to deregister from voice tag select notification
-// -----------------------------------------------------------------------------
-//
-MNssTagSelectNotification::TNssSelectResult CNssTagSelectNotification::Deregister(
- MNssContext* aContext,
- MNssTagSelectHandler* aTagSelectHandler )
- {
- RUBY_DEBUG0( "CNssTagSelectNotification::Deregister" );
-
- // if there is no registration, fail the deregister
- if ( iTagSelectDataList->Count() == 0 )
- {
- return EVasSelectFailed;
- }
-
- // loop through the TagSelectDataList entries
- // for each context match, check if the event handler also matches
- // if yes, delete the entry
- for ( TInt index=0; index < iTagSelectDataList->Count(); index++ )
- {
-
- TBool match = CompareContexts( (CNssContext *) aContext, index );
-
- MNssTagSelectHandler* tagSelectHandler;
- tagSelectHandler = iTagSelectDataList->At( index )->TagSelectHandler();
-
- if ( ( match == (TInt)ETrue ) &&
- (aTagSelectHandler == tagSelectHandler))
- {
- CNssTagSelectData* tagSelectData = iTagSelectDataList->At( index );
- iTagSelectDataList->Delete( index );
- delete tagSelectData;
- break; // exit the for loop
- }
- }
- if ( iTagSelectDataList->Count() == 0 )
- {
- // deregister ourself
- TInt dbErrorCode;
- dbErrorCode = iDBTagSelectNotifier->Deregister( this );
- if ( dbErrorCode != KErrNone )
- {
- RUBY_DEBUG0( "CNssTagSelectNotification, DBTagSelectNotifier->Deregister failed" );
- }
- }
- return EVasErrorNone;
- }
-
-// -----------------------------------------------------------------------------
-// CNssTagSelectNotification::HandleSelection
-// Method called into the client by CNssDBTagSelectNotifier
-// -----------------------------------------------------------------------------
-//
-void CNssTagSelectNotification::HandleSelection(CNssTag* aTag)
- {
- RUBY_DEBUG0( "CNssTagSelectNotification::HandleSelection" );
-
- // loop through the TagSelectDataList entries
- // for each context match, issue a HandleTagSelect response event
- for ( TInt index=0; index < iTagSelectDataList->Count(); index++ )
- {
- TBool result = CompareContexts((CNssContext *)(aTag->Context()), index);
- if ( result == (TInt)ETrue )
- {
- // make a copy of the tag for each client which registered for
- // the context of aTag
- // the client is responsible for deleting clientTag
- CNssTag* clientTag=NULL;
- TRAPD( err, ( clientTag = aTag->CopyL() ) );
- if ( err != KErrNone )
- {
- RUBY_DEBUG0( "CNssTagSelectNotification: TRAPD CNssTag CopyL failed" );
- return;
- }
-
- iTagSelectDataList->At( index )->TagSelectHandler()->
- HandleTagSelect( (MNssTag*)clientTag );
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CNssTagSelectNotification::CNssTagSelectNotification
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CNssTagSelectNotification::CNssTagSelectNotification()
- {
- }
-
-// -----------------------------------------------------------------------------
-// CNssTagSelectNotification::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CNssTagSelectNotification::ConstructL()
- {
- iTagSelectDataList = new (ELeave) CArrayPtrFlat<CNssTagSelectData>(1);
-
- iVasDBBuilder = CNssVASDBBuilder::InstanceL();
-
- iDBTagSelectNotifier = iVasDBBuilder->GetTagSelectNotifier();
- }
-
-// -----------------------------------------------------------------------------
-// CNssTagSelectNotification::CompareContexts
-// Method to compare a context with a TagSelectDataList entry context.
-// -----------------------------------------------------------------------------
-//
-TBool CNssTagSelectNotification::CompareContexts( CNssContext* aContext, TInt aIndex )
- {
- CNssContext* context;
- context = iTagSelectDataList->At( aIndex )->Context();
-
- if ( context->ContextName().Compare( aContext->ContextName() )==0 )
- {
- return ETrue;
- }
- else
- {
- return EFalse;
- }
- }
-
-// End of file