epoc32/include/uiklaf/private/lafenv.h
branchSymbian2
changeset 2 2fe1408b6811
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/uiklaf/private/lafenv.h	Tue Mar 16 16:12:26 2010 +0000
@@ -0,0 +1,376 @@
+// Copyright (c) 1997-2009 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:
+//
+
+#ifndef __LAFENV_H__
+#define __LAFENV_H__
+
+#include <e32std.h>
+#include <e32base.h>
+#include <gulbordr.h>
+#include <gulalign.h>
+#include <lafmain.h>
+#include <apgcli.h>
+#include <eikinfomsgwin.h>
+#include <eikbusymsgwin.h>
+#include <eikmsg.h>
+
+class MParser;
+class CCoeEnv;
+class CFont;
+class TLogicalFont;
+class CLafSystemFont;
+
+class LafEnv
+/** Application environment level LAF functions.
+
+@publishedPartner 
+@released */
+	{
+public:
+	/** Creates an EText parser.
+	
+	@param aIndex Index of parser to retrieve. A LAF can supply multiple parsers, 
+	indexed from 0.
+	@return EText parser */
+	IMPORT_C static MParser* CreateTextParserL(TInt aIndex);
+	/** Draws a logical border.
+	
+	@param aBorder Border specification to draw
+	@param aGc Graphics context to which to draw
+	@param aRect Drawing rectangle
+	@param aBorderColors Colours with which to draw */
+	IMPORT_C static void DrawLogicalBorder(const TGulBorder& aBorder,CGraphicsContext& aGc,const TRect& aRect,const TGulBorder::TColors& aBorderColors);
+	/** Gets the margins of a specified logical border.
+	
+	@param aBorder Border specification
+	@return Border's margins */
+	IMPORT_C static TMargins LogicalBorderMargins(const TGulBorder& aBorder);
+	/** Populates an array with a set of system bitmaps.
+	
+	CEikonEnv calls this to get system bitmaps, and uses the array in subsequent 
+	calls to MatchBitmap().
+	
+	@param aEnv Application's control environment
+	@param aBitmaps On return, array of system bitmaps */
+	IMPORT_C static void CreateSystemBitmapsL(CCoeEnv& aEnv, CArrayPtrFlat<CFbsBitmap>& aBitmaps);
+	/** Populates an array with a set of system fonts.
+	
+	CEikonEnv calls this to get system fonts, and uses the array in subsequent 
+	calls to MatchFont().
+	
+	A minimum of one font must be created. 
+	
+	@param aEnv Application's control environment
+	@param aFonts On return, array of system fonts */
+	IMPORT_C static void CreateSystemFontsL(CCoeEnv& aEnv,CArrayPtr<CLafSystemFont>& aFonts);
+	/** Gets the nearest match in the specified fonts for a specified logical system 
+	font.
+	
+	The return value must be non-NULL.
+	
+	@param aFonts Fonts from which to select the match
+	@param aLogicalFont The logical font to match
+	@return Font that is the best match to aLogicalFont */
+	IMPORT_C static const CFont* MatchFont(CArrayPtr<CLafSystemFont>& aFonts,const TLogicalFont& aLogicalFont);
+	/** Gets the nearest match in the specified bitmaps for a specified system bitmap 
+	type.
+	
+	The desired bitmap is specified by the identifer aBmpUid: for possible UIDs, 
+	see KLafUidEikonTexturedVal etc.
+	
+	The return value must be non-NULL.
+	
+	@param aSystemBmps Bitmaps from which to select the match
+	@param aBmpUid The bitmap type to match
+	@return Bitmap that is the best match to aBmpUid */
+	IMPORT_C static CFbsBitmap* MatchBitmap(const CArrayPtrFlat<CFbsBitmap>& aSystemBmps, TUid aBmpUid);
+	/** Gets the corner of the screen which the busy message should appear in by default 
+	on the device. 
+	
+	@return Default corner
+	@see CEikonEnv::BusyMsgL() */
+	IMPORT_C static TGulAlignment DefaultBusyMsgCorner();
+	/** Tests if the specified key corresponds to the hardware default key.
+	
+	@param aCharCode Key to test
+	@return True if the key is the default */
+	IMPORT_C static TBool IsDefaultKey(TUint aCharCode);
+	/** Gets the default line spacing used to format text paragraphs.
+	
+	@return Default line spacing in twips */
+	IMPORT_C static TInt DefaultLineSpacingInTwips();
+	/** Gets the height of single-line edit control for the system normal font.
+	
+	@param aLafEnv Environment access
+	@return Height of single-line edit control */
+	IMPORT_C static TInt EditableControlStandardHeight(const MLafEnv& aLafEnv);
+	/** Sets any device-specific font attributes to be applied to the system character 
+	formatting layer.
+	
+	Applications can access the format layer through CEikonEnv::SystemCharFormatLayerL(). 
+	This format layer is also used in Edwins.
+	
+	@param aCharFormat On return, the character formatting to apply
+	@param aCharFormatMask On return, the character formatting mask to apply */
+	IMPORT_C static void PrepareCharFormatAndMask(TCharFormat& aCharFormat,TCharFormatMask& aCharFormatMask);
+	/** Specifies (and creates if necessary) a default directory for documents.
+	
+	The function is called on application startup. The parameters provided are 
+	to allow an implementation to generate a document directory based on the application 
+	being launched.
+	
+	@param aFilePath On return, the default / generated directory path
+	@param aAppUid UID of application being launched
+	@param aLs Application's session with the Application Architecture server
+	@param aEnv Thread's control environment */
+	IMPORT_C static void GetDefaultPath(TDes& aFilePath,TUid aAppUid,RApaLsSession& aLs,CCoeEnv& aEnv);
+	/** Loads the system resource file.
+	
+	The system resource file defines resources required by the system environment, 
+	and which can also be used by applications. The function is called by CCoeEnv's 
+	construction function.
+	
+	@param aEnv Thread's control environment
+	@return System wide error code */
+	IMPORT_C static TInt LoadCoreResFileL(CCoeEnv& aEnv);
+	/** Loads the private resource file.
+	
+	The private resource file defines resources required by the system environment, 
+	but not intended for application use. The function is called by CCoeEnv's 
+	construction function.
+	
+	@param aEnv Thread's control environment
+	@return System wide error code */
+	IMPORT_C static TInt LoadPrivResFileL(CCoeEnv& aEnv);
+	/** Gets the name of the resource file that contains resources for the EIKCOCTL 
+	component.
+	
+	@return Resource file for the EIKCOCTL component */
+	IMPORT_C static const TDesC& CoctlResourceFile();
+	/** Allows the LAF to update the list of system bitmaps, in response to a colour 
+	settings change.
+	
+	@param aEnv Thread's control environment
+	@param aBitmaps On return, updated array of system bitmaps
+	@param aColorList New colour settings */
+	IMPORT_C static void UpdateSystemBitmapsL(CCoeEnv& aEnv, CArrayPtrFlat<CFbsBitmap>& aBitmaps, const CColorList& aColorList);
+	
+	/**	Performs the releasing of the fonts but doesn't delete the array itself
+	
+	@param aSystemFontArray array of fonts to release
+	*/
+	IMPORT_C static void ReleaseSystemFonts( CArrayPtr<CLafSystemFont>& aSystemFontArray);
+	
+	/** Creates busy message window.
+	
+	@param aEnv Thread's control environment
+	@return Busy message window */
+	IMPORT_C static MEikBusyMsgWin* NewBusyMsgWinL(CCoeEnv& aEnv);
+	/** Creates info message window.
+	
+	@param aEnv Thread's control environment
+	@return Info message window */
+	IMPORT_C static MEikInfoMsgWin* NewInfoMsgWinL(CCoeEnv& aEnv);
+		
+	/** Creates info message window, overridden function to allow another RWindowGroup to be
+	used rather the the the CCoeEnv's RootWin() function.
+		
+	@param aEnv Thread's control environment
+	@param aWinGroup window group for displaying the Info Msg
+	@return Info message window */
+    	IMPORT_C static MEikInfoMsgWin* NewInfoMsgWinL(CCoeEnv& aEnv, RWindowGroup& aWinGroup);
+	/** Asks if display of the task list is disabled during initialization
+
+	@return ETrue if task list is disabled, otherwise EFalse */
+	IMPORT_C static TBool IsTaskListDisabledAtInitialization();
+	/** Displays a one or two line alert as a notifier window customisable by the system GUI.
+
+	@param aMsg1 Line one of the message to be displayed.
+	@param aMsg2 Line two of the message to be displayed */
+	IMPORT_C static void DisplayAlertAsNotifier(const TDesC& aMsg1, const TDesC& aMsg2);
+	
+	/** Updates an existing color list
+	
+	@param aColorList The color list to be updated. */
+	IMPORT_C static void UpdateColorListL(CColorList* aColorList);
+	
+	/** Plays an audible alert, if supported by the system GUI. */
+	IMPORT_C static void Beep();
+	
+	/** Updates an existing array of system fonts.
+	
+	@param aEnv Thread's control environment
+	@param aSystemFontArray The array of fonts to be updated */
+	IMPORT_C static void UpdateSystemFontsL(CCoeEnv* aEnv, CArrayPtr<CLafSystemFont>& aSystemFontArray);
+
+	/** A list of events that are handled by the HandleExtensionEventL() function.*/
+	enum TLafEnvExtensionEvent 
+        {
+        /** Event sent in CEikonEnv::ConstructL right before CCoeEnv::ConstructL() */
+        ELafEnvPreCoeEnvConstructL,
+        /** Event sent in CEikonEnv::ConstructL right after CCoeEnv::ConstructL() */
+        ELafEnvPostCoeEnvConstructL
+        };
+	
+	/** Handles events listed by TLafEnvExtensionEvent
+	@param aEnv The instance of CEikonEnv from which this function has been called
+	@param aEvent The event
+	*/
+	IMPORT_C static void HandleExtensionEventL(CEikonEnv& aEnv, TLafEnvExtensionEvent aEvent);
+	
+    /** Allows debug keys to display output.
+    @param aResourceId The resource to use for the note
+    */
+    IMPORT_C static void InfoNote(TInt aResourceId,...);
+
+	/** Creates a default system colour list. 
+	@param aEnv The instance of CEikonEnv from which this function has been called
+	@return A list of colours
+	*/
+	IMPORT_C static CColorList* CreateColorListL(CEikonEnv& aEnv);
+	
+	/** Gets the name of the clock DLL
+	@return The name of the clock DLL
+	*/
+	IMPORT_C static const TDesC& ClockDllName();
+
+	/** The behaviour of CEikonEnv can be customized. This enum lists
+	the things that can be customized. */
+	enum TLafEnvPolicyItem
+        {
+        /** The action to take when there is an error during startup. */
+        ELafEnvPolicyExitIfErrorDuringStartup,
+        /** The action to take when the document is corrupt. */
+        ELafEnvPolicyDeleteCorruptDocumentAndContinue,
+        /** This affects the way the environment is deleted. */
+        ELAfEnvPolicyDeferredEnvironmentDeletion,
+        };
+
+	/** CEikonEnv will use this function to find out how it should behave.
+	The list of things that can be customized this way are listed by 
+	TLafEnvPolicyItem.
+	@param aItem The policy item.
+	@return An integer that indicates what the action should be.
+	*/
+    IMPORT_C static TInt PolicyItem(TLafEnvPolicyItem aItem);
+
+public:
+	inline static TInt ShadowHeight();
+private:
+	/** Defines types of constant setting relevant to LAFs. */
+	enum TConstantType
+		{
+		/** Window shadow height. */
+		EShadowHeight
+		};
+private:
+	/** Gets the value for a specified constant setting.
+	
+	@param aConstant Type of constant setting to get
+	@return Value for the constant setting */
+	IMPORT_C static TInt Constant(TConstantType aConstant);
+	};
+
+// identifiers for legacy system fonts
+
+/** UID for the system "normal" font.
+
+@see TLogicalFont::iFontId 
+@publishedPartner 
+@released */
+#define KLafUidNormalFontVal		0x10005F02
+
+/** UID for the system "title" font.
+
+@see TLogicalFont::iFontId 
+@publishedPartner 
+@released */
+#define KLafUidTitleFontVal			0x10005F03
+
+/** UID for the system "annotation" font.
+
+@see TLogicalFont::iFontId 
+@publishedPartner 
+@released */
+#define KLafUidAnnotationFontVal	0x10005F04
+
+/** UID for the system "legend" font.
+
+@see TLogicalFont::iFontId 
+@publishedPartner 
+@released */
+#define KLafUidLegendFontVal		0x10005F05
+
+/** UID for the system "symbol" font.
+
+@see TLogicalFont::iFontId 
+@publishedPartner 
+@released */
+#define KLafUidSymbolFontVal		0x10005F06
+
+/** UID for the system "dense" font.
+
+@see TLogicalFont::iFontId 
+@publishedPartner 
+@released */
+#define KLafUidDenseFontVal			0x10005F07
+
+// identifiers for legacy system bitmaps
+/** UID for a textured block system bitmap.
+
+@see LafEnv::MatchBitmap() 
+@publishedPartner 
+@released */
+#define KLafUidEikonTexturedVal		0x100048F4
+
+/** UID for a gray block system bitmap.
+
+@see LafEnv::MatchBitmap() 
+@publishedPartner 
+@released */
+#define KLafUidEikonGrayVal			0x100048F5
+
+/** UID for a horizontal option button system bitmap.
+
+@see LafEnv::MatchBitmap() 
+@publishedPartner 
+@released */
+#define KLafUidEikonOptiVal			0x100048F6
+
+/** UID for a highlighted horizontal option button system bitmap.
+
+@see LafEnv::MatchBitmap() 
+@publishedPartner 
+@released */
+#define KLafUidEikonOptihVal		0x100048F7
+
+/** UID for a horizontal option button mask system bitmap.
+
+@see LafEnv::MatchBitmap() 
+@publishedPartner 
+@released */
+#define KLafUidEikonOptimVal		0x100048F8
+
+// Inlines
+
+inline TInt LafEnv::ShadowHeight()
+/** Gets the height of shadows to apply to windows. 
+
+@return Shadow height. */
+	{//static
+	return Constant(EShadowHeight);
+	}
+
+#endif