diff -r 6b63ca65093a -r aad866c37519 securitydialogs/lockapp/src/lockappecsdetector.cpp --- a/securitydialogs/lockapp/src/lockappecsdetector.cpp Thu May 27 13:44:17 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,159 +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: Provides emergency call support for keyguard/devicelock - * -*/ - - -#include "lockappecsdetector.h" -#include "lockappecsnote.h" -#include "lockapputils.h" -#include -#include - -// --------------------------------------------------------------------------- -// Standard Symbian OS construction sequence -// --------------------------------------------------------------------------- -CLockAppEcsDetector* CLockAppEcsDetector::NewL( ) - { - CLockAppEcsDetector* self = new (ELeave) CLockAppEcsDetector(); - CleanupStack::PushL( self ); - self->ConstructL( ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// Standard C++ constructor -// --------------------------------------------------------------------------- -CLockAppEcsDetector::CLockAppEcsDetector( ) - { - } - -// --------------------------------------------------------------------------- -// Constructs the emergency detector and the note. -// --------------------------------------------------------------------------- -void CLockAppEcsDetector::ConstructL( ) - { - // emergency call support - iEcsDetector = CAknEcsDetector::NewL( ); - iEcsDetector->SetObserver( this ); - - // emergency call note - iEcsNote = new (ELeave) CLockAppEcsNote(); - iEcsNote->ConstructSleepingNoteL( R_AVKON_EMERGENCY_CALL_NOTE ); - iEcsNote->ButtonGroupContainer().ButtonGroup()->AsControl()->DrawableWindow()->SetOrdinalPosition( 0, 2 ); - - // needs to be called for ecs detector to work/receive events. - iAvkonAppUi->EventMonitor()->Enable( ETrue ); - } - -// --------------------------------------------------------------------------- -// Destructor. -// --------------------------------------------------------------------------- -CLockAppEcsDetector::~CLockAppEcsDetector( ) - { - delete iEcsDetector; - delete iEcsNote; - } - -// --------------------------------------------------------------------------- -// Detector starts/stops listening to key events if keys are locked/unlocked. -// The detector key event queue is always reseted when lock status is changed. -// --------------------------------------------------------------------------- -void CLockAppEcsDetector::HandleLockStatusChangedL( TLockStatus aLockStatus ) - { - iEcsDetector->Reset( ); - switch ( aLockStatus ) - { - case ELockNotActive: - { - iEcsDetector->CloseEventSource( ); - } - break; - case EKeyguardActive: - case EDevicelockActive: - { - iEcsDetector->ConnectToEventSource( ); - } - break; - default: - DoPanic( ELockUnknownValue ); - break; - } - } - -// --------------------------------------------------------------------------- -// The main state controller needs to know if emergency call note is -// on the screen. -// --------------------------------------------------------------------------- -TBool CLockAppEcsDetector::EcsNoteOnScreen( ) const - { - return iEcsNote->iNoteOnScreen; - } - -// --------------------------------------------------------------------------- -// From @c MAknEcsObserver.. Handles changes in emergency the emergency number -// queue (i.e. if the user has dialed emergency numbers or not). -// --------------------------------------------------------------------------- -void CLockAppEcsDetector::HandleEcsEvent( CAknEcsDetector* aEcsDetector, - CAknEcsDetector::TState aState ) - { - switch ( aState ) - { - case CAknEcsDetector::ECompleteMatchThenSendKey: - // Do nothing since note will be removed on ECallAttempted event - break; - // user has successfully dialed emergency numbers - case CAknEcsDetector::ECompleteMatch: - iEcsNote->SetEmergencyNumber( aEcsDetector->CurrentMatch( ) ); - // Tell sysAp to switch lights on - SendMessageToSysAp( EEikEcsQueryLights ); - iEcsNote->ShowNote( ); - break; - case CAknEcsDetector::EPartialMatch: - iEcsNote->SleepNote( ); - break; - case CAknEcsDetector::ECallAttempted: - iEcsNote->SleepNote( ); - break; - case CAknEcsDetector::EEmpty: - iEcsNote->SleepNote( ); - break; - case CAknEcsDetector::ENoMatch: - iEcsNote->SleepNote( ); - break; - default: - break; - } - } - -// --------------------------------------------------------------------------- -// Tests the emergency note ui. Only used for testing purposes, -// Created, because emergency detector does not work in emulator. -// --------------------------------------------------------------------------- -TInt CLockAppEcsDetector::TestEcsNote( ) - { -#ifdef _DEBUG - HandleEcsEvent( iEcsDetector, CAknEcsDetector::EEmpty ); - HandleEcsEvent( iEcsDetector, CAknEcsDetector::ENoMatch ); - HandleEcsEvent( iEcsDetector, CAknEcsDetector::EPartialMatch ); - HandleEcsEvent( iEcsDetector, CAknEcsDetector::ECompleteMatch ); - _LIT( NText, "112Test"); - iEcsNote->SetEmergencyNumber( NText ); - SendMessageToSysAp( EEikEcsQueryLights ); - iEcsNote->ShowNote( ); -#endif - return KErrNone; - }