--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputdropdownlist.cpp Wed Sep 01 12:23:33 2010 +0100
@@ -0,0 +1,2347 @@
+/*
+* Copyright (c) 2002-2005 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: drop-down list control
+*
+*/
+
+
+// INCLUDE FILES
+
+
+#include "peninputlistmanager.h"
+#include "peninputbitmapdb.h"
+#include "peninputcandidate.h"
+#include "peninputpages.h"
+#include "peninputlayoutbubblectrl.h"
+
+// added by txin
+//#include "peninputlistmultirowrollwithicon.h"
+// end
+#include "peninputlist.h"
+#include <peninputlayoutrootctrl.h>
+#include <peninputlayoutbasecontrol.h>
+#include <peninputlayout.h>
+#include <peninputdropdownlist.h>
+#include <coemain.h>
+#include <AknUtils.h>
+
+// constant definition
+const TInt32 KInvalidResId = -1;
+
+// added by txin
+const TInt KInvalidCandIndex = -1;
+// end adding
+
+const TInt KPreviewBubbleOffset = 20;
+
+// ======== MEMBER FUNCTIONS ========
+
+// Implementation of Class CFepCtrlDropdownList
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::NewL
+// factory function
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CFepCtrlDropdownList* CFepCtrlDropdownList::NewL( const TPoint& aTopLeftPoint,
+ CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TResourceReader& aReader,
+ const TInt aCellWidth,
+ const TInt aCellHeight,
+ const TInt aNaviWidth,
+ const TInt aColNum,
+ const TInt aRowNum,
+ const CFont* aFont,
+ MListEventHandler* aHandler,
+ const CGraphicsContext::TTextAlign aAlignment,
+ const TInt aTextMargin,
+ const TRgb aBorderColor,
+ const TRgb aBgColor,
+ const TRgb aNavigationBgColor,
+ const TRgb aTextColor,
+ const TRgb aSpecialTextColor,
+ const TRgb aHighLightTextColor,
+ const TRgb aHighLightBgColor,
+ const TRgb aButtonDownBgColor )
+ {
+ CFepCtrlDropdownList* self = NewLC(aTopLeftPoint,
+ aUiLayout,
+ aControlId,
+ aReader,
+ aCellWidth,
+ aCellHeight,
+ aNaviWidth,
+ aColNum,
+ aRowNum,
+ aFont,
+ aHandler,
+ aAlignment,
+ aTextMargin,
+ aBorderColor,
+ aBgColor,
+ aNavigationBgColor,
+ aTextColor,
+ aSpecialTextColor,
+ aHighLightTextColor,
+ aHighLightBgColor,
+ aButtonDownBgColor);
+ CleanupStack::Pop();
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::NewLC
+// factory function
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+
+EXPORT_C CFepCtrlDropdownList* CFepCtrlDropdownList::NewLC(const TPoint& aTopLeftPoint,
+ CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TResourceReader& aReader,
+ const TInt aCellWidth,
+ const TInt aCellHeight,
+ const TInt aNaviWidth,
+ const TInt aColNum,
+ const TInt aRowNum,
+ const CFont* aFont,
+ MListEventHandler* aHandler,
+ const CGraphicsContext::TTextAlign aAlignment,
+ const TInt aTextMargin,
+ const TRgb aBorderColor,
+ const TRgb aBgColor,
+ const TRgb aNavigationBgColor,
+ const TRgb aTextColor,
+ const TRgb aSpecialTextColor,
+ const TRgb aHighLightTextColor,
+ const TRgb aHighLightBgColor,
+ const TRgb aButtonDownBgColor)
+ {
+ CFepCtrlDropdownList* self = new (ELeave) CFepCtrlDropdownList(aTopLeftPoint,
+ aUiLayout,
+ aControlId,
+ aCellWidth,
+ aCellHeight,
+ aNaviWidth,
+ aColNum,
+ aRowNum,
+ aFont,
+ aHandler,
+ aAlignment,
+ aTextMargin,
+ aBorderColor,
+ aBgColor,
+ aNavigationBgColor,
+ aTextColor,
+ aSpecialTextColor,
+ aHighLightTextColor,
+ aHighLightBgColor,
+ aButtonDownBgColor);
+ CleanupStack::PushL(self);
+ self->ConstructL(aTopLeftPoint,aReader);
+ return self;
+ }
+
+// txin
+EXPORT_C CFepCtrlDropdownList* CFepCtrlDropdownList::NewL(CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TInt aResId,
+ TPoint aTopLeftPoint,
+ TSize aCellSize,
+ TInt aColNum,
+ TInt aRowNum)
+ {
+ CFepCtrlDropdownList* self = new (ELeave) CFepCtrlDropdownList(aUiLayout,
+ aControlId,
+ aTopLeftPoint,
+ aCellSize,
+ aColNum,
+ aRowNum);
+ CleanupStack::PushL(self);
+ self->ConstructL(aTopLeftPoint, aResId);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CFepCtrlDropdownList* CFepCtrlDropdownList::NewL(CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TInt aResId,
+ TPoint aTopLeftPoint,
+ const CFont* aFont,
+ TSize aCellSize,
+ TInt aNaviWidth,
+ TInt aColNum,
+ TInt aRowNum,
+ TInt aSpinBtnHeight,
+ TInt aHorizontalCellMargin,
+ TInt aVerticalCellMargin,
+ THDirection aDirection,
+ TBool aPageShown)
+ {
+ CFepCtrlDropdownList* self = new (ELeave) CFepCtrlDropdownList(aUiLayout,
+ aControlId,
+ aResId,
+ aTopLeftPoint,
+ aFont,
+ aCellSize,
+ aNaviWidth,
+ aColNum,
+ aRowNum,
+ aSpinBtnHeight,
+ aHorizontalCellMargin,
+ aVerticalCellMargin,
+ aDirection,
+ aPageShown);
+ CleanupStack::PushL(self);
+ self->ConstructL(aTopLeftPoint, aResId);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+
+// end
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::CFepCtrlDropdownList
+// construtor function
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CFepCtrlDropdownList::CFepCtrlDropdownList(const TPoint& aTopLeftPoint,
+ CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ const TInt aCellWidth,
+ const TInt aCellHeight,
+ const TInt aNaviWidth,
+ const TInt aColNum,
+ const TInt aRowNum,
+ const CFont* aFont,
+ MListEventHandler* aHandler,
+ const CGraphicsContext::TTextAlign aAlignment,
+ const TInt aTextMargin,
+ const TRgb aBorderColor,
+ const TRgb aBgColor,
+ const TRgb aNavigationBgColor,
+ const TRgb aTextColor,
+ const TRgb aSpecialTextColor,
+ const TRgb aHighLightTextColor,
+ const TRgb aHighLightBgColor,
+ const TRgb aButtonDownBgColor)
+ : CFepUiBaseCtrl(TRect(), aUiLayout, aControlId),
+ iEnableSecondary(EFalse),
+ iFirstCandidateIndex(0),
+ iLastCandidateIndex(0),
+ iFont(aFont), iCellWidth(aCellWidth), iCellHeight(aCellHeight), iNaviWidth(aNaviWidth),
+ iSpinBtnHeight(aCellHeight),
+ iCellHorizontalMargin(0),
+ iCellVerticalMargin(0),
+ iOriginalCandIdx(KInvalidCandIndex),
+ iOriginalFirstCandIdx(KInvalidCandIndex),
+ iUpdateListReDraw(ETrue),
+ iAlignment(aAlignment), iTextMargin(aTextMargin), iColNum(aColNum), iRowNum(aRowNum),
+ iBorderColor(aBorderColor), iBgColor(aBgColor), iNavigationBgColor(aNavigationBgColor),
+ iTextColor(aTextColor), iSpecialTextColor(aSpecialTextColor),
+ iHighLightTextColor(aHighLightTextColor),
+ iHighLightBgColor(aHighLightBgColor), iButtonDownBgColor(aButtonDownBgColor),
+ iTopLeftPoint(aTopLeftPoint),
+ iEventIdForCandidateSelected(-1),
+ iEventIdForNextPageCandidate(-1),
+ iEventIdForPreviousPageCandidate(-1),
+ iEventIdForCandidateExisted(-1),
+ iListEventHandler(aHandler), iFirstTimeConstruct(ETrue), iListType(EListNoExpandable),
+ iFuzzyBoundry(0),
+ iCandExpandType(ECandExpandDownward),
+ iCandHDirection(ECandFromLToR),
+ iPageCtrlShown(ETrue)
+ {
+ SetControlType(KDropDownListCtrlType);
+ }
+
+// txin
+CFepCtrlDropdownList::CFepCtrlDropdownList(CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TPoint aTopLeftPoint,
+ TSize aCellSize,
+ TInt aColNum,
+ TInt aRowNum)
+ : CFepUiBaseCtrl(TRect(), aUiLayout, aControlId),
+ iEnableSecondary(EFalse),
+ iFirstCandidateIndex(0),
+ iLastCandidateIndex(0),
+ iCellWidth(aCellSize.iWidth), iCellHeight(aCellSize.iHeight), iNaviWidth(iCellWidth),
+ iSpinBtnHeight(iCellHeight),
+ iCellHorizontalMargin(0),
+ iCellVerticalMargin(0),
+ iOriginalCandIdx(KInvalidCandIndex),
+ iOriginalFirstCandIdx(KInvalidCandIndex),
+ iUpdateListReDraw(ETrue),
+ iAlignment(CGraphicsContext::ECenter), iTextMargin(3), iColNum(aColNum), iRowNum(aRowNum),
+ iBorderColor(KRgbBlack), iBgColor(TRgb(0xeeeeee)), iNavigationBgColor(TRgb(0xeeeeee)),
+ iTextColor(KRgbBlack), iSpecialTextColor(KRgbBlack), iHighLightTextColor(KRgbBlack),
+ iHighLightBgColor(TRgb(0xcccccc)), iButtonDownBgColor(KRgbGray), iTopLeftPoint(aTopLeftPoint),
+ iEventIdForCandidateSelected(-1),
+ iEventIdForNextPageCandidate(-1),
+ iEventIdForPreviousPageCandidate(-1),
+ iEventIdForCandidateExisted(-1),
+ iFirstTimeConstruct(ETrue), iListType(EListNoExpandable),
+ iFuzzyBoundry(0),
+ iCandExpandType(ECandExpandDownward),
+ iCandHDirection(ECandFromLToR),
+ iPageCtrlShown(ETrue)
+ {
+ SetControlType(KDropDownListCtrlType);
+ }
+
+CFepCtrlDropdownList::CFepCtrlDropdownList(CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TInt /*aResId*/,
+ TPoint aTopLeftPoint,
+ const CFont* /*aFont*/,
+ TSize aCellSize,
+ TInt aNaviWidth,
+ TInt aColNum,
+ TInt aRowNum,
+ TInt aSpinBtnHeight,
+ TInt aHorizontalCellMargin,
+ TInt aVerticalCellMargin,
+ THDirection aDirection,
+ TBool aPageShown)
+ : CFepUiBaseCtrl(TRect(), aUiLayout, aControlId),
+ iEnableSecondary(EFalse),
+ iFirstCandidateIndex(0),
+ iLastCandidateIndex(0),
+ iCellWidth(aCellSize.iWidth), iCellHeight(aCellSize.iHeight), iNaviWidth(aNaviWidth),
+ iSpinBtnHeight(aSpinBtnHeight),
+ iCellHorizontalMargin(aHorizontalCellMargin),
+ iCellVerticalMargin(aVerticalCellMargin),
+ iOriginalCandIdx(KInvalidCandIndex),
+ iOriginalFirstCandIdx(KInvalidCandIndex),
+ iUpdateListReDraw(ETrue),
+ iAlignment(CGraphicsContext::ECenter), iTextMargin(3), iColNum(aColNum), iRowNum(aRowNum),
+ iBorderColor(KRgbBlack), iBgColor(TRgb(0xeeeeee)), iNavigationBgColor(TRgb(0xeeeeee)),
+ iTextColor(KRgbBlack), iSpecialTextColor(KRgbBlack), iHighLightTextColor(KRgbBlack),
+ iHighLightBgColor(TRgb(0xcccccc)), iButtonDownBgColor(KRgbGray), iTopLeftPoint(aTopLeftPoint),
+ iEventIdForCandidateSelected(-1),
+ iEventIdForNextPageCandidate(-1),
+ iEventIdForPreviousPageCandidate(-1),
+ iEventIdForCandidateExisted(-1),
+ iFirstTimeConstruct(ETrue), iListType(EListNoExpandable),
+ iFuzzyBoundry(0),
+ iCandExpandType(ECandExpandDownward),
+ iCandHDirection(aDirection),
+ iPageCtrlShown(aPageShown)
+ {
+ SetControlType(KDropDownListCtrlType);
+ }
+
+// end
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::ConstructL
+// 2nd construct function
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CFepCtrlDropdownList::ConstructL(const TPoint& aTopLeftPoint, TResourceReader& aReader)
+ {
+ BaseConstructL();
+
+ iBitmapDb = CBitmapDb::NewL(aReader,
+ TSize(iCellWidth, iCellHeight),
+ TSize(iNaviWidth, iCellHeight),
+ TSize(iNaviWidth, iSpinBtnHeight));
+
+ SetTextColor(iBitmapDb->TextColor());
+ SetBorderColor(iBitmapDb->FrameColor());
+ iFirstTimeConstruct = EFalse;
+
+ iPages = CPages::NewL();
+
+ iListManager = CListManager::NewL(this);
+
+ iListManager->SetActiveList(iListManager->ListOneRowWithoutIcon());
+
+ SetRect( iListManager->ActiveList()->Rect() );
+
+ const TSize& size = Rect().Size();
+ TRect rect(aTopLeftPoint,size);
+ SetRect(rect);
+ }
+
+// txin
+void CFepCtrlDropdownList::ConstructL(TPoint aTopLeftPoint, TInt aResId)
+ {
+ SetResourceId(aResId);
+
+ TResourceReader reader;
+ CCoeEnv::Static()->CreateResourceReaderLC(reader, aResId);
+ ConstructL(aTopLeftPoint, reader);
+ CleanupStack::PopAndDestroy(); // reader
+ }
+// end
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::~CFepCtrlDropdownList
+// destructor function
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CFepCtrlDropdownList::~CFepCtrlDropdownList()
+ {
+ delete iBubbleCtrl;
+
+ // destroy list objects
+ delete iListManager;
+
+ // Delete bitmapDb
+ delete iBitmapDb;
+
+ // Delete pages
+ delete iPages;
+
+ // Delete all candidate
+ iCandidatelist.ResetAndDestroy();
+
+ // Clear and close iSecondaryList
+ iSecondaryList.Close();
+
+ // Clear and close iHighlightList
+ iHighlightList.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SizeChanged
+// size change function
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SizeChanged(const TInt aCellWidth,
+ const TInt aCellHeight,
+ const TInt aNaviWidth,
+ const TPoint aTopLeftPoint,
+ const TInt aColNum,
+ const TInt aRowNum)
+ {
+ iCellWidth = aCellWidth;
+ iCellHeight = aCellHeight;
+ iNaviWidth = aNaviWidth;
+ iSpinBtnHeight = aCellHeight;
+
+ iBitmapDb->SizeChanged(TSize(aNaviWidth, aCellHeight));
+
+ if ( aTopLeftPoint != TPoint(0,0) )
+ {
+ iTopLeftPoint = aTopLeftPoint;
+ }
+
+ if ( aColNum )
+ iColNum = aColNum;
+ if ( aRowNum )
+ iRowNum = aRowNum;
+
+ iListManager->SizeChanged();
+
+ switch ( iListType )
+ {
+ case EListNoExpandable:
+ ChangeActiveList( iListManager->ListOneRowWithoutIcon() );
+ break;
+ case EListNoExpandableWithBubble:
+ {
+ ChangeActiveList(iListManager->ListOneRowWithoutIconWithBubble());
+ }
+ break;
+ case EListExpandable:
+ case EListExpandableWithoutIcon:
+ {
+ ChangeActiveList(iListManager->ListOneRowWithIcon());
+ }
+ break;
+ case EListExpandableWithBubble:
+ {
+ ChangeActiveList(iListManager->ListOneRowWithIconWithBubble());
+ }
+ break;
+ // txin
+ case EListExpandableRollWithIcon:
+ {
+ TInt onerowCandIdx = OneRowStartCandIdx();
+
+ if (onerowCandIdx != KInvalidCandIndex)
+ {
+ ChangeActiveList(iListManager->ListOneRowRollWithIcon(), onerowCandIdx);
+ return;
+ }
+
+ ChangeActiveList(iListManager->ListOneRowRollWithIcon());
+ }
+ break;
+ case EListExpandableRollWithIconWithBubble:
+ {
+ TInt onerowCandIdx = OneRowStartCandIdx();
+
+ if (onerowCandIdx != KInvalidCandIndex)
+ {
+ ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble(), onerowCandIdx);
+ return;
+ }
+
+ ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble());
+ }
+ break;
+
+ case EListExpandableMultiRowWithoutIcon:
+ {
+ ChangeActiveList(iListManager->ListExpandableMultiRowWithoutIcon());
+ }
+ break;
+ case EListExpandableMultiRowWithoutIconWithBubble:
+ {
+ ChangeActiveList(iListManager->ListMultiRowWithoutIconWithBubble());
+ }
+ break;
+ default:
+ __ASSERT_DEBUG( EFalse,
+ User::Panic( _L("TListType Error::SizeChanged()"), 0 ) );
+ break;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CFepUiBaseCtrl::HandlePointerDownEventL
+// Handle pointer down event
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CFepUiBaseCtrl* CFepCtrlDropdownList::HandlePointerDownEventL(const TPoint& aPoint)
+ {
+ CFepUiBaseCtrl::HandlePointerDownEventL(aPoint);
+
+ iListManager->ActiveList()->HandlePointerDownL(aPoint);
+
+ return this;
+ }
+
+// ---------------------------------------------------------------------------
+// CFepUiBaseCtrl::HandlePointerUpEventL
+// Handle pointer up event
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CFepUiBaseCtrl* CFepCtrlDropdownList::HandlePointerUpEventL(const TPoint& aPoint)
+ {
+ CFepUiBaseCtrl::HandlePointerUpEventL(aPoint);
+
+ iListManager->ActiveList()->HandlePointerUpL(aPoint);
+
+ return this;
+ }
+
+// ---------------------------------------------------------------------------
+// CFepUiBaseCtrl::HandlePointerMoveEventL
+// Handle pointer move event
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CFepUiBaseCtrl* CFepCtrlDropdownList::HandlePointerMoveEventL(const TPoint& aPoint)
+ {
+
+ if(!PointerDown())
+ {
+ return NULL;
+ }
+
+ iListManager->ActiveList()->HandlePointerDragL(aPoint);
+
+ return this;
+ }
+
+EXPORT_C void CFepCtrlDropdownList::HandlePointerLeave(const TPoint& aPoint)
+ {
+ CFepUiBaseCtrl::HandlePointerLeave(aPoint);
+ if(!Hiden())
+ iListManager->ActiveList()->HandlePointerLeave(aPoint);
+ ClearBubble();
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::AddCandidatesL
+// Add candidate
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::AddCandidatesL(const RPointerArray<HBufC>& aCandidates,
+ const TListType /*aListType*/)
+ {
+ // add new candidates
+ for (TInt i = iCandidatelist.Count(); i < aCandidates.Count(); i++)
+ {
+ CCandidate* candidate = CCandidate::NewL(*aCandidates[i], this);
+
+ if (iCandidatelist.Append(candidate) != KErrNone)
+ {
+ delete candidate;
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetCandidatesL
+// Set candidate
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetCandidatesL(const RPointerArray<HBufC>& aCandidates,
+ const TListType aListType,
+ const TDesC& aFixedText)
+ {
+ //clear last candidates which had been set
+ iCandidatelist.ResetAndDestroy();
+
+ iListManager->ResetStatus();
+
+ iHighlightList.Reset();
+
+ iFixedText.Zero();
+ iFixedText.Append(aFixedText);
+
+ iFirstCandidateIndex = 0;
+ iLastCandidateIndex = 0;
+ // create or add new ones
+ for( TInt i=0; i < aCandidates.Count(); i++ )
+ {
+ // CCandidate is s.c. self-containing class
+ CCandidate* candidate = CCandidate::NewL(*aCandidates[i], this);
+ // referring to memory object
+ iCandidatelist.Append(candidate);
+ }
+
+ iListType = aListType;
+
+ switch ( aListType )
+ {
+ case EListNoExpandable:
+ {
+ ChangeActiveList( iListManager->ListOneRowWithoutIcon() );
+ }
+ break;
+ case EListNoExpandableWithBubble:
+ {
+ ChangeActiveList( iListManager->ListOneRowWithoutIconWithBubble() );
+ }
+ break;
+ case EListExpandable:
+ case EListExpandableWithoutIcon:
+ {
+ ChangeActiveList(iListManager->ListOneRowWithIcon());
+ }
+ break;
+ case EListExpandableWithBubble:
+ {
+ ChangeActiveList(iListManager->ListOneRowWithIconWithBubble());
+ }
+ break;
+
+ // txin
+ case EListExpandableRollWithIcon:
+ {
+ SetOneRowStartCandIdx(KInvalidCandIndex);
+ SetOriginalFirstCandIdx(KInvalidCandIndex);
+
+ ChangeActiveList(iListManager->ListOneRowRollWithIcon());
+ }
+ break;
+ case EListExpandableRollWithIconWithBubble:
+ {
+ SetOneRowStartCandIdx(KInvalidCandIndex);
+ SetOriginalFirstCandIdx(KInvalidCandIndex);
+
+ ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble());
+ }
+ break;
+
+ case EListExpandableMultiRowWithoutIcon:
+ {
+ ChangeActiveList( iListManager->ListExpandableMultiRowWithoutIcon() );
+ }
+ break;
+
+ case EListExpandableMultiRowWithoutIconWithBubble:
+ {
+ ChangeActiveList(iListManager->ListMultiRowWithoutIconWithBubble());
+ }
+ break;
+
+ default:
+ __ASSERT_DEBUG( EFalse,
+ User::Panic( _L("TListType Error::SetCandidatesL()"), 0 ) );
+ break;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::Move
+// when the control is moved, the function will be called
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::Move(const TPoint& aOffset)
+ {
+ ClearRect(Rect());
+ Invalidate(Rect(),ETrue);
+ iListManager->Move(aOffset);
+ SetRect(iListManager->ActiveList()->Rect());
+ iListManager->ActiveList()->Draw();
+ Invalidate(iListManager->ActiveList()->Rect());
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::OnDeActivate
+// when the control is hide, the function will be called
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::OnDeActivate()
+ {
+ iListManager->ResetStatus();
+ }
+
+// ---------------------------------------------------------------------------
+// Hide or show dropdown list.
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::Hide( TBool aFlag )
+ {
+ ClearBubble();
+ CFepUiBaseCtrl::Hide( aFlag );
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::FoldList
+// fold the drop down list control
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::FoldList()
+ {
+ if ((iListManager->ActiveList() == iListManager->ListMultiRowWithIcon())
+ || (iListManager->ActiveList() == iListManager->ListMultiRowWithoutIcon()))
+ {
+ ChangeActiveList(iListManager->ListOneRowWithIcon(), iFirstCandidateIndex);
+ }
+ // added by txin
+ else if (iListManager->ActiveList() == iListManager->ListMultiRowRollWithIcon())
+ {
+ TInt onerowCandIdx = OneRowStartCandIdx();
+
+ if (onerowCandIdx != KInvalidCandIndex)
+ {
+ ChangeActiveList(iListManager->ListOneRowRollWithIcon(), onerowCandIdx);
+ return;
+ }
+
+ ChangeActiveList(iListManager->ListOneRowRollWithIcon(), iFirstCandidateIndex);
+ }
+ else if (iListManager->ActiveList() == iListManager->ListMultiRowRollWithIconWithBubble())
+ {
+ TInt onerowCandIdx = OneRowStartCandIdx();
+
+ if (onerowCandIdx != KInvalidCandIndex)
+ {
+ ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble(), onerowCandIdx);
+ return;
+ }
+
+ ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble(), iFirstCandidateIndex);
+ }
+ else if(iListManager->ActiveList() == iListManager->ListMultiRowWithIconWithBubble())
+ {
+ ChangeActiveList(iListManager->ListOneRowWithIconWithBubble(), iFirstCandidateIndex);
+ }
+ // end
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::ResetAndClear
+// reset and clear and redraw the list
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::ResetAndClear(const TListType aListType)
+ {
+ //clear last candidates which had been set
+ iCandidatelist.ResetAndDestroy();
+
+ iFixedText.Zero();
+
+ iFirstCandidateIndex = 0;
+ iLastCandidateIndex = 0;
+
+ switch ( aListType )
+ {
+ case EListNoExpandable:
+ ChangeActiveList( iListManager->ListOneRowWithoutIcon() );
+ break;
+ case EListNoExpandableWithBubble:
+ ChangeActiveList( iListManager->ListOneRowWithoutIconWithBubble() );
+ break;
+
+ case EListExpandable:
+ case EListExpandableWithoutIcon:
+ {
+ ChangeActiveList(iListManager->ListOneRowWithIcon());
+ NotifyClosePage();
+ }
+ break;
+ case EListExpandableWithBubble:
+ {
+ ChangeActiveList(iListManager->ListOneRowWithIconWithBubble());
+ NotifyClosePage();
+ }
+ break;
+
+ // txin
+ case EListExpandableRollWithIcon:
+ {
+ ChangeActiveList(iListManager->ListOneRowRollWithIcon());
+ NotifyClosePage();
+ }
+ break;
+ // end
+ case EListExpandableRollWithIconWithBubble:
+ {
+ ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble());
+ NotifyClosePage();
+ }
+ break;
+ case EListExpandableMultiRowWithoutIcon:
+ {
+ ChangeActiveList(iListManager->ListExpandableMultiRowWithoutIcon());
+ NotifyClosePage();
+ }
+ break;
+
+ case EListExpandableMultiRowWithoutIconWithBubble:
+ {
+ ChangeActiveList(iListManager->ListMultiRowWithoutIconWithBubble());
+ NotifyClosePage();
+ }
+ break;
+ default:
+ __ASSERT_DEBUG( EFalse,
+ User::Panic( _L("TListType Error::ResetAndClear()"), 0 ) );
+ break;
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::HandleEvent
+// when there is out event coming, the function will be called
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::HandleControlEvent(TInt aEventType,
+ CFepUiBaseCtrl* aCtrl,
+ const TDesC& aEventData)
+ {
+ if ( iListEventHandler )
+ {
+ iListEventHandler->HandleListOuterEvent(aEventType, aCtrl, aEventData);
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::Draw
+// draw the list
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::Draw()
+ {
+ if(!AbleToDraw())
+ return;
+
+ if (!iFirstTimeConstruct)
+ {
+ // if construct is not finished, then no need to draw
+///DrawOpaqueMaskBackground();
+
+ //ActivateBitmapContext();
+
+ iListManager->ActiveList()->Draw();
+ Invalidate(iListManager->ActiveList()->Rect());
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetHighlightCell
+// set or unset the high light effect for the cell
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetHighlightCell(const TInt aCellIndex,
+ TBool aHighlight,
+ const TBool aIsDraw)
+ {
+ if (aHighlight)
+ {
+
+ iHighlightList.Reset();
+
+ iHighlightList.Append(aCellIndex);
+
+ if ((iListType == EListExpandableRollWithIcon ||
+ iListType == EListExpandableRollWithIconWithBubble) &&
+ (aCellIndex == GetFirstCandidateIndex()))
+ {
+ SetOneRowStartCandIdx(GetFirstCandidateIndex());
+ }
+ }
+ else
+ {
+ TInt index = iHighlightList.Find(aCellIndex);
+
+ if ( index != KErrNotFound )
+ {
+ iHighlightList.Remove(index);
+ }
+ }
+
+ if( aIsDraw )
+ {
+ iListManager->ActiveList()->SetHighlightCell(aCellIndex, aHighlight, EFalse);
+
+ Draw();
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::Rect
+// get the rect of the list
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TRect& CFepCtrlDropdownList::Rect()
+ {
+ return iListManager->ActiveList()->Rect();
+ }
+
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetEventIdForCandidateSelected
+// set event id when candidate is selected
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetEventIdForCandidateSelected(TInt aEventId)
+ {
+ iEventIdForCandidateSelected = aEventId;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetEventIdForNextPageCandidate
+// set event id when need get next page candidate
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetEventIdForNextPageCandidate(TInt aEventId)
+ {
+ iEventIdForNextPageCandidate = aEventId;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetEventIdForPreviousPageCandidate
+// set event id when need get previous page candidate
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetEventIdForPreviousPageCandidate(TInt aEventId)
+ {
+ iEventIdForPreviousPageCandidate = aEventId;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetEventIdForCandidateExisted
+// set event id when need judge if candidate exist
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetEventIdForCandidateExisted(TInt aEventId)
+ {
+ iEventIdForCandidateExisted = aEventId;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetTopLeftPoint
+// set top left point of the list
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetTopLeftPoint(const TPoint aTopLeftPoint)
+ {
+ SizeChanged(iCellWidth, iCellHeight, iNaviWidth, aTopLeftPoint);
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetCellWidth
+// set cell width
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetCellWidth(const TInt aCellWidth)
+ {
+ SizeChanged(aCellWidth, iCellHeight, iNaviWidth);
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetCellHeight
+// set cell height
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetCellHeight(const TInt aCellHeight)
+ {
+ SizeChanged(iCellWidth, aCellHeight, iNaviWidth);
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetNaviWidth
+// set navigation width
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetNaviWidth(const TInt aNaviWidth)
+ {
+ SizeChanged(iCellWidth, iCellHeight, aNaviWidth);
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetColNum
+// set columns number
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetColNum(const TInt aColNum)
+ {
+ SizeChanged(iCellWidth, iCellHeight, iNaviWidth, iTopLeftPoint, aColNum);
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetRowNum
+// Set rows number
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetRowNum(const TInt aRowNum)
+ {
+ SizeChanged(iCellWidth, iCellHeight, iNaviWidth, iTopLeftPoint, iColNum, aRowNum);
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetBorderColor
+// Set border color
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetBorderColor(TRgb aBorderColor, TBool aReDraw)
+ {
+ iBorderColor = aBorderColor;
+
+ if ( aReDraw )
+ {
+ Draw();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetBgColor
+// Set background color for the whole DDl (drop down list)
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetBgColor(TRgb aBgColor, TBool aReDraw)
+ {
+ iBgColor = aBgColor;
+
+ if ( aReDraw )
+ {
+ Draw();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetNavigationBgColor
+// set background color for navigation area
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetNavigationBgColor(TRgb aNavigationBgColor, TBool aReDraw)
+ {
+ iNavigationBgColor = aNavigationBgColor;
+
+ if ( aReDraw )
+ {
+ Draw();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetTextColor
+// set text color
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetTextColor(TRgb aTextColor, TBool aReDraw)
+ {
+ iTextColor = aTextColor;
+
+ if ( aReDraw )
+ {
+ Draw();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetSpecialTextColor
+// set special text color
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetSpecialTextColor(TRgb aSpecialTextColor, TBool aReDraw)
+ {
+ iSpecialTextColor = aSpecialTextColor;
+
+ if ( aReDraw )
+ {
+ Draw();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetHighLightTextColor
+// set text color for highlight
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetHighLightTextColor(TRgb aHighLightTextColor, TBool aReDraw)
+ {
+ iHighLightTextColor = aHighLightTextColor;
+
+ if ( aReDraw )
+ {
+ Draw();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetHighLightBgColor
+// set background color for highlight
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetHighLightBgColor(TRgb aHighLightBgColor, TBool aReDraw)
+ {
+ iHighLightBgColor = aHighLightBgColor;
+
+ if ( aReDraw )
+ {
+ Draw();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetTextAlighment
+// set text alignment
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetTextAlighment(const CGraphicsContext::TTextAlign aAlignment,
+ TBool aReDraw)
+ {
+ iAlignment = aAlignment;
+
+ if ( aReDraw )
+ {
+ Draw();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetTextAlighment
+// set text alignment
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetTextMargin(const TInt aTextMargin, TBool aReDraw)
+ {
+ iTextMargin = aTextMargin;
+
+ if ( aReDraw )
+ {
+ Draw();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetCellColor
+// set cell color
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetSecondaryList(RArray<TInt>& aIndexList, TBool aReDraw)
+ {
+ iSecondaryList.Reset();
+ for (TInt i=0; i < aIndexList.Count(); i++)
+ {
+ iSecondaryList.Append(aIndexList[i]);
+ }
+
+ if ( aReDraw )
+ {
+ Draw();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetFont
+// set text font
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetFont(const CFont* aFont, TBool aReDraw)
+ {
+ iFont = aFont;
+
+ if ( aReDraw )
+ {
+ switch ( iListType )
+ {
+ case EListNoExpandable:
+ ChangeActiveList( iListManager->ListOneRowWithoutIcon() );
+ break;
+ case EListExpandable:
+ case EListExpandableWithoutIcon:
+ ChangeActiveList(iListManager->ListOneRowWithIcon());
+ break;
+ // txin
+ case EListExpandableRollWithIcon:
+ ChangeActiveList(iListManager->ListOneRowRollWithIcon());
+ break;
+ case EListExpandableRollWithIconWithBubble:
+ ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble());
+ break;
+ case EListExpandableMultiRowWithoutIcon:
+ {
+ ChangeActiveList( iListManager->ListExpandableMultiRowWithoutIcon() );
+ }
+ break;
+ case EListExpandableMultiRowWithoutIconWithBubble:
+ {
+ ChangeActiveList(iListManager->ListMultiRowWithoutIconWithBubble());
+ }
+ break;
+
+ default:
+ __ASSERT_DEBUG( EFalse,
+ User::Panic( _L("TListType Error::SetFont()"), 0 ) );
+ break;
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetListEventHandler
+// set list event handler
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetListEventHandler(MListEventHandler* aHandler)
+ {
+ iListEventHandler = aHandler;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::CandidateCount
+// get candidate count
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CFepCtrlDropdownList::CandidateCount() const
+ {
+ return iCandidatelist.Count();
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetCellColorList
+// get multi color list
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+const RArray<TInt>& CFepCtrlDropdownList::GetSecondaryList() const
+ {
+ return iSecondaryList;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::EnableMultiColor
+// enable multi color or not
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::EnableSecondary(TBool aEnable, TBool aReDraw)
+ {
+ iEnableSecondary = aEnable;
+
+ if ( aReDraw )
+ {
+ Draw();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::IsEnableSecondary
+// get multi color is enable or disable
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CFepCtrlDropdownList::IsEnableSecondary() const
+ {
+ return iEnableSecondary;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::DrawMask
+// draw mask
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CFepCtrlDropdownList::DrawMask(TRect aRect)
+ {
+ Gc()->Activate( MaskBitmapDevice() );
+ Gc()->SetBrushStyle( CGraphicsContext::ESolidBrush );
+ Gc()->SetBrushColor( TRgb(KOpaqueColor) );
+ Gc()->SetPenSize(PenSize());
+ Gc()->SetPenColor( TRgb(KOpaqueColor) );
+ Gc()->DrawRect(aRect);
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::ActivateBitmapContext
+// active bitmap context
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CFepCtrlDropdownList::ActivateBitmapContext()
+ {
+ Gc()->Activate(BitmapDevice());
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::Gc
+// return the graphics context
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CFbsBitGc* CFepCtrlDropdownList::Gc()
+ {
+ return static_cast<CFbsBitGc*>(BitGc());
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetFirstCandidateIndex
+// get FirstCandidateIndex
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CFepCtrlDropdownList::GetFirstCandidateIndex()
+ {
+ return iFirstCandidateIndex;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetLastCandidateIndex
+// get LastCandidateIndex
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CFepCtrlDropdownList::GetLastCandidateIndex()
+ {
+ return iLastCandidateIndex;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetFirstCandidateIndex
+// set FirstCandidateIndex
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CFepCtrlDropdownList::SetFirstCandidateIndex(TInt aFirstIndex)
+ {
+ iFirstCandidateIndex = aFirstIndex;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetLastCandidateIndex
+// Set LastCandidateIndex
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CFepCtrlDropdownList::SetLastCandidateIndex(TInt aLastIndex)
+ {
+ iLastCandidateIndex = aLastIndex;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetCandidate
+// get candidate
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CCandidate* CFepCtrlDropdownList::GetCandidate(TInt aIndex)
+ {
+ if ( ( aIndex >= 0 ) && ( aIndex < iCandidatelist.Count() ) )
+ {
+ return iCandidatelist[aIndex];
+ }
+
+ return NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetTopLeftPoint
+// get Top Left Point
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TPoint CFepCtrlDropdownList::GetTopLeftPoint()
+ {
+ return iTopLeftPoint;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetCellWidth
+// get width
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CFepCtrlDropdownList::GetCellWidth()
+ {
+ return iCellWidth;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetCellHeight
+// get cell height
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CFepCtrlDropdownList::GetCellHeight()
+ {
+ return iCellHeight;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetNaviWidth
+// get navigation width
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CFepCtrlDropdownList::GetNaviWidth()
+ {
+ return iNaviWidth;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetColNum
+// get columns number
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CFepCtrlDropdownList::GetColNum()
+ {
+ return iColNum;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetRowNum
+// get rows number
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CFepCtrlDropdownList::GetRowNum()
+ {
+ return iRowNum;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetFont
+// get text font
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+const CFont* CFepCtrlDropdownList::GetFont()
+ {
+ return iFont;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetAlignment
+// get alignment
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CGraphicsContext::TTextAlign CFepCtrlDropdownList::GetAlignment()
+ {
+ return iAlignment;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetAlignment
+// get alignment
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CFepCtrlDropdownList::GetTextMargin()
+ {
+ return iTextMargin;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetBgColor
+// get background color
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TRgb CFepCtrlDropdownList::GetBgColor()
+ {
+ return iBgColor;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetButtonDownBgColor
+// get button down color
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TRgb CFepCtrlDropdownList::GetButtonDownBgColor()
+ {
+ return iButtonDownBgColor;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetBorderColor
+// get border color
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TRgb CFepCtrlDropdownList::GetBorderColor()
+ {
+ return iBorderColor;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetTextColor
+// get text color
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TRgb CFepCtrlDropdownList::GetTextColor()
+ {
+ return iTextColor;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetHighLightBgColor
+// get highlight background color
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TRgb CFepCtrlDropdownList::GetHighLightBgColor()
+ {
+ return iHighLightBgColor;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetHighLightTextColor
+// get highlignt text color
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TRgb CFepCtrlDropdownList::GetHighLightTextColor()
+ {
+ return iHighLightTextColor;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetSpecialTextColor
+// get special text color
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TRgb CFepCtrlDropdownList::GetSpecialTextColor()
+ {
+ return iSpecialTextColor;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetFixedText
+// get fixed text
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TDesC CFepCtrlDropdownList::GetFixedText()
+ {
+ return iFixedText;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetHighlightList
+// get bitmap manager
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+const RArray<TInt>& CFepCtrlDropdownList::GetHighlightList() const
+ {
+ return iHighlightList;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetPages
+// get page manager
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CPages* CFepCtrlDropdownList::GetPages()
+ {
+ return iPages;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetBitmapDb
+// get bitmap manager
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CBitmapDb* CFepCtrlDropdownList::GetBitmapDb()
+ {
+ return iBitmapDb;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::ReportCandidateSelectEvent
+// report candidate selected event
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CFepCtrlDropdownList::ReportCandidateSelectEventL(const TDesC& aCandidate,
+ const TInt aSelectedIndex)
+ {
+ HBufC* bufc = HBufC::NewL( aCandidate.Length() + 1 );
+ TPtr ptr = bufc->Des();
+ ptr.Copy( aCandidate );
+ ptr.Append( (TUint16*)&aSelectedIndex, 1 );
+ ReportEvent(iEventIdForCandidateSelected, *bufc);
+ delete bufc;
+ bufc = NULL;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::Invalidate
+// update the animation
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CFepCtrlDropdownList::Invalidate(const TRect& aRect, TBool aUpdateAll)
+ {
+ RootControl()->UpdateArea(aRect,aUpdateAll);
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::ChangeActiveList
+// change active list
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CFepCtrlDropdownList::ChangeActiveList(CList* aList, TInt aLastIndex)
+ {
+ TRect rect = Rect();
+
+ CList* beforeList = iListManager->ActiveList();
+
+ if( RootControl()->CtrlCapPointer() == this)
+ {
+ SetCapture(EFalse);
+ }
+
+ switch ( iListType )
+ {
+ case EListNoExpandable:
+ case EListNoExpandableWithBubble:
+ EnableSecondary(ETrue);
+ break;
+ case EListExpandable:
+ case EListExpandableWithBubble:
+ case EListExpandableWithoutIcon:
+ // txin
+ case EListExpandableRollWithIcon:
+ case EListExpandableRollWithIconWithBubble:
+ // end
+ EnableSecondary(EFalse);
+ break;
+ case EListExpandableMultiRowWithoutIcon:
+ case EListExpandableMultiRowWithoutIconWithBubble:
+ break;
+ default:
+ __ASSERT_DEBUG( EFalse,
+ User::Panic( _L("TListType Error::ChangeActiveList()"), 0 ) );
+ break;
+ }
+
+ iListManager->SetActiveList(aList);
+ SetRect(iListManager->ActiveList()->Rect());
+
+ if ( aLastIndex )
+ {
+ SetLastCandidateIndex(aLastIndex);
+ }
+ else
+ {
+ GetPages()->Reset();
+ SetFirstCandidateIndex(0);
+ SetLastCandidateIndex(0);
+ }
+
+ if(!Hiden() && Ready())
+ {
+ TRAP_IGNORE(iListManager->ActiveList()->UpdateListL());
+ }
+
+ // If the list is shrink, then redraw
+ // txin
+ if ( ( ( beforeList == iListManager->ListMultiRowWithIcon() )
+ && ( aList != iListManager->ListMultiRowWithIcon() ) )
+ || ( ( ( beforeList == iListManager->ListMultiRowWithoutIcon() )
+ && ( aList != iListManager->ListMultiRowWithoutIcon() ) ) )
+ || ( ( ( beforeList == iListManager->ListMultiRowRollWithIcon())
+ && ( aList != iListManager->ListMultiRowRollWithIcon() ) ) )
+ || ( ( ( beforeList == iListManager->ListExpandableMultiRowWithoutIcon() )
+ && ( aList != iListManager->ListExpandableMultiRowWithoutIcon() ) ) )
+ || ( ( ( beforeList == iListManager->ListMultiRowWithIconWithBubble() ))
+ && (aList != iListManager->ListMultiRowWithIconWithBubble() ) )
+ || ( ( ( beforeList == iListManager->ListMultiRowRollWithIconWithBubble() ))
+ && (aList != iListManager->ListMultiRowRollWithIconWithBubble() ) )
+ || ( ( ( beforeList == iListManager->ListMultiRowWithoutIconWithBubble() ))
+ && (aList != iListManager->ListMultiRowWithoutIconWithBubble() ) ))
+ {
+ rect.Shrink(TSize(0,-1));
+ RootControl()->ReDrawRect(rect);
+ Invalidate(rect,ETrue);
+ }
+ // end
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::GetPenSize
+// get pen size
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+const TSize CFepCtrlDropdownList::GetPenSize()
+ {
+ return PenSize();
+ }
+
+void CFepCtrlDropdownList::SetCapture(TBool aFlag)
+ {
+ CapturePointer(aFlag);
+ }
+
+// ---------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetActive
+// Set active for the button
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetActive(TBool aActiveFlag)
+ {
+ if(IsActive() != aActiveFlag)
+ {
+ CFepUiBaseCtrl::SetActive(aActiveFlag);
+ /*Draw();
+ UpdateArea(Rect(),EFalse);*/
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CFepCtrlDropdownList::ConstructFromResourceL
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::ConstructFromResourceL()
+ {
+ if (iResourceId == KInvalidResId)
+ {
+ User::Leave(KErrArgument);
+ }
+
+ // first time construct will not go this way
+ // only useful for skin change
+ if (!iFirstTimeConstruct)
+ {
+ TResourceReader reader;
+ CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId);
+ iBitmapDb->ConstructFromResourceL(reader,
+ TSize(iCellWidth, iCellHeight),
+ TSize(iNaviWidth, iCellHeight),
+ TSize(iNaviWidth, iSpinBtnHeight));
+ CleanupStack::PopAndDestroy(); // reader
+ SetTextColor(iBitmapDb->TextColor());
+ SetBorderColor(iBitmapDb->FrameColor());
+ iListManager->ActiveList()->UpdateListL(AbleToDraw(),EFalse);
+ Draw();
+ }
+
+ iFirstTimeConstruct = EFalse;
+ }
+
+// ---------------------------------------------------------------------------
+// CFepCtrlDropdownList::NotifyGetNextPage
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CFepCtrlDropdownList::NotifyGetNextPage()
+ {
+ ReportEvent(iEventIdForNextPageCandidate);
+ }
+
+// ---------------------------------------------------------------------------
+// CFepCtrlDropdownList::NotifyGetPreviousPage
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+void CFepCtrlDropdownList::NotifyGetPreviousPage()
+ {
+ ReportEvent(iEventIdForPreviousPageCandidate);
+ }
+
+// ---------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetFlagCandidateExist
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetFlagCandidateExist(TBool aFlag)
+ {
+ iCandidateExisted = aFlag;
+ }
+
+// ---------------------------------------------------------------------------
+// CFepCtrlDropdownList::NextCandidateExist
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+TBool CFepCtrlDropdownList::NextCandidateExist()
+ {
+ ReportEvent(iEventIdForCandidateExisted);
+
+ return iCandidateExisted;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::AutoChangeActiveList
+// change active list
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CFepCtrlDropdownList::AutoChangeActiveList( TInt aLastIndex )
+ {
+ switch ( iListType )
+ {
+ case EListExpandable:
+ if ( iListManager->ActiveList()
+ == iListManager->ListOneRowWithIcon() )
+ {
+ ChangeActiveList( iListManager->ListMultiRowWithIcon(), aLastIndex );
+ BringToTop();
+ }
+ else
+ {
+ BringToBack();
+ ChangeActiveList( iListManager->ListOneRowWithIcon(), aLastIndex );
+ NotifyClosePage();
+ }
+ break;
+ case EListExpandableWithoutIcon:
+ if ( iListManager->ActiveList()
+ == iListManager->ListOneRowWithIcon() )
+ {
+ ChangeActiveList( iListManager->ListMultiRowWithoutIcon(), aLastIndex );
+ BringToTop();
+ }
+ else
+ {
+ BringToBack();
+ ChangeActiveList( iListManager->ListOneRowWithIcon(), aLastIndex );
+ }
+ break;
+ // txin
+ case EListExpandableRollWithIcon:
+ {
+ if (iListManager->ActiveList() == iListManager->ListOneRowRollWithIcon())
+ {
+ ChangeActiveList(iListManager->ListMultiRowRollWithIcon(), aLastIndex);
+ BringToTop();
+ }
+ else
+ {
+ BringToBack();
+ ChangeActiveList(iListManager->ListOneRowRollWithIcon(), aLastIndex);
+ NotifyClosePage();
+ }
+ }
+ break;
+ case EListExpandableRollWithIconWithBubble:
+ {
+ if (iListManager->ActiveList() == iListManager->ListOneRowRollWithIconWithBubble())
+ {
+ ChangeActiveList(iListManager->ListMultiRowRollWithIconWithBubble(), aLastIndex);
+ BringToTop();
+ }
+ else
+ {
+ BringToBack();
+ ChangeActiveList(iListManager->ListOneRowRollWithIconWithBubble(), aLastIndex);
+ NotifyClosePage();
+ }
+ }
+ break;
+
+ case EListExpandableWithBubble:
+ {
+ if ( iListManager->ActiveList()
+ == iListManager->ListOneRowWithIconWithBubble() )
+ {
+ ChangeActiveList( iListManager->ListMultiRowWithIconWithBubble(), aLastIndex );
+ BringToTop();
+ }
+ else
+ {
+ BringToBack();
+ ChangeActiveList( iListManager->ListOneRowWithIconWithBubble(), aLastIndex );
+ NotifyClosePage();
+ }
+ }
+ break;
+ case EListExpandableMultiRowWithoutIcon:
+ case EListExpandableMultiRowWithoutIconWithBubble:
+ break;
+ case EListNoExpandable:
+ case EListNoExpandableWithBubble:
+ break;
+ default:
+ __ASSERT_DEBUG( EFalse,
+ User::Panic( _L("TListType Error::AutoChangeActiveList()"), 0 ) );
+ break;
+ }
+
+ }
+
+// added by txin in 2007.06.07
+EXPORT_C void CFepCtrlDropdownList::SetSpinBtnHeight(const TInt aHeight)
+ {
+ // make sure navi next, navi previous plus close, do not beyond row count
+ TInt minExpandHeight = 2 * aHeight + GetCellHeight() + 4 * GetCellVerticalMargin();
+ TInt realExpandHeight = GetCellHeight() * GetRowNum() +
+ (GetRowNum() + 1) * GetCellVerticalMargin();
+
+ if ((aHeight > 0) && (minExpandHeight <= realExpandHeight))
+ {
+ iSpinBtnHeight = aHeight;
+ SizeChanged(iCellWidth, iCellHeight, iNaviWidth);
+ }
+ }
+
+EXPORT_C void CFepCtrlDropdownList::SetCellMargin(const TInt aHorizontalMargin,
+ const TInt aVerticalMargin)
+ {
+ if (((aHorizontalMargin > 0) && (aHorizontalMargin != iCellHorizontalMargin)) ||
+ ((aVerticalMargin > 0) && (aVerticalMargin != iCellVerticalMargin)))
+ {
+ iCellHorizontalMargin = aHorizontalMargin;
+ iCellVerticalMargin = aVerticalMargin;
+
+ SizeChanged(iCellWidth, iCellHeight, iNaviWidth);
+ }
+ }
+
+TInt CFepCtrlDropdownList::GetSpinBtnHeight()
+ {
+ return iSpinBtnHeight;
+ }
+
+TInt CFepCtrlDropdownList::GetCellHorizontalMargin()
+ {
+ return iCellHorizontalMargin;
+ }
+
+TInt CFepCtrlDropdownList::GetCellVerticalMargin()
+ {
+ return iCellVerticalMargin;
+ }
+
+TInt CFepCtrlDropdownList::ListType()
+ {
+ return iListType;
+ }
+
+TInt CFepCtrlDropdownList::OneRowStartCandIdx()
+ {
+ return iOriginalCandIdx;
+ }
+
+void CFepCtrlDropdownList::SetOneRowStartCandIdx(TInt aOriginalCandIdx)
+ {
+ iOriginalCandIdx = aOriginalCandIdx;
+ }
+
+TInt CFepCtrlDropdownList::GetOriginalFirstCandIdx()
+ {
+ return iOriginalFirstCandIdx;
+ }
+
+void CFepCtrlDropdownList::SetOriginalFirstCandIdx(TInt aOriginalFirstCandIdx)
+ {
+ iOriginalFirstCandIdx = aOriginalFirstCandIdx;
+ }
+
+EXPORT_C void CFepCtrlDropdownList::SetCandTruncateType(const TCandTruncateType aTruncateType)
+ {
+ iCandTruncateType = aTruncateType;
+ }
+
+TInt CFepCtrlDropdownList::CandTruncateType()
+ {
+ return iCandTruncateType;
+ }
+
+CList* CFepCtrlDropdownList::ActiveList()
+ {
+ return iListManager->ActiveList();
+ }
+
+void CFepCtrlDropdownList::SetUpdateListReDrawFlag(TBool aReDraw)
+ {
+ iUpdateListReDraw = aReDraw;
+ }
+
+TBool CFepCtrlDropdownList::GetUpdateListRedrawFlag()
+ {
+ return iUpdateListReDraw;
+ }
+
+EXPORT_C void CFepCtrlDropdownList::SetFuzzyBoundry(TInt aFuzzyBoundry)
+ {
+ if (aFuzzyBoundry != iFuzzyBoundry && aFuzzyBoundry >= 0)
+ {
+ iFuzzyBoundry = aFuzzyBoundry;
+ }
+ }
+
+TInt CFepCtrlDropdownList::FuzzyBoundry()
+ {
+ return iFuzzyBoundry;
+ }
+
+EXPORT_C void CFepCtrlDropdownList::SetCandExpandType(const TExpandType aType)
+ {
+ if (aType != iCandExpandType)
+ {
+ iCandExpandType = aType;
+ }
+ }
+
+TInt CFepCtrlDropdownList::CandExpandType()
+ {
+ return iCandExpandType;
+ }
+
+void CFepCtrlDropdownList::NotifyClosePage()
+ {
+ UiLayout()->RootControl()->Draw();
+ }
+
+EXPORT_C void CFepCtrlDropdownList::SetDropdownListImgID(
+ TDropdownListDrawInfo aDropdownListDrawInfo)
+ {
+ iListManager->ListOneRowWithIcon()->SetDropdownListImgID(aDropdownListDrawInfo);
+
+ iListManager->ListOneRowWithIconWithBubble()->SetDropdownListImgID(aDropdownListDrawInfo);
+
+ iListManager->ListMultiRowWithIcon()->SetDropdownListImgID(aDropdownListDrawInfo);
+
+ iListManager->ListMultiRowWithIconWithBubble()->SetDropdownListImgID(aDropdownListDrawInfo);
+
+ iListManager->ListOneRowWithoutIcon()->SetDropdownListImgID(aDropdownListDrawInfo);
+
+ iListManager->ListOneRowWithoutIconWithBubble()->SetDropdownListImgID(aDropdownListDrawInfo);
+
+ iListManager->ListOneRowRollWithIcon()->SetDropdownListImgID(aDropdownListDrawInfo);
+
+ iListManager->ListOneRowRollWithIconWithBubble()->SetDropdownListImgID(aDropdownListDrawInfo);
+
+ iListManager->ListMultiRowRollWithIcon()->SetDropdownListImgID(aDropdownListDrawInfo);
+
+ iListManager->ListMultiRowRollWithIconWithBubble()->SetDropdownListImgID(aDropdownListDrawInfo);
+
+ iListManager->ListExpandableMultiRowWithoutIcon()->SetDropdownListImgID(aDropdownListDrawInfo);
+ iListManager->ListMultiRowWithoutIconWithBubble()->SetDropdownListImgID(aDropdownListDrawInfo);
+ }
+
+CFepUiLayout* CFepCtrlDropdownList::UiLayout()
+ {
+ return CFepUiBaseCtrl::UiLayout();
+ }
+
+TInt CFepCtrlDropdownList::CandHDirection()
+ {
+ return iCandHDirection;
+ }
+
+TBool CFepCtrlDropdownList::PageCtrlShown()
+ {
+ return iPageCtrlShown;
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::ShowBubble
+// Set show preview bubble on/off
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::ShowBubble(TBool aFlag)
+ {
+ TBool flag = iBubbleCtrl ? ETrue : EFalse;
+ iIsShowBubble = aFlag;
+ if ( flag != aFlag )
+ {
+ if(!flag)
+ {
+ TRAP_IGNORE(iBubbleCtrl = CBubbleCtrl::NewL(TRect(0,0,0,0),UiLayout(),-0xFFFF));
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetBubbleBitmapParam
+// Set preview bubble bitmap
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetBubbleBitmapParam(CFbsBitmap* aBmpId,
+ CFbsBitmap* aMaskBmpId ,
+ TAknsItemID aBgSkinId )
+ {
+ if ( iBubbleCtrl )
+ {
+ iBubbleCtrl->SetBitmapParam(aBmpId,aMaskBmpId,aBgSkinId);
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetBubbleTextFont
+// Set preview bubble text font
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetBubbleTextFont(const CFont* aFont)
+ {
+ if ( iBubbleCtrl )
+ {
+ iBubbleFont = aFont;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetTextFormat
+// Set preview bubble text format
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetTextFormat(TAknTextLineLayout aTextFormat)
+ {
+ if ( iBubbleCtrl )
+ {
+ iBubbleCtrl->SetTextFormat(aTextFormat);
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetBubbleSize
+// Set preview bubble size
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetFrameDiff(TInt aLeftDiff, TInt aTopDiff,
+ TInt aRightDiff,TInt aBottomDiff)
+ {
+ if ( iBubbleCtrl )
+ {
+ iBubbleCtrl->SetFrameDiff(aLeftDiff,aTopDiff,aRightDiff,aBottomDiff);
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::SetBubbleSize
+// Set preview bubble size
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::SetBubbleSize(const TSize& aSize)
+ {
+ iBubbleSize = aSize;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::DrawBubble
+// Show preview bubble
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CFepCtrlDropdownList::DrawBubble(const TRect aRect, const TDesC& aText)
+ {
+ if ( iBubbleCtrl && iIsShowBubble && !(iBubbleCtrl->IsShowing()))
+ {
+ if(iBubbleFont)
+ {
+ iBubbleSize.iWidth = iBubbleFont->TextWidthInPixels(aText) + KPreviewBubbleOffset;
+ }
+
+ if(iBubbleSize.iWidth < aRect.Width() + KPreviewBubbleOffset )
+ {
+ iBubbleSize.iWidth = aRect.Width() + KPreviewBubbleOffset;
+ }
+
+
+ TRect rect = iBubbleCtrl->Rect();
+ TRect parentWndRect = Rect();
+ TInt x1 = aRect.iTl.iX - ( iBubbleSize.iWidth - aRect.Width() ) / 2;
+ TInt x2 = aRect.iBr.iX + ( iBubbleSize.iWidth - aRect.Width() ) / 2;
+
+ TRect screenRect;
+ AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, screenRect);
+ if ( x1 < 0 )
+ {
+ rect.iTl.iX = screenRect.iTl.iX;
+ rect.iBr.iX = screenRect.iTl.iX + iBubbleSize.iWidth;
+ }
+ else if ( x2 > screenRect.iBr.iX )
+ {
+ rect.iTl.iX = screenRect.iBr.iX - iBubbleSize.iWidth;
+ rect.iBr.iX = screenRect.iBr.iX;
+ }
+ else
+ {
+ rect.iTl.iX = x1;
+ rect.iBr.iX = x2;
+ }
+
+ rect.iTl.iY = iBubbleVerticalMargin + aRect.iTl.iY -
+ iBubbleSize.iHeight;
+ if ( rect.iTl.iY < 0 )
+ {
+ rect.iTl.iY = iBubbleVerticalMargin;
+ }
+
+ rect.iBr.iY = rect.iTl.iY + iBubbleSize.iHeight;
+
+ if((TBidiText::TextDirectionality(aText) == TBidiText:: ERightToLeft) && (aText.Length() > 1))
+ {
+
+ HBufC* displayStr = aText.Alloc();
+ TInt i = 0;
+ TInt charNum = displayStr->Length();
+
+ while(i < charNum)
+ {
+ displayStr->Des()[i] = aText[(charNum-1)-i];
+ ++i;
+ }
+ TRAP_IGNORE(iBubbleCtrl->SetTextL(*displayStr));
+
+ delete displayStr;
+
+ }
+ else
+ {
+ TRAP_IGNORE(iBubbleCtrl->SetTextL(aText));
+ }
+
+ iBubbleCtrl->Popup(rect);
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::ClearBubble
+// Hide preview bubble
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CFepCtrlDropdownList::ClearBubble()
+ {
+ if ( iBubbleCtrl && iBubbleCtrl->IsShowing())
+ {
+ iBubbleCtrl->Close();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::ReDrawBubble
+// ReDraw preview bubble
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CFepCtrlDropdownList::ReDrawBubble()
+ {
+ if(iBubbleCtrl && iBubbleCtrl->IsShowing())
+ {
+ iBubbleCtrl->Draw();
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CFepCtrlDropdownList::ReDrawRect
+// ReDraw Dropdown list rect
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CFepCtrlDropdownList::ReDrawRect(const TRect& /*aRect*/)
+ {
+ if(!AbleToDraw())
+ return;
+
+ if (!iFirstTimeConstruct)
+ {
+ iListManager->ActiveList()->Draw();
+ }
+ }
+
+// end adding
+
+// End Of File