fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlCandidatePane.cpp
changeset 40 2cb9bae34d17
parent 31 f1bdd6b078d1
child 49 37f5d84451bd
--- a/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/src/AknFepUiAvkonCtrlCandidatePane.cpp	Tue Jul 06 14:38:41 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1172 +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:           
-*       Provides the CAknFepUICtrlCandidatePane methods.
-*
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <uikon/eikdefmacros.h>
-#endif
-#include <eiklabel.h>
-#include <AknsDrawUtils.h>
-#include <AknBidiTextUtils.h> 
-#include <AknsUtils.h>
-#include <AknIconUtils.h>
-
-#include <aknfepuictrls.mbg>
-#include "AknFepUiInterfacePanic.h"
-#include "AknFepUIAvkonCtrlCandidatePane.h"
-#include "AknFepUIAvkonCtrlCandidateSelected.h"
-#include "aknfepchineseuidataconv.h"
-#include "aknfepuilayoutdatamgr.h"
-
-
-#include "data_caging_path_literals.hrh"
-
-const TInt CandidateCountLeft = 10;
-
-_LIT(KFepUiControlsBitmapFile, "aknfepuictrls.mbm");
-
-CAknFepUICtrlCandidatePane* CAknFepUICtrlCandidatePane::NewL(RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr)
-    {
-    CAknFepUICtrlCandidatePane* self = new(ELeave) CAknFepUICtrlCandidatePane( aLafDataMgr );
-    CleanupStack::PushL(self);
-    self->ConstructL(aParent);
-    CleanupStack::Pop();
-    return self;
-    }
-
-CAknFepUICtrlCandidatePane::~CAknFepUICtrlCandidatePane()
-    {
-    delete iCandidateSelected;
-    delete iNaviArrowBitmapLeft;
-    delete iNaviArrowBitmapLeftMask;
-    delete iNaviArrowBitmapRight;
-    delete iNaviArrowBitmapRightMask;
-    delete iNaviArrowBitmapUp;
-    delete iNaviArrowBitmapUpMask;
-    delete iNaviArrowBitmapDown;
-    delete iNaviArrowBitmapDownMask;
-    if(iCandidateArray)
-    	{
-    	iCandidateArray->Reset();
-		delete iCandidateArray;
-    	}
-    iCandidateLabelArray.ResetAndDestroy();
-    iOrdinalLabelArray.ResetAndDestroy();
-    iCandidateModeArray.Reset();
-    iPages.Reset();
-    }
-
-const TDesC& CAknFepUICtrlCandidatePane::TextBuffer() const
-    {
-    return iBuffer;
-    }
-
-void CAknFepUICtrlCandidatePane::SetCandidateBuffer(const TDesC& aBuffer)
-    {
-    TInt newLength = aBuffer.Length();
-    TInt oldLength = iBuffer.Length();
-    if(newLength > EMaxCandidates)
-        {
-        newLength = EMaxCandidates;
-        }
-    if(newLength - 1 < iSelected)
-        {
-        // as far as the client is concerned, they have removed the character that was selected
-        // therefore we must now hide the selected candidate, although the highlighting
-        // state remains unchanged
-        iCandidateSelected->MakeVisible(EFalse);
-        }
-    else
-        {
-        if(iHighlighted)
-            {
-            // make sure that the candidate is visible, as the selection is now
-            // within a visible range (it might have been hidden last time
-            // the buffer was set)
-            iCandidateSelected->MakeVisible(ETrue);
-            }
-        }
-
-    TPtrC newText = aBuffer.Left(newLength);
-    TPtr ptr = iBuffer.Des();
-    if(ptr != newText)
-        {
-        for(TInt i = 0; i < newLength; i++)
-            {
-            TBool valueChanged = ETrue;
-            TPtrC newChar = aBuffer.Mid(i, EOneCandidate);
-            if(i < oldLength)
-                {
-                TPtrC oldChar = iBuffer.Mid(i, EOneCandidate);
-                if(newChar == oldChar)
-                    {
-                    valueChanged = EFalse;
-                    }
-                }
-            // only update and redraw label background if the value has changed
-            if(valueChanged)
-                {
-                // we have already allocated enough memory for this
-                CEikLabel* candidateLabel = iCandidateLabelArray[i];
-                TRAP_IGNORE(candidateLabel->SetTextL(newChar));
-
-                // need to update the character if it is in the current selected candidate
-                if(i == iSelected)
-                    {
-                    iCandidateSelected->SetText(newChar);
-                    iCandidateSelected->SetOrdinal(i + 1);
-                    DrawDeferred();
-                    }
-                if(i < iVisibleCount)
-                    {
-                    // only redraw characters that are visible
-                    TRect rect = candidateLabel->Rect();
-                    Window().Invalidate(rect);
-                    }
-                }
-            }
-        ptr.Copy(newText);
-        LayoutLabels();
-        LayoutCandidateSelected();
-        iVisibleCount = newLength;
-        UpdateLabelVisibility();
-        }
-    }
-
-CDesCArrayFlat* CAknFepUICtrlCandidatePane::CandidateArray(void)
-    {
-    return iCandidateArray;
-    }
-
-void CAknFepUICtrlCandidatePane::SetCandidateBuffer(void)
-    {
-    if(iPages.Count() == 0)
-        {
-        return;
-        }
-    TPage curPage = iPages[iCurDisplayPage];
-    iVisibleCount = curPage.iEndIndex - curPage.iStartIndex + 1;
-
-    if(iVisibleCount - 1 < iSelected)
-        {
-        iCandidateSelected->MakeVisible(EFalse);
-        }
-    else
-        {
-        if(iHighlighted)
-            {
-            iCandidateSelected->MakeVisible(ETrue);
-            }
-        }
-
-    TBufC<EPhraseLength> buf;
-    TPtr newText = buf.Des();
-
-    for(TInt i = 0; i < iVisibleCount; i ++)
-        {
-        CEikLabel* candidateLabel = iCandidateLabelArray[i];
-        const TDesC* txtLabel = candidateLabel->Text();
-        newText = (*iCandidateArray)[curPage.iStartIndex + i];
-
-        if((txtLabel->Compare(newText) != 0) )
-            {
-            // we have already allocated enough memory for this
-            TRAP_IGNORE( candidateLabel->SetTextL(newText));
-            }
-            
-            // need to update the character if it is in the current selected candidate
-            if(i == iSelected)
-                {
-                iCandidateSelected->SetText(newText);
-                iCandidateSelected->SetOrdinal(i + 1);
-                DrawDeferred();
-                }
-            if(i < iVisibleCount)
-                {
-                // only redraw labels that are visible
-                TRect rect = candidateLabel->Rect();
-                Window().Invalidate(rect);
-            }
-        }
-    LayoutLabels();
-    LayoutCandidateSelected();
-    DrawDeferred();
-    UpdateLabelVisibility();
-    }
-
-void CAknFepUICtrlCandidatePane::SetHighlighted(TBool aHighlighted)
-    {
-    if(!COMPARE_BOOLS(iHighlighted, aHighlighted))
-        {
-        iHighlighted = aHighlighted;
-        iCandidateSelected->MakeVisible(aHighlighted);
-
-        iCandidateSelected->DrawDeferred();
-        }
-    }
-
-TBool CAknFepUICtrlCandidatePane::Highlighted() const
-    {
-    return iHighlighted;
-    }
-
-void CAknFepUICtrlCandidatePane::SetCandidateMode(TInt aIndex, TCandidateMode aMode)
-    {
-    __ASSERT_DEBUG(aIndex < EMaxCandidates, AknFepUiInterfacePanic(EAknFepUiInterfacePanicAttemptedSetModeOutsideMaxCandidates));
-    __ASSERT_DEBUG(aIndex >= 0, AknFepUiInterfacePanic(EAknFepUiInterfacePanicAttemptedSetModeOutsideMaxCandidates));
-
-    TCandidateMode oldMode = iCandidateModeArray[aIndex];
-    if(oldMode != aMode)
-        {
-        iCandidateModeArray[aIndex] = aMode;
-        if(iSelected == aIndex)
-            {
-            LayoutCandidateSelected();
-            }
-        // only do drawing if visible
-        if(aIndex < iVisibleCount)
-            {
-            LayoutLabel(aIndex);
-            if(iSelected == aIndex && iHighlighted)
-                {
-                iCandidateSelected->DrawDeferred();
-                }
-            else
-                {
-                CEikLabel* candidateLabel = iCandidateLabelArray[aIndex];
-                TRect rect = candidateLabel->Rect();
-                Window().Invalidate(rect);
-                }
-            }
-        }
-    }
-
-CAknFepUICtrlCandidatePane::TCandidateMode CAknFepUICtrlCandidatePane::CandidateMode(TInt aIndex)
-    {
-    return iCandidateModeArray[aIndex];
-    }
-
-TBool CAknFepUICtrlCandidatePane::IsShowHorizontalScrollArrows() const
-    {
-    return EFalse;
-    }
-
-void CAknFepUICtrlCandidatePane::ShowHorizontalScrollArrows(TBool /*aValue*/)
-    {
-    // If the state is changed, the arrows will be redrawn in the new state.
-    //    if(!COMPARE_BOOLS(iShowHorizontalScrollArrows, aValue))
-    //        {
-    //        iShowHorizontalScrollArrows = aValue;
-    //        TRect rect = iIndiFepArrowLeft.Rect();
-    //        Window().Invalidate(rect);
-    //        rect = iIndiFepArrowRight.Rect();
-    //        Window().Invalidate(rect);
-    //        }
-    }
-
-void CAknFepUICtrlCandidatePane::ShowUpScrollArrows(TBool aValue)
-    {
-    if (iShowUpScrollArrows != aValue)
-        {
-        iShowUpScrollArrows = aValue;
-        TRect rect = iIndiFepArrowUp.Rect();
-        Window().Invalidate(rect);
-        }
-    }
-    
-void CAknFepUICtrlCandidatePane::ShowDownScrollArrows(TBool aValue)
-    {
-    if (iShowDownScrollArrows != aValue)
-        {
-        iShowDownScrollArrows = aValue;
-        TRect rect = iIndiFepArrowDown.Rect();
-        Window().Invalidate(rect);
-        }
-        
-    }
-    
-void CAknFepUICtrlCandidatePane::ShowLeftScrollArrows(TBool /*aValue*/)
-    {
-    //    if (iShowLeftScrollArrows != aValue)
-    //        {
-    //        iShowLeftScrollArrows = aValue;
-    //        TRect rect = iIndiFepArrowLeft.Rect();
-    //        Window().Invalidate(rect);
-    //        }
-    }
-        
-void CAknFepUICtrlCandidatePane::ShowRightScrollArrows(TBool /*aValue*/)
-    {
-    //    if (iShowRightScrollArrows != aValue)
-    //        {
-    //        iShowRightScrollArrows = aValue;
-    //        TRect rect = iIndiFepArrowRight.Rect();
-    //        Window().Invalidate(rect);
-    //        }
-    }
-
-TBool CAknFepUICtrlCandidatePane::IsShowVerticalScrollArrows() const
-    {
-    return iShowVerticalScrollArrows;
-    }
-
-void CAknFepUICtrlCandidatePane::ShowVerticalScrollArrows(TBool aValue)
-    {
-    // If the state is changed, the arrows will be redrawn in the new state.
-    if(!COMPARE_BOOLS(iShowVerticalScrollArrows, aValue))
-        {
-        iShowVerticalScrollArrows = aValue;
-        TRect rect = iIndiFepArrowUp.Rect();
-        Window().Invalidate(rect);
-        rect = iIndiFepArrowDown.Rect();
-        Window().Invalidate(rect);
-        }
-    }
-
-void CAknFepUICtrlCandidatePane::ShowCandidateOrdinals(TBool aValue)
-    {
-    if(!COMPARE_BOOLS(iShowCandidateOrdinals, aValue))
-        {
-        iShowCandidateOrdinals = aValue;
-        iCandidateSelected->ShowOrdinal(aValue);
-        UpdateLabelVisibility();
-        }
-    }
-
-TBool CAknFepUICtrlCandidatePane::IsShowCandidateOrdinals() const
-    {
-    return iShowCandidateOrdinals;
-    }
-
-TInt CAknFepUICtrlCandidatePane::VisibleCandidateCount() const
-    {
-    return iVisibleCount;
-    }
-
-void CAknFepUICtrlCandidatePane::SetVisibleCandidateCount(TInt aCount)
-    {
-    __ASSERT_DEBUG(aCount > 0, AknFepUiInterfacePanic(EAknFepUiInterfacePanicNewVisibleCountExceedsRange));
-    __ASSERT_DEBUG(aCount <= EMaxCandidates, AknFepUiInterfacePanic(EAknFepUiInterfacePanicNewVisibleCountExceedsRange));
-    if(iVisibleCount != aCount)
-        {
-        if(aCount - 1 < iSelected)
-            {
-            // automatically move the selection to be at the end of the new
-            // candidate buffer
-            SelectIndex(aCount - 1); // ignore return code
-            }
-        iVisibleCount = aCount;
-        UpdateLabelVisibility();
-        }
-    }
-
-TBool CAknFepUICtrlCandidatePane::SelectFirstPhrase()
-    {
-    if(iVisibleCount >= 1)
-        {
-        return SelectIndex(0,EFalse);
-        }
-    else
-        {
-        return EFalse;
-        }
-    }
-
-TBool CAknFepUICtrlCandidatePane::SelectFirst()
-    {
-    if(iBuffer.Length())
-        {
-        return SelectIndex(0);
-        }
-    else
-        {
-        return EFalse;
-        }
-    }
-
-TBool CAknFepUICtrlCandidatePane::SelectLastPhrase()
-    {
-    if(iVisibleCount > 1)
-        {
-        return SelectIndex(iVisibleCount - 1);
-        }
-    else
-        {
-        return EFalse;
-        }
-    }
-
-TBool CAknFepUICtrlCandidatePane::SelectLast()
-    {
-    TInt length = iBuffer.Length();
-    if(length)
-        {
-        TInt index = length < iVisibleCount ? length : iVisibleCount;
-        return SelectIndex(index - 1);
-        }
-    else
-        {
-        return EFalse;
-        }
-    }
-
-TBool CAknFepUICtrlCandidatePane::SelectNext()
-    {
-    if(iSelected < iVisibleCount - 1)
-        {
-        return SelectIndex(iSelected + 1);
-        }
-    else
-        {
-        return EFalse;
-        }
-    }
-
-TBool CAknFepUICtrlCandidatePane::SelectPrev()
-    {
-    if(iSelected > 0)
-        {
-        return SelectIndex(iSelected - 1);
-        }
-    else
-        {
-        return EFalse;
-        }
-    }
-
-TBool CAknFepUICtrlCandidatePane::SelectIndex(TInt aIndex, TBool selected)
-    {
-    if(aIndex + 1 > iVisibleCount || aIndex < 0)
-        {
-        return EFalse;
-        }
-    if(iSelected != aIndex)
-        {
-        if(iSelected + 1 > iVisibleCount && iHighlighted)
-            {
-            // candidate selection is currently hidden, as the current 
-            // selection is outside the range of valid candidates, therefore 
-            // show it again
-            iCandidateSelected->MakeVisible(ETrue);
-            }
-        iSelected = aIndex;
-        // move and repopulate the selected candidate control
-        const TDesC* txtLabel = iCandidateLabelArray[aIndex]->Text();
-        iCandidateSelected->SetText(*txtLabel);
-        iCandidateSelected->SetOrdinal(iSelected + 1);
-        
-        LayoutCandidateSelected();
-        if( selected )
-           {
-
-           DrawDeferred();
-           }
-        
-		}
-    return ETrue;
-    }
-
-TInt CAknFepUICtrlCandidatePane::SelectedIndex() const
-    {
-    return iSelected;
-    }
-
-TPtrC CAknFepUICtrlCandidatePane::CurrentPhraseCandidate() const
-    {
-    __ASSERT_DEBUG(iSelected >= 0, AknFepUiInterfacePanic(EAknFepUiInterfacePanicCurrentSelectionOutsideVisibleCandidates));
-    if(iVisibleCount > iSelected)
-        {
-        return *(iCandidateLabelArray[iSelected]->Text());
-        }
-    else
-        {
-        return TPtrC();
-        }
-    }
-
-TPtrC CAknFepUICtrlCandidatePane::CurrentCandidate() const
-    {
-    __ASSERT_DEBUG(iSelected >= 0, AknFepUiInterfacePanic(EAknFepUiInterfacePanicCurrentSelectionOutsideVisibleCandidates));
-    if(iBuffer.Length() > iSelected)
-        {
-        return iBuffer.Mid(iSelected, EOneCandidate);
-        }
-    else
-        {
-        return TPtrC();
-        }
-    }
-
-TInt CAknFepUICtrlCandidatePane::LabelTextWidthInPixels( TInt aIndex)
-    {
-    TAknLayoutText layoutText;
-    TAknTextLineLayout candidatePaneLayoutText = 
-        CAknFepChineseUIDataConv::AnyToTextLine(iLafDataMgr->RequestData( ECandidatePaneTextLine ));
-       
-    layoutText.LayoutText(Rect(), candidatePaneLayoutText);
-
-    const CFont* font = layoutText.Font();
-
-    TInt labelWidthInPixels = 0;
-    if(font)
-        {
-        const TDesC* txtLabel = iCandidateLabelArray[aIndex]->Text();
-        if(txtLabel->Length() != 0)
-            {
-            labelWidthInPixels = font->TextWidthInPixels(*txtLabel);
-            }
-        }
-    return labelWidthInPixels;
-    }
-void CAknFepUICtrlCandidatePane::SetPaneLayout(CAknFepUICtrlContainerChinese::TPaneLayout aPaneLayout)
-    {
-    iPaneLayout = aPaneLayout;
-    }
-    
-void CAknFepUICtrlCandidatePane::SplitPhraseCandidatesIntoPages()
-    {
-    iPages.Reset();
-    iUnpagedIndex = 0;
-    
-    InternalSpilitPhraseCandidate();
-    
-    if( iPages.Count() == 0 )
-        {
-        iVisibleCount = 0;
-        }
-    else
-        {
-        iCurDisplayPage = 0;
-        SetVisibleCandidateCount(iPages[0].iEndIndex - iPages[0].iStartIndex + 1);
-        }
-    }
-    
-void CAknFepUICtrlCandidatePane::NextCandidatePage(void)
-    {
-    if(iCurDisplayPage == (iPages.Count() - 1))
-        {
-        if( iUnpagedIndex < iCandidateArray->Count() )
-            {
-            //continue page
-            InternalSpilitPhraseCandidate();
-            iCurDisplayPage++;
-            }
-        else
-            {
-            iCurDisplayPage = 0;
-            }
-        }
-    else
-        {
-        iCurDisplayPage ++;
-        }
-    // For fix bug of when the count of character in the last page is less than
-    // the previous page of the last page. And then select the last character of 
-    // the previous page of the last page, and select next page. First of the last 
-    // page is not refreshed.
-    iSelected = 0;
-    }
-
-void CAknFepUICtrlCandidatePane::PreviousCandidatePage(void)
-    {
-    if(iCurDisplayPage == 0)
-        {
-        iCurDisplayPage = iPages.Count() - 1;
-        }
-    else
-        {
-        iCurDisplayPage --;
-        }
-    }
-
-void CAknFepUICtrlCandidatePane::SizeChanged()
-    {
-    LayoutRects();
-    LayoutContainedControls();
-    }
-
-TInt CAknFepUICtrlCandidatePane::CountComponentControls() const
-    {
-    TInt count = 0;
-    count += iCandidateLabelArray.Count();
-    count += iOrdinalLabelArray.Count();
-
-    CCoeControl* controls[] =
-        {
-        iCandidateSelected
-        } ;
-
-    for (TUint ii = 0 ; ii < (sizeof(controls) / sizeof(CCoeControl*)) ; ii++)
-        {
-        if(controls[ii])
-            {
-            count++ ;
-            }   
-        }
-    return count ;
-    }
-
-CCoeControl* CAknFepUICtrlCandidatePane::ComponentControl(TInt aIndex) const
-    {
-    TInt candidateCount = iCandidateLabelArray.Count();
-    TInt ordinalCount = iOrdinalLabelArray.Count();
-
-    if(aIndex < candidateCount)
-        {
-        // because this method is const, the const [] operator is selected
-        // which means that the pointer is const, so have to cast away constness
-        // - a possible alternative is to make the array mutable?
-        return CONST_CAST(CEikLabel*, iCandidateLabelArray[aIndex]);
-        }
-    aIndex -= candidateCount;
-
-    if(aIndex < ordinalCount)
-        {
-        // because this method is const, the const [] operator is selected
-        // which means that the pointer is const, so have to cast away constness
-        // - a possible alternative is to make the array mutable?
-        return CONST_CAST(CEikLabel*, iOrdinalLabelArray[aIndex]);
-        }
-    aIndex -= ordinalCount;
-
-    CCoeControl* controls[] =
-        {
-        iCandidateSelected
-        } ;
-
-    for (TUint ii = 0; (ii < sizeof(controls) / sizeof(CCoeControl*)) ; ii++)
-        {
-        if (controls[ii] && aIndex-- == 0)
-            {
-            return controls[ii] ;
-            }
-        }
-    // shouldn't be called while no components.
-    return NULL ;
-    }
-
-void CAknFepUICtrlCandidatePane::Draw(const TRect& /* aRect */) const
-    {
-    CWindowGc& gc = SystemGc();
-
-    if(iShowHorizontalScrollArrows)
-        {
-        if (iShowLeftScrollArrows)
-            {
-            iIndiFepArrowLeft.DrawImage(gc, 
-                                        iNaviArrowBitmapLeft, 
-                                        iNaviArrowBitmapLeftMask);     
-            }
-        
-        if (iShowRightScrollArrows)
-            {
-            iIndiFepArrowRight.DrawImage(gc, 
-                                         iNaviArrowBitmapRight, 
-                                         iNaviArrowBitmapRightMask);
-            }
-        }
-    if(iShowVerticalScrollArrows)
-        {
-        if (iShowUpScrollArrows)
-            {
-            iIndiFepArrowUp.DrawImage(gc,
-                                      iNaviArrowBitmapUp, 
-                                      iNaviArrowBitmapUpMask);
-            }
-            
-        if (iShowDownScrollArrows)
-            {
-            iIndiFepArrowDown.DrawImage(gc, 
-                                        iNaviArrowBitmapDown, 
-                                        iNaviArrowBitmapDownMask);
-            }
-        }
-    }
-
-void CAknFepUICtrlCandidatePane::ConstructL(RWindow& aParent)
-    {
-    SetContainerWindowL(aParent);
-    ConstructBitmapsL();
-
-    TBuf<EOneCandidate> ordinal;
-    for(TInt i = 0; i < EMaxCandidates; i++)
-        {
-        CEikLabel* candidateLabel = new(ELeave) CEikLabel;
-        CleanupStack::PushL(candidateLabel);
-        candidateLabel->SetContainerWindowL(aParent);
-        candidateLabel->SetBufferReserveLengthL(EPhraseLength);
-        // ownership is passed, unless allocation is unsuccessful, in which case we still have it on the stack
-        User::LeaveIfError(iCandidateLabelArray.Append(candidateLabel));
-        CleanupStack::Pop(); // candidateLabel
-
-        CEikLabel* ordinalLabel = new(ELeave) CEikLabel;
-        CleanupStack::PushL(ordinalLabel);
-        ordinalLabel->SetContainerWindowL(aParent);
-        ordinalLabel->SetBufferReserveLengthL(EOneCandidate);
-        ordinal.Num((i+1)%10); // digits are [1, 2,,, 9, 0] - only want the last digit in the case of 10!
-        ordinalLabel->SetTextL(ordinal);
-        // ownership is passed, unless allocation is unsuccessful, in which case we still have it on the stack
-        User::LeaveIfError(iOrdinalLabelArray.Append(ordinalLabel));
-        CleanupStack::Pop(); // ordinalLabel
-
-        User::LeaveIfError(iCandidateModeArray.Append(ECandidateModeNormal));
-        }
-
-    iCandidateSelected = CAknFepUICtrlCandidateSelected::NewL(aParent);
-    iCandidateSelected->MakeVisible(iHighlighted);
-    iCandidateSelected->SetMopParent(this);
-    iCandidateArray = new(ELeave) CDesCArrayFlat(1);
-    }
-
-void CAknFepUICtrlCandidatePane::ConstructBitmapsL()
-    {    
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();  
-    
-    TFileName bmpFile;
-    bmpFile.Copy(_L("z:"));
-    bmpFile.Append(KDC_BITMAP_DIR);
-    bmpFile.Append(KFepUiControlsBitmapFile);  
-
-    AknsUtils::CreateColorIconL( skin,
-                                 KAknsIIDQgnIndiFepArrowLeft,
-                                 KAknsIIDQsnIconColors,
-                                 EAknsCIQsnIconColorsCG20,
-                                 iNaviArrowBitmapLeft,
-                                 iNaviArrowBitmapLeftMask,
-                                 bmpFile,
-                                 EMbmAknfepuictrlsQgn_indi_fep_arrow_left,
-                                 EMbmAknfepuictrlsQgn_indi_fep_arrow_left_mask,
-                                 AKN_LAF_COLOR( 0 )
-                             );    
-    AknsUtils::CreateColorIconL( skin,
-                                 KAknsIIDQgnIndiFepArrowRight,
-                                 KAknsIIDQsnIconColors,
-                                 EAknsCIQsnIconColorsCG20,
-                                 iNaviArrowBitmapRight,
-                                 iNaviArrowBitmapRightMask,
-                                 bmpFile,
-                                 EMbmAknfepuictrlsQgn_indi_fep_arrow_right,
-                                 EMbmAknfepuictrlsQgn_indi_fep_arrow_right_mask,
-                                 AKN_LAF_COLOR( 0 )
-                             );    
-
-    AknsUtils::CreateColorIconL( skin,
-                                 KAknsIIDQgnIndiFepArrowUp,
-                                 KAknsIIDQsnIconColors,
-                                 EAknsCIQsnIconColorsCG20,
-                                 iNaviArrowBitmapUp,
-                                 iNaviArrowBitmapUpMask,
-                                 bmpFile,
-                                 EMbmAknfepuictrlsQgn_indi_fep_arrow_up,
-                                 EMbmAknfepuictrlsQgn_indi_fep_arrow_up_mask,
-                                 AKN_LAF_COLOR( 0 )
-                             );    
-    AknsUtils::CreateColorIconL( skin,
-                                 KAknsIIDQgnIndiFepArrowDown,
-                                 KAknsIIDQsnIconColors,
-                                 EAknsCIQsnIconColorsCG20,
-                                 iNaviArrowBitmapDown,
-                                 iNaviArrowBitmapDownMask,
-                                 bmpFile,
-                                 EMbmAknfepuictrlsQgn_indi_fep_arrow_down,
-                                 EMbmAknfepuictrlsQgn_indi_fep_arrow_down_mask,
-                                 AKN_LAF_COLOR( 0 )
-                             );    
-    }
-
-CAknFepUICtrlCandidatePane::CAknFepUICtrlCandidatePane(CAknFepUiLayoutDataMgr* aLafDataMgr)
-    :
-    iPaneLayout(CAknFepUICtrlContainerChinese::ELayoutCandidate),
-    iHighlighted(EFalse),
-    iShowHorizontalScrollArrows(EFalse),
-    iShowVerticalScrollArrows(EFalse),
-    iShowUpScrollArrows(ETrue),
-    iShowDownScrollArrows(ETrue),
-    iShowLeftScrollArrows(ETrue),
-    iShowRightScrollArrows(ETrue),
-    iShowCandidateOrdinals(ETrue),
-    iCurDisplayPage(0),
-    iOrdinalLableWidth(0)
-    {
-    iLafDataMgr = aLafDataMgr;
-    }
-
-void CAknFepUICtrlCandidatePane::LayoutRects()
-    {
-    TRect rect = Rect();
-    
-    TAknWindowLineLayout candidateWindowLine1 = 
-      CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ECandidateWindowLine1));
-    TAknWindowLineLayout candidateWindowLine2 = 
-      CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ECandidateWindowLine2));
-    TAknWindowLineLayout candidateWindowLine3 = 
-      CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ECandidateWindowLine3));
-    TAknWindowLineLayout candidateWindowLine4 = 
-      CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ECandidateWindowLine4));
-
-    iIndiFepArrowLeft.LayoutRect(rect, candidateWindowLine1); 
-    AknIconUtils::SetSize(iNaviArrowBitmapLeft, iIndiFepArrowLeft.Rect().Size());
-
-    iIndiFepArrowRight.LayoutRect(rect, candidateWindowLine2); 
-    AknIconUtils::SetSize(iNaviArrowBitmapRight, iIndiFepArrowRight.Rect().Size());
-
-    iIndiFepArrowUp.LayoutRect(rect, candidateWindowLine3);
-    AknIconUtils::SetSize(iNaviArrowBitmapUp, iIndiFepArrowUp.Rect().Size());
-
-    iIndiFepArrowDown.LayoutRect(rect, candidateWindowLine4);
-    AknIconUtils::SetSize( iNaviArrowBitmapDown, iIndiFepArrowDown.Rect().Size() );
-    }
-
-void CAknFepUICtrlCandidatePane::LayoutContainedControls()
-    {
-    LayoutLabels();
-    LayoutCandidateSelected();
-    }
-
-void CAknFepUICtrlCandidatePane::LayoutLabel(TInt aIndex)
-    {
-    __ASSERT_DEBUG(aIndex >= 0, AknFepUiInterfacePanic(EAknFepUiInterfacePanicAttemptedLayoutOutsideVisibleCount));
-    __ASSERT_DEBUG(aIndex < iVisibleCount, AknFepUiInterfacePanic(EAknFepUiInterfacePanicAttemptedLayoutOutsideVisibleCount));
-    TRect rect = Rect();
-    CEikLabel* candidateLabel = iCandidateLabelArray[aIndex];
-    CEikLabel* ordinalLabel = iOrdinalLabelArray[aIndex];
-    TAknWindowLineLayout layoutCandidateItem = 
-        CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutCandidateItem));
-    TAknTextLineLayout candidateLayout = 
-        CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(ECandidatePaneTextLine));
-    
-    // layout candidate label
-    TAknLayoutRect layoutRectCandidateItem;
-    layoutRectCandidateItem.LayoutRect(rect,layoutCandidateItem);
-    TRect rectCandidateItem = layoutRectCandidateItem.Rect();
-    
-    if(aIndex > 0)
-	    {
-	    rectCandidateItem.iTl.iX = iCandidateLabelArray[aIndex - 1]->Rect().iBr.iX;
-        }
-    TAknLayoutText layoutText;
-    layoutText.LayoutText(rectCandidateItem,candidateLayout);
-    TRect rectText = layoutText.TextRect();
-    rectText.SetWidth(LabelTextWidthInPixels(aIndex));
-
-    candidateLabel->SetRect(rectText);
-    candidateLabel->SetFont(layoutText.Font());
-
-    // layout ordinal label
-    TAknTextLineLayout ordinalLayout = 
-        CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(EOrdinalCandidateTextLayout));
-    TBufC16<1> buf;
-    TAknLayoutText layoutOrdinal;
-    TPtr16 ptr = buf.Des();
-    ptr = (*(ordinalLabel->Text())).Left(EOneCandidate);
-    
-    layoutOrdinal.LayoutText(rectCandidateItem,ordinalLayout);
-    
-    const CFont* font = layoutOrdinal.Font();
-    
-    TRect rectOrdinal = layoutOrdinal.TextRect();
-    // align ordinal label and candidate label 
-    
-    /* removed in 2006.03.29
-    rectOrdinal.iTl.iY = rectText.iTl.iY;
-    rectOrdinal.SetWidth(font->TextWidthInPixels(ptr));
-    rectOrdinal.SetHeight(font->HeightInPixels());
-    */
-    
-    // inserted in 2006.03.29
-    TPoint ordinalPosition;
-    TInt ordinalWidth = font->TextWidthInPixels(ptr);
-    ordinalPosition.iX = rectText.iTl.iX - ordinalWidth;
-    ordinalPosition.iY = rectText.iTl.iY;
-    
-    rectOrdinal = TRect(ordinalPosition,
-                        TPoint(ordinalPosition.iX + rectOrdinal.Width(),
-                               ordinalPosition.iY + rectOrdinal.Height()));
-    // end inserting                               
-
-    ordinalLabel->SetRect(rectOrdinal);
-    ordinalLabel->SetFont(font);
-    iOrdinalLableWidth = rectOrdinal.Width();
-
-    // override colours if skin data present
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    TRgb candidateLabelTextColor = layoutText.Color();
-    TRgb ordinalLabelTextColor = layoutOrdinal.Color();
-
-    AknsUtils::GetCachedColor(skin, candidateLabelTextColor, 
-                              KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG19);
-
-    AknsUtils::GetCachedColor(skin, ordinalLabelTextColor,
-        KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG19);
-
-    TRAP_IGNORE(
-        candidateLabel->OverrideColorL(EColorLabelText, candidateLabelTextColor);
-        ordinalLabel->OverrideColorL(EColorLabelText, ordinalLabelTextColor);
-        );
-    }
-
-void CAknFepUICtrlCandidatePane::LayoutLabels()
-    {
-    for(TInt i = 0; i < iVisibleCount; i++)
-        {
-        LayoutLabel(i);
-        }
-    }
-
-void CAknFepUICtrlCandidatePane::LayoutCandidateSelected()
-    {
-    TCandidateMode candidateMode = iCandidateModeArray[iSelected];
-    iCandidateSelected->SetCandidateMode(candidateMode);
-    iCandidateSelected->SetLayout(iPaneLayout);
-
-    TRect ordinalRect = iOrdinalLabelArray[iSelected]->Rect();
-
-    TAknLayoutRect layoutRect;
-    TAknWindowLineLayout layoutCandidateItem = 
-        CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutCandidateItem));
-    layoutRect.LayoutRect(Rect(),layoutCandidateItem);
-    
-    TRect rectLayoutCandidateItem = layoutRect.Rect();
-    rectLayoutCandidateItem.iTl.iX = ordinalRect.iTl.iX;
-
-    TAknTextLineLayout candidateLayout = 
-        CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(ECandidatePaneTextLine));
-    TAknTextLineLayout ordinalLayout = 
-        CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(EOrdinalCandidateTextLayout));
-    rectLayoutCandidateItem.SetWidth(iCandidateLabelArray[iSelected]->Rect().Width() + candidateLayout.il - ordinalLayout.il);
-
-    rectLayoutCandidateItem.SetHeight(rectLayoutCandidateItem.Height() - 1);
-    
-    iCandidateSelected->SetRect(rectLayoutCandidateItem);
-    }
-
-void CAknFepUICtrlCandidatePane::UpdateLabelVisibility()
-    {
-    TInt number = 0;
-    // only show the labels corresponding to candidates that have been set
-    if(iPages.Count() != 0)
-        {
-        number = iPages[iCurDisplayPage].iEndIndex - iPages[iCurDisplayPage].iStartIndex + 1;
-        }
-    else
-        {
-        number = iBuffer.Length();
-        }
-
-    if(number > iVisibleCount)
-        {
-        number =  iVisibleCount;
-        }
-    for(TInt i = 0; i < EMaxCandidates; i++)
-        {
-        CEikLabel* candidateLabel = iCandidateLabelArray[i];
-        CEikLabel* ordinalLabel = iOrdinalLabelArray[i];
-        if(i < number)
-            {
-            candidateLabel->MakeVisible(ETrue);
-            ordinalLabel->MakeVisible(iShowCandidateOrdinals); // only show if needed
-            }
-        else
-            {
-            candidateLabel->MakeVisible(EFalse);
-            ordinalLabel->MakeVisible(EFalse); // don't show it as there is no character to go with it
-            }
-        }
-    }
-
-void CAknFepUICtrlCandidatePane::ResetCandidateState()
-    {
-    iPages.Reset();
-    }
-
-void CAknFepUICtrlCandidatePane::DrawBackground(const TRect& aRect) const
-    {
-    // instead of drawing one blank rectangle over each of the 20 labels,
-    // just draw one big rectangle covering the entire pane
-    CWindowGc& gc = SystemGc();
-    TRgb background = AKN_LAF_COLOR(0);
-    gc.SetBrushColor(background);
-    gc.Clear(aRect);
-    }
-
-void CAknFepUICtrlCandidatePane::InternalSpilitPhraseCandidate()
-    {
-    //__ASSERT_DEBUG(aStartIndex + aCount <= iCandidateArray->Count());
-    
-    TInt phraseCandidateNum = iCandidateArray->Count();
-    if( phraseCandidateNum == iUnpagedIndex )
-        {
-        //nothing need to be paged
-        return;
-        }
-        
-    TPage curPage;
-    TInt index = iUnpagedIndex;
-    CEikLabel* candidateLabel;
-    
-    curPage.iStartIndex = index;
-    curPage.iEndIndex = index;
-    TInt candidateLeftNum = phraseCandidateNum - index > EMaxCandidates? 
-                            EMaxCandidates : phraseCandidateNum - index;
-
-    TAknWindowLineLayout layoutCandidateItem = 
-        CAknFepChineseUIDataConv::AnyToWindowLine( iLafDataMgr->RequestData(ELayoutCandidateItem));
-    TAknTextLineLayout candidateLayout = 
-        CAknFepChineseUIDataConv::AnyToTextLine( iLafDataMgr->RequestData(ECandidatePaneTextLine));
-    
-    // avoid accessing layout data member
-    TAknLayoutRect layoutRect;
-    layoutRect.LayoutRect(Rect(),layoutCandidateItem);
-    TRect rectLayoutCandidateItem = layoutRect.Rect();
-
-    TAknLayoutText layoutText;
-    layoutText.LayoutText(rectLayoutCandidateItem,candidateLayout);
-    TRect rectText = layoutText.TextRect();
-            
-    TInt distance = rectText.iTl.iX - rectLayoutCandidateItem.iTl.iX + rectLayoutCandidateItem.iBr.iX - rectText.iBr.iX;
-    rectLayoutCandidateItem.iTl.iX += distance;
-
-    TInt width = 0;
-    TInt i = 0;     
-
-    const TInt candidateWidth = rectLayoutCandidateItem.Width();
-    for ( i = 0; i < candidateLeftNum; i ++ )
-        {
-        // Initialization
-        candidateLabel = iCandidateLabelArray[i];
-        // labelWidth in the font
-        const CFont* font = layoutText.Font();
-        TPtrC newText = (*iCandidateArray)[iUnpagedIndex + i];
-        TInt labelWidth = font->TextWidthInPixels( newText );
-        if ( labelWidth > candidateWidth )
-            {
-            TBufC<EPhraseLength+10> buf1;
-            TPtr text( buf1.Des() );
-            
-            AknBidiTextUtils::ConvertToVisualAndClip(newText, text, *font, 
-                candidateWidth, candidateWidth,
-                AknBidiTextUtils::EImplicit,0xFFFF);
-            
-            iCandidateArray->Delete( iUnpagedIndex + i );
-            TRAP_IGNORE(
-            {
-            iCandidateArray->InsertL( iUnpagedIndex + i, text );
-            candidateLabel->SetTextL(text);
-            });
-            	
-            }
-        else
-            {
-            TRAP_IGNORE( candidateLabel->SetTextL(newText));
-            width = LabelTextWidthInPixels(i)+ iOrdinalLableWidth; 
-            rectLayoutCandidateItem.iTl.iX += width;
-            }
-        if (rectLayoutCandidateItem.iTl.iX >= rectLayoutCandidateItem.iBr.iX)
-            {
-            if (index>0)
-                {
-                curPage.iEndIndex = index - 1;
-                }
-            else
-                {
-                curPage.iEndIndex = index;
-                }
-
-            iPages.Append(curPage);
-            break;
-            }
-        else
-            {
-            index ++;
-            }
-        
-        if( i == EMaxCandidates -1 )
-        	{
-            curPage.iEndIndex = index - 1;
-            iPages.Append(curPage);
-            break;
-        	}
-        
-        }
-        
-    if( i >= candidateLeftNum )
-        {
-        curPage.iEndIndex = index - 1;
-        iPages.Append(curPage);
-        }
-        
-    iUnpagedIndex = index;      
-    }
-
-TBool CAknFepUICtrlCandidatePane::IsFirstPage()
-    {
-    return iCurDisplayPage == 0;
-    }
-
-TBool CAknFepUICtrlCandidatePane::IsLastPage()
-    {
-    if( iCandidateArray->Count() == iUnpagedIndex )
-        {
-        return iCurDisplayPage == iPages.Count() - 1;
-        }
-    return EFalse;
-    }
-
-void CAknFepUICtrlCandidatePane::SetInVisiable()
-    {
-    for (TInt i = 0; i < EMaxCandidates; i ++)
-        {
-        CEikLabel* candidateLabel = iCandidateLabelArray[i];
-        CEikLabel* ordinalLabel = iOrdinalLabelArray[i];
-        candidateLabel->MakeVisible(EFalse);
-        ordinalLabel->MakeVisible(EFalse);
-        }
-    iCandidateSelected->MakeVisible(EFalse);
-    }
-
-TBool CAknFepUICtrlCandidatePane::NeedGetNewCandidatePage()
-    {
-    return (iCandidateArray->Count() - iUnpagedIndex < CandidateCountLeft);
-
-    }
-
-//Bug Fixing for ESSG-7P5CSZ
-void CAknFepUICtrlCandidatePane::Enable(TBool aEnable)
-	{
-	if (!aEnable)
-		{
-		for (TInt i=0; i<iVisibleCount; i++)
-			{
-			TRAP_IGNORE(iCandidateLabelArray[i]->SetTextL(KNullDesC));
-			}
-		iCandidateArray->Reset();
-		iVisibleCount = 0;
-		DrawNow();
-		}
-	}
-// End of file