diff -r 000000000000 -r 2f259fa3e83a classicui_plat/layout_configuration_api/inc/AknLayoutConfig.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/classicui_plat/layout_configuration_api/inc/AknLayoutConfig.h Tue Feb 02 01:00:49 2010 +0200 @@ -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 +#include +#include + +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& aScreenInfoArray, + RArray& aHardwareStateArray); + void GetScreenMapFromAknPrivL(CResourceFile* aResFile, + RArray& aScreenInfoArray, + RArray& aHardwareStateArray); + void GetKeyMapFromAknPrivL(CResourceFile* aResFile, + RArray& aHardwareStateArray); + TAknPrivSoftkeyLocation GetLandscapeSoftkeyLocationFromAknPrivL(CResourceFile* aResFile); + void GetScreenModesFromWservL(SAknLayoutConfig& aConfig, + RArray& aScreenInfoArray, + TAknPrivSoftkeyLocation aLandscapeSoftkeyLocation); +private: + HBufC8* iBuf; // owned + SAknLayoutConfig* iData; // not owned + }; + +#endif