--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_pub/setting_pages_api/inc/AknSettingPage.h Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,829 @@
+/*
+* Copyright (c) 2002-2009 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:
+* Base class for setting page (setting item editing) UI
+*
+*/
+
+
+#ifndef __AKNSETTINGPAGE_H__
+#define __AKNSETTINGPAGE_H__
+
+#include <AknControl.h>
+
+#include <eikdef.h>
+#include <eikbtgpc.h>
+
+// For menu support
+#include <eikmenub.h>
+#include <eikmenup.h>
+#include <eikmobs.h>
+
+// for layout support
+#include <AknUtils.h>
+
+// for navipane support (hint text)
+#include <aknnavi.h>
+
+//
+// Forward declarations
+//
+class CEikLabel;
+class CAknSettingPageSkinsInfo;
+class MAknsControlContext;
+class CAknsFrameBackgroundControlContext;
+class CAknSettingPageExtension;
+
+
+// Used as the return value of SettingId() if not yet set.
+// This because the Id might want to be the index of a 0-based array
+
+const TInt KAknSettingPageNoIdSet = -1;
+
+class CAknSettingPage;
+
+// This class is used as a means of notifying change in settings.
+
+class MAknSettingPageObserver
+{
+public:
+enum TAknSettingPageEvent
+ {
+ EEventSettingChanged,
+ EEventSettingCancelled,
+ EEventSettingOked
+ };
+public:
+
+/**
+ * Handles an event of type aEventType reported by the Setting Page to this observer.
+ */
+virtual void HandleSettingPageEventL(CAknSettingPage* aSettingPage,TAknSettingPageEvent aEventType )=0;
+
+};
+
+class CAknSettingPage : public CAknControl, public MCoeControlObserver, public MEikMenuObserver
+{
+public:
+
+/**
+* This enumeration is passed in the ExecuteLD() method to control how often the setting page
+* updates the externally held client object
+*/
+ enum TAknSettingPageUpdateMode
+ {
+ EUpdateWhenChanged,
+ EUpdateWhenAccepted
+ };
+
+/**
+* This enumeration is used to select the type and IIDs for the various classes defined in the
+* Skins LAF spec for "Opened Setting Items"
+*/
+ enum TEditedItemSkinClass
+ {
+ ESettingPageSkinEditedItemClassValueItemList,
+ ESettingPageSkinEditedItemClassVolume,
+ ESettingPageSkinEditedItemClassSlider,
+ ESettingPageSkinEditedItemClassTextEntry,
+ ESettingPageSkinEditedItemClassCodeDateTimeEntry
+ };
+/**
+ * Simple contructor for using a single setting page resource which itself gives all
+ * the setup
+ */
+ IMPORT_C CAknSettingPage( TInt aSettingPageResourceId );
+ /**
+ * Constructor that allows separate setting page and editor resources
+ *
+ * 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
+ * present = 0 Default Avkon SP resource if used
+ * = 0 = 0 Not permitted
+ *
+ * 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.
+ *
+ * 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 (not copied; must be owned externally until ExecuteLD is called)
+ * @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)
+ */
+ IMPORT_C CAknSettingPage( const TDesC* aSettingTitleText,
+ TInt aSettingNumber,
+ TInt aControlType,
+ TInt aEditorResourceId,
+ TInt aSettingPageResourceId = 0 );
+/**
+* C++ destructor
+*/
+ IMPORT_C virtual ~CAknSettingPage();
+
+/**
+ * Executes a waiting dialog-like setting page
+ *
+ * The passed mode determines if the editor's value is updated continuously, or just
+ * when it is accepted.
+ *
+ * @param aMode The update mode of the class
+ */
+ IMPORT_C TBool ExecuteLD( enum CAknSettingPage::TAknSettingPageUpdateMode aMode=EUpdateWhenAccepted );
+
+/**
+ * public method for construction. Only thing required to do in this class is to call the
+ * BaseConstructL(). Derived classes may be required to do more
+ *
+ */
+ IMPORT_C virtual void ConstructL();
+
+/**
+ * Returns reference to the hosted "editor" control as a CCoeControl.
+ * This routine is used in derived classes, which may then cast to the specific run-time type
+ * Note also that derived classes may provide type-specific access that performs these casts already
+ *
+ * @return CCoeControl* pointer to the hosted editor control
+ */
+ IMPORT_C CCoeControl* EditorControl() const;
+
+/**
+ * Returns the setting Id.
+ *
+ * @return TInt the setting Id
+ */
+ IMPORT_C TInt SettingId() const;
+
+/**
+ * Sets the setting Id. The Id may be used to unabiguously number a setting in some context.
+ * It would be useful to call SettingId() on aSettingPageControl in handling an observer
+ * callback. The Id is not used internally.
+ *
+ * @param aSettingId An id to provide to the observer in the callback
+ */
+ IMPORT_C void SetSettingId( TInt aSettingId );
+/**
+* Substitutes the new setting number.
+*
+* @param aSettingNumber The new setting number to display
+*/
+ IMPORT_C void SetSettingNumberL( const TInt aSettingNumber );
+
+/**
+ * Substitutes the new setting text. Memory is allocated for a copy.
+ * If already constructed, the label is reformatted.
+ *
+ * Note that calling this will over-ride text in Setting Page resource
+ *
+ * @param aSettingText The new setting text to display
+ */
+ IMPORT_C void SetSettingTextL( const TDesC& aSettingText );
+
+/**
+ * Sets the observer for the setting page.
+ *
+ * @param aObserver The observer for changes to the setting
+ */
+ IMPORT_C void SetSettingPageObserver( MAknSettingPageObserver* aObserver);
+
+/**
+ * Access method for the number of the setting page
+ *
+ */
+ IMPORT_C TInt SettingNumber() const;
+
+/**
+ * Access method for whether the setting page is numbered or not
+ *
+ */
+ IMPORT_C TBool IsNumbered() const;
+
+/**
+ * Set method for whether the setting page is numbered or not
+ *
+ */
+ IMPORT_C void SetNumbered( TBool aNumbered );
+
+/**
+ * Reads the passed-in setting page resource in order to read the contained editor control
+ * resource information
+ * @param aSettingPageResoruceId This is used to specifiy what resource to read
+ * @param aControlType Returns the control type (MAY return 0 - that's a valid control type!
+ * @param aEditorResourceId Returns the setting page's LLINK editor resource, but returns 0 if not present
+ *
+ * This will leave if an invalid resource ID is passed
+ */
+ IMPORT_C static void GetEditorResourceInfoL(
+ TInt aSettingPageResourceId,
+ TInt& aControlType,
+ TInt& aEditorResourceId );
+
+
+ /**
+ * Set the edit-state of the setting page. The setting page can be edited or
+ * it can be only viewed by the user.
+ *
+ * @since 3.1
+ * @param aEditable If false, the setting page cannot be modified by the user
+ */
+ IMPORT_C void SetEditState(const TBool aEditable);
+
+ /**
+ * Is the setting page possible to edit by the user.
+ *
+ * @since 3.1
+ * @return Can user modify the setting page. True if can, false if cannot.
+ */
+ IMPORT_C TBool IsEditable() const;
+
+ /**
+ * Used for aknsettingpage's extenstion corresponding function
+ *
+ * @since 5.0
+ * @param aCaption On return, this should be set to the caption of the target control.
+ */
+ void GetCaptionForFep(TDes& aCaption) const;
+
+ /**
+ * Calculates and returns setting item content rect.
+ *
+ * @param aScrollBarUsed @c ETrue if the setting page content should have
+ * scrollbar, @c EFalse otherwise.
+ *
+ * @internal
+ * @since 5.2
+ * @return Setting item content rectangle.
+ */
+ TRect SettingItemContentRect( TBool aScrollBarUsed );
+
+ /**
+ * Is the setting page drawing the background itself or not (= "transparency")
+ */
+ TBool IsBackgroundDrawingEnabled() const;
+
+/**
+* Access method to the Command button array
+*
+* Must be called after full construction, or null reference will be returned.
+*
+* @return CEikButtonGroupContainer* a pointer to the cba owned by the setting page
+*/
+ IMPORT_C CEikButtonGroupContainer* Cba() const ;
+
+protected:
+
+/**
+* From CCoeControl
+* This routine is called as part of the set-up of the control. It is the place to put
+* layout code.
+*
+*/
+ IMPORT_C virtual void SizeChanged();
+
+
+/**
+* From CCoeControl
+* Takes any action required when the control gains or loses focus e.g. to change its appearance.
+* The control should be redrawn depending on the value of aDrawNow. Empty by default.
+*/
+ IMPORT_C virtual void FocusChanged(TDrawNow aDrawNow);
+
+/**
+ * From MEikCommandObserver
+ * Processes events from the softkeys. Responds to EAknSoftkeyOk and EAknSoftkeyBack
+ * to accept or cancel the pop-up.
+ *
+ * @param aCommandId Event Id from the soft-key
+ */
+ IMPORT_C virtual void ProcessCommandL(TInt aCommandId);
+
+/**
+ * From MCoeControlObserver:
+ * Acts upon changes in the hosted control's state.
+ *
+ * This class's implementation is trivial and should be able to be
+ * safely re-implemented in directly client-derived classes.
+ * For non-base setting page classes, a call to the base class should be made
+ *
+ * @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);
+
+//
+//
+// Framework functions. New in this class
+//
+//
+ /**
+ * Framework method to determine if it is OK to exit the setting page.
+ * Derived classes may check for valid data before allowing the dismissal of the
+ * setting page.
+ *
+ * @param aAccept ETrue if the user has indicated to accept the setting page; EFalse otherwise
+ * @return TBool a value indicating whether the setting page should be dismissed
+ */
+ IMPORT_C virtual TBool OkToExitL(TBool aAccept);
+
+/**
+* Called immediately prior to activation of the dialog. Framework routine for derived
+* classes.
+*
+*/
+ IMPORT_C virtual void DynamicInitL();
+
+/**
+ * Called when something has changed and the client's object needs to have its value updated
+ *
+ */
+ IMPORT_C virtual void UpdateSettingL();
+
+/**
+ * Called when the user accepts a setting and the setting page is about to be dismissed. The latest value of the
+ * setting is written to the client's object
+ */
+ IMPORT_C virtual void AcceptSettingL();
+
+/**
+ * Called when the user rejects the setting. A backup copy may need to be restored if UpdateWhenChanged flag was set
+ *
+ */
+ IMPORT_C virtual void RestoreOriginalSettingL();
+
+/**
+ * Display the menu
+ */
+ IMPORT_C virtual void DisplayMenuL() ;
+
+/**
+ * Hide the menu
+ */
+ IMPORT_C virtual void HideMenu() ;
+
+/**
+ * Puts the focus back on the editor. For complicated setting pages that have focus removed from them
+ * at some point, then a re-implementation may have to do some work here.
+ */
+ IMPORT_C virtual void SetFocusToEditor();
+
+/**
+ * This method should be implemented in listbox classes to move the selection in
+ * listbox editors prior to exiting from the setting page. It is called on a
+ * CAknSettingPage* reference, and is therefore declared here.
+ */
+ IMPORT_C virtual void SelectCurrentItemL();
+
+/**
+ * Protected non-virtual base method for construction. Only thing required to do in this class is
+ * call the ConstructFromResourceL routine and set the flag that says construction has occured
+ *
+ */
+ IMPORT_C void BaseConstructL();
+
+/**
+ * Called to remove the setting page. Should not be called except from within re-implemented
+ * AttemptExitL
+ *
+ * @param aAccept ETrue to accept the current value; EFalse otherwise
+ */
+ IMPORT_C void DismissL( TBool aAccept );
+
+/**
+ * This is used as a protected access function for the state of the menu bar
+ *
+ * @return TBool ETrue if the menu is currently showing
+ */
+ IMPORT_C TBool MenuShowing() const ;
+
+/**
+* This constructs the control based upon the id passed
+*
+*/
+ IMPORT_C void ConstructFromResourceL( TInt aResourceId);
+
+/**
+* This constructs the control based upon a constructed and positioned reader
+*
+*/
+ IMPORT_C void ConstructFromResourceL(TResourceReader& aRes);
+
+ /**
+ * Called when the user accepts or cancels the setting. Default implementation
+ * sets the return value and exists.
+ *
+ * Re-implementations must call DismissL and StopActiveScheduler() if the setting is
+ * to leave.
+ *
+ * @param aAccept ETrue if the user accepted. EFalse if the user cancelled.
+ */
+ IMPORT_C void AttemptExitL(TBool aAccept);
+/**
+* Method to determine the current running state of the setting page's
+* ActiveScheduler level.
+*
+* @return EFalse only if the CActiveSheduler level is not running
+*/
+ IMPORT_C TBool Waiting();
+
+/**
+ * This is used to access the default resource id for the cba - the one used when
+ * data is valid.
+ *
+ * @return TInt the default resource Id
+ */
+ IMPORT_C TInt DefaultCbaResourceId() const;
+
+/**
+* This routine routes the keys to the editor.
+* However, if the menu is showing, then events are sent to the menu.
+*
+* @param aKeyEvent event information
+* @param aType type of event being handled
+*
+*/
+ IMPORT_C TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType);
+
+/**
+* This routine is the base layout for CAknSettingPage. It lays out the labels and configures
+* the drawing in general.
+*/
+ IMPORT_C void StandardSettingPageLayout();
+
+/**
+ * This method can be used to test if BaseConstructL() has been called yet
+ * successfully
+ *
+ * @return TBool ETrue if BaseContructL has been called (and not left)
+ */
+ IMPORT_C TBool IsBaseConstructed();
+
+/**
+ * Access method for the internally held resource Id
+ *
+ */
+ IMPORT_C TInt SettingPageResourceId();
+/**
+* Perform the drawing of coded within CAknSettingPage
+*
+*/
+ IMPORT_C void BaseDraw(const TRect& aRect) const;
+
+/**
+* Set default construction values of internal state
+*/
+ IMPORT_C void ResetFlags();
+
+/**
+ * Framework method called as soon as the setting page is displayed, but before the new active sheduler level
+ * is started. Returning EFalse will dismiss the setting page right away
+ *
+ * @return TBool ETrue if the setting page is to continue
+ */
+ IMPORT_C virtual TBool PostDisplayCheckL();
+
+/**
+ * This framework method is used to update the contents of the CBA in a custom way.
+ * Some setting page classes implement a degree of validation and will implement this.
+ * Derived classes should ensure that this is being called frequently enough for their
+ * purposes.
+ */
+ IMPORT_C virtual void UpdateCbaL();
+
+/**
+ * Called to access the validity state of the data
+ *
+ * @return TBool ETRrue if the data is valid
+ */
+ IMPORT_C TBool DataValidity() const;
+
+/**
+ * used to set the validity of the data
+ *
+ * @param TBool aValid Sets the validity true or false
+ */
+ IMPORT_C void SetDataValidity(TBool aValid);
+
+/**
+ * Framework method to set the validity of the data
+ * This is called when the data changes.
+ *
+ */
+ IMPORT_C virtual void CheckAndSetDataValidity();
+
+ /**
+ * Sets the outer and inner rectangle for the frame graphics that is drawn
+ * around the setting item.
+ *
+ * @param aOuterRect Frame outer rectangle.
+ * @param aInnerRect Frame inner rectangle.
+ *
+ * @since 5.2
+ */
+ void SetEditedItemFrameRects( const TRect& aOuterRect,
+ const TRect& aInnerRect );
+
+ /**
+ * Sets the skin item ID for the frame graphics that is drawn
+ * around the setting item.
+ *
+ * @param aFrameIID Skin item ID of the frame graphics.
+ * @param aFrameCenterIID Skin item ID of the center piece of the frame
+ * graphics
+ *
+ * @since 5.2
+ */
+ void SetEditedItemFrameIID( const TAknsItemID& aFrameIID,
+ const TAknsItemID& aFrameCenterIID );
+
+ /**
+ * Sets the rectangle for the editing state indicators.
+ * Should only be called by setting pages that have an editor which
+ * displays the editor indicators as the editor control.
+ *
+ * @param aRect Editor indicator rectangle.
+ *
+ * @since 5.2
+ */
+ void SetEditorIndicatorRect( const TRect& aRect );
+
+ /**
+ * Indicates whether skin system will be able to draw the editor frame and background
+ *
+ * @return TBool ETrue iff the drawing of the edited item frame is going to be handled by
+ * the base CAknSettingPage class itself using Skins
+ * @since 2.0
+ */
+ TBool IsSkinsHandlingEditorFrameDrawing() const;
+
+ /**
+ * Control context for providing to the skinning for the hosted editor and its framing
+ *
+ * @return A valid control context for frame drawing for a hosted editor or NULL
+ * @since 2.0
+ */
+ CAknsFrameBackgroundControlContext* EditedItemControlContext() const;
+
+ /**
+ * Performs base construction and takes possible flags into account.
+ *
+ * @param aFlags Construction flags
+ *
+ * @since 5.2
+ */
+ void BaseConstructL( TUint aFlags );
+
+ /**
+ * Stop current (additional) level on the active scheduler.
+ */
+ void StopActiveScheduler();
+
+protected:
+ /**
+ * From MEikMenuObserver
+ * Called when menu is cancelled.
+ */
+ IMPORT_C virtual void SetEmphasis(CCoeControl* /*aMenuControl*/,TBool aEmphasis);
+
+ /**
+ * From MEikMenuObserver
+ * This function intializes the items on the menu. It is used to disable and enable menu items and may be
+ * over ridden to add new ones.
+ * In addition it adds menu items which have been provided in the ConstructL in the form of a Menu Bar resource.
+ * Instead of using the Menu Bar directly it extracts the menu panes and adds them to its own menu pane.
+ * It must be called in the DynInitMenuPaneL() function of any derived class before anything else.
+ */
+ IMPORT_C virtual void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+public: // From CCoeControl
+ /**
+ * Handles a change to the control's resources of type aType
+ * which are shared across the environment, e.g. colors or fonts.
+ *
+ * @since 2.0
+ * @param aType Reason for the "resource" change, usually an system event UID
+ */
+ IMPORT_C void HandleResourceChange(TInt aType);
+/**
+ * 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;
+
+ /**
+ * Handles pointer events
+ */
+ IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+ /**
+ * From CCoeControl.
+ * Gets the control's input capabilities.
+ *
+ * @return The control's input capabilities.
+ */
+ IMPORT_C TCoeInputCapabilities InputCapabilities() const;
+
+private:
+ IMPORT_C virtual void Reserved_MtsmPosition();
+ IMPORT_C virtual void Reserved_MtsmObject();
+
+protected:
+/**
+* Access method for the softkey resource used when there is invalid data
+*
+* @return TInt The resource Id of the softkey bindings.
+*/
+ IMPORT_C TInt InvalidDataCbaResourceId() const;
+
+protected: // from MObjectProvider
+ IMPORT_C TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
+
+protected:
+ /**
+ * Hold the update mode passed in the constructor
+ */
+ TInt iUpdateMode;
+
+ // The following are not owned:
+
+ /**
+ * Pointer to setting page observer; may be NULL
+ */
+ MAknSettingPageObserver* iSettingPageObserver;
+
+private:
+ //From CCoeControl
+ IMPORT_C void Draw(const TRect& aRect) const;
+
+private:
+ /**
+ * From CAknControl
+ */
+ IMPORT_C void* ExtensionInterface( TUid aInterface );
+
+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();
+
+ /**
+ * Activate another level on the active scheduler
+ */
+ void StartActiveScheduler();
+
+/**
+* Pop the navidecorator. The iNaviPane is used as a flag to show if popping is required to
+* be done or not. It is zeroed by this method.
+*
+*/
+ void PopNaviDecoratorIfRequired();
+
+private:
+
+/**
+* New reserved methods for CAknSettingPage hierarchy
+*/
+private:
+ IMPORT_C virtual void CAknSettingPage_Reserved_1();
+ IMPORT_C virtual void CAknSettingPage_Reserved_2();
+
+protected:
+ /**
+ * Enables / disables transparency effect, i.e. does the setting page draw its own background or not.
+ * @param aDrawBackground EFalse enables transparency
+ */
+ void SetDrawBackground(const TBool aDrawBackground);
+
+ /**
+ * Set the flag to indicate that if the function CAknSettingPage::StopActiveScheduler called or not
+ *@param aStopCalled ETrue means the StopActiveScheduler is called.
+ */
+ void SetStopActiveSchedulerFlag(const TBool aStopCalled );
+
+ /**
+ * Is the setting page call the StopActiveScheduler or not
+ */
+ TBool IsStopActiveSchudlerCalled()const;
+
+ /**
+ * Pointer to setting text label
+ * @return pointer to the label
+ *
+ * @since 5.0
+ */
+ IMPORT_C CEikLabel* TextLabel() const;
+
+ /**
+ * Pointer to shadow text label
+ * @return pointer to the label
+ *
+ * @since 5.0
+ */
+ IMPORT_C CEikLabel* ShadowText() const;
+
+private:
+/**
+* This member points to the setting title text that is passed as part of its more complicated constructor.
+* The descriptor pointed to is not owned, and therefor must be preserved in the client, at least until the
+* 2nd stage construction is performed (inside ExecuteLD).
+*
+* Since, however, setting pages are all waiting, the descriptor can usually be on the stack in the client.
+*
+*/
+ const TDesC* iSettingTextFromConstructor;
+ TInt iResourceId;
+
+ TInt iSettingNumber;
+ TInt iSettingId;
+ TInt iMenuBarId;
+ TInt iControlType;
+ TInt iEditorResourceId;
+ TInt iExtensionId;
+ TInt iCbaResourceId;
+
+ TAknLayoutRect iShadow;
+ TAknLayoutRect iHighlight;
+
+// pointer to the return value from the setting page.
+// Needed when presented in waiting mode.
+ TBool* iReturn;
+
+// Internal flags
+ TBitFlags iFlags ;
+
+ enum TFlagIndices
+ {
+ EMenuShowingIndex = 0,
+ ENumberedStyleIndex,
+ EIsBaseConstructedIndex,
+ EHasValidDataIndex
+ };
+
+// Heap objects pointed to here are owned:
+ CCoeControl* iEditorControl;
+ CEikLabel* iNumberLabel;
+ CEikLabel* iTextLabel;
+ CEikButtonGroupContainer* iCba;
+ CEikMenuBar* iMenuBar ;
+ HBufC* iHintText;
+ HBufC* iSettingText;
+ CAknNavigationDecorator* iNaviDecorator;
+
+ // The following are not owned:
+ // For hint text support
+ CAknNavigationControlContainer* iNaviPane;
+
+ // Softkey resource when the data is invalid
+ TInt iInvalidDataCbaResourceId;
+
+ // The following object is used to contain all skinning information required
+ CAknSettingPageSkinsInfo* iSkinsInfo;
+
+ CActiveSchedulerWait iWait; // owned, safe to use as direct member data.
+
+ // is setting page editable
+ TInt iIsProtected;
+
+ // extension to setting page
+ CAknSettingPageExtension* iExtension;
+};
+
+#endif