Changed indicator bg color.
[platform/framework/native/uifw.git] / src / ui / controls / FUiCtrl_UiTableViewItemEvent.cpp
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0/
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 #include <FBaseSysLog.h>
19 #include <FUiCtrlTableViewItem.h>
20 #include <FUiCtrlTableViewGroupItem.h>
21 #include <FUiCtrlTableViewContextItem.h>
22 #include <FUiCtrlTableViewItemBase.h>
23 #include "FUiCtrl_ITableViewItemEventListener.h"
24 #include "FUiCtrl_UiTableViewItemEvent.h"
25 #include "FUiCtrl_TableViewItemEventArg.h"
26
27
28 // using namespace
29 using namespace Tizen::Base;
30 using namespace Tizen::Base::Runtime;
31
32 namespace Tizen { namespace Ui { namespace Controls
33 {
34
35 _UiTableViewItemEvent::_UiTableViewItemEvent(void)
36         : __pSource(null)
37         , __invokeTableViewItemCallback(true)
38         , __style(TABLE_VIEW_STYLE_SIMPLE)
39 {
40         // nothing
41 }
42
43 _UiTableViewItemEvent::~_UiTableViewItemEvent(void)
44 {
45         // nothing
46 }
47
48 result
49 _UiTableViewItemEvent::Construct(Tizen::Ui::_Control* pSource, TableViewStyle style)
50 {
51         result r = _Event::Initialize();
52         SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, "Could not construct TableViewItemEvent!");
53
54         // set event source
55         __pSource = pSource;
56
57         __style = style;
58
59         return r;
60 }
61
62 Tizen::Ui::_Control*
63 _UiTableViewItemEvent::GetSource(void) const
64 {
65         return __pSource;
66 }
67
68 void
69 _UiTableViewItemEvent::FireImpl(IEventListener& listener, const IEventArg& arg)
70 {
71         // cast to _ItemEventArg
72         _TableViewItemEventArg* pEventArg = dynamic_cast<_TableViewItemEventArg*>(const_cast<IEventArg*>(&arg));
73         SysTryReturnVoidResult(NID_UI_CTRL, pEventArg != null, E_INVALID_ARG, ("[E_INVALID_ARG] event argument is invalid type."));
74
75         int index1 = pEventArg->GetArg1();
76         int index2 = pEventArg->GetArg2();
77         int index3 = pEventArg->GetArg3();
78         int index4 = pEventArg->GetArg4();
79         bool activated = pEventArg->GetActivated();
80
81         bool tempInvokeTableViewItemCallback = __invokeTableViewItemCallback;
82         __invokeTableViewItemCallback = true;
83
84         _ITableViewItemEventListener* pItemListener = dynamic_cast<_ITableViewItemEventListener*>(&listener);
85         SysTryReturnVoidResult(NID_UI_CTRL, pItemListener != null, E_INVALID_ARG, ("[E_INVALID_ARG] invalid listener type."));
86
87         _TableView* pTableView = dynamic_cast<_TableView*>(GetSource());
88         SysTryReturnVoidResult(NID_UI_CTRL, pTableView != null, E_INVALID_STATE, ("[E_INVALID_STATE] This instance isn't constructed."));
89
90         if (index2 < 0)
91         {
92                 index2 = -1;
93         }
94
95         switch (pEventArg->GetNotifyType())
96         {
97         case TABLEVIEW_NOTIFY_TYPE_SELECTED_ITEM:
98                 if (tempInvokeTableViewItemCallback == true)
99                 {
100                         _TableViewItem* pItem =pEventArg->GetItem();
101                         SysTryReturnVoidResult(NID_UI_CTRL, pItem != null, E_INVALID_STATE, ("[E_INVALID_STATE] This instance isn't constructed."));
102
103                         if (__style == TABLE_VIEW_STYLE_SIMPLE)
104                         {
105                                 pItemListener->OnTableViewItemStateChanged(*pTableView, index2, pItem, TABLE_VIEW_ITEM_STATUS_SELECTED);
106                         }
107                         else if (__style == TABLE_VIEW_STYLE_GROUPED)
108                         {
109                                 if (index2 == -1)
110                                 {
111                                         pItemListener->OnGroupedTableViewGroupItemStateChanged(*pTableView, index1, pItem, TABLE_VIEW_ITEM_STATUS_SELECTED);
112                                 }
113                                 else
114                                 {
115                                         pItemListener->OnGroupedTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_SELECTED);
116                                 }
117                         }
118                         else
119                         {
120                                 pItemListener->OnSectionTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_SELECTED);
121                         }
122                 }
123                 break;
124
125         case TABLEVIEW_NOTIFY_TYPE_HIGHLIGHED_ITEM:
126                 if (tempInvokeTableViewItemCallback == true)
127                 {
128                         _TableViewItem* pItem =pEventArg->GetItem();
129                         SysTryReturnVoidResult(NID_UI_CTRL, pItem != null, E_INVALID_STATE, ("[E_INVALID_STATE] This instance isn't constructed."));
130
131                         if (__style == TABLE_VIEW_STYLE_SIMPLE)
132                         {
133                                 pItemListener->OnTableViewItemStateChanged(*pTableView, index2, pItem, TABLE_VIEW_ITEM_STATUS_HIGHLIGHTED);
134                         }
135                         else if (__style == TABLE_VIEW_STYLE_GROUPED)
136                         {
137                                 if (index2 == -1)
138                                 {
139                                         pItemListener->OnGroupedTableViewGroupItemStateChanged(*pTableView, index1, pItem, TABLE_VIEW_ITEM_STATUS_HIGHLIGHTED);
140                                 }
141                                 else
142                                 {
143                                         pItemListener->OnGroupedTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_HIGHLIGHTED);
144                                 }
145                         }
146                         else
147                         {
148                                 pItemListener->OnSectionTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_HIGHLIGHTED);
149                         }
150                 }
151                 break;
152
153         case TABLEVIEW_NOTIFY_TYPE_ANNEX_CHECK:
154                 if (tempInvokeTableViewItemCallback == true)
155                 {
156                         _TableViewItem* pItem =pEventArg->GetItem();
157                         SysTryReturnVoidResult(NID_UI_CTRL, pItem != null, E_INVALID_STATE, ("[E_INVALID_STATE] This instance isn't constructed."));
158
159                         if (__style == TABLE_VIEW_STYLE_SIMPLE)
160                         {
161                                 pItemListener->OnTableViewItemStateChanged(*pTableView, index2, pItem, TABLE_VIEW_ITEM_STATUS_CHECKED);
162                         }
163                         else if (__style == TABLE_VIEW_STYLE_GROUPED)
164                         {
165                                 if (index2 == -1)
166                                 {
167                                         pItemListener->OnGroupedTableViewGroupItemStateChanged(*pTableView, index1, pItem, TABLE_VIEW_ITEM_STATUS_CHECKED);
168                                 }
169                                 else
170                                 {
171                                         pItemListener->OnGroupedTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_CHECKED);
172                                 }
173                         }
174                         else
175                         {
176                                 pItemListener->OnSectionTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_CHECKED);
177                         }
178                 }
179                 break;
180
181         case TABLEVIEW_NOTIFY_TYPE_ANNEX_UNCHECK:
182                 if (tempInvokeTableViewItemCallback == true)
183                 {
184                         _TableViewItem* pItem =pEventArg->GetItem();
185                         SysTryReturnVoidResult(NID_UI_CTRL, pItem != null, E_INVALID_STATE, ("[E_INVALID_STATE] This instance isn't constructed."));
186
187                         if (__style == TABLE_VIEW_STYLE_SIMPLE)
188                         {
189                                 pItemListener->OnTableViewItemStateChanged(*pTableView, index2, pItem, TABLE_VIEW_ITEM_STATUS_UNCHECKED);
190                         }
191                         else if (__style == TABLE_VIEW_STYLE_GROUPED)
192                         {
193                                 if (index2 == -1)
194                                 {
195                                         pItemListener->OnGroupedTableViewGroupItemStateChanged(*pTableView, index1, pItem, TABLE_VIEW_ITEM_STATUS_UNCHECKED);
196                                 }
197                                 else
198                                 {
199                                         pItemListener->OnGroupedTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_UNCHECKED);
200                                 }
201                         }
202                         else
203                         {
204                                 pItemListener->OnSectionTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_UNCHECKED);
205                         }
206                 }
207                 break;
208
209         case TABLEVIEW_NOTIFY_TYPE_ANNEX_MORE:
210                 if (tempInvokeTableViewItemCallback == true)
211                 {
212                         _TableViewItem* pItem =pEventArg->GetItem();
213                         SysTryReturnVoidResult(NID_UI_CTRL, pItem != null, E_INVALID_STATE, ("[E_INVALID_STATE] This instance isn't constructed."));
214
215                         if (__style == TABLE_VIEW_STYLE_SIMPLE)
216                         {
217                                 pItemListener->OnTableViewItemStateChanged(*pTableView, index2, pItem, TABLE_VIEW_ITEM_STATUS_MORE);
218                         }
219                         else if (__style == TABLE_VIEW_STYLE_GROUPED)
220                         {
221                                 if (index2 == -1)
222                                 {
223                                         pItemListener->OnGroupedTableViewGroupItemStateChanged(*pTableView, index1, pItem, TABLE_VIEW_ITEM_STATUS_MORE);
224                                 }
225                                 else
226                                 {
227                                         pItemListener->OnGroupedTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_MORE);
228                                 }
229                         }
230                         else
231                         {
232                                 pItemListener->OnSectionTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_MORE);
233                         }
234                 }
235                 break;
236
237         case TABLEVIEW_NOTIFY_TYPE_ITEM_SWEPT:
238                 if (tempInvokeTableViewItemCallback == true)
239                 {
240                         if (index3 == TABLE_VIEW_SWEEP_DIRECTION_LEFT)
241                         {
242                                 pItemListener->OnTableViewItemSwept(*pTableView, index1, index2, TABLE_VIEW_SWEEP_DIRECTION_LEFT);
243                         }
244                         else
245                         {
246                                 pItemListener->OnTableViewItemSwept(*pTableView, index1, index2, TABLE_VIEW_SWEEP_DIRECTION_RIGHT);
247                         }
248                 }
249                 break;
250
251         case TABLEVIEW_NOTIFY_TYPE_TOUCH_LONG_PRESSED:
252 //              pItemListener->OnTableViewItemLongPressed(*pTableView, itemTag, __invokeTableViewItemCallback);
253                 break;
254
255         case TABLEVIEW_NOTIFY_TYPE_REORDERED_ITEM:
256                 if (tempInvokeTableViewItemCallback == true)
257                 {
258                         if (__style == TABLE_VIEW_STYLE_SIMPLE)
259                         {
260                                 pItemListener->OnTableViewItemReordered(*pTableView, index1, index2);
261                         }
262                         else if (__style == TABLE_VIEW_STYLE_GROUPED)
263                         {
264                                 pItemListener->OnGroupedTableViewItemReordered(*pTableView, index1, index2, index3, index4);
265                         }
266                 }
267                 break;
268
269         case TABLEVIEW_NOTIFY_TYPE_CONTEXT_ITEM_ACTIVATION:
270                 if (tempInvokeTableViewItemCallback == true)
271                 {
272                         _TableViewItem* pItem =pEventArg->GetItem();
273                         SysTryReturnVoidResult(NID_UI_CTRL, pItem != null, E_INVALID_STATE, ("[E_INVALID_STATE] This instance isn't constructed."));
274
275                         if (__style == TABLE_VIEW_STYLE_SIMPLE)
276                         {
277                                 pItemListener->OnTableViewContextItemActivationStateChanged(*pTableView, index2, pItem, activated);
278                         }
279                         else if (__style == TABLE_VIEW_STYLE_GROUPED)
280                         {
281                                 pItemListener->OnGroupedTableViewContextItemActivationStateChanged(*pTableView, index1, index2, pItem, activated);
282                         }
283                         else
284                         {
285                                 pItemListener->OnSectionTableViewContextItemActivationStateChanged(*pTableView, index1, index2, pItem, activated);
286                         }
287                 }
288                 break;
289
290         default:
291                 return;
292         }
293
294         return;
295 }
296
297 }}} // Tizen::Ui::Controls
298