epoc32/include/mw/aknmfnesettingpage.h
branchSymbian2
changeset 2 2fe1408b6811
parent 1 666f914201fb
child 4 837f303aceeb
--- a/epoc32/include/mw/aknmfnesettingpage.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/mw/aknmfnesettingpage.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,980 @@
-aknmfnesettingpage.h
+/*
+* 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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*     Header file for Setting page implementations for Date, Time, duration 
+*       and IP addresses 
+*
+*/
+
+
+#ifndef __AKNMFNESETTINGPAGE_H__
+#define __AKNMFNESETTINGPAGE_H__ 
+
+#include <eikdef.h>
+#include <eikbtgpc.h>
+#include <eikmfne.h>
+#include <aknipfed.h>
+#include <in_sock.h>
+#include <aknsettingpage.h>
+
+ 
+// FORWARD DECLARATIONS
+class CAknButton;
+ 
+/** 
+ *
+ * This class is used as the base for the date, time, duration and Ip editor
+ * setting page types.  It performs all the layout.
+ *
+ */
+class CAknMfneSettingPage : public CAknSettingPage
+{
+
+public: 
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+    /**
+    * Destructor.
+    */
+    IMPORT_C virtual ~CAknMfneSettingPage();
+
+protected:
+    /**
+     * Constructor using purely Setting page resource
+     *
+     * @param   aResourceId     Setting page resource Id
+     */
+    IMPORT_C CAknMfneSettingPage(TInt ResourceId );
+     /**
+     * Constructor that allows separate setting page and editor resources
+     * 
+     * @param aSettingTitleText Text at top of setting pane ; Externally owned
+     * @param aSettingNumber        Number at top left (if present)
+     * @param aControlType          Determines the type constructed and how its
+     *                              resource is read
+     * @param aEditorResourceId Editor resource to use in the setting page 
+     *                          (if present)
+     */
+    IMPORT_C CAknMfneSettingPage(   const TDesC* aSettingTitleText, 
+                                TInt aSettingNumber, 
+                                TInt aControlType,
+                                TInt aEditorResourceId, 
+                                TInt aSettingPageResourceId );
+
+    /**
+    *
+    * Framework method called when the control needs to be re-laid out
+    *
+    */
+    IMPORT_C virtual void SizeChanged();
+    
+    /** 
+    * Draws the control. Framework method
+    */
+    IMPORT_C void Draw(const TRect& aRect) const;
+
+    /**
+    * Type-specific access to control
+    */
+    IMPORT_C CEikMfne* Mfne() const;
+
+    /**
+    * Implementation of of validity framework method for mfnes.
+    * Checks if the current focused field in the mfne is valid and sets the 
+    * setting page validity accordingly.
+    * 
+    * This method is called in order for the softkeys to be updated
+    */
+    IMPORT_C void CheckAndSetDataValidity();
+
+    /**
+    * From MCoeControlObserver:
+    * Acts upon changes in the hosted control's state. 
+    * 
+    * This observer method performs
+    *  - Updates the value if EUpdateWhenChanged is the setting page's update
+    *    mode
+    *  - updates CBA labels depending on the data validity
+    *
+    * @param    aControl    The control changing its state (not used)
+    * @param    aEventType  The type of control event 
+    */
+    IMPORT_C virtual void HandleControlEventL(CCoeControl* aControl,
+                                            TCoeEvent aEventType);
+                                            
+    /**
+    *
+    * 2nd stage construction. This creates the editing buttons in 
+    * touch enabled builds.
+    *
+    */
+    IMPORT_C virtual void ConstructL();
+    
+    /**
+     * Standard CCoeControl routine to return the number of componentn controls
+     *
+     * @param	aIndex	index at which to return control
+     */
+    IMPORT_C TInt CountComponentControls() const;
+
+    /**
+     * Standard CCoeControl routine to return the control at a given index
+     *
+     * @param	aIndex	index at which to return control
+     */ 
+    IMPORT_C CCoeControl* ComponentControl(TInt anIndex) const;
+                                            
+protected:
+
+    // Buttons for modifying the value of the active MFNE field with stylus.
+    // The derived classes which require the buttons, must call this class'
+    // ConstructL function in their second phase constructor. This class
+    // takes care of the button positioning and functionality.
+    CAknButton* iIncreaseValueButton;
+    CAknButton* iDecreaseValueButton;
+
+private:
+    /**
+    * From CAknControl
+    */
+    IMPORT_C void* ExtensionInterface( TUid aInterface );
+
+private:
+    // Layout information is stored here and not in the derived classes
+    TAknLayoutRect iMfneLayoutRect;
+    TAknLayoutRect iHorizontalShadow;
+    TAknLayoutRect iVerticalShadow;
+    TAknLayoutRect iOutlineFrame;
+
+    TInt iSpare_1;
+
+};
+
+
+/** 
+*
+* This class is used for entering Dates in a "Code" setting page
+*
+*/
+class CAknDateSettingPage : public CAknMfneSettingPage
+{
+public:
+
+    /**
+     * Constructor using purely Setting page resource
+     *
+     * @param   aResourceId     Setting page resource Id
+     * @param   aDateValue      Reference to a date value set to the initial 
+     *                          date
+     */
+    IMPORT_C CAknDateSettingPage(
+        TInt aResourceID, 
+        TTime& aDateValue);
+
+    /**
+     * Constructor that allows separate setting page and editor resources
+     * 
+     * This constructor allows the use of setting page using only the editor 
+     * resource. Other combinations are also possible
+     *
+     * In all cases the number (if supplied i.e. <> 0 ) is used.  
+     *
+     *      Editor Resource     Setting Page Resource
+     *          present             present             Both are used 
+     *                                                  (but text 
+     *                                                  & number overridden)
+     *           = 0                present             Editor resource is used
+     *                                                  via SP resource 
+     *                                                  (Effectively like the
+     *                                                  other constructor)
+     *          present             = 0                 Default Avkon SP 
+     *                                                  resource if used + this
+     *                                                  editor resource
+     *           = 0                = 0                 uses default resource
+     *                                                  for both SP and editor.
+     *                                                  This is OK if:
+     *   i) control type is present, 
+     *  ii) a default resource exists ( OK for text, integer, date, time, 
+     *      duration )
+     *
+     * Note: The first argument is a TDesC* (rather than TDesC&) because the
+     * other constructor cannot initialize such a member without allocation or
+     * having an internal dummy buffer.
+     * Note that this descriptor must be owned by the client at least until the
+     * ExecuteLD().
+     *
+     * Rules for text and numbers: The rules are the same for both:  
+     * (non-zero length) text or number other than 
+     * EAknSettingPageNoOrdinalDisplayed if given in this constructor will not
+     * override resource (unless that is zero length or 
+     * EAknSettingPageNoOrdinalDisplayed).  Note, however, that text or number
+     * given via the specific API for setting them, WILL override resource.
+     * It is assumed that number from resource is very rare.  Special text is
+     * somewhat more likely.
+     * 
+     * @param aSettingTitleText Text at top of setting pane; OWNED EXTERNALLY
+     * @param aSettingNumber        Number at top left (if present)
+     * @param aControlType          Determines the type constructed and how its
+     *                              resource is read
+     * @param aEditorResourceId Editor resource to use in the setting page 
+     *                          (if present)
+     * @param aSettingPageResourceId        Setting Page to use (if present)
+     * @param aDateValue                reference to date
+     */
+    IMPORT_C CAknDateSettingPage(   
+                                const TDesC* aSettingTitleText, 
+                                TInt aSettingNumber, 
+                                TInt aControlType,
+                                TInt aEditorResourceId, 
+                                TInt aSettingPageResourceId,    
+                                TTime& aDateValue );
+
+
+    /**
+    *
+    * 2nd stage construction.  This uses stored values from the conststuctor
+    * to allocate the required aggregate objects, and then set the Date value.
+    *
+    */
+    IMPORT_C virtual void ConstructL();
+
+    /**
+     * Type-specific access to the editor 
+     *
+     * @return the hosted editor
+     */
+    IMPORT_C CEikDateEditor* DateEditor();
+
+    /**
+    *  From CCoeControl
+    */ 
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+
+protected:
+    /**
+    * Destructor
+    */
+    IMPORT_C virtual ~CAknDateSettingPage();
+
+    /**
+    * This framework method is called when the editor changes its value and the
+    * mode of execution of the setting page is a continuous update mode.
+    *
+    */
+    IMPORT_C virtual void UpdateSettingL();
+
+    /**
+    * Called when the user has accepted the value.
+    * The external value is updated once again, in case we were not in
+    * continuous update mode. 
+    * A specific observer event is generated for the observer to say that the
+    * value is accepted.
+    */
+    IMPORT_C virtual void AcceptSettingL();
+
+    /**
+    * The backup value, stored at construction time, is re-loaded into the 
+    * referenced Date. An event is sent to the observer saying that the event
+    * was dismissed.
+    */
+    IMPORT_C virtual void RestoreOriginalSettingL();
+    
+//
+// CoeControl Framework and reserved methods
+//
+protected:
+
+/**
+ * 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.
+ *
+ * @param   aWriteSteam     A connected write stream
+ */ 
+    IMPORT_C virtual void WriteInternalStateL(RWriteStream& aWriteStream) const;
+
+private:
+/**
+ *  Reserved method derived from CCoeControl
+ */
+    IMPORT_C virtual void Reserved_2();
+
+private:
+    /**
+    * From CAknControl
+    */
+    IMPORT_C void* ExtensionInterface( TUid aInterface );
+
+/**
+ * New reserved methods for CAknSettingPage hierarchy
+ */ 
+private: 
+    IMPORT_C virtual void CAknSettingPage_Reserved_1();
+    IMPORT_C virtual void CAknSettingPage_Reserved_2();
+
+private:
+    TTime& iDateValue;
+    TTime iBackupDateValue;
+};
+
+/** 
+ *
+ * This class is used for entering Times in a "Code" setting page
+ *
+ */
+class CAknTimeSettingPage : public CAknMfneSettingPage
+{
+public:
+    /**
+     * Constructor using purely Setting page resource
+     *
+     * @param   aResourceId     Setting page resource Id
+     * @param   aTimeValue      Reference to a time value for the initial time
+     */
+    IMPORT_C CAknTimeSettingPage(
+        TInt aResourceID, 
+        TTime& aTimeValue);
+
+    /**
+     * Constructor that allows separate setting page and editor resources
+     * 
+     * This constructor allows the use of setting page using only the editor 
+     * resource.  Other combinations are also possible
+     *
+     * In all cases the number (if supplied i.e. <> 0 ) is used.  
+     *
+     *      Editor Resource     Setting Page Resource
+     *          present             present             Both are used (but text
+     *                                                  & number overridden)
+     *           = 0                present             Editor resource is used
+     *                                                  via SP resource 
+     *                                                  (Effectively like the
+     *                                                  other constructor)
+     *          present              = 0                Default Avkon SP 
+     *                                                  resource if used + this
+     *                                                  editor resource
+     *           = 0                 = 0                uses default resource
+     *                                                  for both SP and editor.
+     *                                                  This is OK if:
+     *   i) control type is present, 
+     *  ii) a default resource exists ( OK for text, integer, 
+     *      date, time, duration )
+     *
+     * Note: The first argument is a TDesC* (rather than TDesC&) because the
+     * other constructor cannot initialize such a member without allocation or
+     * having an internal dummy buffer.
+     * Note that this descriptor must be owned by the client at least until the
+     * ExecuteLD().
+     *
+     * Rules for text and numbers: The rules are the same for both:  
+     * (non-zero length) text or number other than 
+     * EAknSettingPageNoOrdinalDisplayed if given in this constructor will not
+     * override resource (unless that is zero length or 
+     * EAknSettingPageNoOrdinalDisplayed).  Note, however, that text or number
+     * given via the specific API for setting them, WILL override resource.
+     * It is assumed that number from resource is very rare.  Special text is
+     * somewhat more likely.
+     * 
+     * @param aSettingTitleText Text at top of setting pane
+     * @param aSettingNumber        Number at top left (if present)
+     * @param aControlType          Determines the type constructed and how its
+     *                              resource is read
+     * @param aEditorResourceId Editor resource to use in the setting page 
+     *                          (if present)
+     * @param aSettingPageResourceId        Setting Page to use (if present)
+     * @param aTimeValue                reference to a time
+     */
+    IMPORT_C CAknTimeSettingPage(   const TDesC* aSettingTitleText, 
+                                TInt aSettingNumber, 
+                                TInt aControlType,
+                                TInt aEditorResourceId, 
+                                TInt aSettingPageResourceId,    
+                                TTime& aTimeValue );
+
+    /**
+    * Specific 2nd stage contructor for this type. Construction is performed
+    * according to the resources and parameters set in the C++ constructors
+    *
+    */ 
+    IMPORT_C virtual void ConstructL();
+
+    /**
+     * Type-specific access to the editor 
+     */
+    IMPORT_C CEikTimeEditor* TimeEditor();
+
+    /**
+    *  From CCoeControl
+    */ 
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+
+protected:
+
+    /**
+    * Destructor
+    */
+    IMPORT_C virtual ~CAknTimeSettingPage();
+
+    /**
+    * This framework method is called when the editor changes its value and 
+    * the mode of execution of the setting page is a continuous update mode.
+    *
+    */
+    IMPORT_C virtual void UpdateSettingL();
+
+    /**
+    * Called when the user has accepted the value.
+    * The external value is updated once again, in case we were not in
+    * continuous update mode. 
+    * A specific observer event is generated for the observer to say that the
+    * value is accepted.
+    */
+    IMPORT_C virtual void AcceptSettingL();
+    /**
+    * The backup value, stored at construction time, is re-loaded into the 
+    * referenced Date.
+    * An event is sent to the observer saying that the event was dismissed.
+    */
+    IMPORT_C virtual void RestoreOriginalSettingL();
+    
+//
+// CoeControl Framework and reserved methods
+//
+protected:
+
+/**
+ * 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.
+ *
+ * @param   aWriteSteam     A connected write stream
+ */ 
+    IMPORT_C virtual void WriteInternalStateL(RWriteStream& aWriteStream) const;
+
+private:
+
+/**
+ *  Reserved method derived from CCoeControl
+ */
+    IMPORT_C virtual void Reserved_2();
+
+private:
+    /**
+    * From CAknControl
+    */
+    IMPORT_C void* ExtensionInterface( TUid aInterface );
+
+/**
+ * New reserved methods for CAknSettingPage hierarchy
+ */ 
+private: 
+    IMPORT_C virtual void CAknSettingPage_Reserved_1();
+    IMPORT_C virtual void CAknSettingPage_Reserved_2();
+
+
+private:
+    TTime& iTimeValue;
+    TTime iBackupTimeValue;
+
+};
+
+/** 
+ *
+ * This class is used for entering duration in a "Code" setting page
+ *
+ */
+class CAknDurationSettingPage : public CAknMfneSettingPage
+{
+public:
+    /**
+     * Constructor using purely Setting page resource
+     *
+     * @param   aResourceId     Setting page resource Id
+     * @param   aDurationValue      Reference to the maintained duration value
+     */
+    IMPORT_C CAknDurationSettingPage(
+        TInt                    aResourceID, 
+        TTimeIntervalSeconds&   aDurationValue);
+    /**
+     * Constructor that allows separate setting page and editor resources
+     * 
+     * This constructor allows the use of setting page using only the editor 
+     * resource.  Other combinations are also possible
+     *
+     * In all cases the number (if supplied i.e. <> 0 ) is used.  
+     *
+     *      Editor Resource     Setting Page Resource
+     *          present             present             Both are used 
+     *                                                  (but text & number 
+     *                                                  overridden)
+     *           = 0                    present         Editor resource is used
+     *                                                  via SP resource 
+     *                                                  (Effectively like the 
+     *                                                  other constructor)
+     *          present             = 0                 Default Avkon SP 
+     *                                                  resource if used + this
+     *                                                  editor resource
+     *           = 0                    = 0             uses default resource 
+     *                                                  for both SP and editor.
+     *                                                  This is OK if:
+     *   i) control type is present, 
+     *  ii) a default resource exists ( OK for text, integer, 
+     *      date, time, duration )
+     *
+     * Note: The first argument is a TDesC* (rather than TDesC&) because the 
+     * other constructor cannot initialize such a member without allocation or
+     * having an internal dummy buffer.
+     * Note that this descriptor must be owned by the client at least until the
+     * ExecuteLD().
+     *
+     * Rules for text and numbers: The rules are the same for both:
+     * (non-zero length) text or number other than 
+     * EAknSettingPageNoOrdinalDisplayed if given in this constructor will not
+     * override resource (unless that is zero length or 
+     * EAknSettingPageNoOrdinalDisplayed).  Note, however, that text or number
+     * given via the specific API for setting them, WILL override resource.
+     * It is assumed that number from resource is very rare.  Special text is
+     * somewhat more likely.
+     * 
+     * @param aSettingTitleText Text at top of setting pane; OWNED EXTERNALLY
+     * @param aSettingNumber        Number at top left (if present)
+     * @param aControlType          Determines the type constructed and how its
+     *                              resource is read
+     * @param aEditorResourceId Editor resource to use in the setting page 
+     *                          (if present)
+     * @param aSettingPageResourceId        Setting Page to use (if present)
+     * @param aDurationValue                reference to a duration
+     */
+    IMPORT_C CAknDurationSettingPage(   const TDesC* aSettingTitleText, 
+                                TInt aSettingNumber, 
+                                TInt aControlType,
+                                TInt aEditorResourceId, 
+                                TInt aSettingPageResourceId,    
+                                TTimeIntervalSeconds&   aDurationValue);
+
+    /**
+    * Specific 2nd stage contructor for this type. Construction is performed
+    * according to the resources and parameters set in the C++ constructors
+    *
+    */ 
+    IMPORT_C virtual void ConstructL();
+    /**
+     * Type-specific access to the editor 
+     */
+    IMPORT_C CEikDurationEditor* DurationEditor();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+
+protected:
+    /**
+    * Destructor
+    */
+    IMPORT_C virtual ~CAknDurationSettingPage();
+
+    /**
+    * This framework method is called when the editor changes its value and 
+    * the mode of execution of the setting page is a continuous update mode.
+    *
+    */
+    IMPORT_C virtual void UpdateSettingL();
+
+    /**
+    * Called when the user has accepted the value.
+    * The external value is updated once again, in case we were not in
+    * continuous update mode. 
+    * A specific observer event is generated for the observer to say that the
+    * value is accepted.
+    */
+    IMPORT_C virtual void AcceptSettingL();
+
+    /**
+    * The backup value, stored at construction time, is re-loaded into the 
+    * referenced Date.
+    * An event is sent to the observer saying that the event was dismissed.
+    */
+    IMPORT_C virtual void RestoreOriginalSettingL();
+    
+//
+// CoeControl Framework and reserved methods
+//
+protected:
+
+/**
+ * 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.
+ *
+ * @param   aWriteSteam     A connected write stream
+ */ 
+    IMPORT_C virtual void WriteInternalStateL(RWriteStream& aWriteStream) const;
+
+private:
+/**
+ *  Reserved method derived from CCoeControl
+ */
+    IMPORT_C virtual void Reserved_2();
+
+private:
+    /**
+    * From CAknControl
+    */
+    IMPORT_C void* ExtensionInterface( TUid aInterface );
+
+/**
+ * New reserved methods for CAknSettingPage hierarchy
+ */ 
+private: 
+    IMPORT_C virtual void CAknSettingPage_Reserved_1();
+    IMPORT_C virtual void CAknSettingPage_Reserved_2();
+
+private:
+    TTimeIntervalSeconds& iDurationValue;
+    TTimeIntervalSeconds iBackupDurationValue;
+};
+
+
+/**
+*  Time offset setting page.
+*
+*  @lib avkon
+*  @since 2.0
+*/
+
+class CAknTimeOffsetSettingPage : public CAknMfneSettingPage
+{
+public:
+    /**
+     * Constructor using purely Setting page resource
+     *
+     * @since 2.0
+     * @param   aResourceId     Setting page resource Id
+     * @param   aTimeOffsetValue        Reference to the maintained 
+     *                                  offset value
+     */
+    IMPORT_C CAknTimeOffsetSettingPage(
+        TInt                    aResourceID, 
+        TTimeIntervalSeconds&   aTimeOffsetValue);
+    /**
+     * Constructor that allows separate setting page and editor resources
+     * 
+     * This constructor allows the use of setting page using only the editor 
+     * resource. Other combinations are also possible
+     *
+     * In all cases the number (if supplied i.e. <> 0 ) is used.  
+     *
+     *      Editor Resource     Setting Page Resource
+     *          present             present             Both are used 
+     *                                                  (but text & number 
+     *                                                  overridden)
+     *           = 0                present             Editor resource is 
+     *                                                  used via SP resource 
+     *                                                  (Effectively like the 
+     *                                                  other constructor)
+     *          present             = 0                 Default Avkon SP 
+     *                                                  resource if used + 
+     *                                                  this editor resource
+     *           = 0                = 0                 uses default resource 
+     *                                                  for both SP and editor. 
+     *                                                  This is OK if:
+     * i) control type is present, 
+     * ii) a default resource exists ( OK for text, integer, 
+     *     date, time, duration )
+     *
+     * Note: The first argument is a TDesC* (rather than TDesC&) because 
+     * the other constructor cannot initialize such a member without allocation
+     * or having an internal dummy buffer.
+     * Note that this descriptor must be owned by the client at least until the
+     * ExecuteLD().
+     *
+     * Rules for text and numbers: The rules are the same for both:  
+     * (non-zero length) text or number other than 
+     * EAknSettingPageNoOrdinalDisplayed if given in this constructor will not 
+     * override resource (unless that is zero length or 
+     * EAknSettingPageNoOrdinalDisplayed).  Note, however, that text or number 
+     * given via the specific API for setting them, WILL override resource.
+     * It is assumed that number from resource is very rare.  Special text is 
+     * somewhat more likely.
+     * 
+     * @since 2.0
+     * @param aSettingTitleText Text at top of setting pane; OWNED EXTERNALLY
+     * @param aSettingNumber        Number at top left (if present)
+     * @param aControlType          Determines the type constructed 
+     *                              and how its resource is read
+     * @param aEditorResourceId Editor resource to use in the setting page 
+     *                                 (if present)
+     * @param aSettingPageResourceId        Setting Page to use (if present)
+     * @param aTimeOffsetValue              reference to time offset
+     */
+    IMPORT_C CAknTimeOffsetSettingPage( const TDesC* aSettingTitleText, 
+                                TInt aSettingNumber, 
+                                TInt aControlType,
+                                TInt aEditorResourceId, 
+                                TInt aSettingPageResourceId,    
+                                TTimeIntervalSeconds&   aTimeOffsetValue);
+
+    /**
+    * Specific 2nd stage contructor for this type. Construction is performed
+    * according to the resources and parameters set in the C++ constructors
+    *
+    */ 
+    IMPORT_C virtual void ConstructL();
+    /**
+     * Type-specific access to the editor 
+     */
+    IMPORT_C CEikTimeOffsetEditor* TimeOffsetEditor();
+    /**
+    *  From CCoeControl
+    */	
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+
+protected:
+    /**
+    * Destructor
+    */
+    IMPORT_C virtual ~CAknTimeOffsetSettingPage();
+
+    /**
+    * This framework method is called when the editor changes its 
+    * value and the mode of execution of the setting page is a continuous 
+    * update mode.
+    *
+    * @since 2.0
+    */
+    IMPORT_C virtual void UpdateSettingL();
+
+    /**
+    * Called when the user has accepted the value.
+    * The external value is updated once again, in case we were not in
+    * continuous update mode. 
+    * A specific observer event is generated for the observer to say that the
+    * value is accepted.
+    *
+    * @since 2.0
+    */
+    IMPORT_C virtual void AcceptSettingL();
+
+    /**
+    * The backup value, stored at construction time, is re-loaded into the 
+    * referenced Date.
+    * An event is sent to the observer saying that the event was dismissed.
+    *
+    * @since 2.0
+    */
+    IMPORT_C virtual void RestoreOriginalSettingL();
+    
+//
+// CoeControl Framework and reserved methods
+//
+protected:
+
+/**
+ * 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.
+ *
+ * @since 2.0
+ * @param   aWriteSteam     A connected write stream
+ */ 
+    IMPORT_C virtual void WriteInternalStateL(RWriteStream& aWriteStream) const;
+
+private:
+/**
+ *  Reserved method derived from CCoeControl
+ *
+ * @since 2.0
+ */
+    IMPORT_C virtual void Reserved_2();
+
+private:
+    /**
+    * From CAknControl
+    */
+    IMPORT_C void* ExtensionInterface( TUid aInterface );
+
+/**
+ * New reserved methods for CAknSettingPage hierarchy
+ */ 
+private: 
+    IMPORT_C virtual void CAknSettingPage_Reserved_1();
+    IMPORT_C virtual void CAknSettingPage_Reserved_2();
+
+private:
+    TTimeIntervalSeconds& iTimeOffsetValue;
+    TTimeIntervalSeconds iBackupTimeOffsetValue;
+
+};
+/** 
+ *
+ * Setting page class for entering an IP Address
+ *
+ */
+class CAknIpFieldSettingPage : public CAknMfneSettingPage
+{
+public:
+    /**
+     * Constructor using purely Setting page resource
+     *
+     * @param   aResourceId     Setting page resource Id
+     * @param   aIpAddress      Reference to the maintained IP address
+     */
+    IMPORT_C CAknIpFieldSettingPage(
+        TInt                    aResourceID, 
+        TInetAddr&          aIpAddress);
+    /**
+     * Constructor that allows separate setting page and editor resources
+     * 
+     * This constructor allows the use of setting page using only the editor 
+     * resource.  Other combinations are also possible
+     *
+     * In all cases the number (if supplied i.e. <> 0 ) is used.  
+     *
+     *      Editor Resource     Setting Page Resource
+     *          present             present             Both are used (but text
+     *                                                  & number overridden)
+     *           = 0                    present         Editor resource is 
+     *                                                  used via SP resource 
+     *                                                  (Effectively like the 
+     *                                                  other constructor)
+     *          present             = 0                 Default Avkon SP 
+     *                                                  resource if used + this
+     *                                                  editor resource
+     *           = 0                    = 0             uses default resource 
+     *                                                  for both SP and editor. 
+     *                                                  This is OK if:
+     *   i) control type is present, 
+     *  ii) a default resource exists ( OK for text, integer, 
+     *      date, time, duration )
+     *
+     * Note: The first argument is a TDesC* (rather than TDesC&) because the 
+     * other constructor cannot initialize such a member without allocation 
+     * or having an internal dummy buffer.
+     * Note that this descriptor must be owned by the client at least until 
+     * the ExecuteLD().
+     *
+     * Rules for text and numbers: The rules are the same for both: 
+     * (non-zero length) text or number other than 
+     * EAknSettingPageNoOrdinalDisplayed if given in this constructor will not 
+     * override resource (unless that is zero length or 
+     * EAknSettingPageNoOrdinalDisplayed).  Note, however, that text or number 
+     * given via the specific API for setting them, WILL override resource.
+     * It is assumed that number from resource is very rare. Special text is 
+     * somewhat more likely.
+     * 
+     * @param aSettingTitleText Text at top of setting pane; OWNED EXTERNALLY
+     * @param aSettingNumber        Number at top left (if present)
+     * @param aControlType          Determines the type constructed and how its 
+     *                              resource is read
+     * @param aEditorResourceId Editor resource to use in the setting page 
+     *                          (if present)
+     * @param aSettingPageResourceId        Setting Page to use (if present)
+     * @param aIpAddress                reference to a duration
+     */
+    IMPORT_C CAknIpFieldSettingPage(    const TDesC* aSettingTitleText, 
+                                TInt aSettingNumber, 
+                                TInt aControlType,
+                                TInt aEditorResourceId, 
+                                TInt aSettingPageResourceId,    
+                                TInetAddr&  aIpAddress);
+
+    /**
+    * Specific 2nd stage contructor for this type. Construction is performed
+    * according to the resources and parameters set in the C++ constructors
+    *
+    */ 
+    IMPORT_C virtual void ConstructL();
+    /**
+     * Type-specific access to the editor 
+     */
+    IMPORT_C CAknIpFieldEditor* IpFieldEditor();
+
+    /**
+    *  From CCoeControl
+    */	 
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+
+protected:
+    /**
+    * Destructor
+    */
+    IMPORT_C virtual ~CAknIpFieldSettingPage();
+
+    /**
+    * This framework method is called when the editor changes its value and 
+    * the mode of execution of the setting page is a continuous update mode.
+    *
+    */
+    IMPORT_C virtual void UpdateSettingL();
+
+    /**
+    * Called when the user has accepted the value.
+    * The external value is updated once again, in case we were not in
+    * continuous update mode. 
+    * A specific observer  event is generated for the observer to say that the
+    * value is accepted.
+    */
+    IMPORT_C virtual void AcceptSettingL();
+
+    /**
+    * The backup value, stored at construction time, is re-loaded into 
+    * the referenced Date.
+    * An event is sent to the observer saying that the event was dismissed.
+    */
+    IMPORT_C virtual void RestoreOriginalSettingL();
+
+//
+// CoeControl Framework and reserved methods
+//
+protected:
+
+/**
+ * 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.
+ *
+ * @param   aWriteSteam     A connected write stream
+ */ 
+    IMPORT_C virtual void WriteInternalStateL(RWriteStream& aWriteStream) const;
+
+private:
+    
+/**
+ *  Reserved method derived from CCoeControl
+ */
+    IMPORT_C virtual void Reserved_2();
+
+private:
+    /**
+    * From CAknControl
+    */
+    IMPORT_C void* ExtensionInterface( TUid aInterface );
+
+/**
+ * New reserved methods for CAknSettingPage hierarchy
+ */ 
+private: 
+    IMPORT_C virtual void CAknSettingPage_Reserved_1();
+    IMPORT_C virtual void CAknSettingPage_Reserved_2();
+    
+private:
+    TInetAddr& iIpAddress;
+    TInetAddr iBackupIpAddress; // Not a reference
+
+    };
+#endif