classicui_pub/lists_api/inc/AknListBoxSettingPage.h
changeset 0 2f259fa3e83a
child 15 08e69e956a8c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_pub/lists_api/inc/AknListBoxSettingPage.h	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,180 @@
+/*
+* 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: 
+*  Pure virtual class for a common ancestor for setting pages with listboxes
+*
+*/
+
+
+#ifndef __AKNLISTBOXSETTINGPAGE_H__
+#define __AKNLISTBOXSETTINGPAGE_H__ 
+
+#include <aknsettingpage.h>
+
+#include <AknUtils.h>
+#include <eikslb.h>
+#include <eiklbo.h>
+#include <eiklbx.h>
+#include <eikclb.h>
+#include <eikclbd.h>
+#include <eiktxlbm.h>
+#include <coecobs.h>
+#include <aknlists.h>
+
+/**
+*
+* Intermediate setting page class to soak up common listbox setting page code
+* 
+* This class has the responsibility of performing the listbox layout and setting
+* out some  of the API for listbox setting pages.
+*
+*/
+class CAknListBoxSettingPage : public CAknSettingPage, public MEikListBoxObserver
+	{
+
+public: 
+	/**
+	* Type-specific control access method with a null implementation
+	*
+	*/
+	virtual CAknSetStyleListBox* ListBoxControl() const = 0;
+
+	/**
+	* Default empty implementation of the listbox observer handling routine
+	*/
+	IMPORT_C virtual void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType);
+
+protected:
+
+	/**
+	* Pass-through constructor
+	* @param aSettingPageResourceId		resource id for CAknSettingPage::BaseConstructL()
+	*
+	*/
+	CAknListBoxSettingPage( TInt aSettingPageResourceId );
+
+	/**
+	* Pass-through constructor 
+	*
+	* Generic constructor allowing either editor-resource constuction or setting page
+	* resource based constuction
+	* 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.
+	* Note that the setting title provided here must be owned by the client.
+	*
+	* 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	externally-owned title text
+	* @param aSettingNumber		the setting number to be displayed
+	* @param aControlType		control type enumeration for the control to be constructed by type
+	* @param aEditorResourceId	resource Id at which to read the control's resource
+	* @param aSettingPageResourceId optional setting page resource Id; See notes above about resource combinations
+	*/
+	CAknListBoxSettingPage(	const TDesC* aSettingTitleText, 
+								TInt aSettingNumber, 
+								TInt aControlType,
+								TInt aEditorResourceId, 
+								TInt aSettingPageResourceId = 0 );
+
+
+   /**
+	* This standard implementation uses ListBoxControl to access the listbox and 
+	* check the number of items.  If 0, validity is set to EFalse
+	*
+	*/
+	IMPORT_C void CheckAndSetDataValidity();
+
+	/**
+	* Implementation to remove go to "invalid" cba when data is invalid
+	*/
+	IMPORT_C void UpdateCbaL();
+
+
+	/**
+	* From CCoeControl:
+	* Routine called by Cone framework whenever there has been a size change on this 
+	* control
+	*/
+	IMPORT_C void SizeChanged();
+
+	/** 
+	* From CCoeControl:
+	* Common draw routine for the listboxes
+	*
+	* @param aRect	rectangle within which to draw
+	*/
+	IMPORT_C void Draw(const TRect& aRect) const;
+
+    //
+    // New methods in this class
+    //
+    
+    /**
+    * Obtain initial selection policy for popup setting item editing
+    *
+    * @since 2.0
+    * @return TBool EFalse iff focus is not initially to be set to the selected item
+    */
+    static TBool FocusToSelectedItem();
+
+    /**
+    * Obtain initial selection policy for popup setting item editing
+    *
+    * @since 2.0
+    * @return TBool EFalse iff focus is initially to be set to the selected item
+    */
+    static TBool FocusToFirstItem();
+            
+
+    /**
+    * Create colorskinned icon and add it to icon array. Utility for
+    * radiobutton, popup & checkbox setting page lists
+    *
+    * @since 3.1
+    */
+public:
+    static void CreateIconAndAddToArrayL( CArrayPtr<CGulIcon>*& aIconArray,
+                                          const TAknsItemID& aId,
+                                          const TInt aColorIndex,
+                                          const TDesC& aBmpFile,
+                                          const TInt32 aBmp,
+                                          const TInt32 aBmpM );        
+
+private:
+/**
+ */
+	IMPORT_C virtual void CAknListBoxSettingPage_Reserved_1();
+
+protected:
+
+	/**
+	* Layout for the extra piece of white (sometimes) at the bottom of the listbox
+	*
+	*/
+	TAknLayoutRect iAreaExtension;
+	};
+
+#endif