diff -r ecbabf52600f -r bd83ceabce89 textinput/peninputgenericvkb/src/peninputgenericlafdatamgr.cpp --- a/textinput/peninputgenericvkb/src/peninputgenericlafdatamgr.cpp Wed Sep 01 12:23:33 2010 +0100 +++ b/textinput/peninputgenericvkb/src/peninputgenericlafdatamgr.cpp Tue Sep 14 21:59:06 2010 +0300 @@ -1038,12 +1038,17 @@ aDataInfo.iQwtRect = aParentWndRect; TInt v1, v2, gridLayoutVariant; + + // Get the variant for Portrait QWERTY + TInt cellVariantForPortraitQWERTY; + switch ( aLayoutType ) { case ELayout10x3: { v1 = 0; v2 = 0; + cellVariantForPortraitQWERTY = 0; gridLayoutVariant = 1; break; } @@ -1051,6 +1056,7 @@ { v1 = 1; v2 = 2; + cellVariantForPortraitQWERTY = 2; gridLayoutVariant = 1; break; } @@ -1058,6 +1064,7 @@ { v1 = 1; v2 = 3; + cellVariantForPortraitQWERTY = 3; gridLayoutVariant = 2; break; } @@ -1065,7 +1072,9 @@ { v1 = 0; v2 = 0; + cellVariantForPortraitQWERTY = 0; gridLayoutVariant = 1; + break; } } @@ -1164,6 +1173,32 @@ linelayout = AknLayoutScalable_Avkon::grid_vkbss_keypad_pane(v1).LayoutLine(); keypadRect.LayoutRect( rectBottomWin, linelayout ); + TInt rowNumberOfKeyboard; + TInt gapValue; + switch ( aLayoutType ) + { + case ELayout10x3: + { + rowNumberOfKeyboard = 3; + break; + } + case ELayout11x3: + { + rowNumberOfKeyboard = 3; + break; + } + case ELayout11x4: + { + rowNumberOfKeyboard = 4; + break; + } + default: + { + rowNumberOfKeyboard = 3; + break; + } + } + if ( !isPortraitFSQEnabled || ( isPortraitFSQEnabled && Layout_Meta_Data::IsLandscapeOrientation() ) ) { @@ -1192,7 +1227,10 @@ pic3pRightWidth = layoutrect.Rect().Width(); TRect rectXPane = keypaneRect.Rect(); - rect = keycellRect.Rect(); + + // the key rect without gap + rect = keypaneRect.Rect(); + rect.Move( - rectXPane.iTl.iX, - rectXPane.iTl.iY ); TRect rectXBorder = rect; rect = keylabelRect.Rect(); @@ -1205,11 +1243,14 @@ rect = keypadRect.Rect(); rect.Move( - base.iX, - base.iY ); - TRect rectOfKeypad = rect; - TRect rectOfButtons = rectOfKeypad; - rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height(); - rectOfButtons.iTl.iY += rectOfKeypad.Height(); - + + TRect rectOfButtons = rect; + // The gap between the top of the first row key and the top of the keyboard + gapValue = keypaneRect.Rect().iTl.iY - keypadRect.Rect().iTl.iY; + // compute the top left Y coordinate of the function buttons + rectOfButtons.iTl.iY = rectOfButtons.iTl.iY + + keypaneRect.Rect().Height() * rowNumberOfKeyboard + gapValue; + TInt spaceBtnWidth = rectOfButtons.Width() - rectXPane.Width() * 8; TInt dx = rectOfButtons.iTl.iX; TInt dy = rectOfButtons.iTl.iY; @@ -1270,8 +1311,8 @@ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(15).LayoutLine(); bottomRowRect.LayoutRect( keypadRect.Rect(), linelayout ); - // key cell rect - linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(8).LayoutLine(); + // key cell rect with out gap + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(15).LayoutLine(); keycellRect.LayoutRect( bottomRowRect.Rect(), linelayout ); // key label rect @@ -1289,10 +1330,23 @@ rect = keypadRect.Rect(); rect.Move( - base.iX, - base.iY ); - TRect rectOfKeypad = rect; - TRect rectOfButtons = rectOfKeypad; - rectOfKeypad.iBr.iY -= ( bottomRowRect.Rect().Height() ); - rectOfButtons.iTl.iY += rectOfKeypad.Height(); + + // Get the height of one key + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane( + cellVariantForPortraitQWERTY ).LayoutLine(); + keycellRect.LayoutRect( keypadRect.Rect(), linelayout ); + TInt theHeightOfTheKey = keycellRect.Rect().Height(); + // Compute the gap between the top of the first row key and + // the top of the keyboard + gapValue = keycellRect.Rect().iTl.iY - keypadRect.Rect().iTl.iY; + // Get the second row function button's height + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(4).LayoutLine(); + keycellRect.LayoutRect( keypadRect.Rect(), linelayout ); + + TRect rectOfButtons = rect; + // compute the top left Y coordinate of the first row function buttons + rectOfButtons.iTl.iY += keycellRect.Rect().Height() + + theHeightOfTheKey * rowNumberOfKeyboard + gapValue + 1; TInt dx = rectOfButtons.iTl.iX; TInt dy = rectOfButtons.iTl.iY; @@ -1332,8 +1386,8 @@ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(4).LayoutLine(); shiftRect.LayoutRect( keypadRect.Rect(), linelayout ); - // key cell rect - linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(4).LayoutLine(); + // key cell rect without gap + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(4).LayoutLine(); keycellRect.LayoutRect( shiftRect.Rect(), linelayout ); // key label rect @@ -1351,6 +1405,8 @@ // Update the height to account for the second row rectOfButtons.iTl.iY -= shiftRect.Rect().Height(); + // adjust the Y coordinate + rectOfButtons.iTl.iY -= 1; dx = rectOfButtons.iTl.iX; dy = rectOfButtons.iTl.iY; @@ -1363,8 +1419,8 @@ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(8).LayoutLine(); spaceRect.LayoutRect( keypadRect.Rect(), linelayout ); - // key cell rect - linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(5).LayoutLine(); + // key cell rect without gap + linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_pane(8).LayoutLine(); keycellRect.LayoutRect( spaceRect.Rect(), linelayout ); // key label rect @@ -1660,6 +1716,8 @@ TAknLayoutText keyTextLayout; TAknTextLineLayout keyText; TRect keyRect; + // The gap value of keyboard + TInt gapValue; TBool isLandscape = Layout_Meta_Data::IsLandscapeOrientation(); @@ -1733,7 +1791,12 @@ } rectVkbCtrl = keypadRect.Rect(); - rectVkbCtrl.iBr.iY -= functionKeyRowsHeight; + // Compute the gap between first row key's top line and keyboard's top line + gapValue = keypaneRect.Rect().iTl.iY - rectVkbCtrl.iTl.iY; + // Compute keyboard position + rectVkbCtrl.iBr.iY = rectVkbCtrl.iTl.iY + keypaneRect.Rect().Height() * 3 + gapValue; + rectVkbCtrl.iTl.iY += gapValue; + dataInfo->iKeypad.iKaypadRect = rectVkbCtrl; linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(0).LayoutLine(); @@ -1742,10 +1805,6 @@ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(0).LayoutLine(); keylabelRect.LayoutRect( keypaneRect.Rect(), linelayout ); - linelayout = AknLayoutScalable_Avkon::aid_vkbss_key_offset(0).LayoutLine(); - layoutrect.LayoutRect( keypadRect.Rect(), linelayout ); - TInt rowIndentWidth = layoutrect.Rect().Width(); - TRect rectOfKeypad = RelativeRect( keypadRect.Rect(), base ); rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height(); @@ -1759,18 +1818,15 @@ for( TInt i = 0; i < KKeypadLayout[0][1]; i++) { - TInt indent = ( i % 2 == 1 ) ? rowIndentWidth : 0; for( TInt j = 0; j < KKeypadLayout[0][0]; j++) { TRect bound = rectXPane; bound.Move( j * rectXPane.Width(), i * rectXPane.Height() ); - bound.Move( indent, 0 ); dataInfo->iKeypad.iRects.AppendL( bound ); TRect inner = rectXPane; inner.Move( j * rectXPane.Width(), i * rectXPane.Height() ); - inner.Move( indent, 0 ); TAknLayoutText keyTextLayout; keyTextLayout.LayoutText( inner, keyText ); @@ -1888,7 +1944,13 @@ } rectVkbCtrl = keypadRect.Rect(); - rectVkbCtrl.iBr.iY -= functionKeyRowsHeight; + + // Compute the gap between first row key's top line and keyboard's top line + gapValue = keypaneRect.Rect().iTl.iY - rectVkbCtrl.iTl.iY; + // Compute keyboard position + rectVkbCtrl.iBr.iY = rectVkbCtrl.iTl.iY + keypaneRect.Rect().Height() * 3 + gapValue; + rectVkbCtrl.iTl.iY += gapValue; + dataInfo->iKeypad.iKaypadRect = rectVkbCtrl; linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(2).LayoutLine(); @@ -1897,10 +1959,6 @@ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(2).LayoutLine(); keylabelRect.LayoutRect( keypaneRect.Rect(), linelayout ); - linelayout = AknLayoutScalable_Avkon::aid_vkbss_key_offset(1).LayoutLine(); - layoutrect.LayoutRect( keypadRect.Rect(), linelayout ); - rowIndentWidth = layoutrect.Rect().Width(); - rectOfKeypad = RelativeRect( keypadRect.Rect(), base ); rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height(); @@ -1914,18 +1972,15 @@ for( TInt i = 0; i < KKeypadLayout[1][1]; i++) { - TInt indent = ( i % 2 == 1 ) ? rowIndentWidth : 0; for( TInt j = 0; j < KKeypadLayout[1][0]; j++) { TRect bound = rectXPane; bound.Move( j * rectXPane.Width(), i * rectXPane.Height() ); - bound.Move( indent, 0 ); dataInfo->iKeypad.iRects.AppendL( bound ); TRect inner = rectXPane; inner.Move( j * rectXPane.Width(), i * rectXPane.Height() ); - inner.Move( indent, 0 ); TAknLayoutText keyTextLayout; keyTextLayout.LayoutText( inner, keyText ); @@ -2031,8 +2086,14 @@ keypaneRect.LayoutRect( keypadRect.Rect(), linelayout ); } - rectVkbCtrl = keypadRect.Rect(); - rectVkbCtrl.iBr.iY -= functionKeyRowsHeight; + rectVkbCtrl = keypadRect.Rect(); + + // Compute the gap between first row key's top line and keyboard's top line + gapValue = keypaneRect.Rect().iTl.iY - rectVkbCtrl.iTl.iY; + // Compute keyboard position + rectVkbCtrl.iBr.iY = rectVkbCtrl.iTl.iY + keypaneRect.Rect().Height() * 4 + gapValue; + rectVkbCtrl.iTl.iY += gapValue; + dataInfo->iKeypad.iKaypadRect = rectVkbCtrl; linelayout = AknLayoutScalable_Avkon::bg_cell_vkbss_key_g1(3).LayoutLine(); @@ -2041,10 +2102,6 @@ linelayout = AknLayoutScalable_Avkon::cell_vkbss_key_g1(3).LayoutLine(); keylabelRect.LayoutRect( keypaneRect.Rect(), linelayout ); - linelayout = AknLayoutScalable_Avkon::aid_vkbss_key_offset(1).LayoutLine(); - layoutrect.LayoutRect( keypadRect.Rect(), linelayout ); - rowIndentWidth = layoutrect.Rect().Width(); - rectOfKeypad = RelativeRect( keypadRect.Rect(), base ); rectOfKeypad.iBr.iY -= keypaneRect.Rect().Height(); @@ -2058,18 +2115,15 @@ for( TInt i = 0; i < KKeypadLayout[2][1]; i++) { - TInt indent = ( i % 2 == 1 ) ? rowIndentWidth : 0; for( TInt j = 0; j < KKeypadLayout[2][0]; j++) { TRect bound = rectXPane; bound.Move( j * rectXPane.Width(), i * rectXPane.Height() ); - bound.Move( indent, 0 ); dataInfo->iKeypad.iRects.AppendL( bound ); TRect inner = rectXPane; inner.Move( j * rectXPane.Width(), i * rectXPane.Height() ); - inner.Move( indent, 0 ); TAknLayoutText keyTextLayout; keyTextLayout.LayoutText( inner, keyText );