terminalsecurity/SCP/SCPClient/src/SCPQueryDialog.cpp
changeset 73 ae69c2e8bc34
parent 71 d2517372cc44
child 77 9f85c58c0592
--- a/terminalsecurity/SCP/SCPClient/src/SCPQueryDialog.cpp	Tue Sep 28 17:53:08 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,807 +0,0 @@
-/*
-* Copyright (c) 2000 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: Implementation of terminalsecurity components
-*
-*/
-
-#include <AknQueryDialog.h>
-#include "SCPQueryDialog.h"
-#include <eikseced.h>
-#include <aknsoundsystem.h>
-#include <StringLoader.h>
-#include <aknappui.h> 
-#include <avkon.rsg>
-#include <SecUi.rsg>
-// Include the SecUi definitions
-#include <secui.hrh>
-#include "SCPDebug.h"
-#include <scpnotifier.rsg>
-// For Central Repository
-#include <centralrepository.h>
-#include <AknIncallBubbleNotify.h>
-#include <e32property.h>
-#include <ctsydomainpskeys.h>
-#include "SCPCodePrivateCRKeys.h"
-/*#ifdef _DEBUG
-#define __SCP_DEBUG
-#endif // _DEBUG
-
-// Define this so the precompiler in CW 3.1 won't complain about token pasting,
-// the warnings are not valid
-#pragma warn_illtokenpasting off
-
-#ifdef __SCP_DEBUG
-#define Dprint(a) RDebug::Print##a
-#else
-#define Dprint(a)
-#endif // _DEBUG*/
-
-const TInt KSCPSpecialDeleteEvent( 63529 );
-
-// ================= MEMBER FUNCTIONS =======================
-//
-// ----------------------------------------------------------
-// CSCPQueryDialog::CSCPQueryDialog()
-// C++ constructor
-// ----------------------------------------------------------
-//
-CSCPQueryDialog::CSCPQueryDialog(   TDes& aDataText,
-                                    RSCPClient::TSCPButtonConfig aButtonsShown, 
-                                    TInt aMinLength,
-                                    TInt aMaxLength,
-                                    TBool aECSSupport
-                                    )
-            : CAknTextQueryDialog(aDataText, ENoTone),
-			  iMinLength(aMinLength),
-			  iMaxLength(aMaxLength),
-			  iValidTextLen( 0 ),
-			  iButtons( aButtonsShown ),
-			  iECSSupport( aECSSupport ),
-			  iEcsDetector( NULL ),
-			  iEMCallActivated( EFalse ),
-			  iShowingEMNumber( EFalse ),
-			  iPreviousCharacterWasInvalid( EFalse ),
-			  iPrioritySet( EFalse ),
-			  iPriorityDropped( EFalse ),
-			  iKeyUsed ( NULL )
-	{		 
-        def_mode = 0;
-        iAppKey = 0;
-        iMode = KSCPModeNormal;
-	}
-	
-//
-// ----------------------------------------------------------
-// CSCPQueryDialog::~CSCPQueryDialog()
-// Destructor
-// ----------------------------------------------------------
-//
-CSCPQueryDialog::~CSCPQueryDialog()
-	{
-	Dprint( (_L("CSCPQueryDialog::~CSCPQueryDialog()")) );
-	
-	    if ( AknLayoutUtils::PenEnabled() )
-        {
-        TRAP_IGNORE ( SetIncallBubbleAllowedInUsualL( ETrue ) );
-        }
-
-	
-	if (iFront)
-		{
-		// Uncapture keys, if they were captured
-		if ( iMode == KSCPModeRestricted )		
-			{
-			RWindowGroup& groupWin=iCoeEnv->RootWin();
-			groupWin.CancelCaptureKeyUpAndDowns(iAppKey);
-			groupWin.CancelCaptureKeyUpAndDowns(iVoiceKey2);
-			groupWin.CancelCaptureKey(iVoiceKey1);						
-			}
-
-		if ( iPrioritySet )
-		    {
-    		// Return normal high-priority in case there are other notifiers active 
-	    	// and were are not going to lose foregroung right after following call	
-		    iEikonEnv->RootWin().SetOrdinalPosition(0,ECoeWinPriorityAlwaysAtFront);
-		    }
-		 						
-		iEikonEnv->BringForwards(EFalse);	
-		iEikonEnv->EikAppUi()->RemoveFromStack(this);
-		
-
-		static_cast<CAknAppUi*>(iEikonEnv->EikAppUi())->KeySounds()->ReleaseContext();
-		static_cast<CAknAppUi*>(iEikonEnv->EikAppUi())->KeySounds()->PopContext();
-
-		
-		if ( iECSSupport )
-            {
-		    delete iEcsDetector;
-            }
-		
-		iFront = EFalse;
-		}
-	
-	if (iDeviceLockStatusObserver)
-		delete iDeviceLockStatusObserver;
-		if (iCallStatusObserver)
-		delete iCallStatusObserver;
-	}
-//
-// ----------------------------------------------------------
-// CSCPQueryDialog::PreLayoutDynInitL()
-// Called by framework before dialog is shown 
-// ----------------------------------------------------------
-//
-void CSCPQueryDialog::PreLayoutDynInitL()
-    {
-    Dprint( (_L("CSCPQueryDialog::PreLayoutDynInitL()") ));
-    
-    /* CEikSecretEditor* queryControl = 
-                    static_cast<CEikSecretEditor*>(
-                        QueryControl()->ControlByLayoutOrNull( QueryControl()->QueryType() ) 
-                       ); 
-    queryControl->EnableSCT(EFalse); */
-    
-    CAknTextQueryDialog::PreLayoutDynInitL();
-    
-    //disable in call bubble.
-    if ( AknLayoutUtils::PenEnabled() )
-        {
-        SetIncallBubbleAllowedInUsualL( EFalse );
-        }
-
-    
-    // Create the ECS detector object if required
-    if ( iECSSupport )
-        {
-        Dprint( (_L(" Creating ECS detector") ));
-        iEcsDetector = CAknEcsDetector::NewL();
-        iEcsDetector->SetObserver( this );
-        }    
-    
-    Dprint( (_L("CSCPQueryDialog::PreLayoutDynInitL(): Set input mode") ));
-        
-    /* The default input mode of the lock code query must be set on the basis of the
-    very first character of the current lock code. If the first character of the current
-    lock code is numeric, the default input mode will also be numeric. Otherwise, the 
-    default input mode will be alphabetic */
-    
-    CRepository* repository;
-    repository = CRepository::NewL( KCRUidSCPParameters );
-    CleanupStack::PushL( repository );
-    
-    User::LeaveIfError(repository->Get( KSCPLockCodeDefaultInputMode , def_mode) );
-    
-    CleanupStack::PopAndDestroy( repository );
-    repository = NULL;   
-    
-    if (def_mode == 0)
-    	SetDefaultInputMode( EAknEditorNumericInputMode ); 
-    else
-    	SetDefaultInputMode( EAknEditorSecretAlphaInputMode );
-    
-    // Set the mode, we use this to determine the functionality for special keys
-    if ( ( iButtons == RSCPClient::SCP_OK ) || ( iButtons == RSCPClient::SCP_OK_CANCEL ) )
-        {
-        // Normal mode
-        iMode = KSCPModeNormal;
-        }
-    else
-        {
-        // Restricted mode, used for example for Etel-originated queries
-        iMode = KSCPModeRestricted;
-        }
-    
-    Dprint( (_L("CSCPQueryDialog::PreLayoutDynInitL(): Set button config") ));
-    // Set the softkey-configuration
-    switch ( iButtons )
-        {
-            case ( RSCPClient::SCP_OK ):
-            // Flow through
-            case ( RSCPClient::SCP_OK_ETEL ):
-                {
-                // Hide the Cancel-softkey
-                ButtonGroupContainer().MakeCommandVisible( EAknSoftkeyCancel, EFalse );
-                break;
-                }
-            
-            default:
-                // Show both softkeys
-            break;
-        }
-        
-	QueryControl()->SetTextEntryLength( iMaxLength ); 
-	
-	// Add this higher than the environment filter, otherwise
-	// we cannot capture keys from the EikSrvUi KeyFilter. 
-	// Used because this query might be called from notifier		
-
-	if ( iMode == KSCPModeNormal )
-		{
-		iEikonEnv->EikAppUi()->AddToStackL(this,
-		                                   ECoeStackPriorityEnvironmentFilter+100,
-		                                   ECoeStackFlagRefusesAllKeys);
-		}
-	else
-		{
-		iEikonEnv->EikAppUi()->AddToStackL(this,
-		                                   ECoeStackPriorityEnvironmentFilter+100,
-		                                   ECoeStackFlagRefusesFocus);
-		}
-	
-	Dprint( (_L("CSCPQueryDialog::PreLayoutDynInitL(): Capture keys") ));
-	// Capture app, voice and end keys if necessary
-	if ( iMode == KSCPModeRestricted )		
-		{		
-		RWindowGroup& groupWin=iCoeEnv->RootWin();
-		// Capture app key
-		iAppKey = groupWin.CaptureKeyUpAndDowns(EStdKeyApplication0, 0, 0);
-		// capture voice key
-		iVoiceKey1 = groupWin.CaptureKey(EKeySide,0,0);
-		iVoiceKey2 = groupWin.CaptureKeyUpAndDowns(EStdKeyDevice6, 0, 0);
-		}
-
-    RWsSession& wsSession = iEikonEnv->WsSession();
-    TInt myWgId = iEikonEnv->RootWin().Identifier();
-    
-    TInt wgPrio = wsSession.GetWindowGroupOrdinalPriority(myWgId);
-	Dprint( (_L("CSCPQueryDialog::PreLayoutDynInitL(): wgPrio %d"),wgPrio ));
-	TInt var;
-	RProperty::Get(KPSUidCtsyCallInformation, KCTsyCallState,var);
-	Dprint( (_L("CSCPQueryDialog::PreLayoutDynInitL(): EPSCTsyCallStateNone %d"),var ));
-    // we are already on forgeround, need to update priority differently
-	if (var != EPSCTsyCallStateNone)
-	{
-		// If the call is made during device startup have the priority as normal
-		if (iECSSupport && (iButtons == RSCPClient::SCP_OK))
-		{
-		iEikonEnv->RootWin().SetOrdinalPosition(1,ECoeWinPriorityNormal);
-		}
-	
-	}
-    else if ((wgPrio == ECoeWinPriorityAlwaysAtFront)&&(iECSSupport))
-        {
-        Dprint( (_L("CSCPQueryDialog::PreLayoutDynInitL(): ECoeWinPriorityAlwaysAtFront+1") ));	
-        iEikonEnv->RootWin().SetOrdinalPosition(0,ECoeWinPriorityAlwaysAtFront+1);
-        iPrioritySet = ETrue;
-        }
-        
-   // this must be done always to keep the reference count in synch  
-   // this does not have any effect if autoforwarding has not been set true (normal application.)
-   iEikonEnv->BringForwards(ETrue, ECoeWinPriorityAlwaysAtFront+1);
-
-	/// -- Change Window Priority for dialog and CBA 
-	if (iECSSupport)
-		{
-		Dprint( (_L("CSCPQueryDialog::PreLayoutDynInitL(): Changing Window Priority") ));			
-		DrawableWindow()->SetOrdinalPosition(0,ECoeWinPriorityAlwaysAtFront);
-		ButtonGroupContainer().ButtonGroup()->AsControl()->DrawableWindow()->SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront); 	
-		}
-	else
-		{
-		DrawableWindow()->SetOrdinalPosition(0,ECoeWinPriorityNormal); //
-		ButtonGroupContainer().ButtonGroup()->AsControl()->DrawableWindow()->SetOrdinalPosition(0,ECoeWinPriorityNormal); 	  	
-		}	
-
-	Dprint( (_L("CSCPQueryDialog::PreLayoutDynInitL(): Key sounds") ));
-	// Key sounds
-
-	static_cast<CAknAppUi*>(iEikonEnv->EikAppUi())->KeySounds()->
-	    PushContextL(R_AVKON_DEFAULT_SKEY_LIST);
-	    	                                                             
-	static_cast<CAknAppUi*>(iEikonEnv->EikAppUi())->KeySounds()->BringToForeground();
-	static_cast<CAknAppUi*>(iEikonEnv->EikAppUi())->KeySounds()->LockContext();
-
-	iFront = ETrue;
-	
-	Dprint( (_L("CSCPQueryDialog::CSCPLockObserver") ));
-	iDeviceLockStatusObserver = CSCPLockObserver::NewL(this);
-	iCallStatusObserver = CSCPLockObserver::NewL(this,ESecUiCallStateObserver);
-
-	}
-//
-// ---------------------------------------------------------
-// CSCPQueryDialog::OfferKeyEventL
-// called by framework when any key is pressed
-// ---------------------------------------------------------
-//
-TKeyResponse CSCPQueryDialog::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
-	{
-    Dprint( (_L("CSCPQueryDialog::OfferKeyEventL(%d, %d, %d)"), aKeyEvent.iScanCode, 
-        aKeyEvent.iCode, aType ));
-    
-    //Handling for Key up events for special characters  
-    if (aType == EEventKeyUp && iPriorityDropped && iKeyUsed
-            == aKeyEvent.iScanCode)
-        {
-        DrawableWindow()->SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront);
-        ButtonGroupContainer().ButtonGroup()->AsControl()->DrawableWindow()->SetOrdinalPosition(
-                0, ECoeWinPriorityAlwaysAtFront);
-        iPriorityDropped = EFalse;
-        iKeyUsed = NULL;
-        Dprint((_L("CSCPQueryDialog::OfferKeyEventL(): Priority dropped")));
-        return EKeyWasConsumed;
-        }
-    else
-        {
-        if (iPriorityDropped && iKeyUsed != aKeyEvent.iScanCode
-                && (aKeyEvent.iScanCode == EStdKeyDevice0
-                        || aKeyEvent.iScanCode == EStdKeyDevice1
-                        || aKeyEvent.iScanCode == EStdKeyDevice2
-                        || aKeyEvent.iScanCode == EStdKeyDevice3))
-            {
-            iPriorityDropped = EFalse;
-            iKeyUsed = NULL;
-            }
-
-        }
-    
-    //Consume the characters which are typed before Key up events of special characters
-    if (iPriorityDropped && iKeyUsed != NULL)
-        {
-        return EKeyWasConsumed;
-        }
-
-    	            		            
-	// Check if the priority should be dropped, so that special dialogs can be shown
-	if ( ( aType == EEventKeyDown ) && 
-	     ( ( aKeyEvent.iScanCode == EStdKeyLeftShift ) || // Pen-key
-	       ( aKeyEvent.iScanCode == EStdKeyRightShift ) || // Pen-key
-	       ( aKeyEvent.iScanCode == EStdKeyLeftFunc )  || //Chr-key
-	       ( aKeyEvent.iScanCode == EStdKeyNkpAsterisk ) || // * - key
-	       ( aKeyEvent.iScanCode == '*' )                  // * - key
-	     )
-	   )
-	    {
-        iKeyUsed = aKeyEvent.iScanCode;
-	    DrawableWindow()->SetOrdinalPosition(0,0);
-	    ButtonGroupContainer().ButtonGroup()->AsControl()->DrawableWindow()->SetOrdinalPosition(0,0);
-	    iPriorityDropped = ETrue;
-	    
-	    Dprint( (_L("CSCPQueryDialog::OfferKeyEventL(): Priority dropped") ));
-	    }
-	else
-	    {
-	    // Return priority, either no dialogs shown, or already exited.
-	    if ( iPriorityDropped )
-	        {
-            DrawableWindow()->SetOrdinalPosition(0,ECoeWinPriorityAlwaysAtFront);
-	        ButtonGroupContainer().ButtonGroup()->AsControl()->DrawableWindow()->SetOrdinalPosition(0,ECoeWinPriorityAlwaysAtFront);
-	        iPriorityDropped = EFalse;
-	        Dprint( (_L("CSCPQueryDialog::OfferKeyEventL(): Priority re-raised") ));
-	        }
-	    }
-		
-    if ( aKeyEvent.iCode == EKeyOK || aKeyEvent.iCode == EKeyEnter)
-        {
-        // Try to exit with OK as well
-        TryExitL(EAknSoftkeyOk);
-        return EKeyWasConsumed;
-        }
-
-	// app key
-	if (aKeyEvent.iScanCode == EStdKeyApplication0)
-		{
-		if ( iButtons == RSCPClient::SCP_OK_CANCEL )
-			{
-			TryExitL(EAknSoftkeyCancel);
-			return EKeyWasNotConsumed;	
-			}
-		return EKeyWasConsumed;
-		}
-		
-	// end key
-	if ( (aKeyEvent.iCode == EKeyPhoneEnd) || (aKeyEvent.iCode == EKeyEscape) )
-        {
-        if ( ( iButtons == RSCPClient::SCP_OK_CANCEL ) ||  
-            ( iButtons == RSCPClient::SCP_OK_CANCEL_ETEL ) )
-            {
-            TryExitL(EAknSoftkeyCancel);          
-            }
-        return EKeyWasConsumed;
-        }
-
-	if (aKeyEvent.iCode == EKeyPhoneSend)
-	    {
-        //if (AknLayoutUtils::PenEnabled())
-            {
-            if (iECSSupport)
-                {
-                if (iEcsDetector->State()== CAknEcsDetector::ECompleteMatch)
-                    {
-                    iEcsDetector->AddChar( (TText)(EKeyPhoneSend) );
-                    
-                    }   
-                else
-                    {
-                    Dprint( (_L("CSCPQueryDialog::OfferKeyEventL(): ShowWarningNoteL") ));
-                    ShowWarningNoteL();
-                    return EKeyWasConsumed;
-                    }
-                }
-            else //consume the key to prevent dialler from opening
-                {
-                Dprint( (_L("CSCPQueryDialog::OfferKeyEventL(): EKeyPhoneSend :EKeyWasConsumed") ));
-                return EKeyWasConsumed;
-                }
-            }
-        }
-	    
-    if ( ( aType == EEventKey ) && ( aKeyEvent.iCode == KSCPSpecialDeleteEvent ) )
-        {
-        // This special event is sent to remove the previous character while "cycling" with
-        // the numeric keys. Discard, if the previous character was already removed.
-        if ( iPreviousCharacterWasInvalid )
-            {
-            return EKeyWasConsumed;
-            }
-        }
-	               			
-    if ( ( aType == EEventKey ) && ( iECSSupport ) )
-        {        
-        // Reset the field text
-        QueryControl()->SetTextL( iTextBuffer );        
-        }
-            
-	TKeyResponse ret = QueryControl()->OfferKeyEventL( aKeyEvent, aType );
-                
-    // Check that only alphanumeric letters are entered    
-    if ( ( QueryControl() != NULL ) && ( QueryControl()->GetTextLength() > iValidTextLen ) )
-        {                    
-        // A new character was added to the editor
-        iTmpBuffer.Zero();
-        QueryControl()->GetText( iTmpBuffer );
-        
-        TChar newChar = iTmpBuffer[ iTmpBuffer.Length() - 1 ];
-        TChar::TCategory newCat = newChar.GetCategory();
-        if ( newChar.IsSpace() || newChar < 1 || newChar > 126 )
-        /* if ( !newChar.IsAlphaDigit() && newCat != TChar::ENdCategory ) */
-            {
-            // Remove the last character, not allowed
-            iTmpBuffer.SetLength( iTmpBuffer.Length() - 1 );
-            QueryControl()->SetTextL( iTmpBuffer );
-            
-            iPreviousCharacterWasInvalid = ETrue;
-            
-            // Hide the OK key if the first character was invalid
-            if ( iValidTextLen == 0 )
-                {
-                if (AknLayoutUtils::PenEnabled())
-                    {
-                    ButtonGroupContainer().DimCommand(EAknSoftkeyOk, ETrue);
-                    }
-                else
-                    {
-                    ButtonGroupContainer().MakeCommandVisible(EAknSoftkeyOk, EFalse);
-                    }
-
-                }
-            }
-        else
-            {
-            iValidTextLen++;
-            iPreviousCharacterWasInvalid = EFalse;            	        	            
-            }            
-        }
-    else if ( ( QueryControl() != NULL ) && ( QueryControl()->GetTextLength() < iValidTextLen ) )
-        {
-        // Character removed, make sure we're back on track,
-        // though likely only backspace was pressed
-        iValidTextLen = QueryControl()->GetTextLength();
-        }   
-        
-//Additional modifier set by query dialog, while simulating event
-// As raw key events are used to simulate, modifiers and scan codes cannot be set at a time
-// In the 1st event, modifiers are set and in subsequent event, scan codes will be set.
-if(aKeyEvent.iModifiers & EModifierNumLock &&
-        aKeyEvent.iModifiers & EModifierKeypad && aKeyEvent.iModifiers & EModifierSpecial
-)
-    {
-   
-    return EKeyWasConsumed;
-    }
-    if ( iECSSupport )
-        {
-        // Save the text
-        if ( aType == EEventKey ) 
-            {
-            QueryControl()->GetText( iTextBuffer );
-            }
-        if ( aType == EEventKey ) 
-            {
-            iEcsDetector->SetBuffer(iTextBuffer.Left(KAknEcsMaxMatchingLength));
-            }
-        if ( aType == EEventKey )
-            {
-        if ( iEMCallActivated )
-            {
-            TryExitL( ESecUiEmergencyCall );
-            return EKeyWasConsumed;
-            }
-        }
-        // Retrieve the editor control ptr, we know it is a secret editor..
-        CEikSecretEditor* queryControl = static_cast<CEikSecretEditor*>( 
-            QueryControl()->ControlByLayoutOrNull( QueryControl()->QueryType() ) );                
-        
-         // Further check to ensure that the matched number is the entire buffer
-         // Get the matched text and see if is the same length as the current query length
-        if ( iShowingEMNumber && (QueryControl()->GetTextLength()== iEcsDetector->CurrentMatch().Length()))
-            {
-            // The previous keyDown-event resulted in a complete Em-number match.
-                              
-            // An emergency number is entered, show the text in the field
-            QueryControl()->SetTextL( iEcsDetector->CurrentMatch() );            
-            if ( queryControl != NULL )
-                {
-                queryControl->RevealSecretText( ETrue );
-                if (isCallSoftkeyAdded == EFalse)
-                {
-                	isCallSoftkeyAdded = ETrue;
-                HBufC* cbaLabel = NULL;
-				Dprint( (_L("CSCPQueryDialog::OfferKeyEventL(): R_AVKON_SOFTKEY_CALL_TEXT") ));
-                TRAPD ( err, cbaLabel =
-                        StringLoader::LoadL( R_AVKON_SOFTKEY_CALL_TEXT) );
-                if ( err == KErrNone )
-                {
-                	ButtonGroupContainer().RemoveCommandFromStack(0,EAknSoftkeyOk);
-                TRAP ( err, ButtonGroupContainer().AddCommandToStackL( 0, EAknSoftkeyEmergencyCall,
-                        *cbaLabel) );
-				ButtonGroupContainer().DrawDeferred();
-                delete cbaLabel;
-                }
-              }
-                }            
-            }
-        else
-            {
-            // The input doesn't match a Em-number
-            if ( queryControl != NULL )
-                {
-                queryControl->RevealSecretText( EFalse );
-			if(aType == EEventKey)
-			{
-                HBufC* cbaLabel = NULL;
-                TRAPD ( err , cbaLabel= StringLoader::LoadL(R_SCPDIALOG_OK_TEXT) );
-                if ( err == KErrNone )
-                {
-					if (isCallSoftkeyAdded)
-					{
-						isCallSoftkeyAdded = EFalse;
-						ButtonGroupContainer().RemoveCommandFromStack(0,EAknSoftkeyEmergencyCall);
-					}
-					else
-					{
-					ButtonGroupContainer().RemoveCommandFromStack(0,EAknSoftkeyOk);
-					}
-                TRAP ( err , ButtonGroupContainer().AddCommandToStackL(0,EAknSoftkeyOk,*cbaLabel) );
-                ButtonGroupContainer().DrawDeferred();
-                delete cbaLabel;
-				}
-            	  }
-                }
-            }
-        }                  
-     
-    Dprint( (_L("CSCPQueryDialog::OfferKeyEventL() exiting") ));
-              
-    if ( ret == EKeyWasConsumed ) // The editor control used up this keyevent
-        {
-        return ret;
-        }         
-    else
-        {
-        return CAknTextQueryDialog::OfferKeyEventL(aKeyEvent,aType);
-        }    
-	}
-//
-// ---------------------------------------------------------
-// CSCPQueryDialog::NeedToDismissQueryL()
-// Handles '#' key called by CAknTextQueryDialog::OfferKeyEventL()
-// ---------------------------------------------------------
-//
-TBool CSCPQueryDialog::NeedToDismissQueryL(const TKeyEvent& /*aKeyEvent*/)
-	{
-	return EFalse;
-	}
-//
-// ---------------------------------------------------------
-// CSCPQueryDialog::OkToExitL()
-// called by framework when the Softkey is pressed
-// ---------------------------------------------------------
-//
-TBool CSCPQueryDialog::OkToExitL(TInt aButtonId)
-	{
-	
-	     Dprint( (_L("CSCPQueryDialog::OkToExitL ( aButtonId :%d, "), aButtonId ));
-	TInt ret = EFalse;
-	
-    if ( aButtonId == EAknSoftkeyOk )
-		{	        		
-		Dprint( (_L("CSCPQueryDialog::OkToExitL - EAknSoftkeyOk") ));		
-		TInt textLength = QueryControl()->GetTextLength();
-		if ( textLength < iMinLength )
-			{	
-			// The code was too short -> play error tone & clear editor
-			if ( textLength != 0 )
-				{
-				CAknKeySoundSystem* soundSystem;
-	            if ( iEikonEnv->AppUi() )
-		            {		            
-		            soundSystem = static_cast<CAknAppUi*>(iEikonEnv->EikAppUi())->KeySounds();
-		            soundSystem->PlaySound( EAvkonSIDErrorTone );
-		            } 
-				QueryControl()->SetTextL( KNullDesC );
-				iTextBuffer.Zero();
-				iValidTextLen = 0;
-
-                // Hide the OK key
-                //ButtonGroupContainer().MakeCommandVisible( EAknSoftkeyOk, EFalse );
-               // ButtonGroupContainer().DimCommand(EAknSoftkeyOk, ETrue);
-
-                if (AknLayoutUtils::PenEnabled())
-                    {
-                    ButtonGroupContainer().DimCommand(EAknSoftkeyOk, ETrue);
-                    }
-                else
-                    {
-                    ButtonGroupContainer().MakeCommandVisible(EAknSoftkeyOk, EFalse);
-                    }
-                }
-            ret = EFalse;
-            }	
-		else
-			{		
-			ret = CAknTextQueryDialog::OkToExitL(aButtonId);
-			}			    
-		}
-				
-	// Cancel is allowed, if the key is active
-	if ( aButtonId == EAknSoftkeyCancel )
-		{
-    	Dprint( (_L("CSCPQueryDialog::OkToExitL EAknSoftkeyCancel ")) );	
-	    ret = CAknTextQueryDialog::OkToExitL(aButtonId);
-		}
-		
-    // Emergency call, exit
-    if ( aButtonId == ESecUiEmergencyCall )
-        {
-		Dprint( (_L("CSCPQueryDialog::OkToExitL(): ESecUiEmergencyCall") ));
-        ret = ETrue;
-        }
-    if (aButtonId == EAknSoftkeyEmergencyCall)
-        {
-        //add EKeyPhonesend to ecs detector. 
-        ret = ETrue;
-        Dprint( (_L("CSCPQueryDialog::OkToExitL(): adding EKeyPhoneSend to detector") ));
-         iEcsDetector->AddChar( (TText)(EKeyPhoneSend ) );
-        CAknTextQueryDialog::OkToExitL(aButtonId);
-        }
-   
-	Dprint( (_L("CSCPQueryDialog::OkToExitL() done") ));   
-	return ret;
-	}
-
-
-// ---------------------------------------------------------
-// CSCPQueryDialog::HandleEcsEvent()
-// 
-// ---------------------------------------------------------
-//
-void CSCPQueryDialog::HandleEcsEvent(CAknEcsDetector* aDetector, 
-                                     CAknEcsDetector::TState aUpdatedState)
-    {   
-    (void)aDetector; // Not used
-    
-    TInt err;
-    if ( ( aUpdatedState == CAknEcsDetector::ECompleteMatchThenSendKey ) || 
-         ( aUpdatedState == CAknEcsDetector::ECallAttempted ) )
-        {
-        // Call attempted, cancel the query
-        iEMCallActivated = ETrue; // OfferKeyEventL will close the dialog         
-        }        
-    else if ( aUpdatedState == CAknEcsDetector::ECompleteMatch )    
-        {                
-        iShowingEMNumber = ETrue;
-        }
-    else if ( iShowingEMNumber )
-        {
-        // Cancel Em-number display
-        iShowingEMNumber = EFalse;
-        
-        if ( aUpdatedState == CAknEcsDetector::EEmpty )
-            {
-            // Key timeout: OfferKeyEventL won't be called, so reset the display here
-            TRAP( err, QueryControl()->SetTextL( iTextBuffer ) );
-            (void)err;
-            
-            // Retrieve the editor control ptr, we know it is a secret editor..
-            CEikSecretEditor* queryControl = 
-                static_cast<CEikSecretEditor*>(
-                    QueryControl()->ControlByLayoutOrNull( QueryControl()->QueryType() ) 
-                   );            
-            if ( queryControl != NULL )
-                {
-                queryControl->RevealSecretText( EFalse );
-                }
-           // }        
-                HBufC* cbaLabel = NULL;
-				Dprint( (_L("CSCPQueryDialog::HandleEcsEvent(): R_SCPDIALOG_OK_TEXT") ));
-                TRAP ( err, cbaLabel= StringLoader::LoadL(R_SCPDIALOG_OK_TEXT) );
-                if ( err == KErrNone )
-                {
-                	if (isCallSoftkeyAdded)
-						{
-							isCallSoftkeyAdded = EFalse;
-							ButtonGroupContainer().RemoveCommandFromStack(0,EAknSoftkeyEmergencyCall);
-						}
-						else
-						{
-							ButtonGroupContainer().RemoveCommandFromStack(0,EAknSoftkeyOk);
-						}
-                	TRAP ( err , ButtonGroupContainer().AddCommandToStackL(0, EAknSoftkeyOk, *cbaLabel) );
-                	ButtonGroupContainer().DrawDeferred();
-                	delete cbaLabel;
-                }
-            }
-        }    
-    }
- 
-void CSCPQueryDialog::ShowWarningNoteL()
-    {
-    
-    CAknNoteDialog* noteDlg = new (ELeave) CAknNoteDialog();
-    noteDlg->PrepareLC(R_SCPDIALOG_EMERGENCYCALLS_ONLY);
-    noteDlg->SetTimeout(CAknNoteDialog::ELongTimeout);
-    noteDlg->SetTone(CAknNoteDialog::EErrorTone);
-    
-    noteDlg->DrawableWindow()->SetOrdinalPosition(0,ECoeWinPriorityAlwaysAtFront+1); //
-    noteDlg->ButtonGroupContainer().ButtonGroup()->AsControl()->DrawableWindow()->SetOrdinalPosition(0,ECoeWinPriorityAlwaysAtFront+1); 
-    
-    noteDlg->RunLD();
-
-    }
-    
-// -----------------------------------------------------------------------------
-// CSCPQueryDialog::SetIncallBubbleAllowedInUsualL()
-// -----------------------------------------------------------------------------
-//
-void CSCPQueryDialog::SetIncallBubbleAllowedInUsualL(TBool aAllowed)
-    {
-    CAknIncallBubble *incallBubble =  CAknIncallBubble::NewL();
-    CleanupStack::PushL(incallBubble);
-    incallBubble->SetIncallBubbleAllowedInUsualL( aAllowed );
-    CleanupStack::PopAndDestroy();
-    }
-	
-// Call from the SCPObserver
-	
-void CSCPQueryDialog::TryCancelQueryL(TInt aReason)
-    {
-    Dprint( (_L("CSCPQueryDialog::TryCancelQueryL()")) );
-    
-	if (EPSCTsyCallStateDisconnecting == aReason)
-	{
-	Dprint( (_L("CSCPQueryDialog::TryCancelQueryL() -SetOrdinalPosition ->0")) );
-	iEikonEnv->RootWin().SetOrdinalPosition(0,ECoeWinPriorityAlwaysAtFront+1);
-	iPrioritySet = ETrue;
-	}
-	else
-	{
-	Dprint( (_L("CSCPQueryDialog::TryExitL(EAknSoftkeyCancel)")) );
-    TryExitL(EAknSoftkeyCancel);
-	}
-    }
-
-    
-// End of file
-