textinput/peninputcommonctrls/src/peninputselectionlist/peninputselectionlist.cpp
changeset 40 2cb9bae34d17
parent 31 f1bdd6b078d1
child 49 37f5d84451bd
--- 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