Adjust the position of the partial Frame
[platform/framework/native/uifw.git] / inc / FUiCtrlIGroupedListViewItemProviderF.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://floralicense.org/license/
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18
19 /**
20  * @file        FUiCtrlIGroupedListViewItemProviderF.h
21  * @brief       This is the header file for the %IGroupedListViewItemProviderF interface.
22  *
23  * This header file contains the declarations of the %IGroupedListViewItemProviderF interface. @n
24  * If an event is generated, a method of this interface is called. @n
25  * Therefore, if an application performs jobs related to the item events, it uses the methods of this interface.
26  *
27  */
28 #ifndef _FUI_CTRL_IGROUPED_LIST_VIEW_ITEM_PROVIDERF_H_
29 #define _FUI_CTRL_IGROUPED_LIST_VIEW_ITEM_PROVIDERF_H_
30
31 #include <FUiCtrlGroupItem.h>
32 #include <FUiCtrlListItemBase.h>
33
34 namespace Tizen {namespace Ui { namespace Controls
35 {
36
37 /**
38  * @interface   IGroupedListViewItemProviderF
39  * @brief               This interface implements the provider for the events generated by the GroupedListView control.
40  *
41  * @since               2.1
42  *
43  * The %IGroupedListViewItemProviderF interface is the interface for handling GroupedListView items.
44  * The class that handles list items implements this interface, and the instance created using the GroupedListView::Construct() method.
45  *
46  * For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/ui/implementing_listviews.htm">ListViews</a>.
47  */
48 class _OSP_EXPORT_ IGroupedListViewItemProviderF
49 {
50 // Operation
51 public:
52         /**
53          * This polymorphic destructor should be overridden if required.
54          * This way, the destructors of the derived classes are called
55          * when the destructor of this interface is called.
56          *
57          * @since       2.1
58          */
59         virtual ~IGroupedListViewItemProviderF(void) {}
60
61         /**
62          * Gets the total number of groups.
63          *
64          * @since       2.1
65          *
66          * @return      The total number of groups
67          * @remarks  This method must be implemented so that it returns the total number of groups in the GroupedListView control.
68          */
69         virtual int GetGroupCount(void) = 0;
70
71         /**
72          * Gets the total number of items in the specified group.
73          *
74          * @since       2.1
75          *
76          * @return  The total number of items in the specified group
77          * @param[in] groupIndex                The index of the group
78          * @remarks  This method must be implemented so that it returns the total number of items for the specified group in the GroupedListView control.
79          */
80         virtual int GetItemCount(int groupIndex) = 0;
81
82         /**
83          * Creates the group item for the specified index from the item provider.
84          *
85          * @since       2.1
86          *
87          * @return  A group item of the GroupedListView control
88          * @param[in] groupIndex        The index of the group
89          * @param[in] itemWidth         The width of the item
90          * @remarks     An application that uses the GroupedListView control must implement this method. This method is expected to return a group item that is
91          *                      allocated on a heap memory. @n
92          *                      Note that when the item is not required, the GroupedListView control calls %IGroupedListViewItemProvider::DeleteGroupItem() and the
93          *                      application deallocates the item.
94          */
95         virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, float itemWidth) = 0;
96
97         /**
98          * Deletes the specified group item.
99          *
100          * @since       2.1
101          *
102          * @return  @c true if the item is deallocated by this method, @n
103          *          else @c false
104          * @param[in] groupIndex        The index of the group
105          * @param[in] pItem             The pointer to GroupItem to delete
106          * @param[in] itemWidth         The width of the item
107          * @remarks  An application that uses the %GroupedListView control must implement this method. @n
108          *                      Using this method, an application can deallocate the item. @n
109          *                      If an application deallocates the item, this method must return true. This notifies the GroupedListView control not to release the
110          *                      item. Otherwise, the item is deallocated by the GroupedListView control.
111          * @see     CreateItem()
112          */
113         virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, float itemWidth) = 0;
114
115         /**
116          * Creates the specified item.
117          *
118          * @since       2.1
119          *
120          * @return      An item of the list
121          * @param[in] groupIndex        The index of the group
122          * @param[in] itemIndex         The index of the item
123          * @param[in] itemWidth                 The width of the item
124          * @remarks  An application that uses the GroupedListView control must implement this method. @n
125          *                      This method is expected to return an item that is allocated on a heap memory. @n
126          *                      The returned item can be a simple or custom item. @n
127          *                      Note that when the item is not required, the GroupedListView control calls %IGroupedListViewItemProvider::DeleteItem() and the application
128          *                      deallocates the item.
129          * @see     DeleteItem()
130          */
131         virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, float itemWidth) = 0;
132
133         /**
134          * Deletes the specified item.
135          *
136          * @since       2.1
137          *
138          * @return      @c true if the item is deallocated by this method, @n
139          *                      else @c false
140          * @param[in] groupIndex        The index of the group
141          * @param[in] itemIndex         The index of the item
142          * @param[in] pItem             The pointer to ListItemBase to delete
143          * @param[in] itemWidth         The width of the item
144          * @remarks  An application that uses the GroupedListView control must implement this method. @n
145          *                      Using this method, an application can deallocate the item. @n
146          *                      If the application deallocates the item, this method must return true. This notifies the %GroupedListView control not to release the
147          *                      item. Otherwise, the item is deallocated by the %GroupedListView control.
148          * @see     CreateItem()
149          */
150         virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, float itemWidth) = 0;
151
152         /**
153          * Checks whether the item can be reordered.
154          *
155          * @since 2.1
156          *
157          * @return @c true if the item can be reordered, else @c false
158          * @param[in] groupIndexFrom The source group index of the item
159          * @param[in] groupIndexTo The target group index of the item
160          */
161         virtual bool IsReorderable(int groupIndexFrom, int groupIndexTo);
162
163 protected:
164         //
165         // Following methods are reserved and may change its name at any time without prior notice.
166         //
167         virtual void IGroupedListViewItemProvider_Reserved1(void) {}
168         virtual void IGroupedListViewItemProvider_Reserved2(void) {}
169         virtual void IGroupedListViewItemProvider_Reserved3(void) {}
170 }; // IGroupedListViewItemProviderF
171
172 }}} // Tizen::Ui::Controls
173
174 #endif // _FUI_CTRL_IGROUPED_LIST_VIEW_ITEM_PROVIDERF_H_