diff -r 8ce15fced3a6 -r cad71a31b7fc srsf/vcommandmanager/src/vcmanagervoicekeylauncher.cpp --- a/srsf/vcommandmanager/src/vcmanagervoicekeylauncher.cpp Thu Aug 19 09:56:14 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,196 +0,0 @@ -/* -* Copyright (c) 2005-2008 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: Observer voice key presses -* -*/ - - -#include "vcmanagervoicekeylauncher.h" -#include "rubydebug.h" -#include -#include -#include -#include -#include -#include - - -// CONSTANTS -const TInt KCapturePriority( 255 ); -const TUint KLongVoiceKey( 0x102818E7 ); // unique (UID of this exe) -const TUid KVoiceUiUID = { 0x101F8543 }; - -// --------------------------------------------------------- -// CVCommandManagerVoiceKeyLauncher::NewL -// --------------------------------------------------------- -// -CVCommandManagerVoiceKeyLauncher* CVCommandManagerVoiceKeyLauncher::NewL() - { - CVCommandManagerVoiceKeyLauncher* self = new (ELeave) CVCommandManagerVoiceKeyLauncher(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------- -// CVCommandManagerVoiceKeyLauncher::CVCommandManagerVoiceKeyLauncher -// C++ constructor can NOT contain any code, that might leave. -// --------------------------------------------------------- -// -CVCommandManagerVoiceKeyLauncher::CVCommandManagerVoiceKeyLauncher() - : CActive( EPriorityStandard ) - { - // nothing - } - -// --------------------------------------------------------- -// CVCommandManagerVoiceKeyLauncher::ConstructL -// C++ constructor can NOT contain any code, that might leave. -// --------------------------------------------------------- -// -void CVCommandManagerVoiceKeyLauncher::ConstructL() - { - RUBY_DEBUG_BLOCK( "" ); - - // Check if the voice key exist - iKeyEnabled = FeatureManager::FeatureSupported( KFeatureIdKeypadNoVoiceKey ); - if ( iKeyEnabled ) - { - User::LeaveIfError( iWsSession.Connect() ); - - iWindowGroup = RWindowGroup ( iWsSession ); - iWindowGroup.Construct( (TUint32) &iWindowGroup, EFalse ); - - iWindowGroup.SetOrdinalPosition( -1 ); - iWindowGroup.EnableReceiptOfFocus( EFalse ); - - iKeyCaptureHandle = iWindowGroup.CaptureKey( EKeyDevice6, 0, 0 ); - iLongKeyCaptureHandle = iWindowGroup.CaptureLongKey( (TUint)EKeyDevice6, - KLongVoiceKey, 0, 0, KCapturePriority, ELongCaptureNormal ); - - CApaWindowGroupName* name = CApaWindowGroupName::NewLC( iWsSession ); - name->SetHidden( ETrue ); - name->SetWindowGroupName( iWindowGroup ); - CleanupStack::PopAndDestroy( name ); - - iWsSession.EventReady( &iStatus ); - - CActiveScheduler::Add( this ); - SetActive(); - - } - - } - -// --------------------------------------------------------- -// CVCommandManagerVoiceKeyLauncher::~CVCommandManagerVoiceKeyLauncher -// --------------------------------------------------------- -// -CVCommandManagerVoiceKeyLauncher::~CVCommandManagerVoiceKeyLauncher() - { - RUBY_DEBUG0( "START" ); - if ( iKeyEnabled ) - { - Cancel(); - iWindowGroup.Close(); - iWsSession.Close(); - } - - RUBY_DEBUG0( "EXIT" ); - } - - -// --------------------------------------------------------- -// CVCommandManagerVoiceKeyLauncher::DoCancel -// --------------------------------------------------------- -// -void CVCommandManagerVoiceKeyLauncher::DoCancel() - { - RUBY_DEBUG0( "START" ); - - - if ( iKeyEnabled ) - { - iWsSession.EventReadyCancel(); - iWindowGroup.CancelCaptureKey( iKeyCaptureHandle ); - iWindowGroup.CancelCaptureKey( iLongKeyCaptureHandle ); - } - - RUBY_DEBUG0( "EXIT" ); - } - -// --------------------------------------------------------- -// CVCommandManagerVoiceKeyLauncher::RunL -// --------------------------------------------------------- -// -void CVCommandManagerVoiceKeyLauncher::RunL() - { - RUBY_DEBUG_BLOCK( "" ); - - if ( iStatus.Int() == KErrNone ) - { - TWsEvent event; - iWsSession.GetEvent( event ); - - iWsSession.EventReady( &iStatus ); - SetActive(); - - if ( event.Key()->iCode == KLongVoiceKey ) - { - //iWsSession.SendEventToOneWindowGroupsPerClient( event ); - - LaunchVoiceUiL(); - } - } - } - - -// --------------------------------------------------------- -// CVCommandManagerVoiceKeyLauncher::LaunchVoiceUiL -// --------------------------------------------------------- -// -void CVCommandManagerVoiceKeyLauncher::LaunchVoiceUiL() - { - RUBY_DEBUG_BLOCK( "" ); - - TApaTaskList apaTaskList( CCoeEnv::Static()->WsSession() ); - TApaTask apaTask = apaTaskList.FindApp( KVoiceUiUID ); - - if ( apaTask.Exists() ) - { - apaTask.BringToForeground(); - } - else - { - RApaLsSession apaLsSession; - User::LeaveIfError( apaLsSession.Connect() ); - CleanupClosePushL(apaLsSession); - - TApaAppInfo appInfo; - User::LeaveIfError( apaLsSession.GetAppInfo( appInfo, KVoiceUiUID ) ); - - TFileName appName = appInfo.iFullName; - CApaCommandLine* apaCommandLine = CApaCommandLine::NewLC(); - - apaCommandLine->SetExecutableNameL( appName ); - apaCommandLine->SetCommandL( EApaCommandRunWithoutViews ); - User::LeaveIfError ( apaLsSession.StartApp( *apaCommandLine ) ); - CleanupStack::PopAndDestroy( apaCommandLine ); - - CleanupStack::PopAndDestroy(&apaLsSession); - } - } - -// End of File