diff -r 5a1685599b76 -r 8152b1f1763a fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlInputPane.cpp --- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlInputPane.cpp Wed Sep 15 12:34:44 2010 +0300 +++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlInputPane.cpp Wed Oct 13 14:55:58 2010 +0300 @@ -41,7 +41,6 @@ #include "aknfepchineseuidataconv.h" #include "aknfepuilayoutdatamgr.h" - CAknFepUICtrlInputPane* CAknFepUICtrlInputPane::NewL(RWindow& aParent, TInputPaneLayout aPaneLayout, CAknFepUiLayoutDataMgr* aLafDataMgr ) @@ -71,7 +70,7 @@ // make sure that we only copy as many characters as we can show if(iLayout == ELayoutPhraseInputPane) { - TPtrC newText = aDes.Right( EMaxInputCharsInputPane ); + TPtrC newText = aDes.Right(CalculateMaxTextLength(aDes)); TPtr ptr = iBuffer->Des(); if(ptr != newText) @@ -117,7 +116,7 @@ iHighlighted = aHighlighted; // need to change highlight colors LayoutContainedControls(); - DrawNow(); + DrawDeferred(); } } @@ -199,27 +198,12 @@ TInt CAknFepUICtrlInputPane::LabelTextWidthInPixels() const { - TAknTextLineLayout textLayout; - if ( iLayout == ELayoutPhraseInputPane ) - { - textLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - - } - else if( iLayout == ELayoutPhrasePinyinPopupPane ) - { - textLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EInputTextLayout )); - } - - TAknLayoutText layoutText; - layoutText.LayoutText( Rect(), textLayout ); - - // Get the text font + TAknLayoutText layoutText = + CAknFepChineseUIDataConv::AnyToLayoutText( iLafDataMgr->RequestData( ELayoutInputPaneText )); const CFont* font = layoutText.Font(); TInt labelWidthInPixels = 0; - if ( font ) + if(font) { TBufC buf1; TPtr ptr1 = buf1.Des(); @@ -230,6 +214,8 @@ labelWidthInPixels = font->TextWidthInPixels(ptr1); labelWidthInPixels += font->TextWidthInPixels(ptr2); } + TInt maxWidth = layoutText.TextRect().Width(); + labelWidthInPixels = labelWidthInPixels > maxWidth? maxWidth:labelWidthInPixels; return labelWidthInPixels; } @@ -282,20 +268,18 @@ CWindowGc& gc = SystemGc(); MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - TRect outerRect; - TRect innerRect; - CalculateFrameRects(outerRect, innerRect); - if ( iHighlighted ) + if(iHighlighted) { - // Highlight state - skinnedDraw = AknsDrawUtils::DrawFrame( skin, gc, outerRect, innerRect, - KAknsIIDQsnFrKeypadButtonFrPressed, KAknsIIDDefault ); // or KAknsIIDDefault? + TRect outerRect; + TRect innerRect; + CalculateFrameRects(outerRect, innerRect); + skinnedDraw = AknsDrawUtils::DrawFrame( + skin, gc, outerRect, innerRect, KAknsIIDQsnFrList, KAknsIIDQsnFrListCenter); // or KAknsIIDDefault? } else { - // Normal state - skinnedDraw = AknsDrawUtils::DrawFrame( skin, gc, outerRect, innerRect, - KAknsIIDQsnFrKeypadButtonFrNormal, KAknsIIDDefault ); + MAknsControlContext* cc = AknsDrawUtils::ControlContext(this); + skinnedDraw = AknsDrawUtils::Background(skin, cc, this, gc, Rect()); } if(!skinnedDraw) @@ -360,20 +344,28 @@ combinedPtr.Copy(*iBuffer); combinedPtr.Append(iToneMarkBuffer); - TRect layoutRect = CAknFepChineseUIDataConv::AnyToRect( iLafDataMgr->RequestData( EPopupRectCandatate )); - TAknWindowLineLayout layoutLineRectEntryPane = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData( EEntryCLayout )); - TAknLayoutRect layoutRectEntryPane; - layoutRectEntryPane.LayoutRect( layoutRect, layoutLineRectEntryPane ); + TRect rect = Rect(); + if(iLayout == ELayoutPhrasePinyinPopupPane) + { + TAknLayoutRect layoutLineRectEntryPane = + CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ELayoutLineRectEntryPane )); + rect = layoutLineRectEntryPane.Rect(); + } + // avoid accessing text layout member data + TAknLayoutRect labelRect; - TAknTextLineLayout layoutLineText = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - + TAknWindowLineLayout layoutEntryItem = + CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutEntryItem)); + labelRect.LayoutRect(rect, layoutEntryItem); TAknLayoutText layoutText; - layoutText.LayoutText( layoutRectEntryPane.Rect(), layoutLineText ); + TAknTextLineLayout entryTextLine = + CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(EEntryTextLayout)); + layoutText.LayoutText(labelRect.Rect(),entryTextLine); + TInt maxWidth = layoutText.TextRect().Width(); - TInt maxWidth = layoutText.TextRect().Width(); - const CFont* font = layoutText.Font(); + TAknLayoutText layoutText1 = + CAknFepChineseUIDataConv::AnyToLayoutText( iLafDataMgr->RequestData( ELayoutInputPaneText )); + const CFont* font = layoutText1.Font(); TInt labelWidthInPixels = 0; if(font) @@ -415,42 +407,36 @@ void CAknFepUICtrlInputPane::LayoutContainedControls() { TRect rect = Rect(); - TAknWindowLineLayout layoutEntryItem; - TAknTextLineLayout textLayout; if(iLayout == ELayoutPhraseInputPane) { - layoutEntryItem = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData( EEntryCLayout )); - - textLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - + TAknWindowLineLayout layoutEntryItem = + CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutEntryItem)); + iUnselectedStringHighlight.LayoutRect(rect, layoutEntryItem); } else if(iLayout == ELayoutPhrasePinyinPopupPane) { - layoutEntryItem = - CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData( EInputLayout )); - textLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EInputTextLayout )); - } - - iUnselectedStringHighlight.LayoutRect(rect, layoutEntryItem); - + iUnselectedStringHighlight.LayoutRect(rect, AKN_LAYOUT_WINDOW_Input_highlight_Line_1(rect)); + } + + // layout spelling label + TAknTextLineLayout textLayout = + CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(EEntryTextLayout)); TAknLayoutText layoutText; + TRect rectHighlight = iUnselectedStringHighlight.Rect(); TRect textRect; - layoutText.LayoutText(rect,textLayout); + layoutText.LayoutText(rectHighlight,textLayout); textRect = layoutText.TextRect(); TRgb labelTextColor = layoutText.Color(); TInt labelWidth = LabelTextWidthInPixels(); - if ( textRect.Width() < labelWidth ) + if(textRect.Width() > labelWidth) { - textRect.SetWidth( labelWidth ); + textRect.SetWidth(labelWidth); } - iLabel->SetRect( textRect ); + iLabel->SetRect(textRect); const CFont* font = layoutText.Font(); - iLabel->SetFont( font ); + iLabel->SetFont(font); // layout tone mark label TRgb labelToneMarkTextColor = labelTextColor; @@ -463,8 +449,8 @@ toneMarkRect.iTl.iY = textRect.iTl.iY; toneMarkRect.iBr.iY = textRect.iBr.iY; toneMarkRect.SetWidth(labelWidth - toneMarkOffset); - iLabelToneMark->SetRect( toneMarkRect ); - iLabelToneMark->SetFont( font ); + iLabelToneMark->SetRect(toneMarkRect); + iLabelToneMark->SetFont(font); // once we have layed out the labels from LAF, override the colours from the skin if necessary // as the skin utils will only return RGB values, not colour ids. @@ -500,22 +486,23 @@ void CAknFepUICtrlInputPane::CalculateFrameRects(TRect& aOuterRect, TRect& aInnerRect) const { TRect windowRect = Rect(); - TAknTextLineLayout textLayout; - if ( iLayout == ELayoutPhraseInputPane ) - { - textLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine )); - + TRect entryRect = + CAknFepChineseUIDataConv::AnyToRect( iLafDataMgr->RequestData(EEntryPaneRect)); + + windowRect.SetHeight(entryRect.iBr.iY - entryRect.iTl.iY); + + TAknLayoutRect topLeft; + topLeft.LayoutRect(windowRect,SkinLayout::Submenu_skin_placing_Line_2()); + + TAknLayoutRect bottomRight; + bottomRight.LayoutRect(windowRect, SkinLayout::Submenu_skin_placing_Line_5()); + + aOuterRect = TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr); + aInnerRect = TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl); + if (aInnerRect.Width() <= 4) + { + aInnerRect.SetWidth(5); } - else if( iLayout == ELayoutPhrasePinyinPopupPane ) - { - textLayout = - CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EInputTextLayout )); - } - TAknLayoutText layoutInputPaneText; - layoutInputPaneText.LayoutText( windowRect, textLayout ); - aInnerRect = layoutInputPaneText.TextRect(); - aOuterRect = windowRect; } TInt CAknFepUICtrlInputPane::CalculateMaxTextLength(const TDesC& aDes) const