Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / include / fwl / lightwidget / listbox.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _FWL_LISTBOX_LIGHT_H\r
8 #define _FWL_LISTBOX_LIGHT_H\r
9 class CFWL_Widget;\r
10 class CFWL_WidgetProperties;\r
11 class IFWL_ListBoxDP;\r
12 class CFWL_ListBox;\r
13 class CFWL_ListItem;\r
14 class CFWL_ListBox : public CFWL_Widget\r
15 {\r
16 public:\r
17     static CFWL_ListBox* Create();\r
18     FWL_ERR             Initialize(const CFWL_WidgetProperties *pProperties = NULL);\r
19     FWL_ERR             AddDIBitmap(CFX_DIBitmap * pDIB, FWL_HLISTITEM hItem);\r
20     FWL_HLISTITEM       AddString(FX_WSTR wsAdd, FX_BOOL bSelect = FALSE);\r
21     FX_BOOL             DeleteString(FWL_HLISTITEM hItem);\r
22     FX_BOOL             DeleteAll();\r
23     FX_INT32    CountSelItems();\r
24     FWL_HLISTITEM       GetSelItem(FX_INT32 nIndexSel);\r
25     FX_INT32    GetSelIndex(FX_INT32 nIndex);\r
26     FWL_ERR             SetSelItem(FWL_HLISTITEM hItem, FX_BOOL bSelect = TRUE);\r
27     FWL_ERR             GetItemText(FWL_HLISTITEM hItem, CFX_WideString &wsText);\r
28     FWL_ERR             GetScrollPos(FX_FLOAT &fPos, FX_BOOL bVert = TRUE);\r
29     FWL_ERR             SetItemHeight(FX_FLOAT fItemHeight);\r
30     FWL_HLISTITEM       GetFocusItem();\r
31     FWL_ERR             SetFocusItem(FWL_HLISTITEM hItem);\r
32     FWL_ERR*    Sort(IFWL_ListBoxCompare *pCom);\r
33     FX_INT32    CountItems();\r
34     FWL_HLISTITEM       GetItem(FX_INT32 nIndex);\r
35     FWL_ERR             SetItemString(FWL_HLISTITEM hItem, FX_WSTR wsText);\r
36     FWL_ERR             GetItemString(FWL_HLISTITEM hItem, CFX_WideString &wsText);\r
37     FWL_ERR             SetItemData(FWL_HLISTITEM hItem, FX_LPVOID pData);\r
38     FX_LPVOID   GetItemData(FWL_HLISTITEM hItem);\r
39     FWL_HLISTITEM       GetItemAtPoint(FX_FLOAT fx, FX_FLOAT fy);\r
40     FX_DWORD            GetItemStates(FWL_HLISTITEM hItem);\r
41     CFWL_ListBox();\r
42     virtual ~CFWL_ListBox();\r
43 protected:\r
44     class CFWL_ListBoxDP : public IFWL_ListBoxDP, public CFX_Object\r
45     {\r
46     public:\r
47         CFWL_ListBoxDP();\r
48         ~CFWL_ListBoxDP();\r
49         virtual FWL_ERR GetCaption(IFWL_Widget *pWidget, CFX_WideString &wsCaption);\r
50 \r
51         virtual FX_INT32                CountItems(IFWL_Widget *pWidget);\r
52         virtual FWL_HLISTITEM   GetItem(IFWL_Widget *pWidget, FX_INT32 nIndex);\r
53         virtual FX_INT32                GetItemIndex(IFWL_Widget *pWidget, FWL_HLISTITEM hItem);\r
54         virtual FX_BOOL                 SetItemIndex(IFWL_Widget *pWidget, FWL_HLISTITEM hItem, FX_INT32 nIndex);\r
55 \r
56         virtual FX_DWORD                GetItemStyles(IFWL_Widget *pWidget, FWL_HLISTITEM hItem);\r
57         virtual FWL_ERR                 GetItemText(IFWL_Widget *pWidget, FWL_HLISTITEM hItem, CFX_WideString &wsText);\r
58         virtual FWL_ERR                 GetItemRect(IFWL_Widget *pWidget, FWL_HLISTITEM hItem, CFX_RectF &rtItem);\r
59         virtual FX_LPVOID               GetItemData(IFWL_Widget *pWidget, FWL_HLISTITEM hItem);\r
60 \r
61         virtual FWL_ERR                 SetItemStyles(IFWL_Widget *pWidget, FWL_HLISTITEM hItem, FX_DWORD dwStyle);\r
62         virtual FWL_ERR                 SetItemText(IFWL_Widget *pWidget, FWL_HLISTITEM hItem, FX_LPCWSTR pszText);\r
63         virtual FWL_ERR                 SetItemRect(IFWL_Widget *pWidget, FWL_HLISTITEM hItem, const CFX_RectF &rtItem);\r
64         virtual FX_FLOAT                GetItemHeight(IFWL_Widget *pWidget);\r
65         virtual CFX_DIBitmap*   GetItemIcon(IFWL_Widget *pWidget, FWL_HLISTITEM hItem);\r
66         virtual FWL_ERR                 GetItemCheckRect(IFWL_Widget *pWidget, FWL_HLISTITEM hItem, CFX_RectF& rtCheck);\r
67         virtual FWL_ERR                 SetItemCheckRect(IFWL_Widget *pWidget, FWL_HLISTITEM hItem, const CFX_RectF& rtCheck);\r
68         virtual FX_DWORD                GetItemCheckState(IFWL_Widget *pWidget, FWL_HLISTITEM hItem);\r
69         virtual FWL_ERR                 SetItemCheckState(IFWL_Widget *pWidget, FWL_HLISTITEM hItem, FX_DWORD dwCheckState);\r
70 \r
71         CFX_PtrArray    m_arrItem;\r
72         CFX_WideString  m_wsData;\r
73         FX_FLOAT                m_fItemHeight;\r
74     };\r
75     CFWL_ListBoxDP m_ListBoxDP;\r
76 };\r
77 class CFWL_ListItem : public CFX_Object\r
78 {\r
79 public:\r
80     CFWL_ListItem()\r
81     {\r
82         m_rtItem.Reset();\r
83         m_dwStates = 0;\r
84         m_wsText = L"";\r
85         m_pDIB = NULL;\r
86         m_pData = NULL;\r
87         m_dwCheckState = 0;\r
88         m_rtCheckBox.Reset();\r
89     }\r
90     CFX_RectF           m_rtItem;\r
91     FX_DWORD            m_dwStates;\r
92     CFX_WideString      m_wsText;\r
93     CFX_DIBitmap        *m_pDIB;\r
94     FX_LPVOID           m_pData;\r
95     FX_DWORD            m_dwCheckState;\r
96     CFX_RectF           m_rtCheckBox;\r
97 };\r
98 #endif\r