dependencies/Layout_config/AknLayoutConfig.h
branchv5backport
changeset 26 bef183758dfa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/Layout_config/AknLayoutConfig.h	Fri Mar 26 01:54:20 2010 +0530
@@ -0,0 +1,231 @@
+/*
+* Copyright (c) 2005 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:  Interface to product layout configuration data,
+*               which is independent of the source of the configuration data.
+*
+*/
+
+
+#ifndef AKNLAYOUTCONFIG_H
+#define AKNLAYOUTCONFIG_H
+
+#include <w32std.h>
+#include <AknPriv.hrh>
+#include <AknScreenMode.h>
+
+class CResourceFile;
+struct SHardwareStateInfo;
+
+/**
+*  Layout configuration data
+*
+*  @since Series 60 3.0
+*/
+NONSHARABLE_CLASS(CAknLayoutConfig) : public CBase
+	{
+public:
+	// Forward declared structures and T-class wrappers gives
+	// a handle body pattern that should allow maximum extensibility
+	// of the layout configuration data.
+	// Note: never add member data directly to these T-classes.
+	// if new member data is required, add it to the coresponding
+	// structs.
+	
+	/**
+	* Information about a screen mode
+	*/
+	class TScreenMode : public TAknScreenMode
+		{
+	public:
+		/**
+		* Gets the Pixels, Twips and Rotation for this screen mode.
+		* @return The Pixels, Twips and Rotation.
+		*/
+		IMPORT_C const TPixelsTwipsAndRotation& PixelsTwipsAndRotation() const;
+		/**
+		* The location of the softkeys relative to the screen
+		* in this screen mode.
+		* @return the softkey location
+		*/
+		IMPORT_C TAknPrivSoftkeyLocation SoftkeyLocation() const;
+		/**
+		* A number identifying the screen style for this screen mode.
+		* @return a hash of the screen style string
+		*/
+		IMPORT_C TInt ScreenStyleHash() const;
+	public:
+		/**
+		* Constructor.
+		*/
+		TScreenMode(const SAknScreenModeInfo& aInfo);
+		};
+	
+	/**
+	* An array of all available screen modes.
+	*/
+	class TScreenModeArray : public TAknScreenModes
+		{
+	public:
+		/**
+		* Get a screen mode by index
+		* @param aIndex the array index number
+		* @return The screen mode.
+		*/
+		IMPORT_C TScreenMode At(TInt aIndex) const;
+		/**
+		* Get a screen mode by mode number
+		* @param aModeNumber the mode number of the screen mode to find
+		* @return The screen mode with that mode number, 
+		*         or the first screen mode if none is found.
+		*/
+		IMPORT_C TScreenMode Find(TInt aModeNumber) const;
+	public:
+		/**
+		* Constructor.
+		*/
+		TScreenModeArray(const SAknLayoutConfig& aInfo);
+		};
+	
+	/**
+	* Information about a hardware state.
+	*/
+	class THardwareState
+		{
+	public:
+		/**
+		* The state number of the hardware state.
+		* @return The state number.
+		*/
+		IMPORT_C TInt StateNumber() const;
+		/**
+		* The keycode which identifies activation of this hardware state.
+		* @return the keycode value.
+		*/
+		IMPORT_C TInt KeyCode() const;
+		/**
+		* The screen mode number that should be used in this hardware state.
+		* @return The screen mode number.
+		*/
+		IMPORT_C TInt ScreenMode() const;
+		/**
+		* The screen mode number to use for applications that need the
+		* other orientation than provided by @c ScreenMode().
+		* @return The alternate screen mode number.
+		*/
+		IMPORT_C TInt AlternateScreenMode() const;
+	public:
+		/**
+		* Constructor.
+		*/
+		THardwareState(const SHardwareStateInfo& aInfo);
+	private:
+		const SHardwareStateInfo& iInfo;
+		};
+	
+	/**
+	* An array of available hardware states.
+	*/
+	class THardwareStateArray
+		{
+	public:
+		/**
+		* @return The number of hardware states in the array.
+		*/
+		IMPORT_C TInt Count() const;
+		/**
+		* Get a hardware state by index
+		* @param aIndex the array index number
+		* @return The hardware state.
+		*/
+		IMPORT_C THardwareState At(TInt aIndex) const;
+		/**
+		* Get a hardware state by state number
+		* @param aStateNumber the state number of the hardware state to find
+		* @return The hardware state with that state number, 
+		*         or the first hardware state if none is found.
+		*/
+		IMPORT_C THardwareState Find(TInt aStateNumber) const;
+	public:
+		/**
+		* Constructor.
+		*/
+		THardwareStateArray(const SAknLayoutConfig& aInfo);
+	private:
+		const SAknLayoutConfig& iInfo;
+		};
+		
+public:
+	/**
+	* Factory Function
+	*
+	* This factory function should only be used in non-UI processes.
+	* In a process, such as an app, where the Avkon environment exists, an instance of
+	* CAknLayoutConfig can be obtained from CAknSgcClient::LayoutConfig().
+	*
+	* @return a new instance of CAknLayoutConfig.
+	*/
+	IMPORT_C static CAknLayoutConfig* NewL();
+	
+public:
+	/**
+	* @return An array of the available hardware states.
+	*/
+	IMPORT_C THardwareStateArray HardwareStates() const;
+	/**
+	* @return An array of the available screen modes.
+	*/
+	IMPORT_C TScreenModeArray ScreenModes() const;
+
+public:
+	// Non-exported framework only API
+	/**
+	* Constructor.
+	*/
+	CAknLayoutConfig();
+	/**
+	* Destructor.
+	*/
+	~CAknLayoutConfig();
+	/**
+	* Second stage constructor.
+	* @param aBuf a descriptor of containing packed layout configuration data.
+	*		 Ownership of aBuf is transferred immediately when called, so caller
+	*        should release ownership of aBuf before calling.
+	*/
+	void ConstructL(HBufC8* aBuf);	// takes ownership of aBuf immediately
+	/**
+	* Create a descriptor containing packed layout configuration data.
+	* @return a descriptor containing packed layout configuration data.
+	*/
+	HBufC8* CreatePackedBufL();
+	
+private:
+	void GetConfigL(SAknLayoutConfig& aConfig, 
+					RArray<SAknScreenModeInfo>& aScreenInfoArray, 
+					RArray<SHardwareStateInfo>& aHardwareStateArray);
+	void GetScreenMapFromAknPrivL(CResourceFile* aResFile,
+								  RArray<SAknScreenModeInfo>& aScreenInfoArray, 
+								  RArray<SHardwareStateInfo>& aHardwareStateArray);
+	void GetKeyMapFromAknPrivL(CResourceFile* aResFile,
+							   RArray<SHardwareStateInfo>& aHardwareStateArray);
+	TAknPrivSoftkeyLocation GetLandscapeSoftkeyLocationFromAknPrivL(CResourceFile* aResFile);
+	void GetScreenModesFromWservL(SAknLayoutConfig& aConfig,
+								  RArray<SAknScreenModeInfo>& aScreenInfoArray, 
+								  TAknPrivSoftkeyLocation aLandscapeSoftkeyLocation);
+private:
+	HBufC8* iBuf;				// owned
+	SAknLayoutConfig* iData;	// not owned
+	};
+
+#endif