diff -r f1bdd6b078d1 -r 2cb9bae34d17 textinput/peninputcommonctrls/src/peninputselectionlist/peninputselectionlist.cpp --- a/textinput/peninputcommonctrls/src/peninputselectionlist/peninputselectionlist.cpp Tue Jul 06 14:38:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,426 +0,0 @@ -/* -* Copyright (c) 2009 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: -* -*/ -#include -#include -#include -#include -#include -#include -#include -#include - -#include "peninputselectionlist.h" - -// constant definition -const TInt KInvalidResId = -1; -const TInt KInvalidBmp = -1; -const TInt KInvalidItemIndex = -1; - -EXPORT_C CPenInputSelectionList* CPenInputSelectionList::NewL(CFepUiLayout* aUiLayout, - TInt aControlId, - TPoint aTopLeftPoint, - TSize aItemSize, - TInt aItemHorizontalMargin) - { - CPenInputSelectionList* self = new (ELeave) CPenInputSelectionList(aUiLayout, - aControlId, - aTopLeftPoint, - aItemSize, - aItemHorizontalMargin); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -EXPORT_C CPenInputSelectionList::~CPenInputSelectionList() - { - iItemList.Reset(); - iItemList.Close(); - - iBmpList.ResetAndDestroy(); - iBmpList.Close(); - } - -void CPenInputSelectionList::RecalculateCtrlRect() - { - if (iItemList.Count() == 0) - { - SetRect(TRect(0, 0, 0, 0)); - } - else - { - SetRect(TRect(iItemList[0].iRect.iTl, - iItemList[iItemList.Count() - 1].iRect.iBr)); - } - } - -EXPORT_C void CPenInputSelectionList::SizeChanged(TPoint aTopLeftPoint, - TSize aItemSize, - TInt aItemHorizontalMargin) - { - iTopLeftPoint = aTopLeftPoint; - iItemSize = aItemSize; - iItemHorizontalMargin = aItemHorizontalMargin; - - for (TInt i = 0; i < iItemList.Count(); i++) - { - iItemList[i].iRect = TRect(TPoint(aTopLeftPoint.iX, - aTopLeftPoint.iY + - i * (aItemHorizontalMargin + iItemSize.iHeight)), - aItemSize); - } - - RecalculateCtrlRect(); - } - -EXPORT_C void CPenInputSelectionList::SetItemsL(const RPointerArray& aItemList) - { - Hide(ETrue); - - iItemList.Reset(); - - for (TInt i = 0; i < aItemList.Count(); i++) - { - SItem item(TRect(TPoint(iTopLeftPoint.iX, - iTopLeftPoint.iY + i * (iItemHorizontalMargin + iItemSize.iHeight)), - iItemSize), - *aItemList[i]); - iItemList.AppendL(item); - } - - RecalculateCtrlRect(); - } - -EXPORT_C void CPenInputSelectionList::AddItemL(const TDesC& aItem) - { - SItem item(TRect(TPoint(iTopLeftPoint.iX, - iTopLeftPoint.iY + iItemList.Count() * (iItemHorizontalMargin + - iItemSize.iHeight)),iItemSize), aItem); - iItemList.AppendL(item); - - RecalculateCtrlRect(); - } - -EXPORT_C void CPenInputSelectionList::RemoveItem(TInt aItemIndex) - { - if (aItemIndex < 0 || aItemIndex >= iItemList.Count()) - { - return; - } - - iItemList.Remove(aItemIndex); - - for (TInt i = aItemIndex; i < iItemList.Count(); i++) - { - iItemList[i].iRect.Move(-iItemHorizontalMargin, 0); - } - - RecalculateCtrlRect(); - } - -EXPORT_C void CPenInputSelectionList::RemoveAllItems() - { - iItemList.Reset(); - RecalculateCtrlRect(); - } - -EXPORT_C void CPenInputSelectionList::ConstructFromResourceL() - { - if (iResourceId == KInvalidResId) - { - User::Leave(KErrArgument); - } - - iBmpList.ResetAndDestroy(); - - TResourceReader reader; - CCoeEnv::Static()->CreateResourceReaderLC(reader, iResourceId); - - TPtrC bmpFileName = reader.ReadTPtrC(); - TInt imgMajorSkinId = reader.ReadInt32(); - - TAknsItemID id; - - for (TInt i = 0; i < EBmpLastType + 1; i+=2) - { - TInt bmpid = reader.ReadInt16(); - TInt maskid = reader.ReadInt16(); - TInt minorskinid = reader.ReadInt16(); - - id.Set(imgMajorSkinId, minorskinid); - - CFbsBitmap* bmp = NULL; - CFbsBitmap* maskbmp = NULL; - - if (bmpid != KInvalidBmp) - { - if (maskid != KInvalidBmp) - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - maskbmp, - bmpFileName, - bmpid, - maskid); - - AknIconUtils::SetSize(maskbmp, iItemSize, EAspectRatioNotPreserved); - } - else - { - AknsUtils::CreateIconL(AknsUtils::SkinInstance(), - id, - bmp, - bmpFileName, - bmpid); - } - - AknIconUtils::SetSize(bmp, iItemSize, EAspectRatioNotPreserved); - } - - iBmpList.AppendL(bmp); - iBmpList.AppendL(maskbmp); - } - - CleanupStack::PopAndDestroy(); // reader - } - -EXPORT_C void CPenInputSelectionList::SetTextProperty(const CFont* aFont, - TRgb aFontColor) - { - iFont = aFont; - iFontColor = aFontColor; - - iBaselineOffset = iItemSize.iHeight/2 + aFont->AscentInPixels()/2; - } - -TInt CPenInputSelectionList::HitTest(const TPoint& aPoint) - { - if (!Rect().Contains(aPoint)) - { - return KErrGeneral; - } - - for (TInt i = 0; i < iItemList.Count(); i++) - { - if (iItemList[i].iRect.Contains(aPoint)) - { - return i; - } - } - - return KErrNotFound; - } - -EXPORT_C CFepUiBaseCtrl* CPenInputSelectionList::HandlePointerDownEventL(const TPoint& aPoint) - { - CFepUiBaseCtrl::HandlePointerDownEventL(aPoint); - - TInt index = HitTest(aPoint); - - if (index >= 0) - { - if (index != iFocusItemIndex) - { - TInt prev = iFocusItemIndex; - iFocusItemIndex = index; - - if (prev != KInvalidItemIndex) - { - DrawItem(prev); - } - - DrawItem(iFocusItemIndex); - } - } - else if (index == KErrGeneral) - { - SetPointerDown(EFalse); - CloseWindow(); - } - - return this; - } - -EXPORT_C CFepUiBaseCtrl* CPenInputSelectionList::HandlePointerUpEventL(const TPoint& aPoint) - { - CFepUiBaseCtrl::HandlePointerUpEventL(aPoint); - - TInt index = HitTest(aPoint); - - if (index >= 0) - { - CloseWindow(); - - if (iFocusItemIndex != KInvalidItemIndex) - { - TPtrC ptr; - ptr.Set(reinterpret_cast(&iFocusItemIndex), sizeof(TInt)/sizeof(TText)); - ReportEvent(iEventId, ptr); - } - } - - iFocusItemIndex = KInvalidItemIndex; - - return this; - } - -EXPORT_C CFepUiBaseCtrl* CPenInputSelectionList::HandlePointerMoveEventL(const TPoint& aPoint) - { - CFepUiBaseCtrl::HandlePointerMoveEventL(aPoint); - - if (PointerDown()) - { - TInt index = HitTest(aPoint); - - if (index != iFocusItemIndex && index != KInvalidItemIndex) - { - TInt prev = iFocusItemIndex; - iFocusItemIndex = index; - - if( prev != -1 ) - { - DrawItem(prev); - } - - DrawItem(iFocusItemIndex); - } - } - - return this; - } - -EXPORT_C void CPenInputSelectionList::Display() - { - //Hide(EFalse); - BringToTop(); - Draw(); - } - -EXPORT_C void CPenInputSelectionList::CloseWindow() - { - Hide(ETrue); - RemoveAllItems(); - } - -CPenInputSelectionList::CPenInputSelectionList(CFepUiLayout* aUiLayout, - TInt aControlId, - TPoint aTopLeftPoint, - TSize aItemSize, - TInt aItemHorizontalMargin) - :CFepUiBaseCtrl(TRect(0, 0, 0, 0), aUiLayout, aControlId), - iTopLeftPoint(aTopLeftPoint), - iItemSize(aItemSize), - iItemHorizontalMargin(aItemHorizontalMargin), - iFocusItemIndex(KInvalidItemIndex), - iFrId(KAknsIIDQsnFrPopupSub), - iCenterFrId(KAknsIIDQsnFrPopupCenterSubmenu) - { - SetControlType(EUserCtrlBase | ECtrlBaseCtrl); - } - -void CPenInputSelectionList::ConstructL() - { - BaseConstructL(); - Hide(ETrue); - } - -void CPenInputSelectionList::Draw() - { - if(!AbleToDraw()) - return; - - for (TInt i = 0; i < iItemList.Count(); i++) - { - DrawItem(i); - } - - UiLayout()->UpdateArea(this, this->Rect(), EFalse); - } - -void CPenInputSelectionList::DrawItem(TInt aItemIndex) - { - CFbsBitGc* gc = static_cast(BitGc()); - - //mask bitmaps - gc->Activate( MaskBitmapDevice() ); - - gc->SetBrushStyle( CGraphicsContext::ESolidBrush ); - gc->SetBrushColor(TRgb(KOpaqueColor));//Non transparent at all - gc->SetPenStyle(CGraphicsContext::ESolidPen ); - gc->SetPenSize(PenSize()); - gc->SetPenColor(TRgb(KOpaqueColor) ); - gc->DrawRect(iItemList[aItemIndex].iRect); - - // ----- draw bitmaps ----- - gc->Activate(BitmapDevice()); - - // draw frame - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - - TRect outerRect; - TRect innerRect; - CalculateFrameRects( iItemList[aItemIndex].iRect, outerRect, innerRect); - - AknsDrawUtils::DrawFrame( - skin, *gc, - outerRect, innerRect, - iFrId, iCenterFrId); - - // draw text - if (iTextLineSet) - { - TAknLayoutText textLayout; - textLayout.LayoutText(iItemList[aItemIndex].iRect, - iTextLine); - textLayout.DrawText(*gc, iItemList[aItemIndex].iText); - } - else if (iFont) - { - gc->UseFont(iFont); - - gc->SetBrushStyle(CGraphicsContext::ENullBrush); - gc->SetBrushColor(KRgbBlack); - gc->SetPenColor(iFontColor); - gc->SetPenStyle(CGraphicsContext::ESolidPen); - gc->SetPenSize(PenSize()); - - gc->DrawText(iItemList[aItemIndex].iText, - iItemList[aItemIndex].iRect, - iBaselineOffset, - CGraphicsContext::ECenter); - - gc->DiscardFont(); - } - } -void CPenInputSelectionList::CalculateFrameRects( const TRect aRect, - TRect& aOuterRect, - TRect& aInnerRect ) const - { - TRect windowRect = aRect; - - TAknLayoutRect topLeft; - topLeft.LayoutRect(windowRect, SkinLayout::Submenu_skin_placing_Line_2()); - - TAknLayoutRect bottomRight; - bottomRight.LayoutRect(windowRect, SkinLayout::Submenu_skin_placing_Line_5()); - - aOuterRect = TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr); - aInnerRect = TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl); - } -// End Of File