fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlInputPane.cpp
branchRCL_3
changeset 50 5a1685599b76
parent 0 eb1f2e154e89
child 56 8152b1f1763a
--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlInputPane.cpp	Tue Sep 14 21:59:06 2010 +0300
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlInputPane.cpp	Wed Sep 15 12:34:44 2010 +0300
@@ -41,6 +41,7 @@
 #include "aknfepchineseuidataconv.h"
 #include "aknfepuilayoutdatamgr.h"
 
+
 CAknFepUICtrlInputPane* CAknFepUICtrlInputPane::NewL(RWindow& aParent, 
                                                      TInputPaneLayout aPaneLayout,
                                                      CAknFepUiLayoutDataMgr* aLafDataMgr )
@@ -70,7 +71,7 @@
     // make sure that we only copy as many characters as we can show
     if(iLayout == ELayoutPhraseInputPane)
         {
-        TPtrC newText = aDes.Right(CalculateMaxTextLength(aDes));        
+        TPtrC newText = aDes.Right( EMaxInputCharsInputPane );        
         TPtr ptr = iBuffer->Des();
 
         if(ptr != newText)
@@ -116,7 +117,7 @@
         iHighlighted = aHighlighted;
         // need to change highlight colors
         LayoutContainedControls();
-        DrawDeferred();
+        DrawNow();
         }
     }
 
@@ -198,12 +199,27 @@
 
 TInt CAknFepUICtrlInputPane::LabelTextWidthInPixels() const
     {
-    TAknLayoutText layoutText = 
-            CAknFepChineseUIDataConv::AnyToLayoutText( iLafDataMgr->RequestData( ELayoutInputPaneText ));
+    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
     const CFont* font = layoutText.Font();
 
     TInt labelWidthInPixels = 0;
-    if(font)
+    if ( font )
         {
         TBufC<EMaxInputCharsInputPane> buf1;
         TPtr ptr1 = buf1.Des();
@@ -214,8 +230,6 @@
         labelWidthInPixels = font->TextWidthInPixels(ptr1); 
         labelWidthInPixels += font->TextWidthInPixels(ptr2);
         }
-    TInt maxWidth = layoutText.TextRect().Width(); 
-    labelWidthInPixels = labelWidthInPixels > maxWidth? maxWidth:labelWidthInPixels;
     return labelWidthInPixels;
     }
 
@@ -268,18 +282,20 @@
     CWindowGc& gc = SystemGc();
 
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    if(iHighlighted)
+    TRect outerRect;
+    TRect innerRect;
+    CalculateFrameRects(outerRect, innerRect);
+    if ( iHighlighted )
         {
-        TRect outerRect;
-        TRect innerRect;
-        CalculateFrameRects(outerRect, innerRect);
-        skinnedDraw = AknsDrawUtils::DrawFrame(
-            skin, gc, outerRect, innerRect, KAknsIIDQsnFrList, KAknsIIDQsnFrListCenter); // or KAknsIIDDefault?
+		// Highlight state
+        skinnedDraw = AknsDrawUtils::DrawFrame( skin, gc, outerRect, innerRect, 
+												KAknsIIDQsnFrKeypadButtonFrPressed, KAknsIIDDefault ); // or KAknsIIDDefault?
         }
     else
         {
-        MAknsControlContext* cc = AknsDrawUtils::ControlContext(this);
-        skinnedDraw = AknsDrawUtils::Background(skin, cc, this, gc, Rect());
+		// Normal state
+        skinnedDraw = AknsDrawUtils::DrawFrame( skin, gc, outerRect, innerRect, 
+												KAknsIIDQsnFrKeypadButtonFrNormal, KAknsIIDDefault );
         }
 
     if(!skinnedDraw)
@@ -344,28 +360,20 @@
     combinedPtr.Copy(*iBuffer);
     combinedPtr.Append(iToneMarkBuffer);
 
