--- 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 <barsread.h>
-#include <coemain.h>
-#include <AknsItemID.h>
-#include <AknsUtils.h>
-#include <AknUtils.h>
-#include <peninputlayout.h>
-#include <skinlayout.cdl.h>
-#include <AknsDrawUtils.h>
-
-#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<HBufC>& 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<TText*>(&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<CFbsBitGc*>(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