2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
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
9 // http://www.apache.org/licenses/LICENSE-2.0/
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.
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"
29 using namespace Tizen::Base;
30 using namespace Tizen::Base::Runtime;
32 namespace Tizen { namespace Ui { namespace Controls
35 _UiTableViewItemEvent::_UiTableViewItemEvent(void)
37 , __invokeTableViewItemCallback(true)
38 , __style(TABLE_VIEW_STYLE_SIMPLE)
43 _UiTableViewItemEvent::~_UiTableViewItemEvent(void)
49 _UiTableViewItemEvent::Construct(Tizen::Ui::_Control* pSource, TableViewStyle style)
51 result r = _Event::Initialize();
52 SysTryReturnResult(NID_UI_CTRL, r == E_SUCCESS, E_SYSTEM, "Could not construct TableViewItemEvent!");
63 _UiTableViewItemEvent::GetSource(void) const
69 _UiTableViewItemEvent::FireImpl(IEventListener& listener, const IEventArg& arg)
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."));
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();
81 bool tempInvokeTableViewItemCallback = __invokeTableViewItemCallback;
82 __invokeTableViewItemCallback = true;
84 _ITableViewItemEventListener* pItemListener = dynamic_cast<_ITableViewItemEventListener*>(&listener);
85 SysTryReturnVoidResult(NID_UI_CTRL, pItemListener != null, E_INVALID_ARG, ("[E_INVALID_ARG] invalid listener type."));
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."));
95 switch (pEventArg->GetNotifyType())
97 case TABLEVIEW_NOTIFY_TYPE_SELECTED_ITEM:
98 if (tempInvokeTableViewItemCallback == true)
100 _TableViewItem* pItem =pEventArg->GetItem();
101 SysTryReturnVoidResult(NID_UI_CTRL, pItem != null, E_INVALID_STATE, ("[E_INVALID_STATE] This instance isn't constructed."));
103 if (__style == TABLE_VIEW_STYLE_SIMPLE)
105 pItemListener->OnTableViewItemStateChanged(*pTableView, index2, pItem, TABLE_VIEW_ITEM_STATUS_SELECTED);
107 else if (__style == TABLE_VIEW_STYLE_GROUPED)
111 pItemListener->OnGroupedTableViewGroupItemStateChanged(*pTableView, index1, pItem, TABLE_VIEW_ITEM_STATUS_SELECTED);
115 pItemListener->OnGroupedTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_SELECTED);
120 pItemListener->OnSectionTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_SELECTED);
125 case TABLEVIEW_NOTIFY_TYPE_HIGHLIGHED_ITEM:
126 if (tempInvokeTableViewItemCallback == true)
128 _TableViewItem* pItem =pEventArg->GetItem();
129 SysTryReturnVoidResult(NID_UI_CTRL, pItem != null, E_INVALID_STATE, ("[E_INVALID_STATE] This instance isn't constructed."));
131 if (__style == TABLE_VIEW_STYLE_SIMPLE)
133 pItemListener->OnTableViewItemStateChanged(*pTableView, index2, pItem, TABLE_VIEW_ITEM_STATUS_HIGHLIGHTED);
135 else if (__style == TABLE_VIEW_STYLE_GROUPED)
139 pItemListener->OnGroupedTableViewGroupItemStateChanged(*pTableView, index1, pItem, TABLE_VIEW_ITEM_STATUS_HIGHLIGHTED);
143 pItemListener->OnGroupedTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_HIGHLIGHTED);
148 pItemListener->OnSectionTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_HIGHLIGHTED);
153 case TABLEVIEW_NOTIFY_TYPE_ANNEX_CHECK:
154 if (tempInvokeTableViewItemCallback == true)
156 _TableViewItem* pItem =pEventArg->GetItem();
157 SysTryReturnVoidResult(NID_UI_CTRL, pItem != null, E_INVALID_STATE, ("[E_INVALID_STATE] This instance isn't constructed."));
159 if (__style == TABLE_VIEW_STYLE_SIMPLE)
161 pItemListener->OnTableViewItemStateChanged(*pTableView, index2, pItem, TABLE_VIEW_ITEM_STATUS_CHECKED);
163 else if (__style == TABLE_VIEW_STYLE_GROUPED)
167 pItemListener->OnGroupedTableViewGroupItemStateChanged(*pTableView, index1, pItem, TABLE_VIEW_ITEM_STATUS_CHECKED);
171 pItemListener->OnGroupedTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_CHECKED);
176 pItemListener->OnSectionTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_CHECKED);
181 case TABLEVIEW_NOTIFY_TYPE_ANNEX_UNCHECK:
182 if (tempInvokeTableViewItemCallback == true)
184 _TableViewItem* pItem =pEventArg->GetItem();
185 SysTryReturnVoidResult(NID_UI_CTRL, pItem != null, E_INVALID_STATE, ("[E_INVALID_STATE] This instance isn't constructed."));
187 if (__style == TABLE_VIEW_STYLE_SIMPLE)
189 pItemListener->OnTableViewItemStateChanged(*pTableView, index2, pItem, TABLE_VIEW_ITEM_STATUS_UNCHECKED);
191 else if (__style == TABLE_VIEW_STYLE_GROUPED)
195 pItemListener->OnGroupedTableViewGroupItemStateChanged(*pTableView, index1, pItem, TABLE_VIEW_ITEM_STATUS_UNCHECKED);
199 pItemListener->OnGroupedTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_UNCHECKED);
204 pItemListener->OnSectionTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_UNCHECKED);
209 case TABLEVIEW_NOTIFY_TYPE_ANNEX_MORE:
210 if (tempInvokeTableViewItemCallback == true)
212 _TableViewItem* pItem =pEventArg->GetItem();
213 SysTryReturnVoidResult(NID_UI_CTRL, pItem != null, E_INVALID_STATE, ("[E_INVALID_STATE] This instance isn't constructed."));
215 if (__style == TABLE_VIEW_STYLE_SIMPLE)
217 pItemListener->OnTableViewItemStateChanged(*pTableView, index2, pItem, TABLE_VIEW_ITEM_STATUS_MORE);
219 else if (__style == TABLE_VIEW_STYLE_GROUPED)
223 pItemListener->OnGroupedTableViewGroupItemStateChanged(*pTableView, index1, pItem, TABLE_VIEW_ITEM_STATUS_MORE);
227 pItemListener->OnGroupedTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_MORE);
232 pItemListener->OnSectionTableViewItemStateChanged(*pTableView, index1, index2, pItem, TABLE_VIEW_ITEM_STATUS_MORE);
237 case TABLEVIEW_NOTIFY_TYPE_ITEM_SWEPT:
238 if (tempInvokeTableViewItemCallback == true)
240 if (index3 == TABLE_VIEW_SWEEP_DIRECTION_LEFT)
242 pItemListener->OnTableViewItemSwept(*pTableView, index1, index2, TABLE_VIEW_SWEEP_DIRECTION_LEFT);
246 pItemListener->OnTableViewItemSwept(*pTableView, index1, index2, TABLE_VIEW_SWEEP_DIRECTION_RIGHT);
251 case TABLEVIEW_NOTIFY_TYPE_TOUCH_LONG_PRESSED:
252 // pItemListener->OnTableViewItemLongPressed(*pTableView, itemTag, __invokeTableViewItemCallback);
255 case TABLEVIEW_NOTIFY_TYPE_REORDERED_ITEM:
256 if (tempInvokeTableViewItemCallback == true)
258 if (__style == TABLE_VIEW_STYLE_SIMPLE)
260 pItemListener->OnTableViewItemReordered(*pTableView, index1, index2);
262 else if (__style == TABLE_VIEW_STYLE_GROUPED)
264 pItemListener->OnGroupedTableViewItemReordered(*pTableView, index1, index2, index3, index4);
269 case TABLEVIEW_NOTIFY_TYPE_CONTEXT_ITEM_ACTIVATION:
270 if (tempInvokeTableViewItemCallback == true)
272 _TableViewItem* pItem =pEventArg->GetItem();
273 SysTryReturnVoidResult(NID_UI_CTRL, pItem != null, E_INVALID_STATE, ("[E_INVALID_STATE] This instance isn't constructed."));
275 if (__style == TABLE_VIEW_STYLE_SIMPLE)
277 pItemListener->OnTableViewContextItemActivationStateChanged(*pTableView, index2, pItem, activated);
279 else if (__style == TABLE_VIEW_STYLE_GROUPED)
281 pItemListener->OnGroupedTableViewContextItemActivationStateChanged(*pTableView, index1, index2, pItem, activated);
285 pItemListener->OnSectionTableViewContextItemActivationStateChanged(*pTableView, index1, index2, pItem, activated);
297 }}} // Tizen::Ui::Controls