uifw/AvKon/src/AknPasswordSettingPage.cpp
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/src/AknPasswordSettingPage.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,761 @@
+/*
+* 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: 
+*	Implementation of CAknPasswordSettingPage, (pure virtual) and its descendants,
+*	CAknAlphaPasswordSettingPage and CAknNumericPasswordSettingPage
+*   
+*
+*/
+
+//////////////////////////////////////////////////////////////////////
+//
+// AknPasswordSettingPage.cpp
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "aknpasswordsettingpage.h"
+#include "aknsettingpage.h"
+#include "aknnotedialog.h"
+
+//For TResourceReader
+#include <barsread.h>
+
+#include <coemain.h>
+#include <coecntrl.h>
+#include <coecobs.h>
+
+//For CEikEnv
+#include <eikenv.h>
+
+// For queries
+#include <AknQueryDialog.h>
+
+//For the different layout definitions
+#include <avkon.hrh>                                             
+#include <aknlayoutscalable_avkon.cdl.h>
+
+
+#include <AknTasHook.h>
+
+//////////////////////////////////////////////////////////////////////
+//
+//  PASSWORD SETTING PAGE BASE CLASS
+//
+// This class holds the main data model for the password setting pages.
+// It also does the drawing and other functions.
+//
+//////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * Constructor from setting page resource id: Pass through to base class 
+ *
+ */
+EXPORT_C CAknPasswordSettingPage::CAknPasswordSettingPage(
+	TInt aResourceId, 
+	TDes& aNewPassword, 
+	const TDesC& aOldPassword )
+		:	CAknSettingPage( aResourceId), 
+			iNewPassword(aNewPassword),
+			iOldPassword(aOldPassword)
+	{
+	SetMatchingMode( ECaseSensitive );
+	AKNTASHOOK_ADD( this, "CAknPasswordSettingPage" );
+	}
+
+
+EXPORT_C CAknPasswordSettingPage::CAknPasswordSettingPage(	
+								const TDesC* aSettingText, 
+								TInt aSettingNumber, 
+								TInt aControlType,
+								TInt aEditorResourceId, 
+								TInt aSettingPageResourceId, 
+								TDes& aNewPassword, 
+								const TDesC& aOldPassword )
+								:	CAknSettingPage( 
+									aSettingText, 
+									aSettingNumber, 
+									aControlType, 
+									aEditorResourceId, 
+									aSettingPageResourceId) , 
+									iNewPassword( aNewPassword ),
+									iOldPassword( aOldPassword )
+	{
+	SetMatchingMode( ECaseSensitive );
+	AKNTASHOOK_ADD( this, "CAknPasswordSettingPage" );
+	}
+
+/**
+ * Acts upon changes in the hosted control's state. 
+ *
+ * @param	aControl	The control changing its state (not used)
+ * @param	aEventType	The type of control event 
+ */
+EXPORT_C void CAknPasswordSettingPage::HandleControlEventL(CCoeControl* /*aControl*/,
+				 MCoeControlObserver::TCoeEvent aEventType)
+	{
+	// This event is used as it is called at least every time an edit is made to 
+	// the editor
+	if ( aEventType == EEventStateChanged && iUpdateMode == EUpdateWhenChanged)
+		{
+		UpdateSettingL();
+		}
+	}
+
+/**
+ *
+ * Routine to set up the resources for old password confirmation. 
+ *
+ */
+EXPORT_C void CAknPasswordSettingPage::SetOldPasswordConfirmationResourceId( TInt aConfirmationResourceId )
+	{
+	iOldPasswordConfirmationResourceId = aConfirmationResourceId;
+	}
+/**
+ *
+ * Routine to set up the resources for new password confirmation. 
+ *
+ */
+EXPORT_C void CAknPasswordSettingPage::SetNewPasswordConfirmationResourceId( TInt aConfirmationResourceId )
+	{
+	iNewPasswordConfirmationResourceId = aConfirmationResourceId;
+	}
+
+/**
+ *
+ * Access routine for the confirmation resource structure 
+ *
+ */
+EXPORT_C TInt CAknPasswordSettingPage::OldPasswordConfirmationResourceId() const
+	{
+	return iOldPasswordConfirmationResourceId;
+	}
+/**
+ *
+ * Access routine for the confirmation resource structure 
+ *
+ */
+EXPORT_C TInt CAknPasswordSettingPage::NewPasswordConfirmationResourceId() const
+	{
+	return iNewPasswordConfirmationResourceId;
+	}
+
+/**
+ * Sets the mode for the matching that will be performed
+ *
+ */
+EXPORT_C void CAknPasswordSettingPage::SetMatchingMode( TAknPasswordMatchingMode aMode )
+	{
+	iMatchingMode = aMode;
+	}
+/**
+ * Access method for the matching mode
+ *
+ */
+EXPORT_C CAknPasswordSettingPage::TAknPasswordMatchingMode CAknPasswordSettingPage::MatchingMode()
+	{
+	return iMatchingMode;
+	}
+
+/**
+ * Sets the maximum number of characters that will be allowed to enter or to match
+ *
+ */
+EXPORT_C void CAknPasswordSettingPage::SetMaxPasswordLength( TInt aMaxLength )
+	{
+	iMaxPasswordLength = aMaxLength;
+	}
+/**
+ * Access method for the maximum password length
+ *
+ *
+ */
+EXPORT_C TInt CAknPasswordSettingPage::MaxPasswordLength() const
+	{
+	return iMaxPasswordLength;
+	}
+
+/**
+ * Access method for the new password
+ *
+ */
+EXPORT_C TDes& CAknPasswordSettingPage::NewPassword() const
+	{
+	return iNewPassword;
+	}
+
+/**
+ * Access method for the old password
+ *
+ */
+EXPORT_C const TDesC& CAknPasswordSettingPage::OldPassword() const
+	{
+	return iOldPassword;
+	}
+
+/**
+ *
+ * This routine is called when the a change is detected in the editor.
+ * The text is copied out to the referenced descriptor using a utility routine.
+ *
+ */
+EXPORT_C void CAknPasswordSettingPage::UpdateSettingL()
+	{
+	UpdateTextL();
+
+	if( iSettingPageObserver )
+		iSettingPageObserver->HandleSettingPageEventL(this, MAknSettingPageObserver::EEventSettingChanged);	
+
+	}
+
+
+/**
+ * Checks if it OK to exit. This implementation performs a new password confirmation if the resource is defined
+ * If there is no confirmation resource defined, then we exit.
+ * If there is, then a confirmation query is put up.  Upon exit, if the match is OK, then we exit 
+ * 
+ * Returns ETrue if the dialog is ready to exit. Returns ETrue by default.
+ */
+EXPORT_C TBool CAknPasswordSettingPage::OkToExitL(TBool aAccept )
+    {
+	 if ( aAccept )
+		{
+		return ExecuteNewPasswordConfirmationL( NewPassword(), NewPasswordConfirmationResourceId() ) ;
+		// SetFocusToEditor();   // Should the focus be changed somewhere else?
+		}
+	 else
+	    return(ETrue); 
+    }
+
+
+/**
+ *
+ * The value is copied out and the call back called if there is an observer
+ *
+ */
+EXPORT_C void CAknPasswordSettingPage::AcceptSettingL()
+	{
+	UpdateTextL();
+	}
+
+/**
+ * Reads in the resource structure associated with a password confirmation (old or new)
+ *
+ */
+EXPORT_C void CAknPasswordSettingPage::ReadConfirmationResourceL( TInt aResourceId, SAknConfirmationResource& resources )
+	{
+	TResourceReader reader;
+	iCoeEnv->CreateResourceReaderLC( reader,aResourceId );
+
+	resources.iEntryQueryResourceId = reader.ReadInt32();
+	resources.iSuccessNoteResourceId = reader.ReadInt32();
+	resources.iFailureNoteResourceId = reader.ReadInt32();
+
+	CleanupStack::PopAndDestroy(); //reader	
+
+	}
+
+/**
+ * Activity to run after the setting page is displayed
+ *
+ */
+ 
+EXPORT_C void CAknPasswordSettingPage::PostDisplayInitL()
+	 {}
+
+EXPORT_C TBool CAknPasswordSettingPage::PostDisplayCheckL()
+	{
+	return ExecuteOldPasswordConfirmationL( OldPassword(), OldPasswordConfirmationResourceId() ) ;
+	}
+
+/**
+ * Base implementation of this framework method. Just call the generic Do.. routine
+ * This implementation does not use "tries" but this may be a useful piece of information
+ */
+EXPORT_C TBool CAknPasswordSettingPage::ExecuteOldPasswordConfirmationL(const TDesC& aPassword, TInt aPasswordConfirmationResourceId )
+	{
+	// This check is done internally to allow completely different derivation of the resources
+	if ( aPasswordConfirmationResourceId )
+		{
+		TInt tries;
+		return DoPasswordConfirmationL(aPassword, aPasswordConfirmationResourceId, MatchingMode(), tries);
+		}
+	else
+		return ETrue; // because no check has been defined
+	}
+
+/**
+ * Base implementation of this framework method. Just call the generic Do.. routine
+ *
+ */
+EXPORT_C TBool CAknPasswordSettingPage::ExecuteNewPasswordConfirmationL(const TDesC& aPassword, TInt aPasswordConfirmationResourceId )
+	{
+	// This check is done internally to allow completely different derivation of the resources
+	if ( aPasswordConfirmationResourceId )
+		{
+		TInt tries;
+		return DoPasswordConfirmationL(aPassword, aPasswordConfirmationResourceId, MatchingMode(), tries );
+		}
+	else
+		return ETrue; // No check defined
+	}
+
+/**
+ *  Default implementation of a password confirmation procedure
+ *
+ */
+EXPORT_C TBool CAknPasswordSettingPage::DoPasswordConfirmationL(const TDesC& aPassword, TInt aPasswordConfirmationResourceId, TAknPasswordMatchingMode aMatchMode, TInt& aTries )
+	{
+	TBool retVal = EFalse;
+
+	// zero the number of tries
+	aTries = 0;
+
+	// 
+	// Read the resource for the dialogs
+	//
+	SAknConfirmationResource confResources;
+	ReadConfirmationResourceL( aPasswordConfirmationResourceId, confResources );
+
+	if (confResources.iEntryQueryResourceId )
+		{
+		// Put up a query note for the password entry
+		// Produce candidate text descriptor
+		HBufC* aEnteredTextBuf = HBufC::NewLC( MaxPasswordLength() );
+		TPtr aEnteredTextPtr = aEnteredTextBuf->Des();
+
+		CAknTextQueryDialog* dlgQuery = CAknTextQueryDialog::NewL(aEnteredTextPtr, CAknQueryDialog::ENoTone);
+
+		if ( dlgQuery->ExecuteLD( confResources.iEntryQueryResourceId ) )
+			{
+			// Increment the tries
+			aTries++;
+
+			if ( ComparePasswords( aPassword, aEnteredTextPtr, aMatchMode ) == 0 )
+				{
+				// put up success note if specified
+				if ( confResources.iSuccessNoteResourceId )
+					{
+					CAknNoteDialog* dlgSuccessNote = new (ELeave) CAknNoteDialog(CAknNoteDialog::ENoTone,CAknNoteDialog::ELongTimeout);
+					dlgSuccessNote->PrepareLC(confResources.iSuccessNoteResourceId);
+					dlgSuccessNote->RunLD();
+					}
+				// nothing otherwise
+				retVal = ETrue;
+				}
+			else
+				{
+				// failure note
+				if ( confResources.iFailureNoteResourceId )
+					{
+					CAknNoteDialog* dlgFailureNote = new (ELeave) CAknNoteDialog(CAknNoteDialog::ENoTone,CAknNoteDialog::ELongTimeout);
+					dlgFailureNote->PrepareLC(confResources.iFailureNoteResourceId);
+					dlgFailureNote->RunLD();
+					}
+				// nothing otherwise
+				retVal = EFalse;
+		
+				}
+			}
+		CleanupStack::PopAndDestroy(); //  aEnteredTextBuf 
+
+		}
+
+	return (retVal);
+	}
+
+EXPORT_C TInt CAknPasswordSettingPage::ComparePasswords( const TDesC& aRefPassword, const TDesC& aCandidatePassword, enum CAknPasswordSettingPage::TAknPasswordMatchingMode /*aMode*/) const
+	{
+	// This comparison needs changing for mode. 
+	return aRefPassword.Compare( aCandidatePassword );
+	}
+
+EXPORT_C void CAknPasswordSettingPage::SizeChanged()
+	{
+	StandardSettingPageLayout();  // Must be part of any re-implementation
+	
+    iSecretEditorLayoutRect.LayoutRect( 
+            CAknSettingPage::SettingItemContentRect( EFalse ),
+            AknLayoutScalable_Avkon::setting_code_pane_copy1() );
+
+    TRect editorRect = iSecretEditorLayoutRect.Rect();
+
+	iHorizontalShadow.LayoutRect(editorRect, 
+		AKN_LAYOUT_WINDOW_Code_time_and_date_entry_pane_elements_Line_1);
+	iVerticalShadow.LayoutRect(editorRect, 
+		AKN_LAYOUT_WINDOW_Code_time_and_date_entry_pane_elements_Line_2);
+	iOutlineFrame.LayoutRect(editorRect, 
+		AKN_LAYOUT_WINDOW_Code_time_and_date_entry_pane_elements_Line_3);
+
+    AknLayoutUtils::LayoutSecretEditor( ( CEikSecretEditor * )EditorControl(), 
+    editorRect, AknLayoutScalable_Avkon::setting_code_pane_t1_copy1() );
+
+	TRAP_IGNORE(((CEikSecretEditor*)EditorControl())->SetSkinTextColorL(EAknsCIQsnTextColorsCG26));
+
+    TAknLayoutRect layoutRect;
+    layoutRect.LayoutRect(
+        editorRect,
+        AknLayoutScalable_Avkon::input_focus_pane_cp2_copy1() );
+    TRect editorFrameRect( layoutRect.Rect() );
+    
+    layoutRect.LayoutRect(
+        editorFrameRect,
+        AknLayoutScalable_Avkon::set_opt_bg_pane_g1_copy1() );
+    
+    SetEditedItemFrameRects( editorFrameRect, layoutRect.Rect() );
+    
+    layoutRect.LayoutRect(
+        editorRect,
+        AknLayoutScalable_Avkon::indicator_popup_pane_cp6() );
+    SetEditorIndicatorRect( layoutRect.Rect() );
+	}
+
+/**
+ * All password setting pages containing edwins will have the same draw code
+ *
+ */
+EXPORT_C void CAknPasswordSettingPage::Draw(const TRect& aRect) const
+	{
+	BaseDraw( aRect );
+	// Suppress this legacy frame drawing if skins is performing it
+	if ( !IsSkinsHandlingEditorFrameDrawing() )
+		{
+		CWindowGc& gc=SystemGc(); 
+		iSecretEditorLayoutRect.DrawRect( gc );
+		iHorizontalShadow.DrawRect( gc );
+		iVerticalShadow.DrawRect( gc );
+		iOutlineFrame.DrawOutLineRect( gc );
+		}
+	}
+
+/**
+ * Writes the internal state of the control and its components to aStream.
+ * Does nothing in release mode.
+ * Designed to be overidden and base called by subclasses.
+ */
+#ifndef _DEBUG
+EXPORT_C void CAknPasswordSettingPage::WriteInternalStateL(RWriteStream& /*aWriteStream*/) const
+	{}
+#else
+EXPORT_C void CAknPasswordSettingPage::WriteInternalStateL(RWriteStream& aWriteStream) const
+	{
+	CAknSettingPage::WriteInternalStateL(aWriteStream);
+	}
+#endif
+
+EXPORT_C void CAknPasswordSettingPage::HandlePointerEventL(const TPointerEvent& aPointerEvent) 
+    { 
+    CAknSettingPage::HandlePointerEventL(aPointerEvent); 
+    }
+
+EXPORT_C void* CAknPasswordSettingPage::ExtensionInterface( TUid /*aInterface*/ ) 
+    { 
+    return NULL;
+    }
+
+/**
+ *	Reserved method derived from CCoeControl
+ */
+EXPORT_C void CAknPasswordSettingPage::Reserved_2()
+	{
+	}
+
+/**
+* Setting Page reserved methods 
+*/ 
+EXPORT_C void CAknPasswordSettingPage::CAknSettingPage_Reserved_1()
+	{
+	}
+EXPORT_C void CAknPasswordSettingPage::CAknSettingPage_Reserved_2()
+	{
+	}
+//////////////////////////////////////////////////////////////////////
+//
+//  ALPHA PASSWORD SETTING PAGE
+//
+//////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * Constructor from setting page resource id + referenced passwords.
+ *
+ */
+EXPORT_C CAknAlphaPasswordSettingPage::CAknAlphaPasswordSettingPage( 
+	TInt aResourceId, 
+	TDes& aNewPassword, 
+	const TDesC& aOldPassword ):
+	CAknPasswordSettingPage(aResourceId, aNewPassword, aOldPassword)
+	{
+	SetMaxPasswordLength( KDefaultAlphaPasswordLength );
+	AKNTASHOOK_ADD( this, "CAknAlphaPasswordSettingPage" );
+	}
+
+EXPORT_C CAknAlphaPasswordSettingPage::CAknAlphaPasswordSettingPage(	
+								const TDesC* aSettingText, 
+								TInt aSettingNumber, 
+								TInt aControlType,
+								TInt aEditorResourceId, 
+								TInt aSettingPageResourceId, 
+								TDes& aNewPassword, 
+								const TDesC& aOldPassword )
+								:	CAknPasswordSettingPage( 
+									aSettingText, 
+									aSettingNumber, 
+									aControlType, 
+									aEditorResourceId, 
+									aSettingPageResourceId,
+									aNewPassword, 
+									aOldPassword )
+	{
+	SetMaxPasswordLength( KDefaultAlphaPasswordLength );
+	AKNTASHOOK_ADD( this, "CAknAlphaPasswordSettingPage" );
+	}
+
+/**
+ * Destructor
+ *
+ */
+EXPORT_C CAknAlphaPasswordSettingPage::~CAknAlphaPasswordSettingPage()
+	{
+	AKNTASHOOK_REMOVE();
+	}
+
+
+/** 
+ *
+ * The 2nd stage construction. Stored internal resource is used to perform the
+ * construction.
+ * Secret editor is reset to zero length.
+ *
+ */
+EXPORT_C void CAknAlphaPasswordSettingPage::ConstructL()
+	{
+	BaseConstructL();
+	AlphaPasswordEditor()->SetBorder( TGulBorder::ENone );
+	AlphaPasswordEditor()->Reset();
+	// Construct an appropriate control context for the contained editor areas.
+	// Context produced is owned by CAknSettingPage. 
+    SetEditedItemFrameIID( KAknsIIDQsnFrInput, KAknsIIDQsnFrInputCenter );
+	}
+
+/**
+ * Soak up function to do the safe copying of the editor to the referenced value
+ *
+ */
+EXPORT_C void CAknAlphaPasswordSettingPage::UpdateTextL()
+	{
+	AlphaPasswordEditor()->GetText( NewPassword() );
+	}
+
+/**
+ * Compares the given passwords.
+ * Supports folding matching.
+ */
+EXPORT_C TInt CAknAlphaPasswordSettingPage::ComparePasswords( const TDesC& aRefPassword, const TDesC& aCandidatePassword, enum CAknPasswordSettingPage::TAknPasswordMatchingMode aMode) const
+	{
+	TBool retVal(EFalse);
+
+    if ( aMode == ECaseSensitive )
+        retVal = aRefPassword.Compare( aCandidatePassword );
+    else
+        retVal = aRefPassword.CompareF( aCandidatePassword );
+        
+    return retVal;
+	}
+
+/** 
+ *
+ * Type-specific access to the alpha password editor control
+ *
+ */
+EXPORT_C CEikSecretEditor* CAknAlphaPasswordSettingPage::AlphaPasswordEditor()
+	{
+	return STATIC_CAST( CEikSecretEditor*, EditorControl());
+	}
+
+/**
+ * Writes the internal state of the control and its components to aStream.
+ * Does nothing in release mode.
+ * Designed to be overidden and base called by subclasses.
+ */
+#ifndef _DEBUG
+EXPORT_C void CAknAlphaPasswordSettingPage::WriteInternalStateL(RWriteStream& /*aWriteStream*/) const
+	{}
+#else
+EXPORT_C void CAknAlphaPasswordSettingPage::WriteInternalStateL(RWriteStream& aWriteStream) const
+	{
+	CAknPasswordSettingPage::WriteInternalStateL(aWriteStream);
+	}
+#endif
+
+EXPORT_C void CAknAlphaPasswordSettingPage::HandlePointerEventL(const TPointerEvent& aPointerEvent) 
+    { 
+    CAknPasswordSettingPage::HandlePointerEventL(aPointerEvent); 
+    }
+
+EXPORT_C void* CAknAlphaPasswordSettingPage::ExtensionInterface( TUid /*aInterface*/ ) 
+    { 
+    return NULL;
+    }
+
+/**
+ *	Reserved method derived from CCoeControl
+ */
+EXPORT_C void CAknAlphaPasswordSettingPage::Reserved_2()
+	{
+	}
+
+/**
+* Setting Page reserved methods 
+*/ 
+EXPORT_C void CAknAlphaPasswordSettingPage::CAknSettingPage_Reserved_1()
+	{
+	}
+EXPORT_C void CAknAlphaPasswordSettingPage::CAknSettingPage_Reserved_2()
+	{
+	}
+
+//////////////////////////////////////////////////////////////////////
+//
+//  NUMERIC PASSWORD SETTING PAGE
+//
+//////////////////////////////////////////////////////////////////////
+
+
+
+/**
+ *
+ * Constructor from setting page resource id + referenced passwords.
+ *
+ */
+EXPORT_C CAknNumericPasswordSettingPage::CAknNumericPasswordSettingPage( 
+	TInt aResourceId, 
+	TDes& aNewPassword, 
+	const TDesC& aOldPassword ):
+	CAknPasswordSettingPage(aResourceId, aNewPassword, aOldPassword)
+	{
+	SetMaxPasswordLength( KDefaultNumericPasswordLength );
+	AKNTASHOOK_ADD( this, "CAknNumericPasswordSettingPage" );
+	}
+
+
+EXPORT_C CAknNumericPasswordSettingPage::CAknNumericPasswordSettingPage(	
+								const TDesC* aSettingText, 
+								TInt aSettingNumber, 
+								TInt aControlType,
+								TInt aEditorResourceId, 
+								TInt aSettingPageResourceId, 
+								TDes& aNewPassword, 
+								const TDesC& aOldPassword )
+								:	CAknPasswordSettingPage( 
+									aSettingText, 
+									aSettingNumber, 
+									aControlType, 
+									aEditorResourceId, 
+									aSettingPageResourceId,
+									aNewPassword, 
+									aOldPassword )
+	{
+	SetMaxPasswordLength( KDefaultNumericPasswordLength );
+	AKNTASHOOK_ADD( this, "CAknNumericPasswordSettingPage" );
+	}
+
+/**
+ * Destructor
+ *
+ */
+EXPORT_C CAknNumericPasswordSettingPage::~CAknNumericPasswordSettingPage()
+	{
+	AKNTASHOOK_REMOVE();
+	}
+
+
+/** 
+ *
+ * The 2nd stage construction. Stored internal resource is used to perform the
+ * construction.
+ * Secret editor is reset to zero length.
+ *
+ */
+EXPORT_C void CAknNumericPasswordSettingPage::ConstructL()
+	{
+	BaseConstructL();
+	NumericPasswordEditor()->SetBorder( TGulBorder::ENone );
+	NumericPasswordEditor()->Reset();
+	// Construct an appropriate control context for the contained editor areas.
+	// Context produced is owned by CAknSettingPage. 
+    SetEditedItemFrameIID( KAknsIIDQsnFrInput, KAknsIIDQsnFrInputCenter );
+	}
+
+/**
+ * Soak up function to do the safe copying of the editor to the referenced value
+ *
+ */
+EXPORT_C void CAknNumericPasswordSettingPage::UpdateTextL()
+	{
+	NumericPasswordEditor()->GetText( NewPassword() );
+	}
+/** 
+ *
+ * Type-specific access to the alpha password editor control
+ *
+ */
+EXPORT_C CAknNumericSecretEditor* CAknNumericPasswordSettingPage::NumericPasswordEditor()
+	{
+	return STATIC_CAST( CAknNumericSecretEditor*, EditorControl());
+	}
+
+/**
+ * Writes the internal state of the control and its components to aStream.
+ * Does nothing in release mode.
+ * Designed to be overidden and base called by subclasses.
+ */
+#ifndef _DEBUG
+EXPORT_C void CAknNumericPasswordSettingPage::WriteInternalStateL(RWriteStream& /*aWriteStream*/) const
+	{}
+#else
+EXPORT_C void CAknNumericPasswordSettingPage::WriteInternalStateL(RWriteStream& aWriteStream) const
+	{
+	CAknPasswordSettingPage::WriteInternalStateL(aWriteStream);
+	}
+#endif
+
+EXPORT_C void CAknNumericPasswordSettingPage::HandlePointerEventL(const TPointerEvent& aPointerEvent) 
+    { 
+    CAknPasswordSettingPage::HandlePointerEventL(aPointerEvent); 
+    }
+
+EXPORT_C void* CAknNumericPasswordSettingPage::ExtensionInterface( TUid /*aInterface*/ ) 
+    { 
+    return NULL;
+    }
+    
+/**
+ *	Reserved method derived from CCoeControl
+ */
+EXPORT_C void CAknNumericPasswordSettingPage::Reserved_2()
+	{
+	}
+
+/**
+* Setting Page reserved methods 
+*/ 
+EXPORT_C void CAknNumericPasswordSettingPage::CAknSettingPage_Reserved_1()
+	{
+	}
+EXPORT_C void CAknNumericPasswordSettingPage::CAknSettingPage_Reserved_2()
+	{
+	}
+
+// End of File