fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictivePane.cpp
changeset 40 2cb9bae34d17
parent 31 f1bdd6b078d1
child 49 37f5d84451bd
--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlJapanesePredictivePane.cpp	Tue Jul 06 14:38:41 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1089 +0,0 @@
-/*
-* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0""
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:            Predictive candidate list
-*
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-// INCLUDE FILES
-#include <eikdef.h>
-#include <aknViewAppUi.h>
-#include <avkon.hrh>
-#include <aknPopup.h>
-#include <aknlists.h>
-#include <aknPopupHeadingPane.h>
-#include <AknsDrawUtils.h>
-#include <AknsBasicBackgroundControlContext.h>
-#include <aknfep.rsg>
-#include <barsread.h>
-#include <eikmop.h>
-#include <AknLayout.lag>
-#include <aknlayoutscalable_avkon.cdl.h>
-
-#include "AknFepUiInterfacePanic.h"
-#include "AknFepGlobalEnums.h"
-#include "AknFepUIAvkonCtrlJapanesePredictiveListbox.h"
-#include "AknFepUIAvkonCtrlJapanesePredictivePane.h"
-#include "AknFepUIManagerJapanese.h"
-
-// CONSTANTS
-const TInt KMaxListColumns = 30;
-const TInt KLAFBaseListRows = 1;
-const TInt KLAFBelowTextBaseline = 2;
-const TInt KLAFAboveTextBaseline = 1;
-const TInt KSpaceCharCode = ' ';
-const TInt KListboxFlameMarge = 4;
-const TInt KScrollRightMarge = 5;
-const TInt KListboxMarge = 3;
-
-/**
-*  CAknFepUICtrlJapanesePredictivePane class.
-*
-*/
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CAknFepUICtrlJapanesePredictivePane* CAknFepUICtrlJapanesePredictivePane::NewL(CAknFepUIManagerJapanese* aUiMng)
-    {
-    CAknFepUICtrlJapanesePredictivePane* self =
-        new(ELeave)CAknFepUICtrlJapanesePredictivePane(aUiMng);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);    // self
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::~CAknFepUICtrlJapanesePredictivePane
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CAknFepUICtrlJapanesePredictivePane::~CAknFepUICtrlJapanesePredictivePane()
-    {
-    if (IsVisible())
-        {
-        HideWindow();
-        }
-
-    if (iListBox)
-        {
-        delete iListBox;
-        iListBox = NULL;
-        }
-
-    if (iLineInfoArray)
-        {
-        iLineInfoArray->ResetAndDestroy();
-        delete iLineInfoArray;
-        iLineInfoArray = NULL;
-        }
-
-    if (iListTextArray)
-        {
-        delete iListTextArray;
-        iListTextArray = NULL;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::ShowWindow
-// Show Pop-up list
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::ShowWindow()
-    {
-    RWindow& window=Window();
-    //Set ordinal position to top
-    window.SetOrdinalPosition(0,ECoeWinPriorityFep);
-    window.SetFaded(EFalse, RWindowTreeNode::EFadeIncludeChildren);
-    window.SetPointerCapture(ETrue);
-    TRAP_IGNORE( ActivateL());
-    MakeVisible(ETrue);
-    DrawNow();
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::ClosePredictiveList
-// Close Pop-up list
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::ClosePredictiveList()
-    {
-    CancelPopup();
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::SetCurrentItemIndex
-// Specify the cursor position of a pop-up list.
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::SetCurrentItemIndex(TInt aItemIndex)
-    {
-    CAknFepUICtrlJapanesePredictiveListBoxModel* model =
-        static_cast<CAknFepUICtrlJapanesePredictiveListBoxModel*>(ListBox()->Model());
-    const TInt maximumItems = model->MaximumItems();
-
-    if (aItemIndex > maximumItems)
-        {
-        aItemIndex = maximumItems;
-        }
-
-    CAknFepUICtrlJapanesePredictiveListbox* listBox =
-        static_cast<CAknFepUICtrlJapanesePredictiveListbox*>(ListBox());
-
-    listBox->SetCurrentCandidateNo(aItemIndex, EFalse);
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::SetOffsetPosition
-// Specify the display position of a pop-up list
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::SetOffsetPosition(TPoint aOffset)
-    {
-    iOffsetPosition = aOffset;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::SetWindowPosition
-// Set position to show candidate list
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::SetWindowPosition(
-                                                const TPoint& aLeftSideOfBaseLine,
-                                                TInt aHeight,
-                                                TInt aAscent)
-    {
-    // getting rectangle of main pane
-    TRect screen =
-        TRect(0, 0, AKN_LAYOUT_WINDOW_screen.iW, AKN_LAYOUT_WINDOW_screen.iH);
-    TAknLayoutRect main_pane;
-    main_pane.LayoutRect(screen, AKN_LAYOUT_WINDOW_main_pane(screen, 0, 1, 1));
-    iMainPaneRect = main_pane.Rect();
-
-    TInt leftPos = aLeftSideOfBaseLine.iX;
-    if (leftPos < 0)
-        {
-        leftPos = iOffsetPosition.iX;
-        }
-
-    TPoint windowOffset(
-        leftPos,
-        aLeftSideOfBaseLine.iY + aHeight - aAscent - iMainPaneRect.iTl.iY);
-    SetOffsetPosition(windowOffset);
-
-    iSrcTextHeight = aHeight;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::ShowCandidateListL
-// Show Pop-up list
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::ShowCandidateListL(
-        CDesCArrayFlat* aItems, TInt aIndex, TInt aResourceID)
-    {
-    __ASSERT_DEBUG(aItems->Count() > 0,
-                   AknFepUiInterfacePanic(EAknFepUiInterfacePanicCandidatesEmpty));
-
-    if (iLineInfoArray)
-        {
-        iLineInfoArray->ResetAndDestroy();
-        }
-    delete iLineInfoArray;
-    delete iListTextArray;
-    iLineInfoArray = NULL;
-    iListTextArray = NULL;
-    // getting listbox width by a pixel unit
-    TAknWindowLineLayout laf =
-        AKN_LAYOUT_WINDOW_popup_fep_japan_predictive_window(0, 0);
-    TAknTextLineLayout textLineLayout =
-        AKN_LAYOUT_TEXT_Predictive_candidate_selection_list_texts_Line_1(0,0);
-    TAknWindowLineLayout scrollLineLayout = AknLayoutScalable_Avkon::scroll_pane_cp29().LayoutLine();
-    TAknLayoutText text;
-    text.LayoutText(laf.Rect(), textLineLayout);
-    TInt allowDrawWidth = text.TextRect().Width() - scrollLineLayout.iW;
-
-    iLineInfoArray = CreatePredictivePopupLineInfoArrayL(
-        aItems, allowDrawWidth, textLineLayout.iFont);
-    iListTextArray = CreateListTextArrayL(iLineInfoArray);
-
-    // Set listitems.
-    CAknFepUICtrlJapanesePredictiveListBoxModel* model =
-        static_cast<CAknFepUICtrlJapanesePredictiveListBoxModel*>(ListBox()->Model());
-    model->SetMaximumItems(aItems->Count());
-    model->SetLineInfoArray(iLineInfoArray);
-    model->SetItemTextArray(iListTextArray);
-    model->SetOwnershipType(ELbmDoesNotOwnItemArray);
-
-    iMaximumRows = MaximumRows(model);
-
-    SetCurrentItemIndex(aIndex);
-    SetMaximumHeight(iMaximumRows);
-
-    // Show popup list
-    TBool notShowingPopup =
-        model->NumberOfItems() == 0 && iWindowType < 0x80;
-    if (notShowingPopup)
-        {
-        const TSize screenSize=iCoeEnv->ScreenDevice()->SizeInPixels();
-        iPopoutCba->SetBoundingRect(TRect(screenSize));
-        }
-
-    // Create a CBA for use with the popup
-    if (aResourceID)
-        {
-        UpdateCbaL(aResourceID);
-        }
-
-    SetupWindowLayout(iWindowType);
-
-    iListBox->SetListBoxObserver(this);
-
-    if (iMarkable)
-        {
-        // If markable, set the popup to observe event change events.
-        // Call HandleControlEvent to set the CBA appropriate to the 1st item
-        iListBox->SetObserver(this);
-        HandleControlEventL(iListBox, EEventStateChanged);
-        }
-
-    if (IsVisible())
-        {
-        DrawDeferred();
-        }
-    else
-        {
-        ShowWindow();
-        ActivateL();
-        ShowWindowCbaL();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::HideWindow
-// Hide Pop-up list
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::HideWindow()
-    {
-    MakeVisible(EFalse);
-    Window().SetPointerCapture(EFalse);
-
-    iEikonEnv->RemoveFromStack(iPopoutCba);
-
-    iPopoutCba->MakeVisible(EFalse);
-
-    iCurrentResource = 0;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::CurrentItemIndexOfCandidate
-// Return a selected candidate item number currently
-// -----------------------------------------------------------------------------
-//
-TInt CAknFepUICtrlJapanesePredictivePane::CurrentItemIndexOfCandidate()
-    {
-    if (IsVisible())
-        {
-        CAknFepUICtrlJapanesePredictiveListbox* listBox =
-            static_cast<CAknFepUICtrlJapanesePredictiveListbox*>(ListBox());
-        return listBox->CurrentCandidateNo();
-        }
-    return -1;      // Disable window
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::MoveItem
-// Move a current item in an appointed direction
-// -----------------------------------------------------------------------------
-//
-TInt CAknFepUICtrlJapanesePredictivePane::MoveItem(
-        TAknFepUICtrlScroll aDirection)
-    {
-    __ASSERT_DEBUG(iListBox->IsVisible(),
-                   AknFepUiInterfacePanic(EAknFepUiInterfacePanicNoCandidatePane));
-
-    TInt ret = 0;
-
-    switch(aDirection)
-        {
-        case EScrollLeft:
-            ret = MovePreviousItem();
-            break;
-
-        case EScrollRight:
-            ret = MoveNextItem();
-            break;
-
-        case EScrollUp:
-            ret = MovePreviousLineItem();
-            break;
-
-        case EScrollDown:
-            ret = MoveNextLineItem();
-            break;
-
-        default:
-        //Panic
-            AknFepUiInterfacePanic(EAknFepUiInterfacePanicCandidatePaneNotSupportScrollDirection);
-            break;
-        }
-    return ret;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::SetupWindowLayout
-// Set up a window layout type
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::SetupWindowLayout(
-        AknPopupLayouts::TAknPopupLayouts /*aType*/)
-    {
-    HandleSizeChanged(Layout(), NULL, ListBox(), this);
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::AttemptExitL
-// Set the title for the selection list
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::AttemptExitL(TBool aAccept)
-    {
-    if (iReturn) //Always not null unless ExecuteLD leaves
-        *iReturn = aAccept;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::MopSupplyObject
-// -----------------------------------------------------------------------------
-//
-TTypeUid::Ptr CAknFepUICtrlJapanesePredictivePane::MopSupplyObject(TTypeUid aId)
-    {
-    SetMopParent( iEikonEnv->EikAppUi() );
-    return CAknPopupList::MopSupplyObject(aId);
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::CAknFepUICtrlJapanesePredictivePane
-// Constructor
-// -----------------------------------------------------------------------------
-//
-CAknFepUICtrlJapanesePredictivePane::CAknFepUICtrlJapanesePredictivePane(CAknFepUIManagerJapanese* aUiMng)
-    : iUiMng(aUiMng)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::ConstructL()
-    {
-    // Create listbox
-    CAknFepUICtrlJapanesePredictiveListbox* list =
-                new(ELeave) CAknFepUICtrlJapanesePredictiveListbox;
-    // "iListBox" member variable is defined in CAknPopupList class.
-    iListBox = list;
-    CAknPopupList::ConstructL(
-        list, R_AKNFEP_SOFTKEYS_CONVERT_OTHER_SELECT, AknPopupLayouts::EMenuWindow);
-
-    list->ConstructL(this, CEikListBox::ELeftDownInViewRect);
-    list->CreateScrollBarFrameL(ETrue);
-    list->ScrollBarFrame()->SetScrollBarVisibilityL(
-                                CEikScrollBarFrame::EOff,
-                                CEikScrollBarFrame::EAuto);
-
-    SetNonFocusing();
-    MakeVisible(EFalse);
-    iLineInfoArray = NULL;
-    iListTextArray = NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::CreatePredictivePopupLineInfoArrayL
-// Create a array with line information in candidate list
-// -----------------------------------------------------------------------------
-CPredictivePopupLineInfoArray*
-CAknFepUICtrlJapanesePredictivePane::CreatePredictivePopupLineInfoArrayL(
-        CDesCArrayFlat* aItems,
-        const TInt aMaxDisplayWidthInPixel,
-        const TInt aFontId)
-    {
-    CPredictivePopupLineInfoArray* lineArray =
-        new(ELeave) CPredictivePopupLineInfoArray(1);
-    CleanupStack::PushL(lineArray);
-
-    // getting font object from font id
-    const CFont* font = AknLayoutUtils::FontFromId(aFontId);
-
-    TInt displayWidthInPixel = aMaxDisplayWidthInPixel;
-    TInt elementStartXPos = 0;
-
-    TBuf<KMaxListColumns*2> bufferOfLine;
-    CPredictivePopupElementArray* elementArray = NULL;
-
-    const TInt widthOfSpaceInPixel = font->CharWidthInPixels(KSpaceCharCode);
-    const TInt numberOfItem = aItems->Count();
-    TInt i;
-    for (i = 0; i < numberOfItem; i++)
-        {
-        TPtrC itemText = aItems->MdcaPoint(i);
-        TInt itemTextLength = itemText.Length();
-
-        // getting a number of characters within width
-        TInt count = font->TextCount(itemText, displayWidthInPixel);
-
-        // If a candidate cannot occupy a line, it is
-        // continued in next line
-        if (count < itemTextLength && elementArray)
-            {
-            PredictivePopupAppendLineL(lineArray, bufferOfLine, elementArray);
-            CleanupStack::Pop(elementArray);    // elementArray
-            elementArray = NULL;
-            bufferOfLine.SetLength(0);
-
-            displayWidthInPixel = aMaxDisplayWidthInPixel;
-            elementStartXPos = 0;
-            count = font->TextCount(itemText, displayWidthInPixel);
-            }
-
-        FOREVER
-            {
-            if (!elementArray)
-                {
-                elementArray = new(ELeave) CPredictivePopupElementArray(1);
-                CleanupStack::PushL(elementArray);
-                }
-
-            TPtrC elementText = itemText.Left(count);
-            TInt  elementWidthInPixels = font->TextWidthInPixels(elementText);
-
-            // setting a item string to line string
-            bufferOfLine.Append(elementText);
-            displayWidthInPixel -= elementWidthInPixels;
-
-            TPredictivePopupElement& element = elementArray->ExtendL();
-            element.iStartXPos = elementStartXPos;
-            elementStartXPos += elementWidthInPixels;
-            element.iEndXPos   = elementStartXPos;
-            element.iCandidateNo = i;
-
-            // creating a string which removes a item string
-            itemTextLength -= count;
-            if (itemTextLength > 0)
-                {
-                // If this line is full, add this line and create a new line.
-                PredictivePopupAppendLineL(lineArray, bufferOfLine, elementArray);
-                CleanupStack::Pop(elementArray);    // elementArray
-                elementArray = NULL;
-                bufferOfLine.SetLength(0);
-
-                itemText.Set(itemText.Right(itemTextLength));
-                displayWidthInPixel = aMaxDisplayWidthInPixel;
-                elementStartXPos = 0;
-
-                // Calculating a number of characters which be able to shown in the width and
-                // cutting the string
-                count = font->TextCount(itemText, displayWidthInPixel);
-                }
-            else
-                {
-                break;
-                }
-            }
-
-        if (displayWidthInPixel > widthOfSpaceInPixel)
-            {
-            // adding space if it is possible to add space
-            bufferOfLine.Append(KSpaceCharCode);
-            displayWidthInPixel -= widthOfSpaceInPixel;
-            elementStartXPos    += widthOfSpaceInPixel;
-            }
-        else
-            {
-            // adding a line information if it isn't possible to add space
-            PredictivePopupAppendLineL(lineArray, bufferOfLine, elementArray);
-            CleanupStack::Pop(elementArray);    // elementArray
-            elementArray = NULL;
-            bufferOfLine.SetLength(0);
-
-            displayWidthInPixel = aMaxDisplayWidthInPixel - 1;
-            elementStartXPos = 0;
-            }
-        }
-
-    if (bufferOfLine.Length() > 0 && elementArray)
-        {
-        PredictivePopupAppendLineL(lineArray, bufferOfLine, elementArray);
-        CleanupStack::Pop(elementArray);    // elementArray
-        }
-
-    CleanupStack::Pop(lineArray);    // lineArray
-
-    return lineArray;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::PredictivePopupAppendLineL
-// Append to array with line information
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::PredictivePopupAppendLineL(
-        CPredictivePopupLineInfoArray* aLineArray,
-        const TDesC& aLineText,
-        CPredictivePopupElementArray* aElementArray)
-    {
-    HBufC* lineTextBuf = HBufC::NewL(aLineText.Length());
-    CleanupStack::PushL(lineTextBuf);
-    TPtr lineTextBufPtr = lineTextBuf->Des();
-    lineTextBufPtr.Copy(aLineText);
-
-    CPredictivePopupLineInfo* lineInfo = new(ELeave) CPredictivePopupLineInfo;
-    CleanupStack::PushL(lineInfo);
-
-    aLineArray->AppendL(lineInfo);
-    CleanupStack::Pop(2, lineTextBuf); // lineTextBuf, lineInfo
-
-    // After that set to line information items,
-    // becasue the following member variables are deleted
-    // in the destractor of CPredictivePopupLineInfo if leave occurs.
-    lineInfo->iLineText = lineTextBuf;
-    lineInfo->iElementsOnLine = aElementArray;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::CreateListTextArrayL
-// Create arrary with string to show in a line
-// -----------------------------------------------------------------------------
-//
-CDesCArrayFlat* CAknFepUICtrlJapanesePredictivePane::CreateListTextArrayL(
-        CPredictivePopupLineInfoArray* aLineArray)
-    {
-    CDesCArrayFlat* textArray = new(ELeave) CDesCArrayFlat(1);
-    CleanupStack::PushL(textArray);
-
-    const TInt numberOfItem = aLineArray->Count();
-    TInt i;
-    for (i = 0; i < numberOfItem; i++)
-        {
-        CPredictivePopupLineInfo* lineInfo = aLineArray->At(i);
-        textArray->AppendL(*lineInfo->iLineText);
-        }
-
-    CleanupStack::Pop(textArray);    // textArray
-
-    return textArray;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::HandleSizeChanged
-// The handler function for size change
-//
-// Original function is AknPopupLayouts::HandleSizeChanged()
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::HandleSizeChanged(
-        TAknPopupWindowLayoutDef& aDef,
-        CAknPopupHeadingPane* aHeading,
-        CEikListBox* aListBox,
-        CCoeControl* aWindowOwningControl)
-    {
-    TInt numofitems = aListBox->Model()->NumberOfItems();
-
-    TInt minItems = KJapPredictiveVisibleListRowsMin;
-    TInt maxItems = KJapPredictiveVisibleListRowsMax;
-
-    if (aDef.iMaximumHeight)
-        {
-        maxItems = aDef.iMaximumHeight;
-        }
-    AknPopupLayouts::CheckRange(numofitems, minItems, maxItems);
-    CalcPopupMenuWindow(aDef, iMainPaneRect, numofitems);
-    SetupMenuPopupWindow(aDef, numofitems, aHeading != 0);
-
-    aWindowOwningControl->SetRect(AknPopupLayouts::WindowRect(aDef));
-    HandleSizeAndPositionOfComponents(aDef, aListBox, aHeading);
-
-    TRect windowRect = AknPopupLayouts::WindowRect(aDef);
-    MAknsControlContext *cc = AknsDrawUtils::ControlContext( aListBox );
-    TBool defaultContext = EFalse;
-    if (!cc)
-        {
-        cc = aListBox->View()->ItemDrawer()->SkinBackgroundControlContext();
-        defaultContext = ETrue;
-        }
-
-    if (cc)
-        {
-        CAknsBasicBackgroundControlContext *bcc =
-            (CAknsBasicBackgroundControlContext*)cc;
-        TAknLayoutRect popupBgRect;
-
-        popupBgRect.LayoutRect(
-            windowRect,
-            ELayoutEmpty,
-            0, 0, ELayoutEmpty, ELayoutEmpty,
-            windowRect.Size().iWidth, windowRect.Size().iHeight);
-
-        bcc->SetBitmap(KAknsIIDQsnFrPopupCenter);
-
-        if (defaultContext)
-            {
-            bcc->SetRect(popupBgRect.Rect());
-            }
-
-        bcc->SetParentPos(aWindowOwningControl->PositionRelativeToScreen());
-
-        if (defaultContext)
-            {
-            bcc->SetParentPos(TPoint(0, 0));
-            }
-        }
-     }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::HandleDraw
-// The handler function for Draw
-//
-// Original function is AknPopupLayouts::HandleDraw()
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::HandleDraw(CEikonEnv* /*aEikEnv*/,
-                  CWindowGc& aGc,
-                  const TAknPopupWindowLayoutDef& aDef,
-                  CEikListBox* aListBox,
-                  CAknPopupHeadingPane* /*aHeading*/)
-    {
-    aGc.Clear();
-
-    TRect windowRect =
-        AknPopupLayouts::MenuRect(const_cast<TAknPopupWindowLayoutDef&>(aDef));
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    MAknsControlContext* cc = AknsDrawUtils::ControlContext(aListBox);
-    TBool windowFrameDrawn = EFalse;
-    if (!cc)
-        {
-        cc = aListBox->View()->ItemDrawer()->SkinBackgroundControlContext();
-        }
-
-    if (cc)
-        {
-        // drawing frame
-        TAknLayoutRect topLeft;
-        topLeft.LayoutRect(
-            windowRect,
-            ELayoutEmpty,
-            0, 0, ELayoutEmpty, ELayoutEmpty, KListboxFlameMarge, KListboxFlameMarge);
-
-        TAknLayoutRect bottomRight;
-        bottomRight.LayoutRect(
-            windowRect,
-            ELayoutEmpty,
-            ELayoutEmpty, ELayoutEmpty, 0, 0, KListboxFlameMarge, KListboxFlameMarge);
-
-        TRect outerRect = TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr);
-        TRect innerRect = TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl);
-        aGc.SetPenStyle(CGraphicsContext::ENullPen);
-        const TAknsItemID *frameId = &KAknsIIDQsnFrPopupSub;
-        const TAknsItemID *frameCenterId = &KAknsIIDQsnFrPopupCenter;
-        windowFrameDrawn = AknsDrawUtils::DrawFrame(
-                skin, aGc, outerRect, innerRect, *frameId, *frameCenterId);
-        }
-
-    if (!windowFrameDrawn)
-        {
-        DrawWindowShadow(
-            aGc,
-            aDef.iCover, aDef.iSecond, aDef.iFirst, aDef.iOutline, aDef.iInside);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::CalcPopupMenuWindow
-// Set up the information on a pop-up window
-//
-// Original function is AknPopupLayouts::CalcPopupMenuWindow()
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::CalcPopupMenuWindow(
-        TAknPopupWindowLayoutDef &aDef,const TRect& aRect, TInt /*aNum*/)
-    {
-    TAknLayoutRect popup_menu_window;
-
-    TBool sizeDesideFlag = EFalse;
-    TInt adjustOffsetX = 0;
-    TInt adjustOffsetY = 0;
-
-    TAknWindowLineLayout laf =
-        AKN_LAYOUT_WINDOW_popup_fep_japan_predictive_window(
-            0, iMaximumRows - KJapPredictiveVisibleListRowsMin);
-    laf.il = 0;
-    laf.it = 0;
-    TAknWindowLineLayout maxlaf =
-        AKN_LAYOUT_WINDOW_popup_fep_japan_predictive_window(
-            0, KJapPredictiveVisibleListRowsMax - KJapPredictiveVisibleListRowsMin);
-    laf.il = 0;
-    maxlaf.it = 0;
-
-    popup_menu_window.LayoutRect(aRect, laf);
-
-    // checking whether list can be drawn under the position which popup window is dispalyed
-    if (iMainPaneRect.iTl.iY
-        + iOffsetPosition.iY + KLAFBelowTextBaseline
-        + maxlaf.iH < iMainPaneRect.iBr.iY)
-        {
-        // deciding the position which popup window is dispalyed
-        adjustOffsetY = (-1) * KLAFBelowTextBaseline;
-        sizeDesideFlag = ETrue;
-        }
-
-        // checking whether list can be drawn top the position which popup window is dispalyed
-    else if (iMainPaneRect.iTl.iY
-            + iOffsetPosition.iY - KLAFAboveTextBaseline
-            - iSrcTextHeight
-            - popup_menu_window.Rect().Height() > iMainPaneRect.iTl.iY)
-        {
-        // deciding the position which popup window is dispalyed
-        adjustOffsetY = iSrcTextHeight + KLAFAboveTextBaseline + popup_menu_window.Rect().Height();
-        sizeDesideFlag = ETrue;
-        }
-
-    // display the bottom of window in case the displaying position isn't decided
-    //
-    if (!sizeDesideFlag)
-        {
-        TAknWindowLineLayout laf =
-            AKN_LAYOUT_WINDOW_popup_fep_japan_predictive_window(
-                0, KJapPredictiveVisibleListRowsMax - KLAFBaseListRows);
-        laf.il = 0;
-        laf.it = 0;
-        popup_menu_window.LayoutRect(aRect, laf);
-        adjustOffsetY =
-            iMainPaneRect.iTl.iY
-            + iOffsetPosition.iY + KLAFBelowTextBaseline
-            + popup_menu_window.Rect().Height() - iMainPaneRect.iBr.iY;
-
-        iMaximumRows = KJapPredictiveVisibleListRowsMin;
-        sizeDesideFlag = ETrue;
-        }
-
-    adjustOffsetX =
-        iMainPaneRect.iTl.iX
-        + iOffsetPosition.iX
-        + popup_menu_window.Rect().Width() - iMainPaneRect.iBr.iX;
-    adjustOffsetX = (adjustOffsetX > 0) ? adjustOffsetX : 0;
-
-    TPoint adjustOffset(-adjustOffsetX, -adjustOffsetY);
-
-    aDef.iWindowRect = popup_menu_window.Rect();
-    aDef.iWindowRect.Move(iOffsetPosition);
-    aDef.iWindowRect.Move(adjustOffset);
-
-    TRect window_rect = AknPopupLayouts::MenuRect(aDef);
-    aDef.iCover.LayoutRect(
-        window_rect,
-        AKN_LAYOUT_WINDOW_Predictive_candidate_selection_popup_window_graphics_Line_1(aDef.iWindowRect));
-    aDef.iSecond.LayoutRect(
-        window_rect,
-        AKN_LAYOUT_WINDOW_Predictive_candidate_selection_popup_window_graphics_Line_2(aDef.iWindowRect));
-    aDef.iFirst.LayoutRect(
-        window_rect,
-        AKN_LAYOUT_WINDOW_Predictive_candidate_selection_popup_window_graphics_Line_2(aDef.iWindowRect));
-    aDef.iOutline.LayoutRect(
-        window_rect,
-        AKN_LAYOUT_WINDOW_Predictive_candidate_selection_popup_window_graphics_Line_3(aDef.iWindowRect));
-    aDef.iInside.LayoutRect(
-        window_rect,
-        AKN_LAYOUT_WINDOW_Predictive_candidate_selection_popup_window_graphics_Line_4(aDef.iWindowRect));
-    aDef.iPopupMenuWindowOffset = TPoint(0, 0);
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::SetupMenuPopupWindow
-// Set up the information on a pop-up window
-//
-// Original function is AknPopupLayouts::SetupMenuPopupWindow()
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::SetupMenuPopupWindow(TAknPopupWindowLayoutDef &aDef, TInt /*num*/, TBool /*heading*/)
-    {
-    AknPopupLayouts::SetupDefaults(aDef);
-    TRect window_rect = AknPopupLayouts::MenuRect(aDef);
-
-    // setting size of listbox pane
-    TAknWindowLineLayout laf =
-        AKN_LAYOUT_WINDOW_popup_fep_japan_predictive_window(0, iMaximumRows - KLAFBaseListRows);
-
-    laf.il = KListboxMarge;
-    laf.it = KListboxMarge;
-    laf.iW -= KListboxMarge*2;
-    laf.iH = laf.iH - KListboxMarge*2 - (laf.iH-KListboxMarge*2)%iMaximumRows;
-    aDef.iListRect.LayoutRect(window_rect, laf);
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::HandleSizeAndPositionOfComponents
-// The handler function for size and a location
-//
-// Original function is AknPopupLayouts::HandleSizeAndPositionOfComponents()
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::HandleSizeAndPositionOfComponents(
-        const TAknPopupWindowLayoutDef &aDef,
-        CCoeControl *aContent,
-        CAknPopupHeadingPane* /*aHeading*/)
-    {
-    TRect lbrect = aDef.iListRect.Rect();
-
-   if (AknLayoutUtils::ScalableLayoutInterfaceAvailable())
-        {
-        // set scroll size
-        CAknFepUICtrlJapanesePredictiveListbox* listBox =
-            static_cast<CAknFepUICtrlJapanesePredictiveListbox*>(aContent);
-        CAknFepUICtrlJapanesePredictiveListBoxModel* model =
-            static_cast<CAknFepUICtrlJapanesePredictiveListBoxModel*>(listBox->Model());
-        TInt maxRows = model->LineInfoArray()->Count();
-        if (maxRows > KJapPredictiveVisibleListRowsMax)
-            {
-            TAknWindowLineLayout scrollLineLayout = AknLayoutScalable_Avkon::scroll_pane_cp29().LayoutLine();
-            lbrect.iBr.iX -= (scrollLineLayout.iW + KScrollRightMarge - KListboxMarge);
-            }
-        }
-
-    aContent->SetRect(lbrect);
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::DrawWindowShadow
-// Draw window shadow
-//
-// Original function is AknDrawWithSkins::DrawWindowShadow()
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::DrawWindowShadow(
-        CWindowGc& aGc,
-        const TAknLayoutRect& aCoverRect,
-        const TAknLayoutRect& /*aSecondShadowRect*/,
-        const TAknLayoutRect& aFirstShadowRect,
-        const TAknLayoutRect& aOutlineFrameRect,
-        const TAknLayoutRect& aInsideAreaRect)
-    {
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
-    // draw rectangle
-    aGc.SetBrushColor(aCoverRect.Color());
-    AknsDrawUtils::Background(skin, NULL, NULL, aGc, aCoverRect.Rect());
-
-    aFirstShadowRect.DrawOutLineRect(aGc);
-
-    aOutlineFrameRect.DrawOutLineRect(aGc);
-
-    aGc.SetBrushStyle(CGraphicsContext::ESolidBrush);
-    aGc.SetBrushColor(aInsideAreaRect.Color());
-    AknsDrawUtils::Background(skin, NULL, NULL, aGc, aInsideAreaRect.Rect());
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::MaximumRows
-// calculate maximum columns from items of listbox
-// -----------------------------------------------------------------------------
-//
-TInt CAknFepUICtrlJapanesePredictivePane::MaximumRows(
-        CTextListBoxModel* aModel)
-    {
-    CAknFepUICtrlJapanesePredictiveListBoxModel* model =
-        static_cast<CAknFepUICtrlJapanesePredictiveListBoxModel*>(aModel);
-    TInt maxRows = model->LineInfoArray()->Count();
-    TInt maxVisibleRows = Min(KJapPredictiveVisibleListRowsMax, maxRows);
-    maxVisibleRows = Max(KJapPredictiveVisibleListRowsMin, maxVisibleRows);
-    return maxVisibleRows;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::Draw
-// Called by the framework to draw the control
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::Draw(const TRect& /*aRect*/) const
-    {
-    CWindowGc& gc = SystemGc();
-    gc.Clear();
-    HandleDraw(iEikonEnv, gc, Layout(), iListBox, Heading());
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::OfferKeyEventL
-// Handle key events. When a key event occurs
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CAknFepUICtrlJapanesePredictivePane::OfferKeyEventL(
-        const TKeyEvent& /*aKeyEvent*/,TEventCode /*aType*/)
-    {
-    return EKeyWasNotConsumed;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::MovePreviousItem
-// selecting a next candidate
-// -----------------------------------------------------------------------------
-//
-TInt CAknFepUICtrlJapanesePredictivePane::MovePreviousItem()
-    {
-    CAknFepUICtrlJapanesePredictiveListbox* listBox =
-        static_cast<CAknFepUICtrlJapanesePredictiveListbox*>(ListBox());
-
-    return listBox->MovePreviousItem();
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::MoveNextItem
-// selecting a next candidate
-// -----------------------------------------------------------------------------
-//
-TInt CAknFepUICtrlJapanesePredictivePane::MoveNextItem()
-    {
-    CAknFepUICtrlJapanesePredictiveListbox* listBox =
-        static_cast<CAknFepUICtrlJapanesePredictiveListbox*>(ListBox());
-
-    return listBox->MoveNextItem();
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::MovePreviousLineItem
-// selecting a previous line candidate
-// -----------------------------------------------------------------------------
-//
-TInt CAknFepUICtrlJapanesePredictivePane::MovePreviousLineItem()
-    {
-    CAknFepUICtrlJapanesePredictiveListbox* listBox =
-        static_cast<CAknFepUICtrlJapanesePredictiveListbox*>(ListBox());
-
-    return listBox->MovePreviousLineItem();
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::MoveNextLineItem
-// selecting a next line candidate
-// -----------------------------------------------------------------------------
-//
-TInt CAknFepUICtrlJapanesePredictivePane::MoveNextLineItem()
-    {
-    CAknFepUICtrlJapanesePredictiveListbox* listBox =
-        static_cast<CAknFepUICtrlJapanesePredictiveListbox*>(ListBox());
-
-    return listBox->MoveNextLineItem();
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::UpdateCbaL
-// Changing the cba
-// -----------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::UpdateCbaL(TInt aResourceID)
-    {
-    if (iCurrentResource == aResourceID)
-        {
-        return;
-        }
-
-    // store resource id
-    iPopoutCba->SetCommandSetL( aResourceID );
-    iCurrentResource = aResourceID;
-    iPopoutCba->DrawDeferred();
-    }
-
-/**
- * Processes events from the softkeys. Responds to EAknSoftkeyOk and EAknSoftkeyBack
- * to accept or cancel the pop-up.
- *
- * @param   aCommandId  Event Id from the soft-key
- */
-void CAknFepUICtrlJapanesePredictivePane::ProcessCommandL(TInt aCommandId)
-    {
-    // Respond to softkey events
-    switch (aCommandId)
-        {
-        case EAknFepSoftkeyConvert:
-        case EAknFepSoftkeyCloseWindow:
-        case EAknFepSoftkeyCommit:
-        case EAknFepSoftkeySelectCandidate:
-        case EAknFepSoftkeyOtherModes:
-            iUiMng->HandleCommandL(aCommandId);
-            break;
-        default:
-            CAknPopupList::ProcessCommandL(aCommandId);
-            break;
-        }
-    }
-
-void CAknFepUICtrlJapanesePredictivePane::ShowWindowCbaL()
-    {
-    RDrawableWindow* cbaWindow = iPopoutCba->ButtonGroup()->AsControl()->DrawableWindow();
-    cbaWindow->SetOrdinalPosition(0,ECoeWinPriorityFep);
-    cbaWindow->SetFaded(EFalse, RWindowTreeNode::EFadeWindowOnly);
-    cbaWindow->SetNonFading(ETrue);
-    iEikonEnv->EikAppUi()->AddToStackL(iPopoutCba,
-                                                 ECoeStackPriorityFep,
-                                                 ECoeStackFlagRefusesFocus);
-
-    iPopoutCba->ActivateL();
-    iPopoutCba->MakeVisible(ETrue);
-    iPopoutCba->DrawDeferred(); // to update the cba
-    }
-
-// ---------------------------------------------------------------------------
-// CAknFepUICtrlJapanesePredictivePane::HandleListBoxEventL
-// CallBack from ListBox
-// (other items were commented in a header).
-// ---------------------------------------------------------------------------
-//
-void CAknFepUICtrlJapanesePredictivePane::HandleListBoxEventL(
-    CEikListBox* /*aListBox*/, TListBoxEvent aEventType)
-    {
-    switch (aEventType)
-        {
-        case EEventItemDraggingActioned: // Item Moved
-            DrawNow();
-            break;
-        case EEventItemClicked:
-            {
-            TKeyEvent ccpuStart = {EKeyOK, EStdKeyDevice3, 0, 0};
-            iEikonEnv->SimulateKeyEventL(ccpuStart, EEventKey);
-            }
-            break;
-        default:
-           break;
-        }
-    }
-
-// End of File