emailuis/uicomponents/inc/fslayoutmanager.h
branchRCL_3
changeset 25 3533d4323edc
equal deleted inserted replaced
24:d189ee25cf9d 25:3533d4323edc
       
     1 /*
       
     2 * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: This file defines class CFsLayoutManager.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #ifndef C_FSLAYOUTMANAGER_H
       
    21 #define C_FSLAYOUTMANAGER_H
       
    22 
       
    23 #include <gdi.h>
       
    24 
       
    25 // <cmail> S60 UID update
       
    26 const TInt KFsMessageLayoutChange( 0x2001E278 );
       
    27 // </cmail> S60 UID update
       
    28 
       
    29 //<cmail>
       
    30 //A lot of stuff removed, dependencies to FSLayout REMOVED!!
       
    31 //</cmail>
       
    32 
       
    33 /**
       
    34  *  This class knows the specification's coordinate data format and ensures
       
    35  *  that different types of controls are positioned and setup correctly.
       
    36  *  Methods in this class are designed to be called from your control's
       
    37  *  SizeChanged() method!
       
    38  *
       
    39  *  @code
       
    40  *
       
    41  *   TRect parentRect;
       
    42  *   TRect layoutRect;
       
    43  *   // Request screen size from layout manager.
       
    44  *   // When requesting screen size parentRect is only needed by the
       
    45  *   // interface.
       
    46  *   CFsLayoutManager::LayoutMetricsRect( parentRect,
       
    47  *       CFsLayoutManager::EFsLmScreen, layoutRect );
       
    48  *   // Set parentRect to be the requested screen rect.
       
    49  *   parentRect = layoutRect;
       
    50  *   // Request position and size of application window.
       
    51  *   CFsLayoutManager::LayoutMetricsRect( parentRect,
       
    52  *       CFsLayoutManager::EFsLmApplicationWindow, layoutRect );
       
    53  *   // Corresponding value need to be set in parentRect when requesting it's
       
    54  *   // child pane.
       
    55  *   parentRect = layoutRect;
       
    56  *   // Request area top pane layout data.
       
    57  *   // Assume that landscape mode is in use. Check the variety values from
       
    58  *   // layout documents.
       
    59  *   CFsLayoutManager::LayoutMetricsRect( parentRect,
       
    60  *       CFsLayoutManager::EFsLmAreaTopPane, layoutRect, 1 );
       
    61  *
       
    62  *  @endcode
       
    63  *
       
    64  *  @lib ?library
       
    65  *  @since S60 ?S60_version *** for example, S60 v3.0
       
    66  */
       
    67 class CFsLayoutManager : public CBase
       
    68 	{
       
    69 
       
    70 public:
       
    71 
       
    72     /**  Layout Metrics. */
       
    73     enum TFsLayoutMetrics
       
    74         {
       
    75         EFsLmApplicationWindow,
       
    76         EFsLmAreaTopPane,
       
    77         EFsLmBgSpFsCtrlbarPane,
       
    78         EFsLmFolderListMediumLineG1, // Folder view layout
       
    79 		EFsLmFolderListMediumLineT1, // Folder view layout
       
    80         EFsLmListMediumLineG1,
       
    81         EFsLmListMediumLineG2G1,
       
    82         EFsLmListMediumLineG2G2,
       
    83         EFsLmListMediumLineG2T1,
       
    84         EFsLmListMediumLineG3G1,
       
    85         EFsLmListMediumLineG3G2,
       
    86         EFsLmListMediumLineG3G3,
       
    87         EFsLmListMediumLineG3T1,
       
    88         EFsLmListMediumLinePlainT1,
       
    89         EFsLmListMediumLinePlainT2T1,
       
    90         EFsLmListMediumLinePlainT2T2,
       
    91         EFsLmListMediumLinePlainT3T1,
       
    92         EFsLmListMediumLinePlainT3T2,
       
    93         EFsLmListMediumLinePlainT3T3,
       
    94         EFsLmListMediumLineRightIconG1,
       
    95         EFsLmListMediumLineRightIconT1,
       
    96         EFsLmListMediumLineRightIconx2G1,
       
    97         EFsLmListMediumLineRightIconx2G2,
       
    98         EFsLmListMediumLineRightIconx2T1,
       
    99         EFsLmListMediumLineT1,
       
   100         EFsLmListMediumLineT2G1,
       
   101         EFsLmListMediumLineT2G2G1,
       
   102         EFsLmListMediumLineT2G2G2,
       
   103         EFsLmListMediumLineT2G2T1,
       
   104         EFsLmListMediumLineT2G2T2,
       
   105         EFsLmListMediumLineT2G3G1,
       
   106         EFsLmListMediumLineT2G3G2,
       
   107         EFsLmListMediumLineT2G3G3,
       
   108         EFsLmListMediumLineT2G3T1,
       
   109         EFsLmListMediumLineT2G3T2,
       
   110         EFsLmListMediumLineT2RightIconG1,
       
   111         EFsLmListMediumLineT2RightIconT1,
       
   112         EFsLmListMediumLineT2RightIconT2,
       
   113         EFsLmListMediumLineT2RightIconx2G1,
       
   114         EFsLmListMediumLineT2RightIconx2G2,
       
   115         EFsLmListMediumLineT2RightIconx2T1,
       
   116         EFsLmListMediumLineT2RightIconx2T2,
       
   117         EFsLmListMediumLineT2T1,
       
   118         EFsLmListMediumLineT2T2,
       
   119         EFsLmListMediumLineT32RightIconT2,
       
   120         EFsLmListMediumLineT3G1,
       
   121         EFsLmListMediumLineT3G2G1,
       
   122         EFsLmListMediumLineT3G2G2,
       
   123         EFsLmListMediumLineT3G2T1,
       
   124         EFsLmListMediumLineT3G2T2,
       
   125         EFsLmListMediumLineT3G2T3,
       
   126         EFsLmListMediumLineT3G3G1,
       
   127         EFsLmListMediumLineT3G3G2,
       
   128         EFsLmListMediumLineT3G3G3,
       
   129         EFsLmListMediumLineT3G3T1,
       
   130         EFsLmListMediumLineT3G3T2,
       
   131         EFsLmListMediumLineT3G3T3,
       
   132         EFsLmListMediumLineT3RightIconG1,
       
   133         EFsLmListMediumLineT3RightIconT1,
       
   134         EFsLmListMediumLineT3RightIconT2,
       
   135         EFsLmListMediumLineT3RightIconx2G1,
       
   136         EFsLmListMediumLineT3RightIconx2G2,
       
   137         EFsLmListMediumLineT3RightIconx2T1,
       
   138         EFsLmListMediumLineT3RightIconx2T2,
       
   139         EFsLmListMediumLineT3RightIconx2T3,
       
   140         EFsLmListMediumLineT3T1,
       
   141         EFsLmListMediumLineT3T2,
       
   142         EFsLmListMediumLineT3T3,
       
   143         EFsLmListMediumLineT4G4T3,
       
   144         EFsLmListMediumLineX2,
       
   145         EFsLmListMediumLineX2G1,
       
   146         EFsLmListMediumLineX2T2G2T1,
       
   147         EFsLmListMediumLineX2T2G3T1,
       
   148         EFsLmListMediumLineX2T2G4T1,
       
   149         EFsLmListMediumLineX2T3G2T1,
       
   150         EFsLmListMediumLineX2T3G2T2,
       
   151         EFsLmListMediumLineX2T3G3G1,
       
   152         EFsLmListMediumLineX2T3G3G2,
       
   153         EFsLmListMediumLineX2T3G3G3,
       
   154         EFsLmListMediumLineX2T3G3T1,
       
   155         EFsLmListMediumLineX2T3G3T2,
       
   156         EFsLmListMediumLineX2T3G4G1,
       
   157         EFsLmListMediumLineX2T3G4G2,
       
   158         EFsLmListMediumLineX2T3G4G3,
       
   159         EFsLmListMediumLineX2T3G4T1,
       
   160         EFsLmListMediumLineX2T3G4T2,
       
   161         EFsLmListMediumLineX2T3G4T3,
       
   162         EFsLmListMediumLineX2T3T3,
       
   163         EFsLmListMediumLineX2T4G4G4,
       
   164         EFsLmListMediumLineX3,
       
   165         EFsLmListMediumLineX3T4G4G4,
       
   166         EFsLmListMediumLineX3T4G4T2,
       
   167         EFsLmListMediumLineX3T4G4T3,
       
   168         EFsLmListMediumLineX3T4G4T4,
       
   169         EFsLmListSingleDycRowPane,
       
   170         EFsLmListSingleDycRowPaneG1,
       
   171         EFsLmListSingleDycRowPaneG2,
       
   172         EFsLmListSingleDycRowPaneG3,
       
   173         EFsLmListSingleDycRowPaneG4,
       
   174         EFsLmListSingleDycRowTextPane,
       
   175         EFsLmListSingleDycRowTextPaneT1,
       
   176         EFsLmListSingleDycRowTextPaneT2,
       
   177         EFsLmListSingleDycRowTextPaneT3,
       
   178         EFsLmListSingleFsDycPane,
       
   179         EFsLmMainPane,
       
   180         EFsLmMainSpFsCtrlbarButtonPaneCp01,
       
   181         EFsLmMainSpFsCtrlbarDdmenuPane,
       
   182         EFsLmMainSpFsCtrlbarDdmenuPaneG1,
       
   183         EFsLmMainSpFsCtrlbarDdmenuPaneG2,
       
   184         EFsLmMainSpFsCtrlbarDdmenuPaneT1,
       
   185         EFsLmMainSpFsCtrlbarPane,
       
   186         EFsLmMainSpFsCtrlbarPaneG1,
       
   187         EFsLmMainSpFsCtrlbarPaneG2,
       
   188         EFsLmMainSpFsListPane,
       
   189         EFsLmMainSpFsListscrollPaneTe,
       
   190         EFsLmPopupSpFsActionMenuPane,
       
   191         EFsLmScreen,
       
   192         EFsLmSpFsScrollPane,
       
   193         EFsLmSpFsActionMenuListGenePaneG1,
       
   194         EFsLmSpFsActionMenuListGenePaneT1,
       
   195         
       
   196         // command button area
       
   197         
       
   198         ECmailDdmenuBtn01Pane,
       
   199         ECmailDdmenuBtn01PaneG1,
       
   200         ECmailDdmenuBtn01PaneT1,
       
   201         ECmailDdmenuBtn01PaneG2,
       
   202         ECmailDdmenuBtn01PaneCP,
       
   203         
       
   204         ECmailDdmenuBtn02Pane,
       
   205         ECmailDdmenuBtn02PaneG1,
       
   206         ECmailDdmenuBtn02PaneG2,
       
   207         ECmailDdmenuBtn02PaneT1,
       
   208         ECmailDdmenuBtn02PaneT2,
       
   209         ECmailDdmenuBtn02PaneCP,
       
   210 
       
   211         ECmailDdmenuBtn03Pane,
       
   212         ECmailDdmenuBtn03PaneG1,
       
   213         ECmailDdmenuBtn03PaneT1,
       
   214         ECmailDdmenuBtn03PaneCP
       
   215         };
       
   216 
       
   217     /**  Collection of data of text position and font. */
       
   218     struct TFsText
       
   219         {
       
   220         TRect iTextRect;
       
   221         const CFont *iFont; // not owned
       
   222         //TRgb iColor;
       
   223         TInt iOffset;
       
   224         CGraphicsContext::TTextAlign iAlign;
       
   225         };
       
   226 
       
   227     IMPORT_C CFsLayoutManager();
       
   228 
       
   229     /**
       
   230 	 * Determine if the mirroring is in use.
       
   231 	 *
       
   232      * @return ETrue If mirroring is in use. EFalse Otherwise.
       
   233      */
       
   234     IMPORT_C static TBool IsMirrored();
       
   235 
       
   236     /**
       
   237 	 * Fills given TRect with rectangle for given layout component. Returns
       
   238 	 * EFalse for status pane descendants if requested layout component is not
       
   239 	 * available in current layout. For other components returns always ETrue
       
   240 	 * (returned rectangle is from layout definition).
       
   241      *
       
   242      * @param aParent Rect of the parent layout.
       
   243      * @param aParam Layout component to be queried.
       
   244      * @param aRect Resulting rectangle.
       
   245      * @param aVariety Defines items variety value. Check this from layout
       
   246      * documents.
       
   247      * @param aRow Possible row value for queried item.
       
   248      * @param aCol Possible column value for queried item.
       
   249      * @return ETrue If requested value was available. EFalse Otherwise.
       
   250      */
       
   251 	IMPORT_C static TBool LayoutMetricsRect(
       
   252         const TRect &aParent, TFsLayoutMetrics aParam, TRect& aRect,
       
   253         TInt aVariety = 0, TInt aRow = 0, TInt aCol = 0 );
       
   254 
       
   255     /**
       
   256 	 * This method returns size of rectangle for given layout component.
       
   257 	 * Returns EFalse for status pane descendants if requested layout
       
   258 	 * component is not available in current layout. For other components
       
   259 	 * returns always ETrue (returned size is from layout definition).
       
   260      *
       
   261      * @param aParent Rect of the parent layout.
       
   262      * @param aParam Layout component to be queried.
       
   263      * @param aSize Resulting size.
       
   264      * @param aVariety Defines items variety value. Check this from layout
       
   265      * documents.
       
   266      * @param aRow Possible row value for queried item.
       
   267      * @param aCol Possible column value for queried item.
       
   268      * @return ETrue If requested value was available. EFalse Otherwise.
       
   269      */
       
   270     IMPORT_C static TBool LayoutMetricsSize(
       
   271         const TRect &aParent, TFsLayoutMetrics aParam, TSize& aSize,
       
   272         TInt aVariety = 0, TInt aRow = 0, TInt aCol = 0 );
       
   273 
       
   274     /**
       
   275 	 * This method returns position of top left corner for given layout
       
   276 	 * component. Returns EFalse for status pane descendants if requested
       
   277 	 * layout component is not available in current layout. For other
       
   278 	 * components returns always ETrue (returned position is from layout
       
   279 	 * definition).
       
   280      *
       
   281      * @param aParent Rect of the parent layout.
       
   282      * @param aParam Layout component to be queried.
       
   283      * @param aPos Resulting position.
       
   284      * @param aVariety Defines items variety value. Check this from layout
       
   285      * documents.
       
   286      * @param aRow Possible row value for queried item.
       
   287      * @param aCol Possible column value for queried item.
       
   288      * @return ETrue If requested value was available. EFalse Otherwise.
       
   289      */
       
   290     IMPORT_C static TBool LayoutMetricsPosition(
       
   291         const TRect &aParent, TFsLayoutMetrics aParan, TPoint& aPos,
       
   292         TInt aVariety = 0, TInt aRow = 0, TInt aCol = 0 );
       
   293 
       
   294     /**
       
   295      * This method returns text position and font information of given layout
       
   296      * component. Returns EFalse for status pane descendants if requested
       
   297      * layout component is not available in current layout. For other
       
   298      * components returns always ETrue (returned position is from layout
       
   299      * definition).
       
   300      *
       
   301      * @param aParent Rect of the parent layout.
       
   302      * @param aParam Layout component to be queried.
       
   303      * @param aText Resulting text information.
       
   304      * @param aVariety Defines items variety value. Check this from layout
       
   305      * documents.
       
   306      * @param aRow Possible row value for queried item.
       
   307      * @return ETrue If requested value was available. EFalse Otherwise.
       
   308      */
       
   309     IMPORT_C static TBool LayoutMetricsText(
       
   310         const TRect &aParent, TFsLayoutMetrics aParam, TFsText& aText,
       
   311         TInt aVariety = 0, TInt aRow = 0 );
       
   312 
       
   313 private: // data
       
   314 
       
   315 	};
       
   316 
       
   317 
       
   318 #endif // C_FSLAYOUTMANAGER_H