textinput/peninputgenericvkb/src/peninputgenericlafdatamgr.cpp
branchRCL_3
changeset 5 a47de9135b21
parent 3 f5a1e66df979
child 7 6defe5d1bd39
equal deleted inserted replaced
3:f5a1e66df979 5:a47de9135b21
   442 	ASSERT(iLafData);
   442 	ASSERT(iLafData);
   443 	aIconsFrameRect = iLafData->QwtLayoutData().iSpaceButtonEx.iIconsFrameRect;
   443 	aIconsFrameRect = iLafData->QwtLayoutData().iSpaceButtonEx.iIconsFrameRect;
   444 	aMiddleIconRect = iLafData->QwtLayoutData().iSpaceButtonEx.iMiddleIconRect;		
   444 	aMiddleIconRect = iLafData->QwtLayoutData().iSpaceButtonEx.iMiddleIconRect;		
   445 	}
   445 	}
   446 
   446 
       
   447 TRect& CPeninputGenericVkbLafMgr::IndiPaneRectWithText()
       
   448     {
       
   449     ASSERT(iLafData);
       
   450     return iLafData->IndiPaneRectWithText();
       
   451     }
       
   452 
       
   453 TRect& CPeninputGenericVkbLafMgr::IndiPaneRectWithoutText()
       
   454     {
       
   455     ASSERT(iLafData);
       
   456     return iLafData->IndiPaneRectWithoutText();
       
   457     }
       
   458 
       
   459 TRect& CPeninputGenericVkbLafMgr::IndiIconRectWithText()
       
   460     {
       
   461     ASSERT(iLafData);
       
   462     return iLafData->IndiIconRectWithText();
       
   463     }
       
   464 
       
   465 TRect& CPeninputGenericVkbLafMgr::IndiIconRectWithoutText()
       
   466     {
       
   467     ASSERT(iLafData);
       
   468     return iLafData->IndiIconRectWithoutText();
       
   469     }
       
   470 
       
   471 TAknTextLineLayout& CPeninputGenericVkbLafMgr::IndiText()
       
   472     {
       
   473     ASSERT(iLafData);
       
   474     return iLafData->IndiText();
       
   475     }
   447 // ---------------------------------------------------------------------------
   476 // ---------------------------------------------------------------------------
   448 // Return layout data for candidate list
   477 // Return layout data for candidate list
   449 // ---------------------------------------------------------------------------
   478 // ---------------------------------------------------------------------------
   450 //
   479 //
   451 const TPeninputCandidateListLayoutData& 
   480 const TPeninputCandidateListLayoutData& 
   552 		case EPeninupWindowCtrlIdArrowRightBtn:
   581 		case EPeninupWindowCtrlIdArrowRightBtn:
   553 			{
   582 			{
   554 			pData = &(iLayoutDataInfo[iLayoutType]->iRightButton);	
   583 			pData = &(iLayoutDataInfo[iLayoutType]->iRightButton);	
   555 			}
   584 			}
   556 			break;
   585 			break;
       
   586 		case EPeninutWindowCtrlIdMultiRangeBtn:
       
   587 		    {
       
   588 		    pData = &(iLayoutDataInfo[iLayoutType]->iMultiRangeButton);    
       
   589 		    }
       
   590 		    break;
   557 		default:
   591 		default:
   558 			ASSERT(EFalse);
   592 			ASSERT(EFalse);
   559 			break;
   593 			break;
   560 		}
   594 		}
   561 	ASSERT(pData);
   595 	ASSERT(pData);
   603 	{
   637 	{
   604 	ASSERT( IsValid() );
   638 	ASSERT( IsValid() );
   605 	return 	*iLayoutDataInfo[iLayoutType];
   639 	return 	*iLayoutDataInfo[iLayoutType];
   606 	}
   640 	}
   607 
   641 
       
   642 TRect& MPeninputLafDataCommon::IndiPaneRectWithText()
       
   643     {
       
   644     ASSERT( IsValid());
       
   645     return iLayoutDataInfo[iLayoutType]->iIndiPaneRectWithTextForFSQ;
       
   646     }
       
   647 
       
   648 TRect& MPeninputLafDataCommon::IndiPaneRectWithoutText()
       
   649     {
       
   650     ASSERT( IsValid());
       
   651     return iLayoutDataInfo[iLayoutType]->iIndiPaneRectWithoutTextForFSQ;
       
   652     }
       
   653 
       
   654 TRect& MPeninputLafDataCommon::IndiIconRectWithText()
       
   655     {
       
   656     ASSERT( IsValid());
       
   657     return iLayoutDataInfo[iLayoutType]->iIndiIconRectWithTextForFSQ;
       
   658     }
       
   659 
       
   660 TRect& MPeninputLafDataCommon::IndiIconRectWithoutText()
       
   661     {
       
   662     ASSERT( IsValid());
       
   663     return iLayoutDataInfo[iLayoutType]->iIndiIconRectWithoutTextForFSQ;
       
   664     }
       
   665 
       
   666 TAknTextLineLayout& MPeninputLafDataCommon::IndiText()
       
   667     {
       
   668     ASSERT( IsValid());
       
   669     return iLayoutDataInfo[iLayoutType]->iIndiTextForFSQ;
       
   670     }
   608 // ---------------------------------------------------------------------------
   671 // ---------------------------------------------------------------------------
   609 // CPeninputLafDataCommon::ConstructL()
   672 // CPeninputLafDataCommon::ConstructL()
   610 // (other items were commented in a header)
   673 // (other items were commented in a header)
   611 // ---------------------------------------------------------------------------
   674 // ---------------------------------------------------------------------------
   612 //		
   675 //		
   625 	return ( iLayoutDataInfo.Count() && iLayoutType != ELayoutNone ) ? ETrue : EFalse;
   688 	return ( iLayoutDataInfo.Count() && iLayoutType != ELayoutNone ) ? ETrue : EFalse;
   626 	}
   689 	}
   627 
   690 
   628 
   691 
   629 // ---------------------------------------------------------------------------
   692 // ---------------------------------------------------------------------------
   630 // CPeninputLafDataCommon::GetTopAndBottomPaneInfo
   693 // CPeninputLafDataVKB::GetTopAndBottomPaneInfo
   631 // (other items were commented in a header)
   694 // (other items were commented in a header)
   632 // ---------------------------------------------------------------------------
   695 // ---------------------------------------------------------------------------
   633 //	
   696 //	
   634 void MPeninputLafDataCommon::GetTopAndBottomPaneInfo( const TRect& aParentWndRect, 
   697 void CPeninputLafDataVKB::GetTopAndBottomPaneInfo( const TRect& aParentWndRect, 
   635 													  TInt aLayoutType,
   698 													  TInt aLayoutType,
   636 													  TInt aLayoutParam,
   699 													  TInt aLayoutParam,
   637 													  CPeninputQwtLayoutDataInfo& aDataInfo )
   700 													  CPeninputQwtLayoutDataInfo& aDataInfo )
   638 	{
   701 	{
   639 	const TInt endFSQType  = 2;
   702 	const TInt endFSQType  = 2;
   920 	{
   983 	{
   921 	return iLafOption;
   984 	return iLafOption;
   922 	}
   985 	}
   923 
   986 
   924 // ---------------------------------------------------------------------------
   987 // ---------------------------------------------------------------------------
       
   988 // CPeninputLafDataFSQ::RelativeRect
       
   989 // (other items were commented in a header)
       
   990 // ---------------------------------------------------------------------------
       
   991 //
       
   992 TRect CPeninputLafDataFSQ::RelativeRect( const TRect& aRect, const TPoint& aPoint )
       
   993     {
       
   994     TRect rect = aRect;
       
   995     rect.Move( - aPoint.iX, - aPoint.iY );
       
   996     return rect;
       
   997     }
       
   998 
       
   999 // ---------------------------------------------------------------------------
       
  1000 // CPeninputLafDataFSQ::OffsetRect
       
  1001 // (other items were commented in a header)
       
  1002 // ---------------------------------------------------------------------------
       
  1003 //
       
  1004 TRect CPeninputLafDataFSQ::OffsetRect( const TRect& aRect, TInt aDx, TInt aDy )
       
  1005     {
       
  1006     TRect rect = aRect;
       
  1007     rect.Move( aDx, aDy );
       
  1008     return rect;    
       
  1009     }
       
  1010 
       
  1011 // ---------------------------------------------------------------------------
       
  1012 // CPeninputLafDataFSQ::GetTopAndBottomPaneInfo
       
  1013 // (other items were commented in a header)
       
  1014 // ---------------------------------------------------------------------------
       
  1015 //  
       
  1016 void CPeninputLafDataFSQ::GetTopAndBottomPaneInfo( const TRect& aParentWndRect, 
       
  1017                                                       TInt aLayoutType,
       
  1018                                                       TInt aLayoutParam,
       
  1019                                                       CPeninputQwtLayoutDataInfo& aDataInfo )
       
  1020     {
       
  1021     TAknWindowLineLayout linelayout;
       
  1022     TAknLayoutRect layoutrect;
       
  1023 
       
  1024     TAknLayoutRect keypadRect, keypaneRect, keycellRect, keylabelRect;  
       
  1025     TAknLayoutRect pic3paneRect;
       
  1026     
       
  1027     TPoint base;
       
  1028     TRect rectBottomWin, rectICFBg, rectICF, rectICFpane;
       
  1029     TAknTextLineLayout cellText;
       
  1030     TAknLayoutText txt;
       
  1031     TInt pic3pLeftWidth, pic3pRightWidth;
       
  1032     
       
  1033     base = aParentWndRect.iTl;
       
  1034     TRect rect = aParentWndRect;
       
  1035     rect.Move( - base.iX, - base.iY );
       
  1036     aDataInfo.iClientRect = rect;
       
  1037     aDataInfo.iQwtRect = aParentWndRect;
       
  1038     
       
  1039     TInt v1, v2;
       
  1040     switch ( aLayoutType )
       
  1041         {
       
  1042         case ELayout10x3:
       
  1043             {
       
  1044             v1 = 0;
       
  1045             v2 = 0;
       
  1046             break;
       
  1047             }
       
  1048         case ELayout11x3:
       
  1049             {
       
  1050             v1 = 1;
       
  1051             v2 = 2;
       
  1052             break;
       
  1053             }
       
  1054         case ELayout11x4:
       
  1055             {
       
  1056             v1 = 1;
       
  1057             v2 = 3;
       
  1058             break;
       
  1059             }
       
  1060         default:
       
  1061             {
       
  1062             v1 = 0;
       
  1063             v2 = 0;
       
  1064             }
       
  1065         }
       
  1066     
       
  1067     // Bottom pane rect
       
  1068     linelayout = AknLayoutScalable_Avkon::popup_fep_vkbss_window(0).LayoutLine();
       
  1069     layoutrect.LayoutRect( aParentWndRect, linelayout );
       
  1070     rectBottomWin = layoutrect.Rect();
       
  1071     
       
  1072     // ICF pane rect
       
  1073     linelayout = AknLayoutScalable_Avkon::popup_fep_vkb_icf_pane(0).LayoutLine();
       
  1074     layoutrect.LayoutRect( aParentWndRect, linelayout );
       
  1075     rectICFpane = layoutrect.Rect();
       
  1076     
       
  1077     // ICF bg pane rect
       
  1078     linelayout = AknLayoutScalable_Avkon::bg_icf_pane(0).LayoutLine();
       
  1079     layoutrect.LayoutRect( rectICFpane, linelayout );
       
  1080     rectICFBg = layoutrect.Rect();
       
  1081     
       
  1082     // ICF area rect
       
  1083     linelayout = AknLayoutScalable_Avkon::list_vkb_icf_pane(0).LayoutLine();
       
  1084     layoutrect.LayoutRect( rectICFBg, linelayout );
       
  1085     rectICF = layoutrect.Rect();
       
  1086     
       
  1087     aDataInfo.iICF.iRect = rectICF;
       
  1088     cellText = AknLayoutScalable_Avkon::list_vkb_icf_pane_t1(0, 0, 0).LayoutLine();
       
  1089     aDataInfo.iICF.iPromptTextFont = AknLayoutUtils::FontFromId(cellText.iFont, NULL);
       
  1090     txt.LayoutText( rectICF, cellText );
       
  1091     aDataInfo.iICF.iPromptTextRect = txt.TextRect();
       
  1092     cellText = AknLayoutScalable_Avkon::list_vkb_icf_pane_t1(0, 0, 1).LayoutLine();
       
  1093     aDataInfo.iICF.iTextFont = AknLayoutUtils::FontFromId(cellText.iFont, NULL);
       
  1094     txt.LayoutText( rectICF, cellText );
       
  1095     aDataInfo.iICF.iTextRect = txt.TextRect();
       
  1096     
       
  1097     // icf indicator
       
  1098     TAknWindowLineLayout icfIndiPaneWithText, icfIndiPaneWithoutText, 
       
  1099         indiIconWithText, indiIconWithoutText, indiText;
       
  1100     TAknLayoutRect icfIndiPaneRectWithText, icfIndiPaneRectWithoutText, 
       
  1101     indiIconRectWithText, indiIconRectWithoutText, indiTextRect;
       
  1102     TAknTextLineLayout indiTextLayout;
       
  1103     
       
  1104     icfIndiPaneWithText = AknLayoutScalable_Avkon::icf_edit_indi_pane(1).LayoutLine();
       
  1105     icfIndiPaneRectWithText.LayoutRect( rectICF, icfIndiPaneWithText );
       
  1106     aDataInfo.iIndiPaneRectWithTextForFSQ = icfIndiPaneRectWithText.Rect();
       
  1107     
       
  1108     icfIndiPaneWithoutText = AknLayoutScalable_Avkon::icf_edit_indi_pane(0).LayoutLine();
       
  1109     icfIndiPaneRectWithoutText.LayoutRect( rectICF, icfIndiPaneWithoutText );
       
  1110     aDataInfo.iIndiPaneRectWithoutTextForFSQ = icfIndiPaneRectWithoutText.Rect();
       
  1111 
       
  1112     aDataInfo.iIndiIconRectWithTextForFSQ = TRect( 0, 0, 60, 20 );
       
  1113     aDataInfo.iIndiIconRectWithoutTextForFSQ = TRect( 0, 0, 60, 20 );
       
  1114     
       
  1115     indiTextLayout = AknLayoutScalable_Avkon::icf_edit_indi_pane_t1(0).LayoutLine();
       
  1116     aDataInfo.iIndiTextForFSQ = indiTextLayout;
       
  1117     
       
  1118     // keypad pane rect
       
  1119     linelayout = AknLayoutScalable_Avkon::grid_vkbss_keypad_pane(v1).LayoutLine();
       
  1120     keypadRect.LayoutRect( rectBottomWin, linelayout );
       
  1121     
       
  1122     // key pane rect
       
  1123     linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(v2).LayoutLine();
       
  1124     keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
       
  1125 
       
  1126     // key cell rect
       
  1127     linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(v2).LayoutLine();
       
  1128     keycellRect.LayoutRect( keypaneRect.Rect(), linelayout );
       
  1129     
       
  1130     // key label rect
       
  1131     linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(v2).LayoutLine();
       
  1132     keylabelRect.LayoutRect( keypaneRect.Rect(), linelayout );
       
  1133     
       
  1134     // pic3pane rect
       
  1135     linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane(v2).LayoutLine();
       
  1136     pic3paneRect.LayoutRect( keypaneRect.Rect(), linelayout );
       
  1137     
       
  1138     linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane_g1(0).LayoutLine();
       
  1139     layoutrect.LayoutRect( pic3paneRect.Rect(), linelayout );
       
  1140     pic3pLeftWidth = layoutrect.Rect().Width();
       
  1141 
       
  1142     linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_3p_pane_g3(0).LayoutLine();
       
  1143     layoutrect.LayoutRect( pic3paneRect.Rect(), linelayout );
       
  1144     pic3pRightWidth = layoutrect.Rect().Width();
       
  1145     
       
  1146     TRect rectXPane = keypaneRect.Rect();
       
  1147     rect = keycellRect.Rect();
       
  1148     rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY );
       
  1149     TRect rectXBorder = rect;
       
  1150     rect = keylabelRect.Rect();
       
  1151     rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY );
       
  1152     TRect rectXInner = rect;
       
  1153     rect = pic3paneRect.Rect();
       
  1154     rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY );
       
  1155     TRect rect3PicPane = rect;
       
  1156     rectXPane.Move( - rectXPane.iTl );
       
  1157     
       
  1158     rect = keypadRect.Rect();
       
  1159     rect.Move( - base.iX, - base.iY );
       
  1160     TRect rectOfKeypad = rect;
       
  1161     TRect rectOfButtons = rectOfKeypad;
       
  1162     rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height(); 
       
  1163     rectOfButtons.iTl.iY += rectOfKeypad.Height();
       
  1164     
       
  1165     TInt spaceBtnWidth = rectOfButtons.Width() - rectXPane.Width() * 8;
       
  1166     TInt dx = rectOfButtons.iTl.iX;
       
  1167     TInt dy = rectOfButtons.iTl.iY;
       
  1168     
       
  1169     aDataInfo.iCloseButton.iRect = OffsetRect( rectXBorder, dx, dy );
       
  1170     aDataInfo.iCloseButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
       
  1171     dx += rectXPane.Width();
       
  1172 
       
  1173     aDataInfo.iShiftButton.iRect = OffsetRect( rectXBorder, dx, dy );
       
  1174     aDataInfo.iShiftButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
       
  1175     dx += rectXPane.Width();
       
  1176 
       
  1177     aDataInfo.iMultiRangeButton.iRect = OffsetRect( rectXBorder, dx, dy );
       
  1178     aDataInfo.iMultiRangeButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
       
  1179     dx += rectXPane.Width();
       
  1180 
       
  1181     aDataInfo.iLeftButton.iRect = OffsetRect( rectXBorder, dx, dy );
       
  1182     aDataInfo.iLeftButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
       
  1183     dx += rectXPane.Width();
       
  1184 
       
  1185     TInt expand = spaceBtnWidth - rectXPane.Width();
       
  1186     aDataInfo.iSpaceButton.iRect = OffsetRect( rectXBorder, dx, dy );
       
  1187     aDataInfo.iSpaceButton.iRect.Resize( expand, 0 );
       
  1188     aDataInfo.iSpaceButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
       
  1189     aDataInfo.iSpaceButton.iInnerRect.Resize( expand, 0 );
       
  1190     aDataInfo.iSpaceButtonEx.iIconsFrameRect = OffsetRect( rect3PicPane, dx, dy );
       
  1191     aDataInfo.iSpaceButtonEx.iIconsFrameRect.Resize( expand, 0 );
       
  1192     aDataInfo.iSpaceButtonEx.iMiddleIconRect = 
       
  1193         aDataInfo.iSpaceButtonEx.iIconsFrameRect;
       
  1194     aDataInfo.iSpaceButtonEx.iMiddleIconRect.iTl.iX += pic3pLeftWidth;
       
  1195     aDataInfo.iSpaceButtonEx.iMiddleIconRect.iBr.iX -= pic3pRightWidth;    
       
  1196     dx += spaceBtnWidth;
       
  1197 
       
  1198     aDataInfo.iRightButton.iRect = OffsetRect( rectXBorder, dx, dy );
       
  1199     aDataInfo.iRightButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
       
  1200     dx += rectXPane.Width();
       
  1201 
       
  1202     aDataInfo.iOptionButton.iRect = OffsetRect( rectXBorder, dx, dy );
       
  1203     aDataInfo.iOptionButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
       
  1204     dx += rectXPane.Width();
       
  1205 
       
  1206     aDataInfo.iEnterButton.iRect = OffsetRect( rectXBorder, dx, dy );
       
  1207     aDataInfo.iEnterButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
       
  1208     dx += rectXPane.Width();
       
  1209 
       
  1210     aDataInfo.iClearButton.iRect = OffsetRect( rectXBorder, dx, dy );
       
  1211     aDataInfo.iClearButton.iInnerRect = OffsetRect( rectXInner, dx, dy );
       
  1212     
       
  1213     // preview popup window
       
  1214     TAknWindowLineLayout previewWnd, previewWndInner;
       
  1215     TAknLayoutRect previewWndRect, previewWndInnerRect;
       
  1216     previewWnd = AknLayoutScalable_Avkon::popup_fep_char_preview_window(aLayoutParam).LayoutLine();
       
  1217     previewWndRect.LayoutRect( aParentWndRect, previewWnd );
       
  1218     previewWndInner = AknLayoutScalable_Avkon::bg_popup_fep_char_preview_window_g9().LayoutLine();
       
  1219     previewWndInnerRect.LayoutRect( previewWndRect.Rect(), previewWndInner );
       
  1220     aDataInfo.iPreviewWndRect = previewWndRect.Rect();
       
  1221     aDataInfo.iPreviewWndInnerRect = previewWndInnerRect.Rect();
       
  1222     aDataInfo.iPreviewWndText = AknLayoutScalable_Avkon::popup_fep_char_preview_window_t1(
       
  1223                               aLayoutParam).LayoutLine();
       
  1224     }
       
  1225 // ---------------------------------------------------------------------------
   925 // CPeninputLafDataVKB::NewL( TInt aLayoutType )
  1226 // CPeninputLafDataVKB::NewL( TInt aLayoutType )
   926 // (other items were commented in a header)
  1227 // (other items were commented in a header)
   927 // ---------------------------------------------------------------------------
  1228 // ---------------------------------------------------------------------------
   928 //	
  1229 //	
   929 CPeninputLafDataVKB* CPeninputLafDataVKB::NewL( TInt aLayoutType )
  1230 CPeninputLafDataVKB* CPeninputLafDataVKB::NewL( TInt aLayoutType )
  1145 	iLayoutDataInfo.ResetAndDestroy();
  1446 	iLayoutDataInfo.ResetAndDestroy();
  1146 	
  1447 	
  1147 	CPeninputQwtLayoutDataInfo* dataInfo = new( ELeave ) CPeninputQwtLayoutDataInfo;
  1448 	CPeninputQwtLayoutDataInfo* dataInfo = new( ELeave ) CPeninputQwtLayoutDataInfo;
  1148 	TAknWindowLineLayout appWnd; 
  1449 	TAknWindowLineLayout appWnd; 
  1149     TAknWindowLineLayout wndLayout;
  1450     TAknWindowLineLayout wndLayout;
       
  1451     TAknWindowLineLayout linelayout;
       
  1452     TAknLayoutRect layoutrect, keypaneRect, keycellRect, keylabelRect;
       
  1453     TRect rectBottomWin, rectVkbCtrl;
       
  1454     TPoint base;
  1150     TAknWindowLineLayout keypad, cellpane;
  1455     TAknWindowLineLayout keypad, cellpane;
  1151     
  1456     
  1152     TAknWindowLineLayout cellPaneBK;
  1457     TAknWindowLineLayout cellPaneBK;
  1153     TAknLayoutRect cellPaneBKRect;
  1458     TAknLayoutRect cellPaneBKRect;
  1154     TRect keyBKRect;
  1459     TRect keyBKRect;
  1157     TAknLayoutText keyTextLayout; 
  1462     TAknLayoutText keyTextLayout; 
  1158 	TAknTextLineLayout keyText;
  1463 	TAknTextLineLayout keyText;
  1159 	TRect keyRect;
  1464 	TRect keyRect;
  1160 	// -----------------------Landscape Mode--------------------------
  1465 	// -----------------------Landscape Mode--------------------------
  1161 	appWnd = AknLayoutScalable_Avkon::application_window(0).LayoutLine();
  1466 	appWnd = AknLayoutScalable_Avkon::application_window(0).LayoutLine();
  1162 	wndLayout = AknLayoutScalable_Avkon::popup_fep_vkb2_window(0).LayoutLine();
  1467 	wndLayout = AknLayoutScalable_Avkon::main_fep_vtchi_ss_pane(0).LayoutLine();
  1163 	wndRect.LayoutRect(appWnd.Rect(), wndLayout);
  1468 	wndRect.LayoutRect(appWnd.Rect(), wndLayout);
       
  1469 	// Bottom pane rect
       
  1470 	linelayout = AknLayoutScalable_Avkon::popup_fep_vkbss_window(0).LayoutLine();
       
  1471 	layoutrect.LayoutRect( wndRect.Rect(), linelayout );
       
  1472 	rectBottomWin = layoutrect.Rect();
       
  1473 	base = wndRect.Rect().iTl;
  1164 	// ==================10x3====================
  1474 	// ==================10x3====================
  1165 	// top pane and bottom pane
  1475 	// top pane and bottom pane
  1166 	GetTopAndBottomPaneInfo( wndRect.Rect(), ELayout10x3, 0, *dataInfo );
  1476 	GetTopAndBottomPaneInfo( wndRect.Rect(), ELayout10x3, 0, *dataInfo );
  1167 	// keypad
  1477 	// keypad
  1168 	keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(0).LayoutLine();
  1478 	// Modify begin
       
  1479 	keyText = AknLayoutScalable_Avkon::cell_vkbss_key_t1(0).LayoutLine();
       
  1480 	keyText.iB += 3;
  1169 	dataInfo->iKeypad.iTextLayout = keyText;
  1481 	dataInfo->iKeypad.iTextLayout = keyText;
  1170   	dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL);
  1482   	dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId( keyText.iFont, NULL );
  1171   	//dataInfo->iKeypad.iTxtRect = keyText.TextRect();
  1483   	
  1172 
  1484     keypad = AknLayoutScalable_Avkon::grid_vkbss_keypad_pane(0).LayoutLine();
  1173     keypad = AknLayoutScalable_Avkon::vkb2_area_keypad_pane(0).LayoutLine();
  1485   	keypadRect.LayoutRect( rectBottomWin, keypad );
  1174   	keypadRect.LayoutRect(wndRect.Rect(), keypad);
  1486   	
  1175   	dataInfo->iKeypad.iKaypadRect = keypadRect.Rect();
  1487   	linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(0).LayoutLine();
  1176   	//iKeypadRect10x3 = keypadRect.Rect();
  1488   	keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
  1177   	cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(0, 0, 0).LayoutLine();
  1489   	    
       
  1490   	rectVkbCtrl = keypadRect.Rect();
       
  1491     rectVkbCtrl.iBr.iY -= keypaneRect.Rect().Height();
       
  1492   	dataInfo->iKeypad.iKaypadRect = rectVkbCtrl;
       
  1493 
       
  1494   	linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(0).LayoutLine();
       
  1495   	keycellRect.LayoutRect( keypaneRect.Rect(), linelayout );
       
  1496   	
       
  1497   	linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(0).LayoutLine();
       
  1498   	keylabelRect.LayoutRect( keypaneRect.Rect(), linelayout );
       
  1499 
       
  1500   	linelayout = AknLayoutScalable_Avkon::aid_vkbss_key_offset(0).LayoutLine();    
       
  1501   	layoutrect.LayoutRect( keypadRect.Rect(), linelayout );
       
  1502   	TInt rowIndentWidth = layoutrect.Rect().Width();
       
  1503   	
       
  1504     TRect rectOfKeypad = RelativeRect( keypadRect.Rect(), base );
       
  1505     rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height(); 
       
  1506   	
       
  1507     TRect rectXPane = RelativeRect( keypaneRect.Rect(), base ); 
       
  1508     TRect rectXBorder = RelativeRect( keycellRect.Rect(), base );
       
  1509     TRect rectXInner = RelativeRect( keylabelRect.Rect(), base );
       
  1510 
       
  1511     rectXPane.Move( - rectOfKeypad.iTl ); //translate to keypad coord-sys
       
  1512     rectXBorder.Move( - rectOfKeypad.iTl );
       
  1513     rectXInner.Move( - rectOfKeypad.iTl );
       
  1514   	
  1178   	for( TInt i = 0; i < KKeypadLayout[0][1]; i++)
  1515   	for( TInt i = 0; i < KKeypadLayout[0][1]; i++)
  1179   		{
  1516   		{
       
  1517   		TInt indent = ( i % 2 == 1 ) ? rowIndentWidth : 0;
  1180   		for( TInt j = 0; j < KKeypadLayout[0][0]; j++)
  1518   		for( TInt j = 0; j < KKeypadLayout[0][0]; j++)
  1181   			{
  1519             {
  1182   			cellpane = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane(0, j, i).LayoutLine();
  1520             TRect bound = rectXBorder;
  1183   			cellpaneRect.LayoutRect(keypadRect.Rect(), cellpane);
  1521             bound.Move( j * rectXPane.Width(), i * rectXPane.Height() );
  1184   			keyRect = cellpaneRect.Rect();
  1522             bound.Move( indent, 0 );
  1185   			keyRect.Move( -keypadRect.Rect().iTl.iX, -keypadRect.Rect().iTl.iY );
  1523             
  1186             cellPaneBKRect.LayoutRect( keyRect, cellPaneBK );
  1524             dataInfo->iKeypad.iRects.AppendL( bound );
  1187             keyBKRect = cellPaneBKRect.Rect();
  1525             
  1188             dataInfo->iKeypad.iRects.AppendL(keyBKRect);
  1526             TRect inner = rectXPane;
  1189   			keyTextLayout.LayoutText(keyRect, keyText);
  1527             inner.Move( j * rectXPane.Width(), i * rectXPane.Height() );
  1190   			dataInfo->iKeypad.iCharRects.AppendL(keyTextLayout.TextRect());
  1528             inner.Move( indent, 0 );        
  1191   			}
  1529             
       
  1530             TAknLayoutText keyTextLayout; 
       
  1531             keyTextLayout.LayoutText( inner, keyText );
       
  1532             dataInfo->iKeypad.iCharRects.AppendL( keyTextLayout.TextRect() );
       
  1533             }
  1192   		}
  1534   		}
  1193  	keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(0).LayoutLine();
  1535   	// Modify end
  1194   	dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL);
  1536   	
  1195   	//dataInfo->iKeypad.iTxtRect = keyText.TextRect();	
  1537   	// Modify begin
       
  1538  	//keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(0).LayoutLine();
       
  1539   	//dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL);	
       
  1540   	// Modify end
  1196   	
  1541   	
  1197   	// Add candate list laf data for ITI features
  1542   	// Add candate list laf data for ITI features
  1198   	// Candidate list's parent Layout window is ITUT window
  1543   	// Candidate list's parent Layout window is ITUT window
  1199     TPeninputCandidateListLayoutData candidateListLAF;
  1544     TPeninputCandidateListLayoutData candidateListLAF;
  1200     TAknWindowLineLayout parentWnd;
  1545     TAknWindowLineLayout parentWnd;
  1215    	
  1560    	
  1216    	iLayoutDataInfo.AppendL( dataInfo ); 
  1561    	iLayoutDataInfo.AppendL( dataInfo ); 
  1217   	
  1562   	
  1218 	// ==================11x3====================
  1563 	// ==================11x3====================
  1219 	dataInfo = new( ELeave ) CPeninputQwtLayoutDataInfo;
  1564 	dataInfo = new( ELeave ) CPeninputQwtLayoutDataInfo;
  1220 	wndLayout = AknLayoutScalable_Avkon::popup_fep_vkb2_window(0).LayoutLine();
  1565 	// Modify begin
  1221 	wndRect.LayoutRect(appWnd.Rect(), wndLayout);
  1566 	//wndLayout = AknLayoutScalable_Avkon::popup_fep_vkb2_window(0).LayoutLine();
       
  1567 	//wndRect.LayoutRect(appWnd.Rect(), wndLayout);
       
  1568 	// Modify end
  1222 	// top pane and bottom pane
  1569 	// top pane and bottom pane
  1223 	GetTopAndBottomPaneInfo( wndRect.Rect(), ELayout11x3, 1, *dataInfo );	
  1570 	GetTopAndBottomPaneInfo( wndRect.Rect(), ELayout11x3, 1, *dataInfo );	
  1224 	// keypad
  1571 	// keypad
       
  1572 	// Modify begin
       
  1573 	/*
  1225     keypad = AknLayoutScalable_Avkon::vkb2_area_keypad_pane(1).LayoutLine();
  1574     keypad = AknLayoutScalable_Avkon::vkb2_area_keypad_pane(1).LayoutLine();
  1226   	keypadRect.LayoutRect(wndRect.Rect(), keypad);
  1575   	keypadRect.LayoutRect(wndRect.Rect(), keypad);
  1227   	dataInfo->iKeypad.iKaypadRect = keypadRect.Rect();
  1576   	dataInfo->iKeypad.iKaypadRect = keypadRect.Rect();
  1228     cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(1, 0, 0).LayoutLine();
  1577     cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(1, 0, 0).LayoutLine();
  1229   	
  1578   	
  1243 			}
  1592 			}
  1244 		}
  1593 		}
  1245 	keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(1).LayoutLine();
  1594 	keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(1).LayoutLine();
  1246   	dataInfo->iKeypad.iTextLayout = keyText;	
  1595   	dataInfo->iKeypad.iTextLayout = keyText;	
  1247   	dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL);
  1596   	dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL);
  1248   	//dataInfo->iKeypad.iTxtRect = keyText.TextRect();	  	
  1597   	*/
       
  1598 	
       
  1599 	keyText = AknLayoutScalable_Avkon::cell_vkbss_key_t1(2).LayoutLine();
       
  1600     keyText.iB += 3;
       
  1601     dataInfo->iKeypad.iTextLayout = keyText;
       
  1602     dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId( keyText.iFont, NULL );
       
  1603     
       
  1604     keypad = AknLayoutScalable_Avkon::grid_vkbss_keypad_pane(1).LayoutLine();
       
  1605     keypadRect.LayoutRect( rectBottomWin, keypad );
       
  1606     
       
  1607     linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(2).LayoutLine();
       
  1608     keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
       
  1609     
       
  1610     rectVkbCtrl = keypadRect.Rect();
       
  1611     rectVkbCtrl.iBr.iY -= keypaneRect.Rect().Height();
       
  1612     dataInfo->iKeypad.iKaypadRect = rectVkbCtrl;
       
  1613 
       
  1614     linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(2).LayoutLine();
       
  1615     keycellRect.LayoutRect( keypaneRect.Rect(), linelayout );
       
  1616     
       
  1617     linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(2).LayoutLine();
       
  1618     keylabelRect.LayoutRect( keypaneRect.Rect(), linelayout );
       
  1619 
       
  1620     linelayout = AknLayoutScalable_Avkon::aid_vkbss_key_offset(1).LayoutLine();    
       
  1621     layoutrect.LayoutRect( keypadRect.Rect(), linelayout );
       
  1622     rowIndentWidth = layoutrect.Rect().Width();
       
  1623     
       
  1624     rectOfKeypad = RelativeRect( keypadRect.Rect(), base );
       
  1625     rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height(); 
       
  1626     
       
  1627     rectXPane = RelativeRect( keypaneRect.Rect(), base ); 
       
  1628     rectXBorder = RelativeRect( keycellRect.Rect(), base );
       
  1629     rectXInner = RelativeRect( keylabelRect.Rect(), base );
       
  1630 
       
  1631     rectXPane.Move( - rectOfKeypad.iTl ); //translate to keypad coord-sys
       
  1632     rectXBorder.Move( - rectOfKeypad.iTl );
       
  1633     rectXInner.Move( - rectOfKeypad.iTl );
       
  1634     
       
  1635     for( TInt i = 0; i < KKeypadLayout[1][1]; i++)
       
  1636         {
       
  1637         TInt indent = ( i % 2 == 1 ) ? rowIndentWidth : 0;
       
  1638         for( TInt j = 0; j < KKeypadLayout[1][0]; j++)
       
  1639             {
       
  1640             TRect bound = rectXBorder;
       
  1641             bound.Move( j * rectXPane.Width(), i * rectXPane.Height() );
       
  1642             bound.Move( indent, 0 );
       
  1643             
       
  1644             dataInfo->iKeypad.iRects.AppendL( bound );
       
  1645             
       
  1646             TRect inner = rectXPane;
       
  1647             inner.Move( j * rectXPane.Width(), i * rectXPane.Height() );
       
  1648             inner.Move( indent, 0 );        
       
  1649             
       
  1650             TAknLayoutText keyTextLayout; 
       
  1651             keyTextLayout.LayoutText( inner, keyText );
       
  1652             dataInfo->iKeypad.iCharRects.AppendL( keyTextLayout.TextRect() );
       
  1653             }
       
  1654         }
       
  1655   	// Modify end
  1249   	
  1656   	
  1250     if ( isLandscape )
  1657     if ( isLandscape )
  1251         {
  1658         {
  1252       	// Add candate list laf data for ITI features
  1659       	// Add candate list laf data for ITI features
  1253        	dataInfo->iCandidateList = candidateListLAF;
  1660        	dataInfo->iCandidateList = candidateListLAF;
  1258 
  1665 
  1259    	iLayoutDataInfo.AppendL( dataInfo ); 
  1666    	iLayoutDataInfo.AppendL( dataInfo ); 
  1260 	
  1667 	
  1261 	// ==================11x4====================
  1668 	// ==================11x4====================
  1262 	dataInfo = new( ELeave ) CPeninputQwtLayoutDataInfo;
  1669 	dataInfo = new( ELeave ) CPeninputQwtLayoutDataInfo;
  1263 	wndLayout = AknLayoutScalable_Avkon::popup_fep_vkb2_window(0).LayoutLine();
  1670 	// Modify begin
  1264 	wndRect.LayoutRect(appWnd.Rect(), wndLayout);
  1671 	//wndLayout = AknLayoutScalable_Avkon::popup_fep_vkb2_window(0).LayoutLine();
       
  1672 	//wndRect.LayoutRect(appWnd.Rect(), wndLayout);
       
  1673 	// Modify end
  1265 	// top pane and bottom pane
  1674 	// top pane and bottom pane
  1266 	GetTopAndBottomPaneInfo( wndRect.Rect(), ELayout11x4, 2, *dataInfo );
  1675 	GetTopAndBottomPaneInfo( wndRect.Rect(), ELayout11x4, 2, *dataInfo );
       
  1676 	// Modify begin
  1267 	// keypad
  1677 	// keypad
       
  1678 	/*
  1268     keypad = AknLayoutScalable_Avkon::vkb2_area_keypad_pane(2).LayoutLine();
  1679     keypad = AknLayoutScalable_Avkon::vkb2_area_keypad_pane(2).LayoutLine();
  1269   	keypadRect.LayoutRect(wndRect.Rect(), keypad);
  1680   	keypadRect.LayoutRect(wndRect.Rect(), keypad);
  1270     dataInfo->iKeypad.iKaypadRect = keypadRect.Rect();
  1681     dataInfo->iKeypad.iKaypadRect = keypadRect.Rect();
  1271     cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(2, 0, 0).LayoutLine();
  1682     cellPaneBK = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_g1(2, 0, 0).LayoutLine();
  1272   	for( TInt i = 0; i < KKeypadLayout[2][1]; i++)
  1683   	for( TInt i = 0; i < KKeypadLayout[2][1]; i++)
  1285   			}
  1696   			}
  1286   		}
  1697   		}
  1287  	keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(2).LayoutLine();
  1698  	keyText = AknLayoutScalable_Avkon::vkb2_cell_keypad_pane_t1(2).LayoutLine();
  1288   	dataInfo->iKeypad.iTextLayout = keyText; 	
  1699   	dataInfo->iKeypad.iTextLayout = keyText; 	
  1289   	dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL);
  1700   	dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId(keyText.iFont, NULL);
  1290   	//dataInfo->iKeypad.iTxtRect = keyText.TextRect();	 	
  1701   	*/
       
  1702 	
       
  1703 	keyText = AknLayoutScalable_Avkon::cell_vkbss_key_t1(3).LayoutLine();
       
  1704     keyText.iB += 3;
       
  1705     dataInfo->iKeypad.iTextLayout = keyText;
       
  1706     dataInfo->iKeypad.iFont = AknLayoutUtils::FontFromId( keyText.iFont, NULL );
       
  1707     
       
  1708     keypad = AknLayoutScalable_Avkon::grid_vkbss_keypad_pane(1).LayoutLine();
       
  1709     keypadRect.LayoutRect( rectBottomWin, keypad );
       
  1710 
       
  1711     linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(3).LayoutLine();
       
  1712     keypaneRect.LayoutRect( keypadRect.Rect(), linelayout );
       
  1713     
       
  1714     rectVkbCtrl = keypadRect.Rect();
       
  1715     rectVkbCtrl.iBr.iY -= keypaneRect.Rect().Height();
       
  1716     dataInfo->iKeypad.iKaypadRect = rectVkbCtrl;    
       
  1717 
       
  1718     linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(3).LayoutLine();
       
  1719     keycellRect.LayoutRect( keypaneRect.Rect(), linelayout );
       
  1720     
       
  1721     linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(3).LayoutLine();
       
  1722     keylabelRect.LayoutRect( keypaneRect.Rect(), linelayout );
       
  1723 
       
  1724     linelayout = AknLayoutScalable_Avkon::aid_vkbss_key_offset(1).LayoutLine();    
       
  1725     layoutrect.LayoutRect( keypadRect.Rect(), linelayout );
       
  1726     rowIndentWidth = layoutrect.Rect().Width();
       
  1727     
       
  1728     rectOfKeypad = RelativeRect( keypadRect.Rect(), base );
       
  1729     rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height(); 
       
  1730     
       
  1731     rectXPane = RelativeRect( keypaneRect.Rect(), base ); 
       
  1732     rectXBorder = RelativeRect( keycellRect.Rect(), base );
       
  1733     rectXInner = RelativeRect( keylabelRect.Rect(), base );
       
  1734 
       
  1735     rectXPane.Move( - rectOfKeypad.iTl ); //translate to keypad coord-sys
       
  1736     rectXBorder.Move( - rectOfKeypad.iTl );
       
  1737     rectXInner.Move( - rectOfKeypad.iTl );
       
  1738     
       
  1739     for( TInt i = 0; i < KKeypadLayout[2][1]; i++)
       
  1740         {
       
  1741         TInt indent = ( i % 2 == 1 ) ? rowIndentWidth : 0;
       
  1742         for( TInt j = 0; j < KKeypadLayout[2][0]; j++)
       
  1743             {
       
  1744             TRect bound = rectXBorder;
       
  1745             bound.Move( j * rectXPane.Width(), i * rectXPane.Height() );
       
  1746             bound.Move( indent, 0 );
       
  1747             
       
  1748             dataInfo->iKeypad.iRects.AppendL( bound );
       
  1749             
       
  1750             TRect inner = rectXPane;
       
  1751             inner.Move( j * rectXPane.Width(), i * rectXPane.Height() );
       
  1752             inner.Move( indent, 0 );        
       
  1753             
       
  1754             TAknLayoutText keyTextLayout; 
       
  1755             keyTextLayout.LayoutText( inner, keyText );
       
  1756             dataInfo->iKeypad.iCharRects.AppendL( keyTextLayout.TextRect() );
       
  1757             }
       
  1758         }
       
  1759 	// Modify end
  1291   	
  1760   	
  1292     if ( isLandscape )
  1761     if ( isLandscape )
  1293         {
  1762         {
  1294       	// Add candate list laf data for ITI features
  1763       	// Add candate list laf data for ITI features
  1295        	dataInfo->iCandidateList = candidateListLAF;
  1764        	dataInfo->iCandidateList = candidateListLAF;