diff -r c8fb4cf7b3ae -r 5e18d8c489d6 textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp --- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp Tue May 11 16:31:42 2010 +0300 +++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp Tue May 25 13:03:44 2010 +0300 @@ -19,7 +19,7 @@ // INCLUDES #include #include -#include +#include #include "peninputfingerhwrarlafmanager.h" #include "peninputfingerhwrarcontrolid.h" @@ -32,6 +32,8 @@ const TInt KFuncButtonColNum = 4; const TInt KLandscapeVirtualKeypadRow = 4; const TInt KLandscapeVirtualKeypadCol = 6; +const TInt KLandscapeNumpadRow = 4; +const TInt KLandscapeNumpadCol = 4; // --------------------------------------------------------------------------- // Symbian Constructor @@ -81,6 +83,8 @@ { iSCTrectArray.Close(); iSymBtnRectArray.Close(); + iNumSCTrectArray.Close(); +// iNumSymBtnRectArray.Close(); } // --------------------------------------------------------------------------- @@ -268,7 +272,7 @@ { candRowPane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, row).LayoutLine(); candRowPaneRect.LayoutRect( rect, candRowPane ); - + for(TInt col = 0; col < KFuncButtonColNum; col++) { // cell pane @@ -288,14 +292,17 @@ iRectBtnOption = buttonRect[i++]; iRectBtnRangeSmb = buttonRect[i++]; iRectBtnBackspace = buttonRect[i++]; - iRectBtnArrowUp = buttonRect[i++]; - iRectBtnArrowDown = buttonRect[i++]; - iRectBtnArrowLeft = buttonRect[i++]; - iRectBtnArrowRight = buttonRect[i++]; + iRectBtnArrowLeft = buttonRect[i++]; + iRectBtnArrowRight = buttonRect[i++]; + iRectBtnSpace = buttonRect[i++]; + iRectBtnEnter = buttonRect[i++]; buttonRect.Close(); // padding size of Btn - iSizeBtnPadding = TSize(6, 6); + TInt xpad = iRectBtnOption.iTl.iX - iRectBtnClose.iBr.iX; + TInt ypad = iRectBtnArrowLeft.iTl.iY - iRectBtnClose.iBr.iY; + + iSizeBtnPadding = TSize(xpad, ypad); // padding size of arrow button if(iIsLandscape) @@ -345,6 +352,23 @@ } // --------------------------------------------------------------------------- +// CPeninputFingerHwrArLafManager::RetrieveLafDataForNumSymbolTable() +// Retrieve the laf data for number symbol table area +// --------------------------------------------------------------------------- +// +void CPeninputFingerHwrArLafManager::RetrieveLafDataForNumSymbolTable() + { + if(iIsLandscape) + { + RetrieveLandscapeLafDataForNumSymbolTable(); + } + else + { + RetrievePortraitLafDataForNumSymbolTable(); + } + } + +// --------------------------------------------------------------------------- // CPeninputFingerHwrArLafManager::RetrieveLandscapeLafDataForSymbolTable() // Retrieve the landscape laf data for symbol table area // --------------------------------------------------------------------------- @@ -363,53 +387,45 @@ candpaneRect.LayoutRect( iLayoutRect, candlistpane ); iRectOfSymbolTable = candpaneRect.Rect(); - // get candidate row1 pane + // get 1st row pane in button area TAknWindowLineLayout candRow1Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(1, 0, 0).LayoutLine(); TAknLayoutRect candrow1paneRect; candrow1paneRect.LayoutRect( iRectOfSymbolTable, candRow1Pane ); iSymBtnRectArray.Reset(); - for(TInt i = 0; i < 2; i++) - { - // get candidate cell pane with row 0 and col i - TAknWindowLineLayout cellPane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 0, i , 0 ). - LayoutLine(); - TAknLayoutRect cellPaneRect; - cellPaneRect.LayoutRect( candrow1paneRect.Rect(), cellPane ); + TAknWindowLineLayout cellPane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 5, 0, 0 ). + LayoutLine(); + TAknLayoutRect cellPaneRect; + cellPaneRect.LayoutRect( candrow1paneRect.Rect(), cellPane ); - // get the candidate cell bg pane with row 0 and col i - TAknWindowLineLayout candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).LayoutLine(); - TAknLayoutRect BgRect; - BgRect.LayoutRect( cellPaneRect.Rect(), candbgpane ); - iSymBtnRectArray.Append(BgRect.Rect()); - } - - TInt xGap = iSymBtnRectArray[1].iTl.iX - iSymBtnRectArray[0].iBr.iX; - TRect thirdBtn(iSymBtnRectArray[1]); - thirdBtn.Move(TPoint(iSymBtnRectArray[1].Width(),0)); - iSymBtnRectArray.Append(thirdBtn); - - TAknWindowLineLayout rowPane, key1bgpane, keypane; - TAknLayoutRect rowRect, key1bgRect, keyRect; - + // get the candidate cell bg pane with row 0 and col i + TAknWindowLineLayout cellbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(5).LayoutLine(); + TAknLayoutRect cellbgRect; + cellbgRect.LayoutRect( cellPaneRect.Rect(), cellbgpane ); + iSymBtnRectArray.Append(cellbgRect.Rect()); + //get 1st row pane in SCT area TAknWindowLineLayout row1Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(1, 0, 1).LayoutLine(); TAknLayoutRect row1Rect; row1Rect.LayoutRect(iRectOfSymbolTable,row1Pane); iRectSctpad.iTl = row1Rect.Rect().iTl; - iRectSctpad.iBr = iRectOfSymbolTable.iBr; +// iRectSctpad.iBr = iRectOfSymbolTable.iBr; + + TAknWindowLineLayout key1bgpane, keypane; + TAknLayoutRect key1bgRect, keyRect; + - keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3, 0 , 0 ). + keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 4, 0 , 0 ). LayoutLine(); keyRect.LayoutRect(row1Rect.Rect(), keypane); - key1bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine(); + key1bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(4).LayoutLine(); key1bgRect.LayoutRect(keyRect.Rect(), key1bgpane); - keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3, 1 , 0 ). + keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 4, 1 , 0 ). LayoutLine(); keyRect.LayoutRect(row1Rect.Rect(), keypane); - TAknWindowLineLayout key2bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine(); + TAknWindowLineLayout key2bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(4).LayoutLine(); TAknLayoutRect key2bgRect; key2bgRect.LayoutRect(keyRect.Rect(), key2bgpane); @@ -417,10 +433,10 @@ TAknLayoutRect row2Rect; row2Rect.LayoutRect(iRectOfSymbolTable,row2Pane); - keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3, 0 , 0 ).LayoutLine(); + keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 4, 0 , 0 ).LayoutLine(); keyRect.LayoutRect(row2Rect.Rect(), keypane); - TAknWindowLineLayout key3bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine(); + TAknWindowLineLayout key3bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(4).LayoutLine(); TAknLayoutRect key3bgRect; key3bgRect.LayoutRect(keyRect.Rect(), key3bgpane); @@ -444,6 +460,9 @@ iSCTrectArray.Append(cursorRect); } } + iRectOfSymbolTable.iBr = cursorRect.iBr; + iRectSctpad.iBr = iRectOfSymbolTable.iBr; + } // --------------------------------------------------------------------------- @@ -519,6 +538,144 @@ } // --------------------------------------------------------------------------- +// CPeninputFingerHwrArLafManager::RetrieveLandscapeLafDataForNumSymbolTable() +// Retrieve the landscape laf data for number symbol table area +// --------------------------------------------------------------------------- +// +void CPeninputFingerHwrArLafManager::RetrieveLandscapeLafDataForNumSymbolTable() + { +// TAknLayoutScalableParameterLimits candiPaneVariety = AknLayoutScalable_Avkon::fshwr2_func_candi_pane_ParamLimits(2); + + iNumSctpadRowCount = KLandscapeNumpadRow; + iNumSctpadColCount = KLandscapeNumpadCol; + + // get the functional buttons laf data for symbol table + // candidate list + TAknWindowLineLayout candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(2).LayoutLine(); + TAknLayoutRect candpaneRect; + candpaneRect.LayoutRect( iLayoutRect, candlistpane ); + iRectOfNumSymbolTable = candpaneRect.Rect(); + + // get candidate row1 pane + TAknWindowLineLayout candRow1Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(2, 0, 0).LayoutLine(); + TAknLayoutRect candrow1paneRect; + candrow1paneRect.LayoutRect( candpaneRect.Rect(), candRow1Pane ); + + TAknWindowLineLayout rowPane, key1bgpane, keypane; + TAknLayoutRect rowRect, key1bgRect, keyRect; + + iRectNumpad.iTl = candpaneRect.Rect().iTl; + + keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 6, 0 , 0 ). + LayoutLine(); + keyRect.LayoutRect(candrow1paneRect.Rect(), keypane); + + key1bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(6).LayoutLine(); + key1bgRect.LayoutRect(keyRect.Rect(), key1bgpane); + + keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 6, 1 , 0 ). + LayoutLine(); + keyRect.LayoutRect(candrow1paneRect.Rect(), keypane); + + TAknWindowLineLayout key2bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(6).LayoutLine(); + TAknLayoutRect key2bgRect; + key2bgRect.LayoutRect(keyRect.Rect(), key2bgpane); + + TAknWindowLineLayout row2Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(2, 0, 1).LayoutLine(); + TAknLayoutRect row2Rect; + row2Rect.LayoutRect(candpaneRect.Rect(),row2Pane); + + keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 6, 1, 0 ).LayoutLine(); + keyRect.LayoutRect(row2Rect.Rect(), keypane); + + TAknWindowLineLayout key3bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(6).LayoutLine(); + TAknLayoutRect key3bgRect; + key3bgRect.LayoutRect(keyRect.Rect(), key3bgpane); + + TInt keyHorizontalGap = key2bgRect.Rect().iTl.iX - key1bgRect.Rect().iBr.iX; + TInt keyVerticalGap = key3bgRect.Rect().iTl.iY - key1bgRect.Rect().iBr.iY; + + TRect cursorRect(key1bgRect.Rect()); + TRect originRect(key1bgRect.Rect()); + TInt rectHeight = cursorRect.Height(); + TInt rectWidth = cursorRect.Width(); + + iNumSCTrectArray.Reset(); + for(TInt i = 0; i < iNumSctpadRowCount; i++) + { + cursorRect = originRect; + cursorRect.Move(0,i*(rectHeight+keyVerticalGap)); + iNumSCTrectArray.Append(cursorRect); + for(TInt j = 1; j < iNumSctpadColCount; j++) + { + cursorRect.Move((rectWidth+keyHorizontalGap),0); + iNumSCTrectArray.Append(cursorRect); + } + } + + // calculate the symbol table rect + iRectOfNumSymbolTable.iBr = cursorRect.iBr; + iRectNumpad.iBr = iRectOfNumSymbolTable.iBr; + } + +// --------------------------------------------------------------------------- +// CPeninputFingerHwrArLafManager::RetrievePortraitLafDataForNumSymbolTable() +// Retrieve the portrait laf data for number symbol table area +// --------------------------------------------------------------------------- +// +void CPeninputFingerHwrArLafManager::RetrievePortraitLafDataForNumSymbolTable() + { + + // get the functional buttons laf data for number symbol table + // candidate list + TAknWindowLineLayout candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(1).LayoutLine(); + + TAknLayoutRect candpaneRect; + candpaneRect.LayoutRect( iLayoutRect, candlistpane ); + TRect rect = candpaneRect.Rect(); + + // get candidate row2 pane + TAknWindowLineLayout candRow2Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 1). + LayoutLine(); + TAknLayoutRect candrow2paneRect; + candrow2paneRect.LayoutRect( rect, candRow2Pane ); + iRectOfNumSymbolTable.iTl = candrow2paneRect.Rect().iTl; + + // get the virtual key rects + TAknWindowLineLayout writingBoxPane; + TAknLayoutRect boxRect; + writingBoxPane = AknLayoutScalable_Avkon::fshwr2_hwr_syb_pane(0).LayoutLine(); + boxRect.LayoutRect(iLayoutRect, writingBoxPane); + iRectNumpad = boxRect.Rect(); + + TAknWindowLineLayout keypane, keybgpane; + TAknLayoutRect keyRect, keybgRect; + + TAknLayoutScalableParameterLimits sctPaneVariety = + AknLayoutScalable_Avkon::cell_fshwr2_syb_pane_ParamLimits(0); + + iNumSctpadRowCount = sctPaneVariety.LastRow() + 1; + iNumSctpadColCount = sctPaneVariety.LastColumn() + 1; + + iNumSCTrectArray.Reset(); + for(TInt i = 0; i < iNumSctpadRowCount; i++) + { + for ( TInt j = 0; j < iNumSctpadColCount; j++ ) + { + keypane = AknLayoutScalable_Avkon::cell_fshwr2_syb_pane(0, j, i).LayoutLine(); + keyRect.LayoutRect(iRectNumpad, keypane); + keybgpane = AknLayoutScalable_Avkon::cell_fshwr2_syb_bg_pane(0).LayoutLine(); + keybgRect.LayoutRect(keyRect.Rect(), keybgpane); + iNumSCTrectArray.Append( keybgRect.Rect()); + } + } + iSizeNumSctpadCell = keybgRect.Rect().Size(); + + // calculate the symbol table rect + iRectOfNumSymbolTable.iBr = iRectNumpad.iBr; + } + +// --------------------------------------------------------------------------- // CPeninputFingerHwrArLafManager::RetrieveLafDataForPreviewBubble() // Retrieve the laf data for preview bubble // --------------------------------------------------------------------------- @@ -566,6 +723,9 @@ // retrieve the laf data of symbol table RetrieveLafDataForSymbolTable(); + // retrieve the laf data of number symbol table + RetrieveLafDataForNumSymbolTable(); + // retrieve the laf data of hwr box RetrieveLafDataForHwrBox(); #endif @@ -624,11 +784,11 @@ iSizeBtnPadding = TSize(6,6); iArrowPaddingSize = TSize(8,8); - iRectSpase = iRectBtnClose; - iRectSpase.Move(TPoint(0,buttonHight)); + iRectBtnSpace = iRectBtnClose; + iRectBtnSpace.Move(TPoint(0,buttonHight)); - iRectEnter = iRectSpase; - iRectEnter.Move(TPoint(buttonWidth,0)); + iRectBtnEnter = iRectBtnSpace; + iRectBtnEnter.Move(TPoint(buttonWidth,0)); // candate position iCandidateLTPos = iRectBtnClose.iTl + TPoint(0,buttonHight); @@ -814,6 +974,10 @@ { return iRectOfSymbolTable; } + case EHwrCtrlIdNumSymbolTableVkbGroup: + { + return iRectOfNumSymbolTable; + } case EHwrCtrlIdClose: { return iRectBtnClose; @@ -826,14 +990,6 @@ { return iRectBtnBackspace; } - case EHwrCtrlIdArrowUp: - { - return iRectBtnArrowUp; - } - case EHwrCtrlIdArrowDown: - { - return iRectBtnArrowDown; - } case EHwrCtrlIdArrowLeft: { return iRectBtnArrowLeft; @@ -842,6 +998,14 @@ { return iRectBtnArrowRight; } + case EHwrCtrlIdBtnEnter: + { + return iRectBtnEnter; + } + case EHwrCtrlIdBtnSpace: + { + return iRectBtnSpace; + } case EHwrCtrlIdLanguageOption: { return iRectBtnOption; @@ -853,7 +1017,7 @@ case EHwrCtrlId2Page2Btn: { return iRectBtnSctPage; - } + } } return TRect(); } @@ -960,6 +1124,24 @@ } // --------------------------------------------------------------------------- +// get row count of virtual number sctpad. +// --------------------------------------------------------------------------- +// +TInt CPeninputFingerHwrArLafManager::VirtualNumSctpadRowCount() + { + return iNumSctpadRowCount; + } + +// --------------------------------------------------------------------------- +// get column count of virtual number sctpad. +// --------------------------------------------------------------------------- +// +TInt CPeninputFingerHwrArLafManager::VirtualNumSctpadColCount() + { + return iNumSctpadColCount; + } + +// --------------------------------------------------------------------------- // get cell size of virtual sctpad. // --------------------------------------------------------------------------- // @@ -1022,13 +1204,58 @@ } // --------------------------------------------------------------------------- +// get cell rect of virtual sctpad. +// --------------------------------------------------------------------------- +// +void CPeninputFingerHwrArLafManager::GetNumVirtualKeyRects( RArray& aArrayRects ) + { + aArrayRects.Reset(); + + for(TInt i = 0; i < iNumSCTrectArray.Count(); i++) + { + TRect absoluteRect = iNumSCTrectArray[i]; + absoluteRect.Move(-iRectNumpad.iTl.iX, -iRectNumpad.iTl.iY); + aArrayRects.Append(absoluteRect); + } + } + +// --------------------------------------------------------------------------- // get text layout of virtual sctpad. // --------------------------------------------------------------------------- // TAknTextLineLayout CPeninputFingerHwrArLafManager::SctpadKeyTxtLayout() { - TAknTextLineLayout layout = AknLayoutScalable_Avkon:: - cell_fshwr2_syb_bg_pane_t1(0).LayoutLine(); + TAknTextLineLayout layout; + if(iIsLandscape) + { + layout = AknLayoutScalable_Avkon:: + fshwr2_func_candi_cell_pane_t1(4).LayoutLine(); + } + else + { + layout = AknLayoutScalable_Avkon:: + cell_fshwr2_syb_bg_pane_t1(0).LayoutLine(); + } + return layout; + } + +// --------------------------------------------------------------------------- +// get text layout of virtual sctpad. +// --------------------------------------------------------------------------- +// +TAknTextLineLayout CPeninputFingerHwrArLafManager::NumpadKeyTxtLayout() + { + TAknTextLineLayout layout; + if(iIsLandscape) + { + layout = AknLayoutScalable_Avkon:: + fshwr2_func_candi_cell_pane_t1(6).LayoutLine(); + } + else + { + layout = AknLayoutScalable_Avkon:: + cell_fshwr2_syb_bg_pane_t1(0).LayoutLine(); + } return layout; } @@ -1105,6 +1332,15 @@ } // --------------------------------------------------------------------------- +// get rect for virtual number keypad +// --------------------------------------------------------------------------- +// +TRect CPeninputFingerHwrArLafManager::GetVirtualNumKeyRect() + { + return iRectNumpad; + } + +// --------------------------------------------------------------------------- // get rect for hwr indicator // --------------------------------------------------------------------------- //