#include <mw/AknUtils.h>
class AknLayoutUtils |
Public Member Type Definitions | |
---|---|
typedef | SAknLayoutRect SAknLayoutControl |
typedef | SAknLayoutTextMultiline SAknLayoutEdwin |
typedef | SAknLayoutRect SAknLayoutImage |
typedef | SAknLayoutTextMultiline SAknLayoutLabel |
typedef | SAknLayoutText SAknLayoutMfne |
typedef | SAknLayoutText SAknLayoutSecEd |
Public Member Enumerations | |
---|---|
enum | TAknCbaLocation { EAknCbaLocationBottom, EAknCbaLocationRight, EAknCbaLocationLeft } |
enum | TAknLayoutMetrics { EScreen, EApplicationWindow, EStatusPane, EMainPane, ..., EStatusPaneTop } |
enum | TAknMainPaneState { EAknMainPaneForTinyStatusPane } |
Utility classes to build layout based on European LAF from resource files. (can be used by applications)
Methods in this class are designed to be called from your control's SizeChanged() method!
This class knows the specification's coordinate data format and ensures that different types of controls are positioned and setup correctly according to European LAF.
This class helps you with positioning labels, controls, rects and other things to according to LAF specification. (It is NOT trivial to get it correct and this adjusts easily to changes in the LAF specification - if you're not using this, remember to read the whole LAF specification - especially the beginning and the end with color and especially how text margins and widths interact!!)
(idea of this class is that when specification of one component changes, only resource file needs to be changed and when you get new product with new specification format, only this module needs to be changed and resources rewritten from the specification. And when component's specification changes, only the component need to be changed (usually only change is what components are inside it and how it calls this module.).. => all controls have common format that decides its layout!
Parent rectangles are always coordinates of LAF specification's parent rectangle in the screen.
To use this, call one of the methods in your SizeChanged() and then you'll need to make sure you draw the area between controls using ClearBetweenRects() call from egul library. (CCoeControl::Rect() helps with that...)
A Tip: You do not want to use any dynamic calculation of layouts! It is almost always an error to do so! => Do not allow layouts that have not been specified!
(If LAF spec has many numbers and you need to dynamically choose between them, then keep the numbers in code as function-local using SAknLayoutText/SAknLayoutRect/... -structs..)
You'll want to use TAknLayoutRect and TAknLayoutText too to build layout for your custom controls.
Layout Metrics.
Enumerator | Value | Description |
---|---|---|
EScreen |
Screen. | |
EApplicationWindow |
Window that fills the entire screen. | |
EStatusPane |
Indicates common components for most of the applications. | |
EMainPane |
The application main pane is used in all the applications | |
EControlPane |
Control pane. | |
ESignalPane |
The signal pane is used to indicate signal strength. | |
EContextPane |
The context pane is used to indicate an active application. | |
ETitlePane |
Used to indicate the subject or the name of the main pane content. | |
EBatteryPane |
The battery pane is used to indicate battery strength. | |
EUniversalIndicatorPane |
The universal indicator pane is used to indicate items that require the user's attention while browsing applications. | |
ENaviPane |
The navi pane is used to indicate navigation within an application, to provide context sensitive information to the user while entering or editing data, or to show additional information. | |
EFindPane |
A fixed find pane is used with lists instead of the find pop-up window. | |
EWallpaperPane |
Wallpaper pane. | |
EIndicatorPane |
The universal indicator pane is used to indicate items that require the user's attention while browsing applications. | |
EAColunm |
Used generally to display small sized graphics or heading texts. | |
EBColunm |
Used generally to display large sized icons or heading texts. | |
ECColunm |
Used generally to display data entered by the user. Overlaps with the D column. | |
EDColunm |
Used generally to display additional icons. Overlaps with the C column. | |
EStatusPaneSecondary |
Deprecated, do not use | |
EControlPaneSecondary |
deprecated, do not use | |
EStaconTop |
Top part of status and control panes in landscape layout. | |
EStaconBottom |
Bottom part of status and control panes in landscape layout. | |
EPopupParent | ||
EStatusPaneBottom | EStatusPaneSecondary |
Bottom part of status pane in landscape layout. |
EControlPaneBottom | EControlPaneSecondary |
Bottom part of control pane in landscape layout. |
EControlPaneTop | EControlPane |
Top part of control pane in landscape layout. |
EStatusPaneTop | EStatusPane |
Top part of status pane in landscape layout. |
IMPORT_C TAknCbaLocation | CbaLocation | ( | ) | [static] |
This method tells location of softkeys (CBA) field in current running application. Possible location of softkeys are bottom (portrait and landscape), left and right (only landscape).
Returns: TAknCbaLocation
This method returns a new value for a baseline, based upon a value for bottom and a value for height. For legacy layout data, the baseline will be correct, and this method will detect that it is a legacy font id and just return aBottom. However, for scalable layout data, the bottom value will be hidden inside the old baseline variable, so call this method passing in 'iB', NOT passing in 'ib' ... e.g.: (the following line is an example, so is ok to have commented out code) TInt newbaseline = CorrectBaseline(myLayoutLine.iB, myLayoutLine.iFont);
Parameter | Description |
---|---|
aFontId | FontId of text pane (for scalable layouts, this will encode the height) |
Returns: new Baseline value
IMPORT_C CAknLayoutFont * | CreateLayoutFontFromSpecificationL | ( | const TAknFontSpecification & | aSpec | ) | [static] |
Return a fully constructed CAknLayoutFont object based upon the specification passed in. The Avkon font specifiation object uses TAknFontCategory to determine the font.
The font object is returned as non-const, since it is owned and will eventually be deleted by the client.
Parameter | Description |
---|---|
aSpec | S60 font specification object |
Returns: pointer to a CAknLayoutFont object, owned by the caller
IMPORT_C CAknLayoutFont * | CreateLayoutFontFromSpecificationL | ( | const TTypeface & | aTypeface, |
const TAknFontSpecification & | aSpec | |||
) | [static] |
Return a fully constructed CAknLayoutFont object based upon the typeface and specification passed in. The TTypeface object contains a typeface name that is used as the primary key to select a font. The S60 font specifiation object is also used, but any value of TAknFontCategory passed in is reset to EAknFontCategoryUndefined, and is not used to select the font.
The font object is returned as non-const, since it is owned and will eventually be deleted by the client.
Parameter | Description |
---|---|
aTypeface | Symbian Typface object |
aSpec | S60 font specification object |
Returns: pointer to a CAknLayoutFont object, owned by the caller
IMPORT_C CEikScrollBarFrame::TScrollBarType | DefaultScrollBarType | ( | CAknAppUiBase * | aApplication | ) | [static] |
IMPORT_C TInt | EdwinLinesWithinHeight | ( | const TAknTextLineLayout & | aLayout, |
TInt | aBaselineSeparationOverride, | |||
TInt | aMaxHeight, | |||
TInt & | aUsedHeight | |||
) | [static] |
Utility routine to give the number of text lines that will completely fit, including room for highlights, within the given height, when the passed in layout is being used.
Note that the NumberOfLinesShown() value from the TAknTextLineLayout object is not taken into consideration. This routine ignores it, and returns number of lines based upon the font metrics, hightlight specification, and the passed in maximum height.
Note that this API does not cause a layout of the editor.
Parameter | Description |
---|---|
aLayout | S60 layout object for the text to be laid out in the editor |
aBaselineSeparationOverride | vertical separation of baselines overriding aLayout, if not KAknLayoutUtilsDoNotOverride |
aMaxHeight | Input maximum height to use for the editor. |
aUsedHeight | Returns the number of pixels required for the lines that fit |
Returns: The number of lines which completely fit
Method to return a useable system font reference from a S60 font enumeration from among the supported list.
This method should only be used if application code needs to render its own graphics. That is, it is not using S60 controls and furthermore not using the recommended methods AknLayoutUtils::LayoutEdwin(), AknLayoutUtils::LayoutLabel() or AknLayoutUtils::LayoutSecretEditor().
Fonts returned by this are not recommended to be stored in clients' member data, but should be accessed when they are required for use.
Applications that are written to run with their layout dynamically adapting to different screen sizes should use only the values found in the S60 logical font enumeration, TAknLogicalFontId.
Parameter | Description |
---|---|
aFontId | Input S60 font id. |
aCustomFont | Font to return if aFontId is given as EFontCustom |
Returns: const pointer to a system font, or aCustomFont
IMPORT_C void | GetEdwinVerticalPositionAndHeightFromLines | ( | TInt | aParentHeight, |
const TAknTextLineLayout & | aLayout, | |||
TInt | aBaselineSeparationOverRide, | |||
TInt | aNumberOfLinesToShowOverRide, | |||
TInt & | aEdwinVerticalPositionRelativeToParent, | |||
TInt & | aEdwinHeight | |||
) | [static] |
Utility method to be used along side LayoutEdwin methods that take number of lines or baseline separation overrides.
This routine returns the edwin height in pixels required to fit exactly the passed-in layout, or the layout with overridden baseline separation and/or number of lines.
The vertical position of the editor is also returned. Note that the correct height of the parent layout item is needed in order for this to be calculated properly.
Note that this API does not cause a layout of the editor.
Parameter | Description |
---|---|
aParentHeight | Height of the parent layout item |
aLayout | S60 layout object for the text to be laid out in the editor |
aEdwinVerticalPositionRelativeToParent | Returns the vertical postion of the editor relative to its parent when laid out. |
aEdwinHeight | The height required in pixels to fit the required number of laid out lines plus highlights. |
TRect | HighlightBasedRect | ( | const TRect & | aHighlightRect, |
CCoeControl * | aControl | |||
) | [static] |
Used by pop-ups to align themselves around the given highlighted area.
Parameter | Description |
---|---|
aHighlightRect | Highlighted area. |
aControl | Control whose position should be calculated, |
Returns: TRect Size and position of pop-up.
IMPORT_C void | LayoutControl | ( | CCoeControl * | aControl, |
const TRect & | aControlParent, | |||
TInt | aResourceId | |||
) | [static] |
Deprecated! Do not use!
IMPORT_C void | LayoutControl | ( | CCoeControl * | aControl, |
const TRect & | aControlParent, | |||
TResourceReader & | aReader | |||
) | [static] |
Deprecated! Do not use!
IMPORT_C void | LayoutControl | ( | CCoeControl * | aControl, |
const TRect & | aControlParent, | |||
const SAknLayoutControl & | aLayout | |||
) | [static] |
IMPORT_C void | LayoutControl | ( | CCoeControl * | aControl, |
const TRect & | aControlParent, | |||
const TAknWindowLineLayout & | aLayout | |||
) | [static] |
IMPORT_C void | LayoutEdwin | ( | CEikEdwin * | aEdwin, |
const TRect & | aEdwinParent, | |||
const SAknLayoutEdwin & | aLayout, | |||
const CFont * | aCustomFont = 0, | |||
TBool | aMinimizeEdwinView = EFalse | |||
) | [static] |
Layouts an editor via a structure of layout parameters
Parameter | Description |
---|---|
aLayout | the structure |
IMPORT_C void | LayoutEdwin | ( | CEikEdwin * | aEdwin, |
const TRect & | aEdwinParent, | |||
const TAknMultiLineTextLayout & | aLayout, | |||
const CFont * | aCustomFont = 0, | |||
TBool | aMinimizeEdwinView = EFalse | |||
) | [static] |
Layouts an editor via a structure of layout parameters
Parameter | Description |
---|---|
aLayout | the structure |
IMPORT_C void | LayoutEdwin | ( | CEikEdwin * | aEdwin, |
const TRect & | aEdwinParent, | |||
const TAknMultiLineTextLayout & | aLayout, | |||
TAknsQsnTextColorsIndex | aOverrideColor, | |||
const CFont * | aCustomFont = 0, | |||
TBool | aMinimizeEdwinView = EFalse | |||
) | [static] |
IMPORT_C void | LayoutEdwin | ( | CEikEdwin * | aEdwin, |
const TRect & | aEdwinParent, | |||
const TAknTextLineLayout & | aLayout, | |||
const CFont * | aCustomFont = 0, | |||
TBool | aMinimizeEdwinView = EFalse | |||
) | [static] |
IMPORT_C void | LayoutEdwin | ( | CEikEdwin * | aEdwin, |
const TRect & | aEdwinParent, | |||
const TAknTextLineLayout & | aLayout, | |||
TAknsQsnTextColorsIndex | aOverrideColor, | |||
const CFont * | aCustomFont = 0, | |||
TBool | aMinimizeEdwinView = EFalse | |||
) | [static] |
IMPORT_C void | LayoutEdwin | ( | CEikEdwin * | aEdwin, |
const TRect & | aEdwinParent, | |||
const TAknTextLineLayout & | aLayout, | |||
TInt | aNumberOfLinesToShowOverRide, | |||
TInt | aBaselineSeparationOverRide, | |||
TAknsQsnTextColorsIndex | aOverrideColor, | |||
TInt & | aNumberOfVisibleLines | |||
) | [static] |
Routine to perform standard layout of a CEikEdwin editor. Two elements from the S60 layout data are required: The rectangle of the containing layout element, and the TAknTextLineLayout object created for the contained text pane element.
Override parameters can be supplied for a different number of lines, a different baseline separation, or substituted skin color. Various "Do Not Override" values are to be passed if the values passed in aLayout are to be used. Refer to the parameters' documentation.
The lower extent of the editor to be laid out (whether driven by the NumberOfLinesToShow() feature of the TAknTextLineLayout object, or overridden by aNumberOfLinesToShowOverRide) will not extend below the lower limit of the rectangle aEdwinParent. Thus the number of lines formatted is limited, and is available as an output parameter.
The height of the editor is also restricted by any value previously set in CEikEdwin::SetMaximumHeightInLines().
Parameter | Description |
---|---|
aEdwin | pointer to the editor to be laid out |
aEdwinParent | rectangle of the containing layout element |
aLayout | object representing the layout of the text pane implemented by this editor |
aOverrideColor | Avkon Skins color index to override with, if not (TAknsQsnTextColorsIndex)KAknLayoutUtilsDoNotOverride |
aNumberOfVisibleLines | Number of lines of editor actually laid out. |
IMPORT_C void | LayoutEdwin | ( | CEikEdwin * | aEdwin, |
const TRect & | aEdwinParent, | |||
TInt | font, | |||
TInt | C, | |||
TInt | l, | |||
TInt | r, | |||
TInt | B, | |||
TInt | W, | |||
TInt | J, | |||
TInt | aNumberOfLinesShown, | |||
TInt | aNextLineBaseline, | |||
const CFont * | aCustomFont = 0, | |||
TBool | aMinimizeEdwinView = EFalse | |||
) | [static] |
Layouts an editor via parameters from the specification
Parameter | Description |
---|---|
font | font id, ELatinPlain12, ELatinBold12, ELatinBold13, ELatinBold17, ELatinBold19 etc.. |
C | colour index, 0..255 |
l | left margin |
r | right margin |
B | Baseline from top of the parent rectangle |
W | text width in pixels |
J | justification. ELayoutAlignNone; ELayoutAlignCenter; ELayoutAlignLeft; ELayoutAlignRight; ELayoutAlignBidi |
aNumberOfLinesShown | number of lines visible for the editor |
aMinimizeEdwinView | whether to use minimum size. You need to use MinimizedEdwinRect() if you use ETrue here. |
IMPORT_C const CAknLayoutFont * | LayoutFontFromId | ( | TInt | aId, |
const CAknLayoutFont * | aCustomFont = 0 | |||
) | [static] |
Method to return a system font reference from a S60 font id. This will always conform to type CAknLayoutFont
This method should only be used if application code needs to render its own graphics. That is, it is not using S60 controls and furthermore not using the recommended methods AknLayoutUtils::LayoutEdwin(), AknLayoutUtils::LayoutLabel() or AknLayoutUtils::LayoutSecretEditor().
Fonts returned by this are not recommended to be stored in clients' member data, but should be accessed when they are required for use.
Applications that are written to run with their layout dynamically adapting to different screen sizes should use only the values found in the S60 logical font enumeration, TAknLogicalFontId.
Parameter | Description |
---|---|
aCustomFont | Font to return if aFontId is given as EFontCustom |
Returns: const pointer to a system font, or aCustomFont
IMPORT_C void | LayoutHorizontalScrollBar | ( | CEikScrollBarFrame * | aScrollBarFrame, |
const TRect & | aControlParent, | |||
const TAknWindowLineLayout & | aLayout | |||
) | [static] |
IMPORT_C void | LayoutImage | ( | CEikImage * | aImage, |
const TRect & | aParent, | |||
TResourceReader & | aReader | |||
) | [static] |
Deprecated! Do not use!
IMPORT_C void | LayoutImage | ( | CEikImage * | aImage, |
const TRect & | aParent, | |||
const SAknLayoutControl & | aLayout | |||
) | [static] |
IMPORT_C void | LayoutImage | ( | CEikImage * | aImage, |
const TRect & | aParent, | |||
const TAknWindowLineLayout & | aLayout | |||
) | [static] |
IMPORT_C void | LayoutLabel | ( | CEikLabel * | aLabel, |
const TRect & | aLabelParent, | |||
TResourceReader & | aReader, | |||
const CFont * | aCustomFont = 0 | |||
) | [static] |
Deprecated! Do not use!
IMPORT_C void | LayoutLabel | ( | CEikLabel * | aLabel, |
const TRect & | aLabelParent, | |||
const SAknLayoutLabel & | aLayout, | |||
const CFont * | aCustomFont = 0 | |||
) | [static] |
Layouts a label via a structure of layout parameters
Parameter | Description |
---|---|
aLayout | the structure |
IMPORT_C void | LayoutLabel | ( | CEikLabel * | aLabel, |
const TRect & | aLabelParent, | |||
const TAknMultiLineTextLayout & | aLayout, | |||
const CFont * | aCustomFont = 0 | |||
) | [static] |
Layouts a label via a layout compiler output
Parameter | Description |
---|---|
aLayout | a define from aknlayout.lag file |
IMPORT_C void | LayoutLabel | ( | CEikLabel * | aLabel, |
const TRect & | aLabelParent, | |||
const TAknTextLineLayout & | aLayout, | |||
const CFont * | aCustomFont = 0 | |||
) | [static] |
Layouts a label via a layout compiler output
Parameter | Description |
---|---|
aLayout | a define from aknlayout.lag file |
IMPORT_C void | LayoutLabel | ( | CEikLabel * | aLabel, |
const TRect & | aLabelParent, | |||
TInt | font, | |||
TInt | C, | |||
TInt | l, | |||
TInt | r, | |||
TInt | B, | |||
TInt | W, | |||
TInt | J, | |||
TInt | NextLineB = 0, | |||
const CFont * | aCustomFont = 0 | |||
) | [static] |
Layouts a label via parameters from the specification
Parameter | Description |
---|---|
font | font id, ELatinPlain12, ELatinBold12, ELatinBold13, ELatinBold17, ELatinBold19 etc.. |
C | colour index, 0..255 |
l | left margin |
r | right margin |
B | Baseline from top of the parent rectangle |
W | text width in pixels |
J | justification. ELayoutAlignNone; ELayoutAlignCenter; ELayoutAlignLeft; ELayoutAlignRight; ELayoutAlignBidi |
NextLineB | baseline of 2nd line for multi-line labels/editors |
aCustomFont | a font used, if resource file uses EFontCustom |
IMPORT_C TBool | LayoutMetricsPosition | ( | TAknLayoutMetrics | aParan, |
TPoint & | aPos | |||
) | [static] |
This method returns position of top left corner for given layout component. Returns EFalse for status pane descendants if requested layout component is not available in current layout. For other components returns always ETrue (returned position is from layout definition).
Parameter | Description |
---|---|
aPos | Resulting position. |
IMPORT_C TBool | LayoutMetricsRect | ( | TAknLayoutMetrics | aParam, |
TRect & | aRect | |||
) | [static] |
Fills given TRect with rectangle for given layout component. Returns EFalse for status pane descendants if requested layout component is not available in current layout. For other components returns always ETrue (returned rectangle is from layout definition).
Parameter | Description |
---|---|
aParam | Layout component to be queried. |
aRect | Resulting rectangle. |
IMPORT_C TBool | LayoutMetricsSize | ( | TAknLayoutMetrics | aParam, |
TSize & | aSize | |||
) | [static] |
This method returns size of rectangle for given layout component. Returns EFalse for status pane descendants if requested layout component is not available in current layout. For other components returns always ETrue (returned size is from layout definition).
Parameter | Description |
---|---|
aParam | Layout component to be queried. |
aSize | Resulting size. |
IMPORT_C void | LayoutMfne | ( | CEikMfne * | aMfne, |
const TRect & | aMfneParent, | |||
TResourceReader & | aReader | |||
) | [static] |
Deprecated! Do not use!
IMPORT_C void | LayoutMfne | ( | CEikMfne * | aMfne, |
const TRect & | aMfneParent, | |||
const SAknLayoutMfne & | aLayout | |||
) | [static] |
IMPORT_C void | LayoutMfne | ( | CEikMfne * | aMfne, |
const TRect & | aMfneParent, | |||
const TAknTextLineLayout & | aLayout | |||
) | [static] |
IMPORT_C void | LayoutSecretEditor | ( | CEikSecretEditor * | aSecEd, |
const TRect & | aParent, | |||
const SAknLayoutText & | aLayout | |||
) | [static] |
Sets CEikSecretEditor's position, colors and fonts based on LAF specification
IMPORT_C void | LayoutSecretEditor | ( | CEikSecretEditor * | aSecEd, |
const TRect & | aParent, | |||
const TAknTextLineLayout & | aLayout | |||
) | [static] |
IMPORT_C void | LayoutVerticalScrollBar | ( | CEikScrollBarFrame * | aScrollBarFrame, |
const TRect & | aControlParent, | |||
const TAknWindowLineLayout & | aLayout | |||
) | [static] |
IMPORT_C TBool | MSKEnabled | ( | ) | [static] |
This method can be used to check whether MSK support is enabled.
Returns: ETrue if MSK support is enabled, otherwise EFalse.
const CAknLayoutFont * | MatchFontFromSystemFontArray | ( | const TFontSpec & | aSpec, |
MGraphicsDeviceMap * | aMap | |||
) | [static] |
Access the system font array to see if there is a font that matches the font specification presented in Twips. Device map is also passed in case the system font array has fonts from different devices.
A null return value means that the system font array is not constructed yet, or does not contain a font that has the same TFontSpec or device map.
Parameter | Description |
---|---|
aSpec | Symbian font specification object to match |
aMap | Device map to disambiguate fonts on different devices |
Returns: NULL if no match was found; otherwise a CAknLayoutFont pointer
IMPORT_C void | OverrideControlColorL | ( | CCoeControl & | aControl, |
TLogicalColor | aLogicalColor, | |||
TRgb | aColor | |||
) | [static] |
IMPORT_C TBool | PenEnabled | ( | ) | [static] |
This method can be used to check whether pen support is enabled.
Returns: ETrue if pen support is enabled, otherwise EFalse.
IMPORT_C TBool | ScalableLayoutInterfaceAvailable | ( | ) | [static] |
This method tells if the scalable layout interface is available.
IMPORT_C TRect | TextRectFromCoords | ( | const TRect & | aParent, |
const CFont * | aFont, | |||
TInt | l, | |||
TInt | r, | |||
TInt | B, | |||
TInt | W, | |||
TInt | LB = 0 | |||
) | [static] |
Different conversions Fonts: ELatinPlain12, ELatinBold12, ELatinBold13, ELatinBold17, ELatinBold19, ENumberPlain5, EClockBold30, ELatinClock14, EFontCustom EAknLogicalFontPrimaryFont, EAknLogicalFontSecondaryFont, EAknLogicalFontTitleFont, Alignments: ELayoutAlignNone, ELayoutAlignCenter, ELayoutAlignLeft, ELayoutAlignRight, ELayoutAlignBidi with these..