--- a/textinput/peninputcommonctrls/src/peninputselectionlist/peninputcommonchoicelist.cpp Wed Jun 23 04:57:58 2010 +0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,324 +0,0 @@
-/*
-* 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: Implement of touch input mode switch
-*
-*/
-
-
-#include <peninputlayoutchoicelist.h>
-#include <peninputlayout.h>
-#include <AknIconUtils.h>
-#include <AknLayoutDef.h>
-#include <AknsDrawUtils.h>
-#include <AknUtils.h>
-#include <aknlayoutscalable_avkon.cdl.h>
-#include <barsread.h>
-#include <AknsUtils.h>
-#include <bautils.h>
-#include <AknFepGlobalEnums.h>
-#include <peninputcommonchoicelist.h>
-
-
-#define MIN_WORD_LENGTH 200 //temperarily added.
-const TInt KExtraMargine = 10;
-// ---------------------------------------------------------------------------
-// C++ constructor.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPeninputCommonChoiceList::
- CPeninputCommonChoiceList( CFepUiLayout* aUiLayout,
- TInt aControlId,
- TAknsItemID aItemSkinID,
- TAknsItemID aBackgroundSkinID,
- ECommonChoiceListStyle aListStyle )
-: CFepLayoutChoiceList( aUiLayout, aControlId )
- {
- iItemSkinID = aItemSkinID;
- iBackgroundSkinID = aBackgroundSkinID;
- iListStyle = aListStyle;
-#ifdef RD_TACTILE_FEEDBACK
- //Advanced Tactile feedback REQ417-47932
- if(aUiLayout)
- {
- if (aUiLayout->PenInputType() == EPluginInputModeFSQ||
- aUiLayout->PenInputType() == EPluginInputModeVkb)
- {
- SetTactileFeedbackType(ETouchFeedbackBasicButton);
- aUiLayout->ChangeFeedbackType(reinterpret_cast<TInt>(this),ETouchFeedbackBasicButton);
- }
- else
- {
- SetTactileFeedbackType(ETouchFeedbackSensitiveKeypad);
- aUiLayout->ChangeFeedbackType(reinterpret_cast<TInt>(this),ETouchFeedbackSensitiveKeypad);
- }
- }
-#endif //RD_TACTILE_FEEDBACK
- }
-
-// ---------------------------------------------------------------------------
-// Symbian Constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPeninputCommonChoiceList* CPeninputCommonChoiceList::
- NewL( CFepUiLayout* aUiLayout,
- TInt aControlId,
- TAknsItemID aItemSkinID,
- TAknsItemID aBackgroundSkinID,
- ECommonChoiceListStyle aListStyle )
- {
- CPeninputCommonChoiceList *self = new (ELeave)
- CPeninputCommonChoiceList( aUiLayout,
- aControlId,
- aItemSkinID,
- aBackgroundSkinID,
- aListStyle );
-
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop();
-
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPeninputCommonChoiceList::~CPeninputCommonChoiceList()
- {
- iItemRects.Close();
- }
-
-EXPORT_C void CPeninputCommonChoiceList::AddItemRectL( const TRect& aRect )
- {
- iItemRects.AppendL( aRect );
- }
-
-EXPORT_C void CPeninputCommonChoiceList::RemoveAllItemsRect()
- {
- iItemRects.Reset();
- }
-
-EXPORT_C void CPeninputCommonChoiceList::
- SetTextLayout( const TAknTextLineLayout& aTextLayout )
- {
- iTextLayout = aTextLayout;
- }
-
-TInt CPeninputCommonChoiceList::MaxWidthOfListItem()
- {
- if( iTextLayout.FontId() == 0 )
- return 0;
-
- TInt maxLength = 0;
- const CFont* font = AknLayoutUtils::FontFromId(iTextLayout.FontId(), NULL);
- ASSERT( font );
-
- for( TInt i = 0; i < ItemsCount(); i++ )
- {
- TInt length = font->TextWidthInPixels( ItemByIndex(i)->iText );
- maxLength = length > maxLength ? length : maxLength;
- }
- maxLength = maxLength > MIN_WORD_LENGTH ? maxLength : MIN_WORD_LENGTH;
- return maxLength;
- }
-
-EXPORT_C void CPeninputCommonChoiceList::ReCalcLayout()
- {
- if( iItemRects.Count() == 0 )
- {
- return;
- }
-
- if( iListStyle == EAutoFitLength )
- {
- TInt itemLength = MaxWidthOfListItem() + iTextLayout.il + iTextLayout.ir;
- TInt offsetLength = 0;
- offsetLength = Rect().Width() - iItemRects[0].Width();
-
- if( itemLength + offsetLength + KExtraMargine > UiLayout()->Rect().Width() )
- {
- itemLength = UiLayout()->Rect().Width() - KExtraMargine - offsetLength;
- }
- TRect rect;
- for( TInt i = 0; i < iItemRects.Count(); i++ )
- {
- rect = iItemRects[i];
- offsetLength = itemLength - rect.Width();
- rect.SetRect(rect.iTl, TSize( itemLength, rect.Height() ) );
- iItemRects[i] = rect;
- }
- rect = Rect();
- rect.Resize( offsetLength, 0 );
- SetRect( rect );
- }
- }
-
-EXPORT_C void CPeninputCommonChoiceList::Draw()
- {
- if(!AbleToDraw())
- return;
-
- DrawBackground();
-
- //draw Item
- for(int ii = 0; ii < ItemsCount(); ++ii)
- {
- DrawItem(ii, CurrentFocusedIndex() == ii);
- }
- }
-
-void CPeninputCommonChoiceList::DrawBackground()
- {
- DrawOpaqueMaskBackground( Rect() );
- if( iBackgroundSkinID.iMajor != EAknsMajorNone &&
- iBackgroundSkinID.iMinor != EAknsMinorNone )
- {
- TRect rtInnerRect( Rect() );
- rtInnerRect.Shrink( 1, 1 );
- CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
-
- gc->Activate( BitmapDevice() );
- gc->SetBrushColor( KRgbWhite );
- gc->Clear( Rect() );
- AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(),
- *gc,
- Rect(),
- rtInnerRect,
- iBackgroundSkinID,
- KAknsIIDDefault );
- }
- }
-
-void CPeninputCommonChoiceList::DrawItem( TInt aIndex, TBool aIsFocus )
- {
- TRect rtFocusRect(iItemRects[aIndex]);
- rtFocusRect.Move( Rect().iTl );
-
- if( aIsFocus )
- {
- //draw focus bitmap
- TRect rtInnerRect( rtFocusRect );
- rtInnerRect.Shrink( 7, 7 );
-
- if( iItemSkinID.iMajor != EAknsMajorNone &&
- iItemSkinID.iMinor != EAknsMinorNone)
- {
- CFbsBitGc* gc = static_cast<CFbsBitGc*>(BitGc());
- gc->Activate( BitmapDevice() );
- AknsDrawUtils::DrawFrame( AknsUtils::SkinInstance(),
- *gc,
- rtFocusRect,
- rtInnerRect,
- iItemSkinID,
- KAknsIIDDefault );
- }
-
- }
-
- // draw text
- TAknLayoutText textLayout;
- textLayout.LayoutText(rtFocusRect, iTextLayout);
- TRgb color( KRgbBlack ); // sane default for nonskinned case
- TAknsQsnTextColorsIndex clrIndex;
- clrIndex = aIsFocus ? EAknsCIQsnTextColorsCG10 : EAknsCIQsnTextColorsCG20;
-
- if ( AknsUtils::AvkonSkinEnabled() )
- {
- AknsUtils::GetCachedColor( AknsUtils::SkinInstance(),
- color, KAknsIIDQsnTextColors, clrIndex );
- }
-
- textLayout.DrawText(*BitGc(), ItemByIndex(aIndex)->iText, ETrue, color);
- }
-
-EXPORT_C void CPeninputCommonChoiceList::SetListColumnNumWithLafL( TInt aMaxCount)
- {
- if( iLastColumnNum == aMaxCount )
- return;
-
- iLastColumnNum = aMaxCount;
- RemoveAllItemsRect();
-
- TAknWindowLineLayout appWnd = AknLayoutScalable_Avkon::application_window(0).LayoutLine();
- TAknWindowLineLayout mainPane = AknLayoutScalable_Avkon::main_pane(4).LayoutLine();
- TAknLayoutRect mainPaneRect;
- mainPaneRect.LayoutRect(appWnd.Rect(), mainPane);
-
- TAknWindowLineLayout menuWnd = AknLayoutScalable_Avkon::
- popup_menu_window(13).LayoutLine();
- TAknWindowLineLayout choiceWnd = AknLayoutScalable_Avkon::
- popup_submenu_window(aMaxCount - 1).LayoutLine();
- TAknLayoutRect choiceRect;
- choiceRect.LayoutRect(mainPaneRect.Rect(), choiceWnd);
-
- TRect rectChoiseList( 0, 0 ,
- choiceRect.Rect().Width(),
- choiceRect.Rect().Height());
- // set list window rect
- SetRect( rectChoiseList );
-
- TAknWindowLineLayout listPopupPane = AknLayoutScalable_Avkon::
- listscroll_popup_sub_pane(0).LayoutLine();
- TAknLayoutRect listPopupPaneRect;
- listPopupPaneRect.LayoutRect(rectChoiseList, listPopupPane);
- TAknWindowLineLayout listSubMenuPane = AknLayoutScalable_Avkon::
- list_submenu_pane(1).LayoutLine();
- TAknLayoutRect listSubMenuPaneRect;
- listSubMenuPaneRect.LayoutRect(listPopupPaneRect.Rect(), listSubMenuPane);
-
- TAknWindowLineLayout listSinglePane;
- TAknLayoutRect listSinglePaneRect;
-
- // set list item rect
- for( TInt i = 0; i < aMaxCount; i++ )
- {
- listSinglePane = AknLayoutScalable_Avkon::
- list_single_popup_submenu_pane(i, 0, 0).LayoutLine();
- listSinglePaneRect.LayoutRect( listSubMenuPaneRect.Rect(), listSinglePane );
- iItemRects.AppendL(listSinglePaneRect.Rect());
- }
-
- // set list text layout
- SetTextLayout(AknLayoutScalable_Avkon::list_single_popup_submenu_pane_t1(0).LayoutLine());
- }
-
-EXPORT_C void CPeninputCommonChoiceList::SetListSkinID( TAknsItemID aItemSkinID,
- TAknsItemID aBackgroundSkinID )
- {
- iItemSkinID = aItemSkinID;
- iBackgroundSkinID = aBackgroundSkinID;
- }
-EXPORT_C TInt CPeninputCommonChoiceList::HitTest(const TPoint& aPoint)
- {
- TPoint pPoint(aPoint.iX - Rect().iTl.iX,aPoint.iY - Rect().iTl.iY);
- TInt arrayCount = iItemRects.Count();
- TInt index = arrayCount;
- for(TInt i = 0; i < arrayCount; i++)
- {
- if(iItemRects[i].Contains(pPoint))
- {
- index = i;
- }
- }
- if( index >= arrayCount )
- {
- return EListOutside;
- }
- else
- {
- return index;
- }
- }
-// End Of File