securitydialogs/lockapp/src/lockappstatecontrol.cpp
changeset 26 aad866c37519
parent 22 6b63ca65093a
child 30 cc1cea6aabaf
child 37 7bad16cccaca
--- a/securitydialogs/lockapp/src/lockappstatecontrol.cpp	Thu May 27 13:44:17 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,949 +0,0 @@
-/*
-* Copyright (c) 2007 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:  Controls lock states (unlocked, keylock, devicelock)
- *
-*/
-
-
-#include "lockappstatecontrol.h"
-
-// child controls
-#include "lockappidlecontrol.h"
-#include "lockappkeyguardcontrol.h"
-#include "lockappdevicelockcontrol.h"
-
-#include "lockapppubsubobserver.h"
-#include "lockappcenrepobserver.h"
-
-#include "lockappkeycapturecontroller.h"
-#include "lockappstatepublisher.h"
-#include "lockappecsdetector.h"
-#include "lockapputils.h"
-#include <featmgr.h>
-
-#include <settingsinternalcrkeys.h>
-// #include <ScreensaverInternalPSKeys.h>
-#include <ctsydomainpskeys.h>
-// #include <activeidle2domainpskeys.h>
-
-#include "GlobalWindowPriorities.h"
-
-#include <avkon.rsg> // general avkon resources
-#include <aknnotpi.rsg> // keyguard spesific resources
-#include <aknsoundsystem.h>
-#include <AknIncallBubbleNotify.h> // incall bubble
-#include <bautils.h> // BaflUtils
-#include <apgwgnam.h>
-
-#include <keylockpolicyapi.h>
-
-#include <hwrmdomainpskeys.h>
-    TUid KUidFpsCategory = {0x1020507E};
-const		TInt KFpsAuthenticationKey = 1;
-
-// used avkon dialog resources
-_LIT(KRESOURCEFILE, "z:\\resource\\aknnotpi.rsc");
-
-// Visibility gate WG priority's relative offset from ECoeWinPriorityAlwaysAtFront
-// Now equals -1000 to be an absolute 0.
-const TInt KGlobalWindowPriority_LockVisibilityGate = -1000;
-
-// ---------------------------------------------------------------------------
-// Standard Symbian OS construction sequence
-// ---------------------------------------------------------------------------
-CLockAppStateControl* CLockAppStateControl::NewL( )
-    {
-    CLockAppStateControl* self = new (ELeave) CLockAppStateControl();
-    CleanupStack::PushL( self );
-    self->ConstructL( );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Destruction releases key captures.
-// ---------------------------------------------------------------------------
-CLockAppStateControl::~CLockAppStateControl( )
-    {
-    // localized resources are freed
-    if ( iResourceFileOffset )
-        {
-        // We implicitely trust that eikon env exists (though in practice it does not make the
-        // difference as this destructor is really never called...)
-        iEikonEnv->DeleteResourceFile(iResourceFileOffset);
-        }
-
-    // PuSub observers
-    if ( iPSScreenSaverObserver )
-        {
-        delete iPSScreenSaverObserver;
-        iPSScreenSaverObserver = NULL;
-        }
-
-    if ( iPSTelephonyObserver )
-        {
-        delete iPSTelephonyObserver;
-        iPSTelephonyObserver = NULL;
-        }
-
-    if ( iPSGripObserver )
-        {
-        delete iPSGripObserver;
-        iPSGripObserver = NULL;
-        }
-
-    if ( iPSFPSObserver )
-        {
-        delete iPSFPSObserver;
-        iPSFPSObserver = NULL;
-        }
-
-    CLockAppKeyCaptureController::Destroy( );
-
-    if ( iIncallBubble )
-        {
-        delete iIncallBubble;
-        iIncallBubble = NULL;
-        }
-
-    if ( iSoundsMuted )
-        {
-        MuteSounds( EFalse );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// The uninitialized status is ELockNoteActive.
-// ---------------------------------------------------------------------------
-CLockAppStateControl::CLockAppStateControl( ) :
-    iLockStatus( ELockNotActive),
-    iWGEventGate( iEikonEnv->RootWin()),
-    iEnvState( 0 )
-    {
-    // no implementation required
-    }
-
-// ---------------------------------------------------------------------------
-// All lock state observers are created here.
-// ---------------------------------------------------------------------------
-void CLockAppStateControl::ConstructL( )
-    {
-    INFO( "CLockAppStateControl::ConstructL started" );
-
-    // creates observer list
-    BaseConstructL( );
-
-    // localized resources are loaded
-    TFileName resourceFile;
-    resourceFile.Append( KRESOURCEFILE );
-    BaflUtils::NearestLanguageFile( iEikonEnv->FsSession(), resourceFile );
-    iResourceFileOffset = iEikonEnv->AddResourceFileL(resourceFile);
-
-    // fetch power key configuration from feature manager
-    FeatureManager::InitializeLibL( );
-    iFeatureNoPowerkey = FeatureManager::FeatureSupported( KFeatureIdNoPowerkey );
-    FeatureManager::UnInitializeLib( );
-
-    // allow autoforwarding for the application (stacked bringforwards)
-    iEikonEnv->SetAutoForwarding( ETrue );
-
-    CLockAppKeyCaptureController::InitL( iEikonEnv->RootWin() );
-
-    // Create second windowgroup for visibility gate
-    CreateVisibilityGateWgL( );
-
-    INFO_1( "CLockAppStateControl - EventGate WgID = %d", iWGEventGate.WindowGroupId() );
-    INFO_1( "CLockAppStateControl - VisibilityGate WgID = %d", iWGVisibilityGate.WindowGroupId() );
-
-    //
-    // Construct Controls
-    //
-    iIdle = CLockAppIdleControl::NewL( *this );
-    AddObserverL( iIdle ); // ownership is transfered
-
-    iCurrentControl = iIdle;
-    iCurrentControl->HandleActivateEventL( iEnvState );
-
-    iKeyguard = CLockAppKeyguardControl::NewL( *this );
-    AddObserverL( iKeyguard ); // ownership is transfered
-    
-    RDebug::Printf( "%s %s (%u) iDevicelock=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iDevicelock );
-    iDevicelock = CLockAppDevicelockControl::NewL( *this, iWGVisibilityGate ); 
-    RDebug::Printf( "%s %s (%u) iDevicelock=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iDevicelock );
-    iDevicelock->ConnectToPhoneL( iWGVisibilityGate );
-    RDebug::Printf( "%s %s (%u) iDevicelock=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iDevicelock );
-    AddObserverL( iDevicelock ); // ownership is transfered
-
-    // Emergency support
-    iLockEcsDetector = CLockAppEcsDetector::NewL( );
-    AddObserverL( iLockEcsDetector ); // ownership is transfered
-
-    // Lock state publisher
-    CLockAppStatePublisher* lockPublisher = CLockAppStatePublisher::NewL( );
-    AddObserverL( lockPublisher ); // ownership is transfered
-
-    // PubSub observers
-		/* This is not used any more because screensavers are removed now
-    iPSScreenSaverObserver = CLockAppPubSubObserver::NewL( this, KPSUidScreenSaver, KScreenSaverOn );
-    */
-    iPSTelephonyObserver = CLockAppPubSubObserver::NewL( this, KPSUidCtsyCallInformation, KCTsyCallState );
-    iPSGripObserver = CLockAppPubSubObserver::NewL( this, KPSUidHWRM, KHWRMGripStatus );
-
-    iPSFPSObserver = CLockAppPubSubObserver::NewL( this, KUidFpsCategory, KFpsAuthenticationKey );
-
-    // Call bubble
-    iIncallBubble = CAknIncallBubble::NewL( );
-
-    ActivateL( );
-
-    INFO( "CLockAppStateControl::ConstructL completed" );
-    }
-
-// ---------------------------------------------------------------------------
-// Create visibility gate window group
-// ---------------------------------------------------------------------------
-void CLockAppStateControl::CreateVisibilityGateWgL( )
-    {
-    INFO( "CLockAppStateControl - CreateVisibilityGateL" );
-
-    iWGVisibilityGate = RWindowGroup( iCoeEnv->WsSession( ) );
-    User::LeaveIfError( iWGVisibilityGate.Construct( (TUint32) &iWGVisibilityGate ) );
-
-    /* hide this window group from the app switcher */
-    iWGVisibilityGate.SetOrdinalPosition( 0, ECoeWinPriorityNeverAtFront );
-    iWGVisibilityGate.EnableReceiptOfFocus( EFalse );
-
-    /*CApaWindowGroupName* wn = CApaWindowGroupName::NewLC( ws );
-    wn->SetHidden( ETrue );
-    wn->SetWindowGroupName( iWGVisibilityGate );
-    CleanupStack::PopAndDestroy( wn );*/
-    }
-
-// ---------------------------------------------------------------------------
-// This method should be called to enable keyguard.
-// ---------------------------------------------------------------------------
-TInt CLockAppStateControl::EnableKeyguardL( TBool aWithNote )
-    {
-    INFO_1( "CLockAppStateControl::EnableKeyguardL aWithNote= %d", aWithNote );
-    TInt err = CheckIfLegal( ELockAppEnableKeyguard );
-    if ( err == KErrNone && !iKeyguard->ActivationAllowedL( ) )
-        {
-        err = KErrPermissionDenied;
-        }
-    if ( err == KErrNone )
-        {
-        PostStatusChangeL( EKeyguardActive );
-        __ASSERT_DEBUG( iLockStatus == EKeyguardActive, DoPanic(ELockIllegalState));
-        INFO( "CLockAppStateControl - Keyguard Enabled" );
-        if ( aWithNote )
-            {
-            iKeyguard->DisplayKeysLockedNote( );
-            }
-        }
-    return err;
-    }
-
-// ---------------------------------------------------------------------------
-// This method should be called to disable keyguard.
-// ---------------------------------------------------------------------------
-TInt CLockAppStateControl::DisableKeyguardL( TBool aWithNote )
-    {
-    INFO_1( "CLockAppStateControl::DisableKeyguardL aWithNote= %d", aWithNote );
-    TInt err = CheckIfLegal( ELockAppDisableKeyguard );
-    if ( err == KErrNone && !iKeyguard->DeActivationAllowedL( ) )
-        {
-        err = KErrPermissionDenied;
-        }
-    if ( err == KErrNone )
-        {
-        PostStatusChangeL( ELockNotActive );
-        __ASSERT_DEBUG( iLockStatus == ELockNotActive, DoPanic(ELockIllegalState));
-        INFO( "CLockAppStateControl - Keyguard Disabled" );
-        if ( aWithNote )
-            {
-            iKeyguard->DisplayKeysActiveNote( );
-            }
-        }
-    return err;
-    }
-
-// ---------------------------------------------------------------------------
-// This method should be called to enable device lock.
-// ---------------------------------------------------------------------------
-TInt CLockAppStateControl::EnableDevicelockL( TDevicelockReason aReason )
-    {
-    INFO_1( "CLockAppStateControl::EnableDevicelockL aReason= %d", aReason );
-    RDebug::Printf( "%s %s (%u) iDevicelock=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iDevicelock );
-    TInt err = CheckIfLegal( ELockAppEnableDevicelock );
-    if ( err == KErrNone && !iDevicelock->ActivationAllowedL( aReason ) )
-        {
-        err = KErrPermissionDenied;
-        }
-    if ( err == KErrNone )
-        {
-        PostStatusChangeL( EDevicelockActive );
-        __ASSERT_DEBUG( iLockStatus == EDevicelockActive, DoPanic(ELockIllegalState));
-        iDevicelock->SetLockingReason( aReason );
-        INFO( "CLockAppStateControl - Devicelock Enabled" );
-        }
-    return err;
-    }
-
-// ---------------------------------------------------------------------------
-// This method should be called to disable device lock.
-// ---------------------------------------------------------------------------
-TInt CLockAppStateControl::DisableDevicelockL( )
-    {
-    INFO_1( "CLockAppStateControl::DisableDevicelockL 1= %d", 1 );
-    TInt err = CheckIfLegal( ELockAppDisableDevicelock );
-    if ( err == KErrNone && !iDevicelock->DeActivationAllowedL( ) )
-        {
-        err = KErrPermissionDenied;
-        }
-    if ( err == KErrNone )
-        {
-        PostStatusChangeL( ELockNotActive );
-        __ASSERT_DEBUG( iLockStatus == ELockNotActive, DoPanic(ELockIllegalState));
-        INFO( "CLockAppStateControl - Devicelock Disabled" );
-        }
-    return err;
-    }
-
-// ---------------------------------------------------------------------------
-// Checks if offer keyguard is allowed and if it is, offers to lock keyguard.
-// ---------------------------------------------------------------------------
-TInt CLockAppStateControl::OfferKeyguard( )
-    {
-    INFO_1( "CLockAppStateControl::OfferKeyguard 1= %d", 1 );
-    TInt err = CheckIfLegal( ELockAppOfferKeyguard );
-    if ( err == KErrNone )
-        {
-        __ASSERT_DEBUG( iLockStatus == ELockNotActive, DoPanic(ELockIllegalState));
-        INFO( "CLockAppStateControl - OfferKeyguard" );
-        iIdle->OfferKeyLock( );
-        }
-    return err;
-    }
-
-// ---------------------------------------------------------------------------
-// Shows keys locked note if keyguard is enabled.
-// ---------------------------------------------------------------------------
-TInt CLockAppStateControl::ShowKeysLockedNote( )
-    {
-    INFO_1( "CLockAppStateControl::ShowKeysLockedNote 1= %d", 1 );
-    TInt err = CheckIfLegal( ELockAppShowKeysLockedNote );
-    if ( err == KErrNone )
-        {
-        __ASSERT_DEBUG( iLockStatus == EKeyguardActive, DoPanic(ELockIllegalState));
-        INFO( "CLockAppStateControl - ShowKeysLockedNote" );
-        iKeyguard->DisplayLockedNote( );
-        }
-    return err;
-    }
-
-// ---------------------------------------------------------------------------
-// A method for returning the lock status.
-// ---------------------------------------------------------------------------
-TLockStatus CLockAppStateControl::LockStatus( ) const
-    {
-    INFO_1( "CLockAppStateControl::LockStatus iLockStatus= %d", iLockStatus );
-    return iLockStatus;
-    }
-
-// ---------------------------------------------------------------------------
-// A method for returning the environment status bitmask.
-// ---------------------------------------------------------------------------
-TUint CLockAppStateControl::EnvironmentStatus( ) const
-    {
-    return iEnvState;
-    }
-
-// ---------------------------------------------------------------------------
-// A method for executing different internal tests.
-// ---------------------------------------------------------------------------
-TInt CLockAppStateControl::ExecuteInternalTest( )
-    {
-#ifdef _DEBUG
-    return iLockEcsDetector->TestEcsNote( );
-#else
-    return KErrNone;
-#endif
-    }
-
-// ---------------------------------------------------------------------------
-// Number of owned UI controls (idle, keyguard, devicelock)
-// ---------------------------------------------------------------------------
-TInt CLockAppStateControl::CountComponentControls( ) const
-    {
-    return 3;
-    }
-
-// ---------------------------------------------------------------------------
-// Owned UI controls (idle, keyguard, devicelock)
-// ---------------------------------------------------------------------------
-CCoeControl* CLockAppStateControl::ComponentControl( TInt aIndex ) const
-    {
-    RDebug::Printf( "%s %s (%u) aIndex=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aIndex );
-    switch ( aIndex )
-        {
-        case 0:
-            return iIdle;
-        case 1:
-            return iKeyguard;
-        case 2:
-     		    RDebug::Printf( "%s %s (%u) iDevicelock=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iDevicelock );
-            return iDevicelock;
-        default:
-            return NULL;
-        }
-    }
-
-// ----------------------------------------------------------
-// Handle window-server events
-// ----------------------------------------------------------
-void CLockAppStateControl::HandleWsEventL( const TWsEvent& aEvent, CCoeControl* /*aDestination*/)
-    {
-    TInt type = aEvent.Type( );
-    	RDebug::Printf( "%s %s (%u) type=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, type );
-    switch ( type )
-        {
-        case KAknFullOrPartialForegroundLost: // partial or full fg lost
-        case KAknFullOrPartialForegroundGained: // partial or full fg gained
-            {
-    				RDebug::Printf( "%s %s (%u) type=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, type );
-            RWsSession& ws = iCoeEnv->WsSession( );
-            TFileName windowName;
-            TInt fwgid = ws.GetFocusWindowGroup( );
-            ws.GetWindowGroupNameFromIdentifier( fwgid, windowName );
-            INFO_3( "CLockAppStateControl::HandleWsEventL type: %d - FocusWg: %d %S", type, fwgid, &windowName);
-            }
-            break;
-        case EEventKeyUp:
-        case EEventKey:
-        case EEventKeyDown:
-        		{
-        		RDebug::Printf( "%s %s (%u) EEventKey*=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, EEventKeyDown );
-        		TKeyEvent* aKeyEvent = aEvent.Key();
-        		TKeyResponse response = OfferKeyEventL( *aKeyEvent, (TEventCode)type );
-        		}
-            break;
-        default:
-            break;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// From @c CAknAppUiBase. Overriden the parent method, because otherwise
-// the main lock state control would not receive the call, because is is not
-// window-owning control (=without window->not visible). The call is needed
-// because the main state control owns window-owning child controls.
-// ---------------------------------------------------------------------------
-void CLockAppStateControl::HandleResourceChange( TInt aType )
-    {
-    // these would not normally get handleresource call since they do not own window
-		RDebug::Printf( "%s %s (%u) aType=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aType );
-	if(iIdle)
-		iIdle->HandleResourceChange( aType );
-	if(iKeyguard)
-		iKeyguard->HandleResourceChange( aType );
-	if(iDevicelock)
-		iDevicelock->HandleResourceChange( aType );
-    // call parent
-    CCoeControl::HandleResourceChange( aType );
-    }
-
-// ---------------------------------------------------------------------------
-// Update the environment state variable with the event.
-// ---------------------------------------------------------------------------
-TBool CLockAppStateControl::HandleEnvironmentChange( TUint aEventMask, TBool aEnable )
-    {
-    // check if there will be a change
-
-    if ( IsBitFieldSet( iEnvState, aEventMask ) != aEnable )
-        {
-        // set the bit-field
-        SetBitField( iEnvState, aEventMask, aEnable );
-        // notify current control
-        __ASSERT_DEBUG( iCurrentControl, DoPanic(ELockIllegalState));
-        iCurrentControl->HandleEnvironmentChange( iEnvState, aEventMask );
-        // return true because the environment changed
-        return ETrue;
-        }
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// Handle all Central Repository observer callbacks.
-// ---------------------------------------------------------------------------
-void CLockAppStateControl::HandleCenRepNotify(TUid aCenRepUid, TUint32 aKeyId, TInt aValue )
-    {
-    	RDebug::Printf( "%s %s (%u) ???? Nothing done for aKeyId=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aKeyId );
-
-    INFO_3( "CLockAppStateControl::HandleCenRepNotify %d %d = %d", aCenRepUid.iUid, aKeyId, aValue );
-    }
-
-// ---------------------------------------------------------------------------
-// Handle all Publish & Subscribe observer callbacks.
-// ---------------------------------------------------------------------------
-void CLockAppStateControl::HandlePubSubNotify(TUid aPubSubUid, TUint aKeyId, TInt aValue )
-    {
-    INFO_3( "CLockAppStateControl::HandlePubSubNotify %x %x = %d", aPubSubUid.iUid, aKeyId, aValue );
-		/* This is not used any more because screensavers are removed now
-    INFO_3( "CLockAppStateControl::HandlePubSubNotify KPSUidScreenSaver=%x KPSUidCtsyCallInformation=%x KPSUidAiInformation=%x", KPSUidScreenSaver, KPSUidCtsyCallInformation, KPSUidAiInformation );
-    INFO_3( "CLockAppStateControl::HandlePubSubNotify KPSUidHWRM=%x KHWRMGripStatus=%x KPSUidAiInformation=%x", KPSUidHWRM, KHWRMGripStatus, KPSUidAiInformation );
-    if ( aPubSubUid == KPSUidScreenSaver )
-        {
-        switch ( aKeyId )
-            {
-            case KScreenSaverOn:
-                {
-                INFO_1("CLockAppStateControl::ScreenSaver - %d", (aValue > 0));
-                HandleEnvironmentChange( KLockAppEnvScreenSaverOn, (aValue > 0) );
-                }
-                break;
-            default:
-                break;
-            }
-        }
-    else if ( aPubSubUid == KPSUidCtsyCallInformation )
-        {
-        switch ( aKeyId )
-            {
-            case KCTsyCallState:
-                {
-                PrintCallState( aValue );
-                HandleEnvironmentChange( KLockAppEnvPhonecallOngoing, (aValue > EPSCTsyCallStateNone) );
-                }
-                break;
-            default:
-                break;
-            }
-        }
-    else if ( aPubSubUid == KPSUidAiInformation )	// ActiveIdle
-            {
-            switch ( aKeyId )
-                {
-                case KActiveIdleState:
-                    {
-                    INFO_1("CLockAppStateControl::ActiveIdle - %d", (aValue == EPSAiForeground));
-                    HandleEnvironmentChange( KLockAppEnvIdleOnForeground, (aValue == EPSAiForeground) );
-                    }
-                    break;
-                default:
-                    break;
-                }
-            }
-    else if ( aPubSubUid == KPSUidHWRM )
-        {
-        switch ( aKeyId )
-            {
-            case KHWRMGripStatus:
-                {
-                INFO_1("CLockAppStateControl::Grip - %d", aValue );
-                HandleEnvironmentChange( KLockAppEnvGrip, (aValue == EPSHWRMGripOpen) );
-                }
-                break;
-            default:
-                break;
-            }
-        }
-    else if ( aPubSubUid == KUidFpsCategory )
-        {
-        switch ( aKeyId )
-            {
-            case KFpsAuthenticationKey:
-                {
-                INFO_1("CLockAppStateControl::Grip - %d", aValue );
-                #define EAuthenticationSuccess 1
-                HandleEnvironmentChange( KLockAppEnvFPS, (aValue == EAuthenticationSuccess) );
-                }
-                break;
-            default:
-                break;
-            }
-        }
-    */
-    }
-
-// ---------------------------------------------------------------------------
-// All keyevents should go trough here.
-// ---------------------------------------------------------------------------
-TKeyResponse CLockAppStateControl::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
-    {
-    	RDebug::Printf( "%s %s (%u) iDevicelock=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iDevicelock );
-    	RDebug::Printf( "%s %s (%u) aKeyEvent.iCode=%x aType=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aKeyEvent.iCode, aType );
-    TKeyResponse keyResponse = PreCheckKeyEvents( aKeyEvent, aType );
-    if ( keyResponse == EKeyWasNotConsumed )
-        {
-        if ( aKeyEvent.iRepeats == 0 )
-            {
-            // handle only without the repeats
-            INFO_3("KeyEvent %d, %d, %d", aType, aKeyEvent.iCode, aKeyEvent.iScanCode );
-            __ASSERT_DEBUG( iCurrentControl, DoPanic(ELockIllegalState));
-            keyResponse = iCurrentControl->OfferKeyEventL( aKeyEvent, aType );
-            }
-        else
-            {
-            // set consumed which are repeated
-            keyResponse = EKeyWasConsumed;
-            }
-        }
-
-    return keyResponse;
-    }
-
-// ---------------------------------------------------------------------------
-// From @c CLockAppObserverList. The main state control is the first
-// to handle the lock state changes, locks/unlocks the phone depending
-// on the state change.
-// ---------------------------------------------------------------------------
-void CLockAppStateControl::HandleLockStatusChangedL( TLockStatus aLockStatus )
-    {    
-    __ASSERT_DEBUG( iCurrentControl, DoPanic(ELockIllegalState));
-    INFO_1("CLockAppStateControl::HandleLockStatusChangedL - %d", aLockStatus);
-    iCurrentControl->HandleDeActivateEventL( iEnvState );
-
-    switch ( aLockStatus )
-        {
-        case ELockNotActive:
-            {
-            iCurrentControl = iIdle;
-            MuteSounds( EFalse );
-            BringForward( EFalse );
-            }
-            break;
-        case EKeyguardActive:
-            {
-            iCurrentControl = iKeyguard;
-            MuteSounds( ETrue );
-            BringForward( ETrue );
-            }
-            break;
-        case EDevicelockActive:
-            {
-       	    RDebug::Printf( "%s %s (%u) iDevicelock=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iDevicelock );
-            iCurrentControl = iDevicelock;
-            MuteSounds( ETrue );
-            BringForward( ETrue );
-            }
-            break;
-        default:
-        		INFO_1("CLockAppStateControl::HandleLockStatusChangedL - ???? aLockStatus=%d", aLockStatus);
-            DoPanic( ELockUnknownValue );
-            break;
-        }
-
-    __ASSERT_DEBUG( iCurrentControl, DoPanic(ELockIllegalState));
-    iCurrentControl->HandleActivateEventL( iEnvState );
-
-    // finally we update the value (only place were changing the status is allowed)
-    iLockStatus = aLockStatus;
-    }
-
-// ---------------------------------------------------------------------------
-// Check if requested transition is valid.
-// ---------------------------------------------------------------------------
-TInt CLockAppStateControl::CheckIfLegal( TLockAppMessageReason aReason )
-    {
-    INFO_1("CLockAppStateControl::CheckIfLegal aReason=%d", aReason);
-    INFO_1("CLockAppStateControl::CheckIfLegal iLockStatus=%d", iLockStatus);
-    switch ( aReason )
-        {
-        case ELockAppEnableKeyguard:
-            {
-           	RDebug::Printf( "%s %s (%u) ELockAppEnableKeyguard iLockStatus=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iLockStatus );
-            switch ( iLockStatus )
-                {
-                case ELockNotActive:
-                    if ( !CKeyLockPolicyApi::KeyguardAllowed() )
-                        return KErrPermissionDenied;
-                    else
-                        return KErrNone;
-                case EKeyguardActive:
-                    return KErrAlreadyExists;
-                case EDevicelockActive:
-                    return KErrPermissionDenied;
-                }
-            }
-            break;
-        case ELockAppDisableKeyguard:
-            {
-           	RDebug::Printf( "%s %s (%u) ELockAppDisableKeyguard iLockStatus=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iLockStatus );
-            switch ( iLockStatus )
-                {
-                case ELockNotActive:
-                    return KErrAlreadyExists;
-                case EKeyguardActive:
-                    return KErrNone;
-                case EDevicelockActive:
-                    return KErrPermissionDenied;
-                }
-            }
-            break;
-        case ELockAppEnableDevicelock:
-            {
-           	RDebug::Printf( "%s %s (%u) ELockAppEnableDevicelock iLockStatus=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iLockStatus );
-            switch ( iLockStatus )
-                {
-                case ELockNotActive:
-                    return KErrNone;
-                case EKeyguardActive:
-                    return KErrNone;
-                case EDevicelockActive:
-                    return KErrAlreadyExists;
-                }
-            }
-            break;
-        case ELockAppDisableDevicelock:
-            {
-           	RDebug::Printf( "%s %s (%u) ELockAppDisableDevicelock iLockStatus=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iLockStatus );
-            switch ( iLockStatus )
-                {
-                case ELockNotActive:
-                    return KErrAlreadyExists;
-                case EKeyguardActive:
-                    return KErrPermissionDenied;
-                case EDevicelockActive:
-                    return KErrNone;
-                }
-            }
-            break;
-        case ELockAppOfferKeyguard:
-            {
-           	RDebug::Printf( "%s %s (%u) ELockAppOfferKeyguard iLockStatus=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iLockStatus );
-            switch ( iLockStatus )
-                {
-                case ELockNotActive:
-                    return KErrNone;
-                case EKeyguardActive:
-                    return KErrPermissionDenied;
-                case EDevicelockActive:
-                    return KErrPermissionDenied;
-                }
-            }
-            break;
-        case ELockAppShowKeysLockedNote:
-            {
-           	RDebug::Printf( "%s %s (%u) ELockAppShowKeysLockedNote iLockStatus=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iLockStatus );
-            switch ( iLockStatus )
-                {
-                case ELockNotActive:
-                    return KErrPermissionDenied;
-                case EKeyguardActive:
-                    return KErrNone;
-                case EDevicelockActive:
-                    return KErrPermissionDenied;
-                }
-            }
-            break;
-        }
-    return KErrPermissionDenied;
-    }
-
-// ---------------------------------------------------------------------------
-// Prescreen key events for special cases before giving them to child controls
-// ---------------------------------------------------------------------------
-TKeyResponse CLockAppStateControl::PreCheckKeyEvents(const TKeyEvent& aKeyEvent, TEventCode aType )
-    {
-    	RDebug::Printf( "%s %s (%u) aKeyEvent.iCode=%x aType=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aKeyEvent.iCode, aType );
-    TKeyResponse keyResponse = EKeyWasNotConsumed;
-    // power key always turns the lights on
-    CheckForPowerKeyLights( aKeyEvent, aType );
-    if ( iLockEcsDetector->EcsNoteOnScreen( ) )
-        {
-        // the key events are fully handled by the emergency
-        // detector when emergency note is shown
-        keyResponse = EKeyWasConsumed;
-        }
-    else
-        {
-        if ( CheckForPhoneKeys( aKeyEvent, aType ) )
-            {
-            keyResponse = EKeyWasConsumed;
-            }
-        else if ( aKeyEvent.iCode == EKeyLeftShift || aKeyEvent.iCode == EKeyRightShift )
-            {
-            // eat these modifier events as they just cause problems elsewhere
-            keyResponse = EKeyWasConsumed;
-            }
-        }
-    return keyResponse;
-    }
-
-// ---------------------------------------------------------------------------
-// Checks if power key has been pressed and inform the sysap accordingly.
-// ---------------------------------------------------------------------------
-void CLockAppStateControl::CheckForPowerKeyLights( const TKeyEvent& aKeyEvent, TEventCode aType )
-    {
-    // only handle power key when keys are locked
-    	RDebug::Printf( "%s %s (%u) aKeyEvent.iCode=%x aType=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aKeyEvent.iCode, aType );
-    	RDebug::Printf( "%s %s (%u) iLockStatus=%x ELockNotActive=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iLockStatus, ELockNotActive );
-    if ( iLockStatus != ELockNotActive )
-        {
-    		RDebug::Printf( "%s %s (%u) iFeatureNoPowerkey=%x EStdKeyDevice2=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iFeatureNoPowerkey, EStdKeyDevice2 );
-        if ( (aType == EEventKey && aKeyEvent.iRepeats == 0) || (aType == EEventKeyDown && aKeyEvent.iScanCode == EStdKeyDevice2) ) // Power key
-            {
-            // If power key pressed, tell SysAp about if
-            if ( (aKeyEvent.iScanCode == EStdKeyDevice2 && aType == EEventKeyDown) || (iFeatureNoPowerkey && aKeyEvent.iCode == EKeyNo) )
-                {
-                // normal power key event
-                RDebug::Printf( "%s %s (%u) EEikKeyLockPowerKeyPressed=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iFeatureNoPowerkey );
-                SendMessageToSysAp( EEikKeyLockPowerKeyPressed );
-                if ( iFeatureNoPowerkey )
-                    {
-                		RDebug::Printf( "%s %s (%u) EEikKeyLockLightsOnRequest=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, EEikKeyLockLightsOnRequest );
-                    // end key as power key needs additional info (ugly solution)
-                    SendMessageToSysAp( EEikKeyLockLightsOnRequest );
-                    }
-                }
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Checks if green or red key has been pressed and forward it to phone
-// in case there is a phone call ongoing.
-// ---------------------------------------------------------------------------
-TBool CLockAppStateControl::CheckForPhoneKeys( const TKeyEvent& aKeyEvent, TEventCode aType )
-    {
-    	RDebug::Printf( "%s %s (%u) aKeyEvent.iCode=%x aType=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aKeyEvent.iCode, aType );
-#ifndef RD_GLOBALWG_PRIORITY_CHANGE
-    // only handle phone keys when locked and phonecall ongoing
-    	RDebug::Printf( "%s %s (%u) iLockStatus=%x ELockNotActive=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, iLockStatus, ELockNotActive );
-    if ( iLockStatus != ELockNotActive )
-        {
-        if ( aKeyEvent.iScanCode == EStdKeyYes || aKeyEvent.iScanCode == EStdKeyNo )
-            {
-            if ( IsBitFieldSet( iEnvState, KLockAppEnvPhonecallOngoing ) )	// TODO what about video-call
-                {
-                // send Green and Red keys to phoneapp's windowgroup
-                INFO( "CLockAppStateControl::CheckForPhoneKeys - SendKeyToPhoneApp");
-                SendKeyToPhoneApp( aKeyEvent, aType );
-                return ETrue;
-                }
-            }
-        }
-#endif // !RD_GLOBALWG_PRIORITY_CHANGE
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// Brings foreground/background the root window.
-// ---------------------------------------------------------------------------
-void CLockAppStateControl::BringForward(TBool aForeground )
-    {
-    	RDebug::Printf( "%s %s (%u) aForeground=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aForeground );
-    if ( aForeground )
-        {
-        INFO_4( "CLockAppStateControl::BringForward(1) STA - EvWG(%d,%d) ViWG(%d,%d)",
-                iWGEventGate.OrdinalPosition(), iWGEventGate.OrdinalPriority(),
-                iWGVisibilityGate.OrdinalPosition(), iWGVisibilityGate.OrdinalPriority());
-        // not sure if these cause flush in WindowServer
-        iWGVisibilityGate.SetOrdinalPosition( 0, ECoeWinPriorityAlwaysAtFront + KGlobalWindowPriority_LockVisibilityGate );
-        iWGEventGate.SetOrdinalPosition( 0, ECoeWinPriorityAlwaysAtFront + KGlobalWindowPriority_LockVisibilityGate );
-        iEikonEnv->BringForwards( ETrue, ECoeWinPriorityAlwaysAtFront + KGlobalWindowPriority_KeyLock );
-        /*if ( iIncallBubble )
-            {
-            iIncallBubble->SetIncallBubbleAllowedInIdleL( ETrue );
-            }*/
-        }
-    else
-        {
-        INFO_4( "CLockAppStateControl::BringForward(0) STA - EvWG(%d,%d) ViWG(%d,%d)",
-                iWGEventGate.OrdinalPosition(), iWGEventGate.OrdinalPriority(),
-                iWGVisibilityGate.OrdinalPosition(), iWGVisibilityGate.OrdinalPriority());
-
-        // not sure if these cause flush in WindowServer
-        iWGVisibilityGate.SetOrdinalPosition( 0, ECoeWinPriorityNeverAtFront );
-		iWGEventGate.SetOrdinalPosition( 0, ECoeWinPriorityNeverAtFront );
-        iEikonEnv->BringForwards( EFalse );
-        /*if ( iIncallBubble )
-            {
-            iIncallBubble->SetIncallBubbleAllowedInIdleL( EFalse );
-            }*/
-        }
-
-    INFO_4( "CLockAppStateControl::BringForward END - EvWG(%d,%d) ViWG(%d,%d)",
-            iWGEventGate.OrdinalPosition(), iWGEventGate.OrdinalPriority(),
-            iWGVisibilityGate.OrdinalPosition(), iWGVisibilityGate.OrdinalPriority());
-    }
-
-// ---------------------------------------------------------------------------
-// Mute key sounds when phone is locked.
-// ---------------------------------------------------------------------------
-void CLockAppStateControl::MuteSounds(TBool aMuteSounds )
-    {
-    	RDebug::Printf( "%s %s (%u) aMuteSounds=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aMuteSounds );
-    if ( iSoundsMuted != aMuteSounds )
-        {
-        if ( aMuteSounds )
-            {
-            TRAPD(err, iAvkonAppUiBase->KeySounds()->PushContextL(R_AVKON_SILENT_SKEY_LIST))
-            if ( !err )
-                {
-                iAvkonAppUiBase->KeySounds()->BringToForeground();
-                iAvkonAppUiBase->KeySounds()->LockContext();
-                iSoundsMuted = ETrue;
-                }
-            }
-        else
-            {
-            iAvkonAppUiBase->KeySounds()->ReleaseContext();
-            iAvkonAppUiBase->KeySounds()->PopContext();
-            iSoundsMuted = EFalse;
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Print out call state.
-// ---------------------------------------------------------------------------
-void CLockAppStateControl::PrintCallState( TInt aValue )
-    {
-    RDebug::Printf( "%s %s (%u) aValue=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, aValue );
-    switch ( aValue )
-        {
-        case EPSCTsyCallStateUninitialized:
-            INFO("CLockAppStateControl::PrintCallState - Uninitialized")
-            break;
-        case EPSCTsyCallStateNone:
-            INFO("CLockAppStateControl::PrintCallState - None")
-            break;
-        case EPSCTsyCallStateAlerting:
-            INFO("CLockAppStateControl::PrintCallState - Alerting")
-            break;
-        case EPSCTsyCallStateRinging:
-            INFO("CLockAppStateControl::PrintCallState - Ringing")
-            break;
-        case EPSCTsyCallStateDialling:
-            INFO("CLockAppStateControl::PrintCallState - Dialling")
-            break;
-        case EPSCTsyCallStateAnswering:
-            INFO("CLockAppStateControl::PrintCallState - Answering")
-            break;
-        case EPSCTsyCallStateDisconnecting:
-            INFO("CLockAppStateControl::PrintCallState - Disconnecting")
-            break;
-        case EPSCTsyCallStateConnected:
-            INFO("CLockAppStateControl::PrintCallState - Connected")
-            break;
-        case EPSCTsyCallStateHold:
-            INFO("CLockAppStateControl::PrintCallState - Hold")
-            break;
-        default:
-            break;
-        }
-    }
-
-// END OF FILE