williamr@2: /* williamr@2: * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: williamr@2: * Support for passwords in Settings Pages williamr@2: * williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef __AKNPASSWORDSETTINGPAGE__ williamr@2: #define __AKNPASSWORDSETTINGPAGE__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: // for the alphanumeric secret editor: williamr@2: #include williamr@2: #include williamr@2: williamr@2: const TInt KDefaultAlphaPasswordLength = 12; williamr@2: const TInt KDefaultNumericPasswordLength = 4; williamr@2: williamr@2: /** williamr@2: * Structure to hold the required resources for a password confirmation sequence williamr@2: * This holds 3 resource IDs. One for a query, and a note each for williamr@2: * success or failure williamr@2: * This structure contains the information read in from a AVKON_PASSWORD_CONFIRMATION williamr@2: * resource structure. williamr@2: */ williamr@2: class SAknConfirmationResource williamr@2: { williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Resource for the password query, if non-zero williamr@2: */ williamr@2: TInt iEntryQueryResourceId; williamr@2: /** williamr@2: * Resource for the success note, if non-zero williamr@2: */ williamr@2: TInt iSuccessNoteResourceId; williamr@2: /** williamr@2: * Resource for the failure note, if non-zero williamr@2: */ williamr@2: TInt iFailureNoteResourceId; williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * Base class for Password editors to ensure that their general functionality is williamr@2: * consistent. williamr@2: * williamr@2: * All contained-editor-specific stuff should be in the derived classes. williamr@2: * williamr@2: * THIS CLASS IS NOT INSTANTIATABLE williamr@2: * williamr@2: */ williamr@2: class CAknPasswordSettingPage : public CAknSettingPage williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * williamr@2: * Modes to be used for the matching of password texts williamr@2: * williamr@2: */ williamr@2: enum TAknPasswordMatchingMode williamr@2: { williamr@2: ECaseSensitive, williamr@2: ECaseInsensitive williamr@2: }; williamr@2: public: williamr@2: /** williamr@2: * Simple constructor depending only on a single resource Id and the new and old password. williamr@2: * Editor resource is given via the link in the setting page resource. williamr@2: * williamr@2: * @param aSettingPageResourceId Setting Page to use (if present) williamr@2: * @param aNewPassword williamr@2: * @param aOldPassword password to be checked against williamr@2: */ williamr@2: IMPORT_C CAknPasswordSettingPage( williamr@2: TInt aResourceID, williamr@2: TDes& aNewPassword, williamr@2: const TDesC& aOldPassword); williamr@2: williamr@2: /** williamr@2: * Constructor that allows separate setting page and editor resources williamr@2: * williamr@2: * This constructor allows the use of setting page using only the editor resource. Other combinations are also possible williamr@2: * williamr@2: * In all cases the number (if supplied i.e. <> 0 ) is used. williamr@2: * williamr@2: * Editor Resource Setting Page Resource williamr@2: * present present Both are used (but text & number overridden) williamr@2: * = 0 present Editor resource is used via SP resource (Effectively like the other constructor) williamr@2: * present = 0 Default Avkon SP resource if used + this editor resource williamr@2: * = 0 = 0 uses default resource for both SP and editor. This is OK if: williamr@2: * i) control type is present, williamr@2: * ii) a default resource exists ( OK for text, integer, date, time, duration ) williamr@2: * williamr@2: * Note: The first argument is a TDesC* (rather than TDesC&) because the other constructor williamr@2: * cannot initialize such a member without allocation or having an internal dummy buffer. williamr@2: * This descriptor must be owned by the client since not copy is taken until ExecuteLD() williamr@2: * williamr@2: * Rules for text and numbers: The rules are the same for both: (non-zero length) text or number other williamr@2: * than EAknSettingPageNoOrdinalDisplayed if given in this constructor will not override resource williamr@2: * (unless that is zero length or EAknSettingPageNoOrdinalDisplayed). Note, however, that text or number given via the williamr@2: * specific API for setting them, WILL override resource. williamr@2: * It is assumed that number from resource is very rare. Special text is somewhat more likely. williamr@2: * williamr@2: * @param aSettingTitleText Text at top of setting pane; EXTERNALLY OWNED williamr@2: * @param aSettingNumber Number at top left (if present) williamr@2: * @param aControlType Determines the type constructed and how its resource is read williamr@2: * @param aEditorResourceId Editor resource to use in the setting page (if present) williamr@2: * @param aSettingPageResourceId Setting Page to use (if present) williamr@2: * @param aNewPassword Descriptor for the new password williamr@2: * @param aOldPassword Descriptor for the old password williamr@2: */ williamr@2: williamr@2: IMPORT_C CAknPasswordSettingPage( const TDesC* aSettingTitleText, williamr@2: TInt aSettingNumber, williamr@2: TInt aControlType, williamr@2: TInt aEditorResourceId, williamr@2: TInt aSettingPageResourceId, williamr@2: TDes& aNewPassword, williamr@2: const TDesC& aOldPassword ); williamr@2: williamr@2: williamr@2: /** williamr@2: * Set the resource Id set for the old password confirmation sequence. williamr@2: * Resource Id should be for a AVKON_PASSWORD_CONFIRMATION structure williamr@2: * williamr@2: * @param resource for old password sequence williamr@2: */ williamr@2: IMPORT_C void SetOldPasswordConfirmationResourceId( TInt aOldPasswordConfirmationResourceId ); williamr@2: williamr@2: /** williamr@2: * Set the resource Id set for the new password confirmation sequence williamr@2: * Resource Id should be for a AVKON_PASSWORD_CONFIRMATION structure williamr@2: * williamr@2: * @param resource for new password sequence williamr@2: */ williamr@2: IMPORT_C void SetNewPasswordConfirmationResourceId( TInt aNewPasswordConfirmationResourceId ); williamr@2: williamr@2: /** williamr@2: * Sets the matching mode to be used in the password validation williamr@2: * @param one of ECaseSensitive or ECaseInsensitive williamr@2: */ williamr@2: IMPORT_C void SetMatchingMode( TAknPasswordMatchingMode aMode ); williamr@2: williamr@2: /** williamr@2: * Returns the matching mode to be used in the password validation williamr@2: * @return one of ECaseSensitive or ECaseInsensitive williamr@2: */ williamr@2: IMPORT_C TAknPasswordMatchingMode MatchingMode(); williamr@2: williamr@2: williamr@2: /** williamr@2: * Sets the maximum length of the password. The user will not be able to enter williamr@2: * more than this number of characters/keys williamr@2: * williamr@2: * @param set the max length williamr@2: */ williamr@2: IMPORT_C void SetMaxPasswordLength( TInt aLength ); williamr@2: williamr@2: williamr@2: /** williamr@2: * Access the maximum password length williamr@2: * williamr@2: * @return the maximum length williamr@2: */ williamr@2: IMPORT_C TInt MaxPasswordLength() const; williamr@2: williamr@2: /** williamr@2: * From CCoeControl williamr@2: */ williamr@2: IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Implementation of CAknSettingPage framework method williamr@2: * Called when the client's value is updated. Frequency of calling depends williamr@2: * upon the flag passed to ExecuteLD() williamr@2: * williamr@2: */ williamr@2: IMPORT_C virtual void UpdateSettingL(); williamr@2: williamr@2: williamr@2: /** williamr@2: * Implementation of CAknSettingPage framework method williamr@2: * Perform necessary operations when the user accepts. williamr@2: * Default implementation has password checking williamr@2: */ williamr@2: IMPORT_C virtual void AcceptSettingL(); williamr@2: williamr@2: williamr@2: /** williamr@2: * Acts upon changes in the hosted control's state. williamr@2: * williamr@2: * @param aControl The control changing its state (not used) williamr@2: * @param aEventType The type of control event williamr@2: */ williamr@2: IMPORT_C virtual void HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType ); williamr@2: williamr@2: williamr@2: /** williamr@2: * Implementation of CAknSettingPage framework method williamr@2: * williamr@2: * Method called after full construction and activation of the setting page williamr@2: */ williamr@2: IMPORT_C virtual void PostDisplayInitL(); williamr@2: williamr@2: /** williamr@2: * Implementation of CAknSettingPage framework method williamr@2: * Called after display of the setting page, but before the start of the williamr@2: * setting page "waiting". williamr@2: * williamr@2: * If overidden, would normally hold a query. williamr@2: * williamr@2: * @return ETrue if OK to carry on; EFalse if setting it to be abandoned williamr@2: * williamr@2: */ williamr@2: IMPORT_C virtual TBool PostDisplayCheckL(); williamr@2: williamr@2: williamr@2: /** williamr@2: * Implementation of CAknSettingPage framework method williamr@2: * williamr@2: */ williamr@2: IMPORT_C virtual TBool OkToExitL(TBool aAccept); williamr@2: williamr@2: /** williamr@2: * Implementation of CCoeControl framework method williamr@2: * Called when the control has its size changed williamr@2: */ williamr@2: IMPORT_C virtual void SizeChanged(); williamr@2: williamr@2: /** williamr@2: * Implementation of CCoeControl framework method williamr@2: * Called when required to draw williamr@2: */ williamr@2: IMPORT_C void Draw(const TRect& aRect) const; williamr@2: williamr@2: /** williamr@2: * Only implemented in the derived classes williamr@2: * Updates the text in the referenced password descriptor using a utility routine. williamr@2: * williamr@2: */ williamr@2: virtual void UpdateTextL() = 0; williamr@2: williamr@2: /** williamr@2: * Framework for password handling williamr@2: * Called when the old password is to be confirmed williamr@2: * @param aPassword old password williamr@2: * @param aResourceId AVKON_PASSWORD_CONFIRMATION id to use williamr@2: */ williamr@2: IMPORT_C virtual TBool ExecuteOldPasswordConfirmationL(const TDesC& aPassword, TInt aPasswordConfirmationResourceId ); williamr@2: williamr@2: /** williamr@2: * Framework for password handling williamr@2: * Called when the new password is to be confirmed williamr@2: * @param aPassword new password williamr@2: * @param aResourceId AVKON_PASSWORD_CONFIRMATION id to use williamr@2: */ williamr@2: IMPORT_C virtual TBool ExecuteNewPasswordConfirmationL(const TDesC& aPassword, TInt aPasswordConfirmationResourceId ); williamr@2: williamr@2: /** williamr@2: * Framework for password handling williamr@2: * Called to compare the two passwords williamr@2: * @param reference (old) password williamr@2: * @param candidate password; password just entered williamr@2: */ williamr@2: IMPORT_C virtual TInt ComparePasswords( const TDesC& aRefPassword, const TDesC& aCandidatePassword, TAknPasswordMatchingMode ) const; williamr@2: williamr@2: /** williamr@2: * Utility method williamr@2: * Access to the old password confirmation resource williamr@2: * @return id for AVKON_PASSWORD_CONFIRMATION structure williamr@2: */ williamr@2: IMPORT_C TInt OldPasswordConfirmationResourceId() const; williamr@2: williamr@2: /** williamr@2: * Utility method williamr@2: * Access to the new password confirmation resource williamr@2: * @return id for AVKON_PASSWORD_CONFIRMATION structure williamr@2: */ williamr@2: IMPORT_C TInt NewPasswordConfirmationResourceId() const; williamr@2: williamr@2: /** williamr@2: * Utility method williamr@2: * Read in the confirmation resource structure williamr@2: * @param aPasswordResourceId id to use williamr@2: * @param aResourceGroup structure to fill williamr@2: */ williamr@2: IMPORT_C void ReadConfirmationResourceL( TInt aPasswordResourceId, SAknConfirmationResource& aResourceGroup ); williamr@2: williamr@2: /** williamr@2: * Utility method williamr@2: * Run the password confirmation williamr@2: */ williamr@2: IMPORT_C TBool DoPasswordConfirmationL(const TDesC& aPassword, TInt aPasswordConfirmationResourceId, TAknPasswordMatchingMode aMatchMode, TInt& aTries ); williamr@2: williamr@2: /** williamr@2: * Utility method williamr@2: * Access to new password candidate williamr@2: */ williamr@2: williamr@2: IMPORT_C TDes& NewPassword() const; williamr@2: williamr@2: /** williamr@2: * Utility method williamr@2: * Access to old password williamr@2: */ williamr@2: IMPORT_C const TDesC& OldPassword() const; williamr@2: williamr@2: // williamr@2: // CoeControl Framework and reserved methods williamr@2: // williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Writes the internal state of the control and its components to aStream. williamr@2: * Does nothing in release mode. williamr@2: * Designed to be overidden and base called by subclasses. williamr@2: * williamr@2: * @param aWriteSteam A connected write stream williamr@2: */ williamr@2: IMPORT_C virtual void WriteInternalStateL(RWriteStream& aWriteStream) const; williamr@2: williamr@2: private: williamr@2: williamr@2: /** williamr@2: * Reserved method derived from CCoeControl williamr@2: */ williamr@2: IMPORT_C virtual void Reserved_2(); williamr@2: williamr@2: private: williamr@2: /** williamr@2: * From CAknControl williamr@2: */ williamr@2: IMPORT_C void* ExtensionInterface( TUid aInterface ); williamr@2: williamr@2: /** williamr@2: * New reserved methods for CAknSettingPage hierarchy williamr@2: */ williamr@2: private: williamr@2: IMPORT_C virtual void CAknSettingPage_Reserved_1(); williamr@2: IMPORT_C virtual void CAknSettingPage_Reserved_2(); williamr@2: williamr@2: private: williamr@2: TDes& iNewPassword; williamr@2: const TDesC& iOldPassword; williamr@2: TInt iOldPasswordConfirmationResourceId; williamr@2: TInt iNewPasswordConfirmationResourceId; williamr@2: TAknPasswordMatchingMode iMatchingMode; williamr@2: TInt iMaxPasswordLength; williamr@2: williamr@2: TAknLayoutRect iSecretEditorLayoutRect; williamr@2: TAknLayoutRect iHorizontalShadow; williamr@2: TAknLayoutRect iVerticalShadow; williamr@2: TAknLayoutRect iOutlineFrame; williamr@2: williamr@2: TInt iSpare_1; williamr@2: williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * williamr@2: * This class is used for alphanumeric passwords williamr@2: * williamr@2: */ williamr@2: williamr@2: class CAknAlphaPasswordSettingPage : public CAknPasswordSettingPage williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * Simple constructor depending only on a single resource Id and the new and old password. williamr@2: * Editor resource is given via the link in the setting page resource. williamr@2: * williamr@2: * @param aSettingPageResourceId Setting Page to use (if present) williamr@2: * @param aNewPassword williamr@2: * @param aOldPassword password to be checked against williamr@2: */ williamr@2: IMPORT_C CAknAlphaPasswordSettingPage( williamr@2: TInt aResourceID, williamr@2: TDes& aNewPassword, williamr@2: const TDesC& aOldPassword); williamr@2: /** williamr@2: * Constructor that allows separate setting page and editor resources williamr@2: * williamr@2: * This constructor allows the use of setting page using only the editor resource. Other combinations are also possible williamr@2: * williamr@2: * In all cases the number (if supplied i.e. <> 0 ) is used. williamr@2: * williamr@2: * Editor Resource Setting Page Resource williamr@2: * present present Both are used (but text & number overridden) williamr@2: * = 0 present Editor resource is used via SP resource (Effectively like the other constructor) williamr@2: * present = 0 Default Avkon SP resource if used + this editor resource williamr@2: * = 0 = 0 uses default resource for both SP and editor. This is OK if: williamr@2: * i) control type is present, williamr@2: * ii) a default resource exists ( OK for text, integer, date, time, duration ) williamr@2: * williamr@2: * Note: The first argument is a TDesC* (rather than TDesC&) because the other constructor williamr@2: * cannot initialize such a member without allocation or having an internal dummy buffer. williamr@2: * This descriptor must be owned by the client since not copy is taken until ExecuteLD() williamr@2: * williamr@2: * Rules for text and numbers: The rules are the same for both: (non-zero length) text or number other williamr@2: * than EAknSettingPageNoOrdinalDisplayed if given in this constructor will not override resource williamr@2: * (unless that is zero length or EAknSettingPageNoOrdinalDisplayed). Note, however, that text or number given via the williamr@2: * specific API for setting them, WILL override resource. williamr@2: * It is assumed that number from resource is very rare. Special text is somewhat more likely. williamr@2: * williamr@2: * @param aSettingTitleText Text at top of setting pane; EXTERNALLY OWNED williamr@2: * @param aSettingNumber Number at top left (if present) williamr@2: * @param aControlType Determines the type constructed and how its resource is read williamr@2: * @param aEditorResourceId Editor resource to use in the setting page (if present) williamr@2: * @param aSettingPageResourceId Setting Page to use (if present) williamr@2: * @param aNewPassword Descriptor for the new password williamr@2: * @param aOldPassword Descriptor for the old password williamr@2: */ williamr@2: IMPORT_C CAknAlphaPasswordSettingPage( const TDesC* aSettingTitleText, williamr@2: TInt aSettingNumber, williamr@2: TInt aControlType, williamr@2: TInt aEditorResourceId, williamr@2: TInt aSettingPageResourceId, williamr@2: TDes& aNewPassword, williamr@2: const TDesC& aOldPassword ); williamr@2: williamr@2: /** williamr@2: * williamr@2: * 2nd stage construction. This uses stored values from the constructor to allocate the williamr@2: * required aggregate objects, and then set the Date value. williamr@2: * williamr@2: */ williamr@2: IMPORT_C virtual void ConstructL(); williamr@2: williamr@2: /** williamr@2: * Type specific access to hosted editor williamr@2: * @return the hosted (alpha secret) editor williamr@2: */ williamr@2: IMPORT_C CEikSecretEditor* AlphaPasswordEditor(); williamr@2: williamr@2: /** williamr@2: * From CCoeControl. williamr@2: * Handles pointer events williamr@2: * @param aPointerEvent The pointer event. williamr@2: */ williamr@2: IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); williamr@2: williamr@2: protected: williamr@2: /** williamr@2: * Destructor williamr@2: */ williamr@2: IMPORT_C virtual ~CAknAlphaPasswordSettingPage(); williamr@2: williamr@2: /** williamr@2: * From CAknPasswordSettingPage - Implemented in this class williamr@2: * Copy text from the editor to the client's descriptor williamr@2: */ williamr@2: IMPORT_C virtual void UpdateTextL(); williamr@2: williamr@2: /** williamr@2: * Framework for password handling williamr@2: * Called to compare the two passwords williamr@2: * @param reference (old) password williamr@2: * @param candidate password; password just entered williamr@2: */ williamr@2: IMPORT_C virtual TInt ComparePasswords( const TDesC& aRefPassword, const TDesC& aCandidatePassword, TAknPasswordMatchingMode ) const; williamr@2: williamr@2: // williamr@2: // CoeControl Framework and reserved methods williamr@2: // williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Writes the internal state of the control and its components to aStream. williamr@2: * Does nothing in release mode. williamr@2: * Designed to be overidden and base called by subclasses. williamr@2: * williamr@2: * @param aWriteSteam A connected write stream williamr@2: */ williamr@2: IMPORT_C virtual void WriteInternalStateL(RWriteStream& aWriteStream) const; williamr@2: williamr@2: private: williamr@2: williamr@2: /** williamr@2: * Reserved method derived from CCoeControl williamr@2: */ williamr@2: IMPORT_C virtual void Reserved_2(); williamr@2: williamr@2: private: williamr@2: /** williamr@2: * From CAknControl williamr@2: */ williamr@2: IMPORT_C void* ExtensionInterface( TUid aInterface ); williamr@2: williamr@2: /** williamr@2: * New reserved methods for CAknSettingPage hierarchy williamr@2: */ williamr@2: private: williamr@2: IMPORT_C virtual void CAknSettingPage_Reserved_1(); williamr@2: IMPORT_C virtual void CAknSettingPage_Reserved_2(); williamr@2: williamr@2: private: williamr@2: TInt iSpare; williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: * williamr@2: * This class is used for numeric passwords. The API uses text descriptors rather than williamr@2: * integers for the PIN numbers as this is the usage williamr@2: * williamr@2: */ williamr@2: williamr@2: #include williamr@2: williamr@2: class CAknNumericPasswordSettingPage : public CAknPasswordSettingPage williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * Simple constructor depending only on a single resource Id and the new and old password. williamr@2: * Editor resource is given via the link in the setting page resource. williamr@2: * williamr@2: * @param aSettingPageResourceId Setting Page to use (if present) williamr@2: * @param aNewPassword williamr@2: * @param aOldPassword password to be checked against williamr@2: */ williamr@2: IMPORT_C CAknNumericPasswordSettingPage( williamr@2: TInt aResourceID, williamr@2: TDes& aNewPassword, williamr@2: const TDesC& aOldPassword); williamr@2: /** williamr@2: * Constructor that allows separate setting page and editor resources williamr@2: * williamr@2: * This constructor allows the use of setting page using only the editor resource. Other combinations are also possible williamr@2: * williamr@2: * In all cases the number (if supplied i.e. <> 0 ) is used. williamr@2: * williamr@2: * Editor Resource Setting Page Resource williamr@2: * present present Both are used (but text & number overridden) williamr@2: * = 0 present Editor resource is used via SP resource (Effectively like the other constructor) williamr@2: * present = 0 Default Avkon SP resource if used + this editor resource williamr@2: * = 0 = 0 uses default resource for both SP and editor. This is OK if: williamr@2: * i) control type is present, williamr@2: * ii) a default resource exists ( OK for text, integer, date, time, duration ) williamr@2: * williamr@2: * Note: The first argument is a TDesC* (rather than TDesC&) because the other constructor williamr@2: * cannot initialize such a member without allocation or having an internal dummy buffer. williamr@2: * This descriptor must be owned by the client since not copy is taken until ExecuteLD() williamr@2: * williamr@2: * Rules for text and numbers: The rules are the same for both: (non-zero length) text or number other williamr@2: * than EAknSettingPageNoOrdinalDisplayed if given in this constructor will not override resource williamr@2: * (unless that is zero length or EAknSettingPageNoOrdinalDisplayed). Note, however, that text or number given via the williamr@2: * specific API for setting them, WILL override resource. williamr@2: * It is assumed that number from resource is very rare. Special text is somewhat more likely. williamr@2: * williamr@2: * @param aSettingTitleText Text at top of setting pane; EXTERNALLY OWNED williamr@2: * @param aSettingNumber Number at top left (if present) williamr@2: * @param aControlType Determines the type constructed and how its resource is read williamr@2: * @param aEditorResourceId Editor resource to use in the setting page (if present) williamr@2: * @param aSettingPageResourceId Setting Page to use (if present) williamr@2: * @param aNewPassword Descriptor for the new password williamr@2: * @param aOldPassword Descriptor for the old password williamr@2: */ williamr@2: IMPORT_C CAknNumericPasswordSettingPage( const TDesC* aSettingTitleText, williamr@2: TInt aSettingNumber, williamr@2: TInt aControlType, williamr@2: TInt aEditorResourceId, williamr@2: TInt aSettingPageResourceId, williamr@2: TDes& aNewPassword, williamr@2: const TDesC& aOldPassword ); williamr@2: williamr@2: /** williamr@2: * williamr@2: * 2nd stage construction. This uses stored values from the conststuctor to allocate the williamr@2: * required aggregate objects, and then set the Date value. williamr@2: * williamr@2: */ williamr@2: IMPORT_C virtual void ConstructL(); williamr@2: williamr@2: /** williamr@2: * Type specific access to hosted editor williamr@2: * @return the hosted (numeric secret) editor williamr@2: */ williamr@2: IMPORT_C CAknNumericSecretEditor* NumericPasswordEditor(); williamr@2: williamr@2: /** williamr@2: * From CCoeControl. williamr@2: * Handles pointer events williamr@2: * @param aPointerEvent The pointer event. williamr@2: */ williamr@2: IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); williamr@2: williamr@2: protected: williamr@2: /** williamr@2: * Destructor williamr@2: */ williamr@2: IMPORT_C virtual ~CAknNumericPasswordSettingPage(); williamr@2: williamr@2: /** williamr@2: * From CAknPasswordSettingPage - Implemented in this class williamr@2: * Copy text from the editor to the client's descriptor williamr@2: */ williamr@2: IMPORT_C virtual void UpdateTextL(); williamr@2: williamr@2: // williamr@2: // CoeControl Framework and reserved methods williamr@2: // williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Writes the internal state of the control and its components to aStream. williamr@2: * Does nothing in release mode. williamr@2: * Designed to be overidden and base called by subclasses. williamr@2: * williamr@2: * @param aWriteSteam A connected write stream williamr@2: */ williamr@2: IMPORT_C virtual void WriteInternalStateL(RWriteStream& aWriteStream) const; williamr@2: williamr@2: private: williamr@2: williamr@2: /** williamr@2: * Reserved method derived from CCoeControl williamr@2: */ williamr@2: IMPORT_C virtual void Reserved_2(); williamr@2: williamr@2: private: williamr@2: /** williamr@2: * From CAknControl williamr@2: */ williamr@2: IMPORT_C void* ExtensionInterface( TUid aInterface ); williamr@2: williamr@2: /** williamr@2: * New reserved methods for CAknSettingPage hierarchy williamr@2: */ williamr@2: private: williamr@2: IMPORT_C virtual void CAknSettingPage_Reserved_1(); williamr@2: IMPORT_C virtual void CAknSettingPage_Reserved_2(); williamr@2: williamr@2: private: williamr@2: TInt iSpare; williamr@2: }; williamr@2: williamr@2: williamr@2: #endif