textinput/peninputgenerichwr/src/peninputgenerichwrlafdatamgr.cpp
changeset 0 eb1f2e154e89
equal deleted inserted replaced
-1:000000000000 0:eb1f2e154e89
       
     1 /*
       
     2 * Copyright (c) 2002-2005 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:  peninput hwr laf data manager
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // System includes
       
    20 #include <peninputdataconverter.h>
       
    21 #include <peninputcommonlayoutglobalenum.h>
       
    22 #include <AknUtils.h> 
       
    23 #include <aknlayoutscalable_avkon.cdl.h>
       
    24 
       
    25 // User includes
       
    26 #include "peninputgenerichwrlafdatamgr.h"
       
    27 
       
    28 // ======== MEMBER FUNCTIONS ========
       
    29 
       
    30 // ---------------------------------------------------------------------------
       
    31 // CPeninputHwrLayoutDataInfo::NewLC
       
    32 // (other items were commented in a header)
       
    33 // ---------------------------------------------------------------------------
       
    34 //
       
    35 CPeninputHwrLayoutDataInfo* CPeninputHwrLayoutDataInfo::NewLC()
       
    36 	{
       
    37     CPeninputHwrLayoutDataInfo* self = 
       
    38         new ( ELeave ) CPeninputHwrLayoutDataInfo();
       
    39     CleanupStack::PushL( self );
       
    40     return self;
       
    41 	}
       
    42 
       
    43 // ---------------------------------------------------------------------------
       
    44 // CPeninputGenericHwrLafMgr::NewL
       
    45 // (other items were commented in a header)
       
    46 // ---------------------------------------------------------------------------
       
    47 //
       
    48 CPeninputGenericHwrLafMgr* CPeninputGenericHwrLafMgr::NewL(TPeninputHwrLayoutType aLayoutType)
       
    49 	{
       
    50 	CPeninputGenericHwrLafMgr* self = NewLC(aLayoutType);
       
    51     CleanupStack::Pop(self);
       
    52     
       
    53     return self;
       
    54 	}
       
    55 	
       
    56 // ---------------------------------------------------------------------------
       
    57 // CPeninputGenericHwrLafMgr::NewLC
       
    58 // (other items were commented in a header)
       
    59 // ---------------------------------------------------------------------------
       
    60 //
       
    61 CPeninputGenericHwrLafMgr* CPeninputGenericHwrLafMgr::NewLC(TPeninputHwrLayoutType aLayoutType)
       
    62 	{
       
    63     CPeninputGenericHwrLafMgr* self = 
       
    64         new ( ELeave ) CPeninputGenericHwrLafMgr(aLayoutType);
       
    65     CleanupStack::PushL( self );
       
    66     self->ConstructL(); 
       
    67 
       
    68     return self;
       
    69 	
       
    70 	}
       
    71 	
       
    72 // ---------------------------------------------------------------------------
       
    73 // CPeninputGenericHwrLafMgr::ConstructL
       
    74 // (other items were commented in a header)
       
    75 // ---------------------------------------------------------------------------
       
    76 //
       
    77 void CPeninputGenericHwrLafMgr::ConstructL()
       
    78 	{
       
    79 	ReadLafInfoL();
       
    80 	}
       
    81 	
       
    82 // ---------------------------------------------------------------------------
       
    83 // CPeninputGenericHwrLafMgr::~CPeninputGenericHwrLafMgr
       
    84 // (other items were commented in a header)
       
    85 // ---------------------------------------------------------------------------
       
    86 //
       
    87 CPeninputGenericHwrLafMgr::~CPeninputGenericHwrLafMgr()
       
    88 	{
       
    89 	iLayoutData.ResetAndDestroy();
       
    90 	iLayoutData.Close();
       
    91 	}
       
    92 	
       
    93 // ---------------------------------------------------------------------------
       
    94 // CPeninputGenericHwrLafMgr::GetButtonRect
       
    95 // (other items were commented in a header)
       
    96 // ---------------------------------------------------------------------------
       
    97 //
       
    98 void CPeninputGenericHwrLafMgr::GetButtonRect( TPeninputCommonCtrlID aButtonID, 
       
    99 										  	   TRect& aOutterRect,
       
   100 										       TRect& aInnerRect )
       
   101 	{
       
   102 	ASSERT( IsValid() );
       
   103 
       
   104 	switch( aButtonID )
       
   105 		{
       
   106 		case EPeninutWindowCtrlIdMoveBtn:
       
   107 			{
       
   108 			aOutterRect = iLayoutData[iCurLayoutType]->iMoveButton.iRect;
       
   109 			aInnerRect  = iLayoutData[iCurLayoutType]->iMoveButton.iInnerRect;
       
   110 			}
       
   111 			break;
       
   112 		case EPeninutWindowCtrlIdCloseBtn:
       
   113 			{
       
   114 			aOutterRect = iLayoutData[iCurLayoutType]->iCloseButton.iRect;
       
   115 			aInnerRect  = iLayoutData[iCurLayoutType]->iCloseButton.iInnerRect;
       
   116 			}
       
   117 			break;
       
   118 		case EPeninutWindowCtrlIdOptionBtn:
       
   119 			{
       
   120 			aOutterRect = iLayoutData[iCurLayoutType]->iOptionButton.iRect;
       
   121 			aInnerRect  = iLayoutData[iCurLayoutType]->iOptionButton.iInnerRect;
       
   122 			}
       
   123 			break;
       
   124 		case EPeninutWindowCtrlIdSwitchToVkbBtn:
       
   125 			{
       
   126 			aOutterRect = iLayoutData[iCurLayoutType]->iSwitchButton.iRect;
       
   127 			aInnerRect  = iLayoutData[iCurLayoutType]->iSwitchButton.iInnerRect;							
       
   128 			}
       
   129 			break;
       
   130 		case EPeninutWindowCtrlIdSymbolBtn:
       
   131 			{
       
   132 			aOutterRect = iLayoutData[iCurLayoutType]->iRangbar.iSymbolButton.iRect;
       
   133 			aInnerRect  = iLayoutData[iCurLayoutType]->iRangbar.iSymbolButton.iInnerRect;							
       
   134 			}
       
   135 			break;
       
   136 		case EPeninutWindowCtrlIdNativeCharBtn:
       
   137 			{
       
   138 			aOutterRect = iLayoutData[iCurLayoutType]->iRangbar.iAlphaButton.iRect;
       
   139 			aInnerRect  = iLayoutData[iCurLayoutType]->iRangbar.iAlphaButton.iInnerRect;							
       
   140 			}
       
   141 			break;
       
   142 		case EPeninutWindowCtrlIdInputLangSwitcherBtn:
       
   143 			{
       
   144 			aOutterRect = iLayoutData[iCurLayoutType]->iLanguageButton.iRect;
       
   145 			aInnerRect  = iLayoutData[iCurLayoutType]->iLanguageButton.iInnerRect;							
       
   146 			}
       
   147 			break;	
       
   148 		case EPeninutWindowCtrlIdLatinNumberBtn:
       
   149 			{
       
   150 			aOutterRect = iLayoutData[iCurLayoutType]->iRangbar.iNumberButton.iRect;
       
   151 			aInnerRect  = iLayoutData[iCurLayoutType]->iRangbar.iNumberButton.iInnerRect;							
       
   152 			}
       
   153 			break;
       
   154 		default:
       
   155 			ASSERT( EFalse );
       
   156 			break;
       
   157 		}
       
   158 	}
       
   159 
       
   160 // ---------------------------------------------------------------------------
       
   161 // CPeninputGenericHwrLafMgr::EntirePaneRect
       
   162 // (other items were commented in a header)
       
   163 // ---------------------------------------------------------------------------
       
   164 //
       
   165 inline const TRect& CPeninputGenericHwrLafMgr::EntirePaneRect() const
       
   166 	{
       
   167 	ASSERT( IsValid() );	
       
   168 	return 	iLayoutData[iCurLayoutType]->iHwrWndRect;
       
   169 	}	
       
   170 	
       
   171 // ---------------------------------------------------------------------------
       
   172 // CPeninputGenericHwrLafMgr::RangbarRect
       
   173 // (other items were commented in a header)
       
   174 // ---------------------------------------------------------------------------
       
   175 //
       
   176 inline const TRect& CPeninputGenericHwrLafMgr::RangbarRect() const
       
   177 	{
       
   178 	ASSERT( IsValid() );
       
   179 	return 	iLayoutData[iCurLayoutType]->iRangbar.iRect;
       
   180 	}	
       
   181 	
       
   182 // ---------------------------------------------------------------------------
       
   183 // CPeninputGenericHwrLafMgr::TextAreaRect
       
   184 // (other items were commented in a header)
       
   185 // ---------------------------------------------------------------------------
       
   186 //
       
   187 inline const TRect& CPeninputGenericHwrLafMgr::TextAreaRect() const
       
   188 	{
       
   189 	ASSERT( IsValid() );
       
   190 	return 	iLayoutData[iCurLayoutType]->iICF.iRect;
       
   191 	}	
       
   192 	
       
   193 // ---------------------------------------------------------------------------
       
   194 // CPeninputGenericHwrLafMgr::WriteAreaRect
       
   195 // (other items were commented in a header)
       
   196 // ---------------------------------------------------------------------------
       
   197 //
       
   198 inline const TRect& CPeninputGenericHwrLafMgr::WriteAreaRect() const
       
   199 	{
       
   200 	ASSERT( IsValid() );
       
   201 	return 	iLayoutData[iCurLayoutType]->iWriteAreaRect;
       
   202 	}	
       
   203 	
       
   204 // ---------------------------------------------------------------------------
       
   205 // CPeninputGenericHwrLafMgr::CPeninputGenericHwrLafMgr
       
   206 // (other items were commented in a header)
       
   207 // ---------------------------------------------------------------------------
       
   208 //
       
   209 CPeninputGenericHwrLafMgr::CPeninputGenericHwrLafMgr(TPeninputHwrLayoutType aLayoutType) 
       
   210 	: iCurLayoutType(aLayoutType),iIsValid(EFalse) 
       
   211 	{
       
   212 		
       
   213 	}	
       
   214 	
       
   215 // ---------------------------------------------------------------------------
       
   216 // CPeninputGenericHwrLafMgr::SetLayoutType
       
   217 // (other items were commented in a header)
       
   218 // ---------------------------------------------------------------------------
       
   219 //
       
   220 inline void CPeninputGenericHwrLafMgr::SetLayoutType(TPeninputHwrLayoutType aLayoutType)
       
   221 	{
       
   222 	iCurLayoutType = aLayoutType;
       
   223 	}
       
   224 
       
   225 // ---------------------------------------------------------------------------
       
   226 // CPeninputGenericHwrLafMgr::LayoutType
       
   227 // (other items were commented in a header)
       
   228 // ---------------------------------------------------------------------------
       
   229 //
       
   230 inline TPeninputHwrLayoutType CPeninputGenericHwrLafMgr::LayoutType() const
       
   231 	{
       
   232 	return iCurLayoutType;
       
   233 	}
       
   234 
       
   235 // ---------------------------------------------------------------------------
       
   236 // CPeninputGenericHwrLafMgr::IsValid
       
   237 // (other items were commented in a header)
       
   238 // ---------------------------------------------------------------------------
       
   239 //
       
   240 inline TBool CPeninputGenericHwrLafMgr::IsValid() const
       
   241 	{
       
   242 	return iIsValid && iCurLayoutType != ELayoutNone;
       
   243 	}
       
   244 
       
   245 // ---------------------------------------------------------------------------
       
   246 // CPeninputGenericHwrLafMgr::ReadLafInfoL
       
   247 // (other items were commented in a header)
       
   248 // ---------------------------------------------------------------------------
       
   249 //
       
   250 void CPeninputGenericHwrLafMgr::ReadLafInfoL()
       
   251 	{
       
   252     TAknWindowLineLayout appWnd, mainPane, wndLayout;
       
   253 	TAknLayoutRect wndLayoutRect;
       
   254 	
       
   255     // Get hwr window layout
       
   256     appWnd = AknLayoutScalable_Avkon::application_window(0).LayoutLine();
       
   257 
       
   258     if (appWnd.iW > appWnd.iH) // landscape
       
   259         {	    
       
   260 	    mainPane = AknLayoutScalable_Avkon::main_pane(4).LayoutLine();
       
   261         wndLayout = AknLayoutScalable_Avkon::popup_fep_hwr_window(2).LayoutLine();
       
   262         }
       
   263     else  // portrait	
       
   264         {        
       
   265         mainPane = AknLayoutScalable_Avkon::main_pane(1).LayoutLine();
       
   266         wndLayout = AknLayoutScalable_Avkon::popup_fep_hwr_window(0).LayoutLine();
       
   267         }
       
   268 	wndLayoutRect.LayoutRect(appWnd.Rect(), wndLayout);
       
   269 	
       
   270 	// Get latin layout
       
   271 	CPeninputHwrLayoutDataInfo* pDataInfo = CPeninputHwrLayoutDataInfo::NewLC();
       
   272 	GetHwrLayoutDataInfo( wndLayoutRect.Rect(), 0, *pDataInfo );
       
   273 	iLayoutData.AppendL( pDataInfo );
       
   274 	CleanupStack::Pop( pDataInfo );
       
   275 	
       
   276 	// Get non latin layout
       
   277 	pDataInfo = CPeninputHwrLayoutDataInfo::NewLC();
       
   278 	GetHwrLayoutDataInfo( wndLayoutRect.Rect(), 2, *pDataInfo );
       
   279 	iLayoutData.AppendL( pDataInfo );
       
   280 	CleanupStack::Pop( pDataInfo );	
       
   281 	
       
   282 	iIsValid = ETrue;
       
   283 	}
       
   284 
       
   285 // ---------------------------------------------------------------------------
       
   286 // CPeninputGenericHwrLafMgr::GetHwrLayoutDataInfo
       
   287 // (other items were commented in a header)
       
   288 // ---------------------------------------------------------------------------
       
   289 //
       
   290 void CPeninputGenericHwrLafMgr::GetHwrLayoutDataInfo( const TRect& aParentWndRect, 
       
   291 							   						  TInt aLayoutType, 
       
   292 							                          CPeninputHwrLayoutDataInfo& aDataInfo )
       
   293 	{
       
   294 	TAknWindowLineLayout topPane, sidePane, topTextPane;
       
   295 	TAknWindowLineLayout cellBtn, cellBtnInner, writePane;
       
   296 	
       
   297 	TAknLayoutRect topPaneRect, sidePaneRect;
       
   298 	TAknLayoutRect topTextPaneRect, writePaneRect;
       
   299 	TAknLayoutRect cellBtnRect, cellBtnInnerRect;
       
   300 	TAknTextLineLayout cellText;
       
   301 
       
   302 	aDataInfo.iHwrWndRect = aParentWndRect;
       
   303 	
       
   304 	// Get top pane laf info
       
   305 	topPane = AknLayoutScalable_Avkon::fep_hwr_top_pane(aLayoutType).LayoutLine();
       
   306 	topPaneRect.LayoutRect(aParentWndRect, topPane);
       
   307 		// move button
       
   308 	cellBtn = AknLayoutScalable_Avkon::fep_hwr_top_pane_g1(aLayoutType).LayoutLine();
       
   309 	cellBtnRect.LayoutRect(topPaneRect.Rect(), cellBtn);
       
   310 	aDataInfo.iMoveButton.iRect = cellBtnRect.Rect();
       
   311 		// close button
       
   312 	cellBtn = AknLayoutScalable_Avkon::fep_hwr_top_pane_g2(aLayoutType).LayoutLine();
       
   313 	cellBtnRect.LayoutRect(topPaneRect.Rect(), cellBtn);
       
   314 	aDataInfo.iCloseButton.iRect = cellBtnRect.Rect();	
       
   315 		// option button
       
   316 	cellBtn = AknLayoutScalable_Avkon::fep_hwr_top_pane_g3(aLayoutType).LayoutLine();
       
   317 	cellBtnRect.LayoutRect(topPaneRect.Rect(), cellBtn);
       
   318 	aDataInfo.iOptionButton.iRect = cellBtnRect.Rect();
       
   319 		// ICF and it's text font
       
   320 	topTextPane = AknLayoutScalable_Avkon::fep_hwr_top_text_pane(aLayoutType).LayoutLine();
       
   321 	topTextPaneRect.LayoutRect(topPaneRect.Rect(), topTextPane);
       
   322 	aDataInfo.iICF.iRect = topTextPaneRect.Rect();	
       
   323 	cellText = AknLayoutScalable_Avkon::fep_hwr_top_text_pane_t1().LayoutLine();
       
   324 	aDataInfo.iICF.iTextFont = AknLayoutUtils::FontFromId(cellText.iFont, NULL);
       
   325 
       
   326 	// Get side pane laf info
       
   327 	sidePane = AknLayoutScalable_Avkon::fep_hwr_side_pane(aLayoutType).LayoutLine();
       
   328 	sidePaneRect.LayoutRect(aParentWndRect, sidePane);
       
   329 		// alphabet button
       
   330 	cellBtn = AknLayoutScalable_Avkon::cell_hwr_side_pane(aLayoutType, 0, 0).LayoutLine();
       
   331 	cellBtnRect.LayoutRect(sidePaneRect.Rect(), cellBtn);
       
   332 	aDataInfo.iRangbar.iAlphaButton.iRect = cellBtnRect.Rect();
       
   333 		// number button
       
   334 	cellBtn = AknLayoutScalable_Avkon::cell_hwr_side_pane(aLayoutType, 1, 0).LayoutLine();
       
   335 	cellBtnRect.LayoutRect(sidePaneRect.Rect(), cellBtn);
       
   336 	aDataInfo.iRangbar.iNumberButton.iRect = cellBtnRect.Rect();	
       
   337 		// symbol button
       
   338 	cellBtn = AknLayoutScalable_Avkon::cell_hwr_side_pane(aLayoutType, 2, 0).LayoutLine();
       
   339 	cellBtnRect.LayoutRect(sidePaneRect.Rect(), cellBtn);
       
   340 	aDataInfo.iRangbar.iSymbolButton.iRect = cellBtnRect.Rect();		
       
   341 		// set range bar rect
       
   342 	aDataInfo.iRangbar.iRect = TRect( aDataInfo.iRangbar.iAlphaButton.iRect.iTl,
       
   343 										aDataInfo.iRangbar.iSymbolButton.iRect.iBr );	
       
   344 		// language button
       
   345 	cellBtn = AknLayoutScalable_Avkon::cell_hwr_side_pane(aLayoutType, 3, 0).LayoutLine();
       
   346 	cellBtnRect.LayoutRect(sidePaneRect.Rect(), cellBtn);
       
   347 	aDataInfo.iLanguageButton.iRect = cellBtnRect.Rect();
       
   348 		// switch button
       
   349 	cellBtn = AknLayoutScalable_Avkon::cell_hwr_side_pane(aLayoutType, 4, 0).LayoutLine();
       
   350 	cellBtnRect.LayoutRect(sidePaneRect.Rect(), cellBtn);
       
   351 	aDataInfo.iSwitchButton.iRect = cellBtnRect.Rect();
       
   352 	
       
   353 	// Get write pane laf info
       
   354 	writePane = AknLayoutScalable_Avkon::fep_hwr_write_pane(aLayoutType).LayoutLine();
       
   355 	writePaneRect.LayoutRect(aParentWndRect, writePane);
       
   356 	aDataInfo.iWriteAreaRect = writePaneRect.Rect();	
       
   357 	}
       
   358