voiceui/voiceuivoicerecognition/src/vuicappui.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 25 May 2010 12:43:51 +0300
branchRCL_3
changeset 16 994c46bea969
parent 0 bf1d17376201
permissions -rw-r--r--
Revision: 201019 Kit: 2010121

/*
* Copyright (c) 2007-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:  The Voice Recognition Application Ui
*
*/


// INCLUDE FILES
#include <featmgr.h>

#include <e32property.h>
#include <ScreensaverInternalPSKeys.h>
#include <coreapplicationuisdomainpskeys.h>

#include <vuivoicerecogdefs.h>

#include "vuicappui.h"
#include "vuicvoicerecogdialogimpl.h"

#include "vuiccalldetector.h"
#include "vuickeygrabber.h"
#include "vuicfoldobserver.h"
#include "vuicnotificationobserver.h"

#include "rubydebug.h"

// ================= MEMBER FUNCTIONS =======================
//
// ----------------------------------------------------------------------------
// CAppUi::ConstructL()
// ----------------------------------------------------------------------------
//
void CAppUi::ConstructL()
    {
    SetFullScreenApp( EFalse );

    BaseConstructL( EAknEnableSkin | EAknEnableMSK );
    
    // Sets up TLS, must be done before FeatureManager is used.
    FeatureManager::InitializeLibL();
    
    RProperty::Set( KPSUidScreenSaver, KScreenSaverAllowScreenSaver, 1 );
    RProperty::Set( KPSUidScreenSaver, KScreenSaverNoPowerSaveMode, 1 );
    RProperty::Set( KPSUidCoreApplicationUIs, KLightsControl, ELightsOn );
    
    iNotificationObserver = CNotificationObserver::NewL();
    
    iCallDetector = CCallDetector::NewL( this );
    iCallDetector->RequestNotification();
    
    iKeyGrabber = CKeyGrabber::NewL( this );
    
    if ( FeatureManager::FeatureSupported( KFeatureIdCoverDisplay ) )
	    {
        iFoldObserver = CFoldObserver::NewL( this );
        }
    
    SetKeyEventFlags( CAknAppUiBase::EDisableSendKeyShort | CAknAppUiBase::EDisableSendKeyLong );
    
    iEikonEnv->SetAutoForwarding( ETrue );
    
    iRecognitionDialog = CVoiceRecognitionDialogImpl::NewL( this );
    
    iRecognitionDialog->ExecuteL();
    }

// ----------------------------------------------------------------------------
// CAppUi::~CAppUi()
// Destructor
// ----------------------------------------------------------------------------
//
CAppUi::~CAppUi() 
    {
    RProperty::Set( KPSUidScreenSaver, KScreenSaverNoPowerSaveMode, 0 );
    RProperty::Set( KPSUidScreenSaver, KScreenSaverAllowScreenSaver, 0 );

    FeatureManager::UnInitializeLib();
    
    delete iRecognitionDialog;
    
    delete iNotificationObserver;
    
    delete iKeyGrabber;
    delete iFoldObserver;
    
    if ( iCallDetector )
        {
        iCallDetector->Cancel();
        delete iCallDetector;
        }
    }

// ----------------------------------------------------------------------------
// CAppUi::DialogDismissed
// ----------------------------------------------------------------------------
//
void CAppUi::DialogDismissed()
    {
    RUBY_DEBUG0( "CAppUi::DialogDismissed START" );
    
    TRAPD( error, HandleCommandL( EAknSoftkeyExit ) );
    if ( error != KErrNone )
        {
        Exit();
        }
    
    RUBY_DEBUG0( "CAppUi::DialogDismissed EXIT" );
    }

// ----------------------------------------------------------------------------
// CAppUi::DialogDismissedL
// ----------------------------------------------------------------------------
//    
void CAppUi::CallDetectedL()
    {
    RUBY_DEBUG_BLOCK( "CAppUi::CallDetectedL" );
    
    HandleCommandL( EAknSoftkeyExit );
    }

// ----------------------------------------------------------------------------
// CAppUi::HandleKeypressL
// ----------------------------------------------------------------------------
//     
void CAppUi::HandleKeypressL( TInt /*aSoftkey*/ )
    {
    RUBY_DEBUG_BLOCK( "CAppUi::HandleKeypressL" );
    
    HandleCommandL( EAknSoftkeyExit );
    }

// ----------------------------------------------------------------------------
// CAppUi::HandleCommandL
// ----------------------------------------------------------------------------
//
void CAppUi::HandleCommandL( TInt aCommand )
    {
    RUBY_DEBUG_BLOCK( "CAppUi::HandleCommandL" );
    
    switch ( aCommand )
        {
        // Both exit commands should do the same thing
        case EEikCmdExit:
        case EAknSoftkeyExit:
            {
            Exit();
            break;
            }
            
        default:
            {
            CAknAppUi::HandleCommandL( aCommand );
            break;              
            }
        }
    }

// -----------------------------------------------------------------------------
// CAppUi::ProcessCommandParametersL
// -----------------------------------------------------------------------------
//         
TBool CAppUi::ProcessCommandParametersL( CApaCommandLine& aCommandLine )
    {
    RUBY_DEBUG_BLOCK( "CAppUi::ProcessCommandParametersL" );

    TPtrC8 argumentPtr( aCommandLine.TailEnd() );
    
    if ( argumentPtr.Length() && !argumentPtr.Compare( KVoiceUiMode ) )
        {
        iEikonEnv->SetAutoForwarding( EFalse );
        iRecognitionDialog->SetOnlyCallsAllowed();
        }

    return ETrue;
    }
    
// ----------------------------------------------------------------------------
// CAppUi::PrepareToExit
// ----------------------------------------------------------------------------
//
void CAppUi::PrepareToExit( )
    {
    RUBY_DEBUG0( "CAppUi::PrepareToExit START" );

    delete iRecognitionDialog;
    iRecognitionDialog = NULL;
    
    CAknAppUi::PrepareToExit();
    	 
	RUBY_DEBUG0( "CAppUi::PrepareToExit Exit" );
    } 
// End of File