textinput/peninputcommonctrls/inc/peninputselectionlist/peninputselectionlist.h
changeset 0 eb1f2e154e89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputcommonctrls/inc/peninputselectionlist/peninputselectionlist.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,146 @@
+/*
+* 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:
+*
+*/
+#ifndef C_CPENINPUTSELECTIONLIST_H
+#define C_CPENINPUTSELECTIONLIST_H
+
+#include <peninputlayoutbasecontrol.h>
+#include <AknLayout2Def.h>
+#include <AknsConstants.h>
+
+class CPenInputSelectionList : public CFepUiBaseCtrl
+    {
+public:
+    struct SItem
+        {
+        SItem(TRect aRect, const TDesC& aText)
+            :iRect(aRect), iText(aText)
+            {
+            }
+
+        TRect iRect;
+        const TDesC& iText;
+        };    
+
+    enum TSelectionListBmpType
+        {
+        EBmpNormal,
+        EBmpNormalMask,
+        EBmpHighlight,
+        EBmpHighlightMask,
+        EBmpLastType = EBmpHighlightMask
+        };
+
+public:
+    IMPORT_C static CPenInputSelectionList* NewL(CFepUiLayout* aUiLayout,
+                                                 TInt aControlId,
+                                                 TPoint aTopLeftPoint,
+                                                 TSize aItemSize,
+                                                 TInt aItemHorizontalMargin);
+
+    IMPORT_C ~CPenInputSelectionList();
+
+    IMPORT_C void SizeChanged(TPoint aTopLeftPoint,
+                              TSize aItemSize,
+                              TInt aItemHorizontalMargin);
+    
+    // control rect is calculated by item count
+    IMPORT_C void SetItemsL(const RPointerArray<HBufC>& aItemList);
+
+    IMPORT_C void AddItemL(const TDesC& aItem);
+
+    IMPORT_C void RemoveItem(TInt aItemIndex);
+    
+    IMPORT_C void RemoveAllItems();
+
+    IMPORT_C void ConstructFromResourceL();
+
+    IMPORT_C void SetTextProperty(const CFont* aFont,
+                                  TRgb aFontColor);
+
+    IMPORT_C CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint);
+    IMPORT_C CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint);
+    IMPORT_C CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint);
+
+    IMPORT_C void Display();
+
+    IMPORT_C void CloseWindow();
+
+    inline void SetTextLineLayout(TAknTextLineLayout aTextLine);
+    
+    inline void SetEventIdForItemSelected(TInt aEventId);
+    
+    inline void SetBgFrId(TAknsItemID aFrId, TAknsItemID aCenterFrId);
+    
+    void Draw();
+
+private:
+
+    CPenInputSelectionList(CFepUiLayout* aUiLayout,
+                           TInt aControlId,
+                           TPoint aTopLeftPoint,
+                           TSize aItemSize,
+                           TInt aItemHorizontalMargin);
+
+    void ConstructL();
+
+    void RecalculateCtrlRect();
+
+    // get item whose region contains the point
+    TInt HitTest(const TPoint& aPoint);
+
+    void DrawItem(TInt aItemIndex);
+
+	void CalculateFrameRects(const TRect aRect, TRect& aOuterRect, TRect& aInnerRect) const;
+private:
+
+    RArray<SItem> iItemList;
+    TPoint iTopLeftPoint;
+    TSize iItemSize;
+    TInt iItemHorizontalMargin;
+    TInt iBaselineOffset;
+    const CFont* iFont;
+    TRgb iFontColor;
+    TAknTextLineLayout iTextLine;
+
+    TInt iFocusItemIndex;
+
+    RPointerArray<CFbsBitmap> iBmpList;
+    
+    TInt iEventId;
+    TBool iTextLineSet;
+    TAknsItemID iFrId;
+    TAknsItemID iCenterFrId;
+    };
+
+inline void CPenInputSelectionList::SetTextLineLayout(TAknTextLineLayout aTextLine)
+    {
+    iTextLine = aTextLine;
+    iTextLineSet = ETrue;
+    }
+
+inline void CPenInputSelectionList::SetEventIdForItemSelected(TInt aEventId)
+    {
+    iEventId = aEventId;
+    }
+
+inline void CPenInputSelectionList::SetBgFrId(TAknsItemID aFrId, TAknsItemID aCenterFrId)
+    {
+    iFrId = aFrId;
+    iCenterFrId = aCenterFrId;
+    }
+
+#endif // C_CPENINPUTSELECTIONLIST_H
\ No newline at end of file