-    TRect rect = Rect();
-    if(iLayout == ELayoutPhrasePinyinPopupPane)
-        {
-        TAknLayoutRect layoutLineRectEntryPane = 
-                CAknFepChineseUIDataConv::AnyToLayoutRect( iLafDataMgr->RequestData( ELayoutLineRectEntryPane ));
-        rect = layoutLineRectEntryPane.Rect();
-        }
-    // avoid accessing text layout member data
-    TAknLayoutRect labelRect;
+    TRect layoutRect = CAknFepChineseUIDataConv::AnyToRect( iLafDataMgr->RequestData( EPopupRectCandatate ));
+    TAknWindowLineLayout layoutLineRectEntryPane = 
+                    CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData( EEntryCLayout ));
+    TAknLayoutRect layoutRectEntryPane;
+    layoutRectEntryPane.LayoutRect( layoutRect, layoutLineRectEntryPane );
     
-    TAknWindowLineLayout layoutEntryItem = 
-            CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutEntryItem));
-    labelRect.LayoutRect(rect, layoutEntryItem);
+    TAknTextLineLayout layoutLineText = 
+                        CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine ));    
+   
     TAknLayoutText layoutText;
-    TAknTextLineLayout entryTextLine = 
-        CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(EEntryTextLayout));
-    layoutText.LayoutText(labelRect.Rect(),entryTextLine);
-    TInt maxWidth = layoutText.TextRect().Width(); 
+    layoutText.LayoutText( layoutRectEntryPane.Rect(), layoutLineText );
     
-    TAknLayoutText layoutText1 = 
-            CAknFepChineseUIDataConv::AnyToLayoutText( iLafDataMgr->RequestData( ELayoutInputPaneText ));
-    const CFont* font = layoutText1.Font();
+    TInt maxWidth = layoutText.TextRect().Width();    
+    const CFont* font = layoutText.Font();
 
     TInt labelWidthInPixels = 0;
     if(font)
@@ -407,36 +415,42 @@
 void CAknFepUICtrlInputPane::LayoutContainedControls()
     {
     TRect rect = Rect();
+    TAknWindowLineLayout layoutEntryItem;
+    TAknTextLineLayout textLayout;
     if(iLayout == ELayoutPhraseInputPane)
 		{
-	    TAknWindowLineLayout layoutEntryItem = 
-	            CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutEntryItem));
-        iUnselectedStringHighlight.LayoutRect(rect, layoutEntryItem);
+		layoutEntryItem = 
+	            CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData( EEntryCLayout ));
+		
+		textLayout = 
+		        CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine ));
+        
         }
     else if(iLayout == ELayoutPhrasePinyinPopupPane) 
 		{
-        iUnselectedStringHighlight.LayoutRect(rect, AKN_LAYOUT_WINDOW_Input_highlight_Line_1(rect));
-        }
-
-    // layout spelling label    
-    TAknTextLineLayout textLayout = 
-        CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(EEntryTextLayout));
+		layoutEntryItem = 
+    	            CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData( EInputLayout ));
+		textLayout = 
+		        CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EInputTextLayout ));
+		}
+    
+    iUnselectedStringHighlight.LayoutRect(rect, layoutEntryItem);
+    
     TAknLayoutText layoutText;
-    TRect rectHighlight = iUnselectedStringHighlight.Rect();
     TRect textRect;
     
-    layoutText.LayoutText(rectHighlight,textLayout);
+    layoutText.LayoutText(rect,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;
@@ -449,8 +463,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.
@@ -486,23 +500,22 @@
 void CAknFepUICtrlInputPane::CalculateFrameRects(TRect& aOuterRect, TRect& aInnerRect) const
     {
     TRect windowRect = Rect();
-    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);
+    TAknTextLineLayout textLayout;
+    if ( iLayout == ELayoutPhraseInputPane )
+		{
+		textLayout = 
+		        CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData( EEEPTextLine ));
+        
         }
+    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