extras/converter/Ui/Src/CCnvRatesForm.cpp
branchRCL_3
changeset 15 2d0f9ab0ba18
parent 12 ddecbce3dc1f
child 16 82ca176301de
--- a/extras/converter/Ui/Src/CCnvRatesForm.cpp	Wed Apr 14 15:58:57 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,844 +0,0 @@
-/*
-* Copyright (c) 2002 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:  
-*      This is the implementation of the class defined in CCnvRatesForm.h
-*
-*/
-
-
-
-#include <eikcapc.h>
-#include <eikfpne.h>
-#include <AknQueryDialog.h>
-#include <aknnotewrappers.h>
-#include <akntitle.h>
-#include <StringLoader.h>
-#include <featmgr.h>
-#include <eikmenup.h>
-
-#include <TCnvCategory.h>
-#include "CCnvRatesForm.h"
-#include "CCnvApplication.h"
-
-#include <csxhelp/cnv.hlp.hrh>
-
-#include <Converter.rsg>
-#include "Converter.hrh"
-
-#include <e32math.h> //Header to be included for getting CEikEdwin Text to a number
-
-//CONSTANTS for Max Number of Added Currency
-const TInt KMaxNumberAddCurrency = 40;
-
-CCnvRatesForm::CCnvRatesForm( TBool* aWantsRelaunch, TBool* aShouldExit,
-							 TBool* aModelChanged, TCnvCategory& aCategory ) 
-							 : iWantsRelaunch( aWantsRelaunch ), iShouldExit( aShouldExit ),
-							 iModelChanged( aModelChanged ), iCategory( aCategory ),
-							 iLastUsedEditorId(-1)
-	{
-	}
-
-CCnvRatesForm::CCnvRatesForm()
-	{
-
-	//Member variable set to False in the Constructor
-	iEKeyOk = EFalse;
-	}
-
-CCnvRatesForm::~CCnvRatesForm()
-	{
-	iFormIdMapArray.Close();
-	iFormIdEdwinMapArray.Close();
-	SetDefaultTitle();
-	}
-
-void CCnvRatesForm::ConstructL()
-	{
-	// Use base class to construct menubar
-	CAknDialog::ConstructL( R_CNV_RATESFORM_MENUBAR );
-    iCategory.CreateTempUnitArrayForRestore();
-    iCategory.GetDefaultUnits( iSrcUnitIndexForRestore , iDesUnitIndexForRestore );	
-     iHistoryBaseUnit = iCategory.BaseUnit();
-	}
-
-void CCnvRatesForm::GetHelpContext( TCoeHelpContext& aContext ) const
-	{
-	aContext.iMajor = KUidCnv;
-	aContext.iContext = KCNV_HLP_RATES;
-	}
-
-void CCnvRatesForm::ProcessCommandL( TInt aCommandId )
-	{
-	// Base class handles EAknFormCmdSave among the other things
-	CAknForm::ProcessCommandL( aCommandId );
-
-	switch ( aCommandId )
-		{
-		case ECmdAddCurrency:
-			{			
-			AddNewCurrencyL();
-			break;
-			} 
-		case ECmdDeleteCurrency:
-			{
-			DeleteCurrencyL();
-			break;
-			}
-		case ECmdChangeCurrencyName:
-			{
-			CmdChangeCurrencyNameL();
-			break;
-			}
-		case ECmdSetAsBaseCurrency:
-			{
-			CmdSetAsBaseCurrencyL();
-			break;
-			}
-		case EAknCmdHelp:
-			{
-			iEikonEnv->EikAppUi()->HandleCommandL( EAknCmdHelp );
-			break;
-			}
-		case EEikCmdExit:
-			{
-			*iShouldExit = ETrue;
-			TryExitL( EAknSoftkeyBack );
-			break;
-			}
-		default:
-			{
-			break;
-			}
-		}
-	}
-
-// Takes any action required when the current line is changed to aControlId.
-void CCnvRatesForm::LineChangedL( TInt aControlId )
-	{
-
-	CEikFloatingPointEditor* editor =
-		static_cast< CEikFloatingPointEditor* >( Control( aControlId ) );
-
-	//editor->ClearSelectionL();
-    editor->SetCursorPosL( editor->Text()->DocumentLength(), ETrue );
-
-    if ( iLastUsedEditorId > 0 )
-        {
-        editor =static_cast<CEikFloatingPointEditor*> ( Control( iLastUsedEditorId ) );  
-        TBuf<KEditorTextMaxLength> editorText;
-        editor->GetText( editorText );
-        
-        // Use local value for different area
-        TBuf<1> localeZero;
-        localeZero.AppendNum( 0 );
-        AknTextUtils::LanguageSpecificNumberConversion( localeZero ); 
-        if ( editorText.Length() > 1 && editorText[0] == localeZero[0] )
-            {
-            // remove all leading zeroes
-            while ( editorText.Length() > 0 && editorText[0] == localeZero[0] )
-                {
-                editorText.Delete( 0, 1 );
-                }
-            // if too many zeroes removed, insert one.
-            TLocale locale;
-            if ( editorText.Length() == 0 ||
-                TChar( editorText[0] ) == locale.DecimalSeparator() )
-                {
-                editorText.Insert( 0, localeZero );
-                }
-            editor->SetTextL( &editorText );
-            editor->DrawDeferred();
-            }
-        }
-    iLastUsedEditorId = aControlId;
-	}
-
-void CCnvRatesForm::DoNotSaveFormDataL()
-	{
-	iCategory.RestoreUnitArray();
-	iCategory.SetDefaultUnits( iSrcUnitIndexForRestore , iDesUnitIndexForRestore );
-	iCategory.SetBaseUnit( iHistoryBaseUnit );
-	}
-
-// Saves values from form fields back to the model
-TBool CCnvRatesForm::SaveFormDataL()
-	{
-	SetEditableL( ETrue );
-
-	const MDesCArray* names = iCategory.MdcArray();
-	TInt len( names->MdcaCount() );
-	TInt formIdIndex = 0;
-	for( TInt i = 0; i < len; i ++ )
-		{
-
-		if( i != iCategory.BaseUnit() )
-			{
-			TInt formId = iFormIdMapArray[formIdIndex];
-			//A seperate formIdIndex is maintained for the form as iFormIdMapArray
-			//does not have an index for Base Unit
-			formIdIndex++;
-
-			TReal value = 0; //Contains the value of the editor
-
-			if(KErrNotFound != iFormIdEdwinMapArray.Find(formId))
-				{
-				TBuf<32> edText;
-				GetEdwinText( edText, formId );				
-				TInt64 power = 1;
-				TBool fraction = EFalse;
-				TChar ch;
-
-				for(TInt i = 0; i < edText.Length(); i++)
-					{
-					ch = edText[i];
-
-					if(ch == '+')
-						{
-						if( i != 0 )
-							{
-							value = 0;
-							break;
-							}
-						}
-
-					else if(ch == '.')
-						{
-						fraction = ETrue;
-						}
-					else if(IsDigit(ch))
-						{
-						value = value * 10 + ch.GetNumericValue();
-						if(fraction)
-							{
-							power = power * 10;
-							}
-						}
-					}
-				value = value / power;				
-
-				}
-			else
-				{
-				value = FloatEditorValue( formId  );
-				}
-			iCategory.SetUnitFactor( i, /*FloatEditorValue( formId  )*/value );
-			}		
-		}
-
-	*iModelChanged = ETrue;
-	return ETrue;
-	}
-
-// Sets the focus to the topmost line of the form when the dialog is activated
-void CCnvRatesForm::SetInitialCurrentLine()
-	{
-	CEikDialog::SetInitialCurrentLine();
-	TRAP_IGNORE(TryChangeFocusToL( IdOfFocusControl() ) );	
-	}
-
-void CCnvRatesForm::PreLayoutDynInitL()
-	{
-	SetTitleL( ETrue );
-
-	const MDesCArray* currencies = iCategory.MdcArray();
-	TInt len( currencies->MdcaCount() );
-
-	for( TInt i = 0; i < len; i++ )
-		{
-		if( i != iCategory.BaseUnit() )
-			{
-			// form controls don't like id = 0, so we need to do id += 1..
-			CCoeControl* control =
-				CreateLineByTypeL( currencies->MdcaPoint( i ),
-				ActivePageId(),
-				i + 1,
-				EEikCtFlPtEd,
-				NULL );
-			//Keep the id's of the form in an array so that deletion based on form ids is not a problem.
-			iFormIdMapArray.Append(i+1);
-			CEikFloatingPointEditor* editor =
-				static_cast< CEikFloatingPointEditor* >( control );
-			editor->ConstructL( 0, 9e99, 12 );	// 9e99 = max TReal
-			TReal value( iCategory.UnitFactor( i ) );
-			editor->SetValueL( &value );
-			}
-		}
-	}
-
-void CCnvRatesForm::CmdChangeCurrencyNameL()
-	{
-	// 16 is long enough, current edit window max length is 13
-	// (defined in R_CNV_UNITNAME_QUERY )
-	TBuf< 16 > newName;
-	TBool nameOk( EFalse );
-
-	TInt controlId = IdOfFocusControl();	
-	TInt index =  controlId - 1;
-
-	index = iFormIdMapArray.Find( controlId ); //get the index where the id i
-
-	TUint uintindex = index ;//To remove warnings
-
-	if( uintindex  >= iCategory.BaseUnit())
-		{
-		index++;
-		}
-	const MDesCArray* names = iCategory.MdcArray();
-	newName.Copy( names->MdcaPoint( index  ).Left( MAXCURRENCYNAMELENGTH ) );
-
-
-	TCurrencyType type = NewCurrencyNameDialogL( newName, nameOk );
-
-	if(nameOk)
-		{
-		iCategory.SetUnitName( index , newName , type);
-		Line( controlId )->SetCaptionL( newName );
-		Line( controlId )->DrawDeferred();
-		nameOk = ETrue;
-		*iModelChanged = ETrue;
-		}	
-	}
-
-
-void CCnvRatesForm::CmdSetAsBaseCurrencyL()
-	{
-	CAknQueryDialog* dlg = CAknQueryDialog::NewL();
-
-	if( dlg->ExecuteLD( R_CNV_CONFIRMATION_QUERY ) )
-		{
-		// form controls don't like ID = 0, so IDs are unit id + 1;
-		TInt baseUnit;
-		TUint baseUnitIndex; //To remove warnings
-		//Get the current id of the form.
-		TInt currentFocusIndex = IdOfFocusControl();
-		//Find the id in the map array
-		baseUnit = iFormIdMapArray.Find(currentFocusIndex);
-		baseUnitIndex = baseUnit; //To remove warnings
-		//adjust the baseUnitIndxex to the index in the Currency Category array..
-		if( baseUnitIndex >= iCategory.BaseUnit())
-			{
-			baseUnit++;
-			}
-		iHistoryBaseUnit = baseUnit;
-		iCategory.SetBaseUnit( baseUnit );
-
-		// Reset all currency rates to 1
-		TInt len( iCategory.MdcArray()->MdcaCount() );
-		for( TInt i = 0; i < len; i++ )
-			{
-			iCategory.SetUnitFactor( i, 1.0 );
-			}
-
-		// Except the base unit factor is set to 1.0
-		iCategory.SetUnitFactor( baseUnit, 1.0 );
-
-		// We have to destroy and relaunch the form
-		*iWantsRelaunch = ETrue;
-		delete this;
-		}
-	}
-
-
-// Reset the title to default. Don't want a leave.
-// If it fails, it fails. For use in the destructor.
-void CCnvRatesForm::SetDefaultTitle()
-	{
-	 TRAP_IGNORE(SetTitleL( EFalse ) );
-	}
-
-void CCnvRatesForm::SetTitleL( TBool aNonDefault )
-	{
-	CAknTitlePane* title = static_cast< CAknTitlePane* >(
-		iEikonEnv->AppUiFactory()->StatusPane()->
-		ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-
-	if( aNonDefault )
-		{
-		TInt baseUnit = iCategory.BaseUnit();
-		const MDesCArray* currencies = iCategory.MdcArray();
-		TPtrC unitName = currencies->MdcaPoint( baseUnit );
-		// stuff it into the title text's placeholder
-		HBufC* titleText = StringLoader::LoadL( R_CNV_RATESFORM_TITLE,
-			unitName, iEikonEnv );
-		TPtr titleTextPtr = titleText->Des();
-		CleanupStack::PushL( titleText );
-		AknTextUtils::DisplayTextLanguageSpecificNumberConversion(titleTextPtr);
-		title->SetTextL( *titleText );
-		CleanupStack::PopAndDestroy( titleText ); // titleText
-		}
-	else
-		{
-		title->SetTextToDefaultL();
-		}
-	}	
-
-void CCnvRatesForm::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
-	{
-	//No delete option  for more than two currencies
-	const MDesCArray* names = iCategory.MdcArray();
-	TInt count = names->MdcaCount();
-
-	if (aResourceId == R_CNV_RATESFORM_MENUPANE)
-		{
-
-		if(count <= 2)
-			{
-			aMenuPane->SetItemDimmed(ECmdDeleteCurrency, ETrue);
-
-			}
-		else
-			{
-			aMenuPane->SetItemDimmed(ECmdDeleteCurrency, EFalse);
-			}
-		if(count >= KMaxNumberAddCurrency )
-			{
-			aMenuPane->SetItemDimmed(ECmdAddCurrency, ETrue);
-			}
-		else
-			{
-			aMenuPane->SetItemDimmed(ECmdAddCurrency, EFalse);
-			}
-		if (!FeatureManager::FeatureSupported(KFeatureIdHelp))
-			{
-			aMenuPane->SetItemDimmed(EAknCmdHelp, ETrue);
-			}
-		}
-	}
-//New methods which will imlement add and delete currency implementation
-void CCnvRatesForm::AddNewCurrencyL()
-	{	
-	//_LIT(KDefaultText,"Foreign");
-	//TBuf<16> newFieldPtr;
-	//newFieldPtr.Format(KDefaultText);
-	HBufC* foreignText = StringLoader::LoadLC( R_QTN_CNV_FOREIGN,iEikonEnv );
-	TBuf<16> newFieldPtr;
-	
-	newFieldPtr.Copy(foreignText->Left(MAXCURRENCYNAMELENGTH));
-	
-	TBool nameEntered(EFalse);
-	TCurrencyType type = 	NewCurrencyNameDialogL( newFieldPtr, nameEntered, ETrue );
-
-	TInt id = IdOfFocusControl(); //Get the focus controls id
-	TInt index = iFormIdMapArray.Find(id); //get the index where the id i
-	TInt indexOfCurrency = index;
-	TUint uintindex = indexOfCurrency;//To remove warnings
-
-	if( uintindex  >= iCategory.BaseUnit())
-		{
-		indexOfCurrency++;
-		}
-
-	if(nameEntered)//Dont add any field if the user cancels the dialog
-		{
-		TReal real = 1.0;
-
-		iCategory.AddNewCurrencyL( indexOfCurrency + 1, newFieldPtr, real, type);		
-
-		//TInt newItemId = 0;
-		TInt newItemId = iFormIdMapArray[0];
-
-		//Get the largest formId present now in the form...
-		for(TInt i = 0; i < iFormIdMapArray.Count() ; i++ )
-			{		
-			if( newItemId  < iFormIdMapArray[i])
-				newItemId = iFormIdMapArray[i];
-			}
-
-		newItemId++;
-
-		//Update the new FormId into the form id map array
-		if( index + 1 < iFormIdMapArray.Count() )
-			{
-			iFormIdMapArray.Insert(newItemId,index + 1 );
-			}
-		else
-			{
-			iFormIdMapArray.Append(newItemId);
-			}
-
-		//Update the arrray which holds the CEikEdwin ids...
-		iFormIdEdwinMapArray.Append(newItemId);
-
-
-        CCoeControl* control = CreateLineByTypeL(newFieldPtr, ActivePageId(),
-            newItemId , EEikCtFlPtEd, NULL ) ;
-        CEikEdwin* edwin = STATIC_CAST( CEikEdwin*, control );
-
-        CEikFloatingPointEditor* fpEditor = STATIC_CAST( 
-        CEikFloatingPointEditor*, control );
-        fpEditor->SetMinMax( 0, 9e99 );
-        edwin->ConstructL( EEikEdwinNoHorizScrolling | EEikEdwinResizable, 10, 12, 10 );
-        edwin->SetAknEditorNumericKeymap( EAknEditorConverterNumberModeKeymap );
-
-        edwin->SetAknEditorAllowedInputModes( EAknEditorNumericInputMode );
-
-        edwin->SetAknEditorInputMode( EAknEditorNumericInputMode );
-        edwin->SetAknEditorSpecialCharacterTable( 0 );
-
-        edwin->CreateTextViewL();
-        Line( newItemId )->ActivateL();
-
-        // Set the editor's value at last and use a number instead of the fixed character.
-        SetFloatEditorValueL( IdOfFocusControl(), 1 );
-
-		*iModelChanged = ETrue;
-		}	
-		CleanupStack::PopAndDestroy(); // foreignText HBufC
-	}
-
-
-void CCnvRatesForm::DeleteCurrencyL()
-	{
-
-
-	TInt LineForDeletion = IdOfFocusControl();
-
-	TInt indexOfCurrency = iFormIdMapArray.Find(LineForDeletion);
-	TUint index = indexOfCurrency; //To remove warnings
-
-
-	if( index >= iCategory.BaseUnit())
-		{
-		indexOfCurrency++;
-		}
-
-	const MDesCArray* names = iCategory.MdcArray();
-
-		TBuf<16> currentName;
-	currentName.Copy( names->MdcaPoint( indexOfCurrency ).Left( MAXCURRENCYNAMELENGTH ) );
-
-	HBufC* confirmDelete = StringLoader::LoadLC(
-		R_QTN_CNV_CONFIRM_DELETE,currentName);
-
-	CAknQueryDialog* dlg = CAknQueryDialog::NewL();
-	dlg->SetPromptL( *confirmDelete);
-
-	if( dlg->ExecuteLD( R_CNV_CONFIRMATION_QUERY ) )
-		{	
-		SetFormFlag( EDeleting, ETrue );
-
-		if (LineForDeletion)
-			{
-			iCategory.DeleteCurrencyL( indexOfCurrency );
-			DeleteLine(LineForDeletion);
-			//SetFormFlag( EUnsavedEdit, ETrue );
-			TInt index = iFormIdMapArray.Find(LineForDeletion);
-			iFormIdMapArray.Remove(index);
-
-			if( index  == iFormIdMapArray.Count())
-				{
-				iLastUsedEditorId = iFormIdMapArray[index - 1];
-				}
-			else
-				{
-				iLastUsedEditorId = iFormIdMapArray[index];
-				}
-			}
-
-		DrawNow();
-		SetFormFlag( EDeleting, EFalse );
-		*iModelChanged = ETrue;
-		}
-	CleanupStack::PopAndDestroy();	// confirmDelete;
-	}
-
-//This function launches a dialog to get the new currency name.
-//Note can also be used for Rename Currency, but will be made use, afte the  raised for that has been fixed
-TCurrencyType  CCnvRatesForm::NewCurrencyNameDialogL( TDes& aField, TBool& aNameEntered,  TBool aIsAddNewCurrency )
-	{	
-	TBool nameOk( EFalse );	
-	TCurrencyType type = ENameChanged;
-  //TInt index = IdOfFocusControl() - 1;
-  TInt controlId = IdOfFocusControl();
-  TInt index = iFormIdMapArray.Find( controlId ); //get the index where the id i
-  TUint uintindex = index ;                    //To remove warnings
-    if ( uintindex  >= iCategory.BaseUnit() )     //get correct index
-        {
-        index++;
-        }
-
-	const MDesCArray* names = iCategory.MdcArray();
-	do
-		{
-		CAknTextQueryDialog* dlg =
-			new( ELeave ) CAknTextQueryDialog( aField );
-		CleanupStack::PushL(dlg);
-
-				if( dlg->ExecuteLD( R_CNV_UNITNAME_QUERY ) != EAknSoftkeyOk )
-					{
-					aNameEntered = EFalse;
-					CleanupStack::Pop(dlg);	// dlg
-					return type;
-					}
-		CleanupStack::Pop(dlg);	// dlg
-
-		// Search through all the names to see if the new name already exists
-		TInt len( names->MdcaCount() );
-		TBool nameExists( EFalse );
-        //Set the index larger than all when a new is added, make it compare with 
-        //all of the item to judge if the name is already used
-        if ( aIsAddNewCurrency )
-            {
-            index = len;
-            }
-		
-		for( TInt i = 0; i < len; i ++ )
-			{
-			if( names->MdcaPoint( i ).Compare( aField ) == 0 )
-				{
-                if ( i != index )
-                    {
-				    nameExists = ETrue;
-				    break;
-					}
-				}
-			}
-
-		if( nameExists )
-			{
-			// display error
-			HBufC* label = StringLoader::LoadLC(
-				R_QTN_FLDR_NAME_ALREADY_USED, aField );
-			CAknErrorNote* note = new( ELeave ) CAknErrorNote( ETrue );
-			note->ExecuteLD( *label );
-			CleanupStack::PopAndDestroy();	// label;
-			}
-		else
-			{
-			nameOk = ETrue;
-			}
-		}
-
-	while ( !nameOk );
-	
-	HBufC* homeText = StringLoader::LoadLC( R_QTN_CNV_HOME,iEikonEnv );	
-	HBufC* foreignText = StringLoader::LoadLC( R_QTN_CNV_FOREIGN,iEikonEnv );
-	TBuf<16> defaultTextPtr;
-	TBuf<16> homeTextPtr;
-	TInt equal;
-	
-	defaultTextPtr.Copy(foreignText->Left(MAXCURRENCYNAMELENGTH));
-	homeTextPtr.Copy(homeText->Left(MAXCURRENCYNAMELENGTH));
-	equal = defaultTextPtr.Compare(aField);
-	if(equal==0)
-		type = EForeign;
-	
-	equal = homeTextPtr.Compare(aField);
-	if(equal==0)
-		type = EHome;
-
-	aNameEntered = nameOk;
-	CleanupStack::PopAndDestroy(); // foreignText HBufC
-	CleanupStack::PopAndDestroy(); // HomeText HBufC		
-
-	return type;
-	}
-//
-//ShowInvalidValueNoteL(TInt aEditorId)
-//
-void CCnvRatesForm::ShowInvalidValueNoteL(TInt aEditorId, TBool aSetValue)
-	{
-	HBufC* label = iCoeEnv->AllocReadResourceLC(
-		R_CNV_MAINFORM_INVALIDVALUE );
-	CAknErrorNote* note = new( ELeave ) CAknErrorNote(ETrue);
-	note->ExecuteLD( *label );
-	CleanupStack::PopAndDestroy();	// label;
-	if ( aSetValue )
-		{
-		SetFloatEditorValueL( aEditorId, 0.0 ); 
-		}
-	}
-
-//
-//IsVaildNumberEntered(TInt aEditorId)
-//
-TBool CCnvRatesForm::IsVaildNumberEntered(TInt aEditorId)
-	{
-
-	CEikFloatingPointEditor* editor =
-		static_cast< CEikFloatingPointEditor* >( Control( aEditorId ) );
-
-	if( editor->TextLength() == 0 )
-		{
-		return EFalse;
-		}	
-
-	TReal real;
-	CAknNumericEdwin::TValidationStatus validationStatus = editor->GetValueAsReal(real);
-
-  // The enter number is not valid if GetValueAsReal function's return value is not EValueValid 
-	if( validationStatus != CAknNumericEdwin::EValueValid /* && validationStatus != CAknNumericEdwin::EValueTooLarge */ )
-		{
-		return EFalse;
-		}
-	return ETrue;
-
-	}
-
-
-TBool CCnvRatesForm::OkToExitL(TInt aButtonId)
-	{
-	//Check for validity of the rates entered
-	TInt aControlId( IdOfFocusControl() );			
-	if(!IsVaildNumberEntered(aControlId))
-		{
-		ShowInvalidValueNoteL(aControlId, ETrue );
-		}
-	//Check which one of the two buttons'Options' or 'MSK' is pressed
-	if (aButtonId == EAknSoftkeyOptions && iEKeyOk)
-		{
-		//Make the variable False
-		iEKeyOk = EFalse;
-		return EFalse;
-		}
-	else
-		// Call the Base Class OkToExitL()
-		return CAknForm::OkToExitL(aButtonId);
-
-	}
-//
-//OfferKeyEventL
-//
-TKeyResponse CCnvRatesForm::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
-{
-	
-	// Make the variable 'iEKeyOk' to True if and only if MSK is pressed.
-	if(aKeyEvent.iScanCode == EStdKeyDevice3 && aType == EEventKeyDown)
-		{
-		iEKeyOk = ETrue;
-		}
-	if(aKeyEvent.iScanCode == EStdKeyDevice0 && aType == EEventKeyDown && iEKeyOk)
-		{
-		iEKeyOk = EFalse;
-		}
-
-	
-	TInt controlId1( IdOfFocusControl() );
-	if(aType == EEventKeyDown)
-	{		
-		if((aKeyEvent.iScanCode == EStdKeyDevice0)
-		 ||(aKeyEvent.iScanCode == EStdKeyDevice1)||(aKeyEvent.iScanCode == EStdKeyDevice3) )
-			{			
-			if(!IsVaildNumberEntered(controlId1))
-				{				
-				iError=ETrue;
-				return EKeyWasConsumed;
-				}
-		   	 }
-	 }	
-			
-	if(aType == EEventKeyUp && iError)	
-	{
-		if((aKeyEvent.iScanCode == EStdKeyDevice0)
-		 ||(aKeyEvent.iScanCode == EStdKeyDevice1)||(aKeyEvent.iScanCode == EStdKeyDevice3))
-			{
-			ShowInvalidValueNoteL(controlId1, ETrue); 
-			iError = EFalse;
-			return EKeyWasConsumed;
-			}
-	}
-
-    // Return EKeyWasNotConsumed if OfferKeyEventL() does not handle any event.	
-    if ( aType != EEventKey )
-        {
-        return EKeyWasNotConsumed;
-        }
-
-    if ( ( aKeyEvent.iScanCode == EStdKeyDownArrow ) || ( aKeyEvent.iScanCode == EStdKeyUpArrow ) )
-        {			
-        TInt controlId( IdOfFocusControl() );			
-        if ( !IsVaildNumberEntered( controlId ) )
-            {
-            ShowInvalidValueNoteL( controlId, ETrue);
-            return EKeyWasConsumed;
-            }
-        }	
-    return CAknForm::OfferKeyEventL( aKeyEvent, aType );
-}
-
-// ----------------------------------------------------
-// CCnvRatesForm::IsDigit
-// Converts the digit from any digit mode (devangiri or arabic) 
-// to western digit and checks whether it is a valid digit or not.
-// ----------------------------------------------------
-//
-TBool CCnvRatesForm::IsDigit(TUint aChar)
-	{
-	TBuf<1> digit;
-	digit.Append(aChar);
-	
-	AknTextUtils::ConvertDigitsTo(digit , EDigitTypeWestern);
-	
-	TChar ch = digit[0];
-	return ch.IsDigit();
-	}
-
-
-// ----------------------------------------------------
-// CCnvRatesForm::PrepareForFocusTransitionL
-// Used for touch UI to display the invalid note if number 
-// is invalid
-// ----------------------------------------------------
-//
-void CCnvRatesForm::PrepareForFocusTransitionL()
-    {
-    // Check if touch is enabled or not
-    if ( !AknLayoutUtils::PenEnabled() )
-        {
-        CAknForm::PrepareForFocusTransitionL();
-        return;
-        }
-
-    // Get the focus of the current control line
-    TInt controlId( IdOfFocusControl() );
-    // Check for validity of the rate entered
-    if (!IsVaildNumberEntered( controlId ) )
-        {
-         ShowInvalidValueNoteL(controlId, EFalse);
-        }
-
-    // Delete the radix point if it is excrescent
-    else
-        {
-        CEikFloatingPointEditor* editor = 
-           static_cast<CEikFloatingPointEditor*> ( Control( controlId ) );
-        TBuf< KEditorTextMaxLength > editorText;
-        editor->GetText( editorText );
-        TInt editorTextLength = editorText.Length();
-        TLocale local;
-        if ( editorText[ editorTextLength - 1 ] == local.DecimalSeparator() )
-            {
-            editorText.Delete( editorTextLength - 1 , 1 );
-            editor->SetTextL( &editorText );
-            }
-        }
-    CAknForm::PrepareForFocusTransitionL();
-    }
-
-
-// ----------------------------------------------------
-// CCnvRatesForm::ActivateL
-// Sets the control as ready to be drawn.
-// ----------------------------------------------------
-//    
-void CCnvRatesForm::ActivateL()
-    {
-    CAknForm::ActivateL();
-    CEikFloatingPointEditor* editor =
-        static_cast< CEikFloatingPointEditor* >( Control( IdOfFocusControl() ) );
-    editor->SetCursorPosL( editor->Text()->DocumentLength(), ETrue );
-    }
-//End of file
-
-