2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.1 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://floralicense.org/license/
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
18 * @file StNfcPredefinedItemForm.cpp
19 * @brief This is the implementation file for NfcPredefinedItemForm class.
23 #include "StNfcPredefinedItemForm.h"
24 #include "StResourceManager.h"
25 #include "StSettingScenesList.h"
28 using namespace Tizen::App;
29 using namespace Tizen::Base;
30 using namespace Tizen::Base::Collection;
31 using namespace Tizen::Graphics;
32 using namespace Tizen::System;
33 using namespace Tizen::Ui;
34 using namespace Tizen::Ui::Controls;
35 using namespace Tizen::Ui::Scenes;
37 static const int ID_GROUP_NFC_PREDEFINED_ITEM = 0;
38 static const int ID_GROUP_NFC_PREDEFINED_ITEM_COUNT = 1;
39 static const int ID_GROUP_ITEM_NFC_PREDEFINED_ITEM = 0;
41 static const int ID_GROUP_NFC_PREDEFINED_ITEM_LIST = 1;
42 static const int ID_GROUP_NFC_PREDEFINED_ITEM_LIST_DEFAULT_COUNT = 0;
44 static const int NFC_PREDEFINED_ITEM_DEFAULT_GROUP_COUNT = 2;
45 static const int W_TEXT_GAP = 30;
47 NfcPredefinedItemForm::NfcPredefinedItemForm(void)
48 : __pNfcPredefinedItemPresentationModelInstance(null)
49 , __pReservedPushCandidatesAppIdList(null)
50 , __pReservedPushCandidatesDescList(null)
56 NfcPredefinedItemForm::~NfcPredefinedItemForm(void)
61 NfcPredefinedItemForm::CreateFooter(void)
63 Footer* pFooter = GetFooter();
66 SetFormBackEventListener(this);
70 NfcPredefinedItemForm::OnInitializing(void)
72 CreateHeader(ResourceManager::GetString(L"IDS_NFC_BODY_PREDEFINED_ITEM_ABB"));
79 NfcPredefinedItemForm::OnTerminating(void)
81 SetFormBackEventListener(null);
86 NfcPredefinedItemForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
88 __pNfcPredefinedItemPresentationModelInstance = NfcPredefinedItemPresentationModel::GetInstance();
89 __pNfcPredefinedItemPresentationModelInstance->InitReservedPushCandidatesList();
90 __pReservedPushCandidatesAppIdList = __pNfcPredefinedItemPresentationModelInstance->GetAllListReservedPushCandidatesAppIdList();
91 __pReservedPushCandidatesDescList = __pNfcPredefinedItemPresentationModelInstance->GetAllListReservedPushCandidatesDescList();
92 __itemCount = __pReservedPushCandidatesAppIdList->GetCount();
96 if (__pTableView != null)
97 __pTableView->UpdateTableView();
99 bool NfcReservedPushActivated = __pNfcPredefinedItemPresentationModelInstance->IsNfcReservedPushActivated();
100 if (__pTableView != null)
101 __pTableView->SetItemChecked(ID_GROUP_NFC_PREDEFINED_ITEM, ID_GROUP_ITEM_NFC_PREDEFINED_ITEM, NfcReservedPushActivated);
104 int selectItemIndex = __pNfcPredefinedItemPresentationModelInstance->GetSelectNfcReservedPushCandidatesAppIdIndex();
105 AppLogDebug("selectItemIndex %d", selectItemIndex);
106 SelectItemCheckIndex(selectItemIndex);
110 NfcPredefinedItemForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
115 NfcPredefinedItemForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
117 SceneManager* pSceneManager = SceneManager::GetInstance();
118 AppAssert(pSceneManager);
120 pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), null);
124 NfcPredefinedItemForm::GetGroupCount(void)
126 return NFC_PREDEFINED_ITEM_DEFAULT_GROUP_COUNT;
130 NfcPredefinedItemForm::GetItemCount(int groupIndex)
133 if (groupIndex == ID_GROUP_NFC_PREDEFINED_ITEM)
135 itemCount = ID_GROUP_NFC_PREDEFINED_ITEM_COUNT;
139 itemCount = __itemCount;
146 NfcPredefinedItemForm::CreateGroupItem(int groupIndex, int itemWidth)
148 AppLogDebug("ENTER");
149 AppLogDebug("group[%d] width[%d]", groupIndex, itemWidth);
151 int itemHeight = H_GROUP_INDEX_NO_TITLE_DEFAULT;
152 int yItemOffset = H_GROUP_INDEX_HELP_TEXT_TOP_GAP;
153 LabelTextStyle style = LABEL_TEXT_STYLE_NORMAL;
154 Rectangle itemMainText;
155 int fontSize = GetFontSize();
157 Label* pLabel = null;
159 TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
161 yItemOffset = H_GROUP_INDEX_NO_HELP_TEXT_GAP;
162 itemHeight = H_GROUP_INDEX_NO_TITLE_DEFAULT;
164 itemMainText.x = X_GROUP_ITEM_DEFAULT_LABEL;
165 itemMainText.y = yItemOffset;
166 itemMainText.width = itemWidth;
167 itemMainText.height = itemHeight + H_GROUP_INDEX_HELP_TEXT_TOP_GAP;
169 RelativeLayout relativeLayout;
170 relativeLayout.Construct();
172 pItem->Construct(relativeLayout, Dimension(itemWidth, itemHeight));
173 pItem->SetBackgroundColor(COLOR_BG_GROUP_INDEX_DEFAULT);
175 pLabel = new (std::nothrow) Label();
176 pLabel->Construct(itemMainText, groupText);
177 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
178 pLabel->SetTextVerticalAlignment(ALIGNMENT_TOP);
179 pLabel->SetTextConfig(fontSize, style);
180 pLabel->SetTextColor(COLOR_HELP_TEXT_TYPE_01);
182 pItem->AddControl(pLabel);
183 pItem->SetEnabled(false);
184 relativeLayout.SetMargin(*pLabel, itemMainText.x, 0, 0, 0);
185 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
186 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
192 NfcPredefinedItemForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
194 AppLogDebug("group[%d] item[%d] width[%d]", groupIndex, itemIndex, itemWidth);
195 int itemHeight = H_GROUP_ITEM_DEFAULT;
196 int fontSize = GetFontSize();
197 Rectangle itemMainRectangle;
198 Rectangle itemSubRectangle;
203 ItemTypeOneLine(itemMainRectangle);
204 TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
206 TableViewItem* pItem = new (std::nothrow) TableViewItem();
210 case ID_GROUP_NFC_PREDEFINED_ITEM:
212 ItemTypeTwoLine(itemMainRectangle, itemSubRectangle, fontSize);
213 itemMainText = ResourceManager::GetString(L"IDS_NFC_BODY_PREDEFINED_ITEM_ABB");
214 __pNfcPredefinedItemPresentationModelInstance = NfcPredefinedItemPresentationModel::GetInstance();
215 __pNfcPredefinedItemPresentationModelInstance->InitReservedPushCandidatesList();
216 __pReservedPushCandidatesAppIdList = __pNfcPredefinedItemPresentationModelInstance->GetAllListReservedPushCandidatesAppIdList();
217 if(__pReservedPushCandidatesAppIdList == null && __pReservedPushCandidatesAppIdList->GetCount() == 0)
219 SceneManager* pSceneManager = SceneManager::GetInstance();
220 AppAssert(pSceneManager);
221 pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), null);
225 if(__pReservedPushCandidatesAppIdList->GetCount() > 0)
227 itemSubText = *static_cast<String*>(__pReservedPushCandidatesAppIdList->GetAt(itemIndex));
229 style = TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING;
233 case ID_GROUP_NFC_PREDEFINED_ITEM_LIST:
235 style = TABLE_VIEW_ANNEX_STYLE_RADIO;
236 itemMainText = *static_cast<String*>(__pReservedPushCandidatesDescList->GetAt(itemIndex));
244 RelativeLayout relativeLayout;
245 relativeLayout.Construct();
247 result r = pItem->Construct(relativeLayout, Dimension(itemWidth, itemHeight), style);
250 AppLogDebug("Construct fail [%s]", GetErrorMessage(r));
255 pItem->SetBackgroundColor(COLOR_BG_GROUP_ITEM_DEFAULT);
257 Label* pLabel = new (std::nothrow) Label();
258 r = pLabel->Construct(itemMainRectangle, itemMainText);
259 pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
260 pLabel->SetTextConfig(fontSize, LABEL_TEXT_STYLE_NORMAL);
261 pLabel->SetTextColor(COLOR_MAIN_TEXT);
263 pItem->AddControl(pLabel);
264 if (groupIndex == ID_GROUP_NFC_PREDEFINED_ITEM)
266 pLabel->AddTouchEventListener(*this);
267 relativeLayout.SetMargin(*pLabel, itemMainRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN_ONOFF_SLIDING, 0, 0);
271 relativeLayout.SetMargin(*pLabel, itemMainRectangle.x + RELATIVE_LAYOUT_LEFT_MARGIN, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
273 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
274 relativeLayout.SetRelation(*pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
276 if (groupIndex == ID_GROUP_NFC_PREDEFINED_ITEM)
278 __pLabel = new (std::nothrow) Label();
279 if (__pLabel == null)
281 AppLogDebug("pLabel is null");
285 r = __pLabel->Construct(itemSubRectangle, itemSubText);
288 AppLogDebug("Construct fail [%s]", GetErrorMessage(r));
293 pItem->AddFocusEventListener(*this);
294 pItem->AddKeyEventListener(*this);
295 __pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
296 __pLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_NORMAL);
297 __pLabel->SetTextColor(COLOR_SUB_TEXT);
298 __pLabel->AddTouchEventListener(*this);
300 pItem->AddControl(__pLabel);
301 relativeLayout.SetMargin(*__pLabel, itemSubRectangle.x, RELATIVE_LAYOUT_RIGHT_MARGIN, 0, 0);
302 relativeLayout.SetRelation(*__pLabel, pItem, RECT_EDGE_RELATION_LEFT_TO_LEFT);
303 relativeLayout.SetRelation(*__pLabel, pItem, RECT_EDGE_RELATION_RIGHT_TO_RIGHT);
310 NfcPredefinedItemForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
312 AppLogDebug("ENTER");
321 NfcPredefinedItemForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
323 AppLogDebug("ENTER");
332 NfcPredefinedItemForm::OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
336 case ID_GROUP_NFC_PREDEFINED_ITEM:
338 result r = E_FAILURE;
339 if (status == TABLE_VIEW_ITEM_STATUS_CHECKED)
341 r = __pNfcPredefinedItemPresentationModelInstance->NfcReservedPushActivated();
345 r = __pNfcPredefinedItemPresentationModelInstance->NfcReservedPushDeactivated();
350 AppLogDebug("NfcReservedPushActivated is fail [%s]", GetErrorMessage(r));
356 case ID_GROUP_NFC_PREDEFINED_ITEM_LIST:
358 __pNfcPredefinedItemPresentationModelInstance = NfcPredefinedItemPresentationModel::GetInstance();
359 __pNfcPredefinedItemPresentationModelInstance->InitReservedPushCandidatesList();
360 __pReservedPushCandidatesAppIdList = __pNfcPredefinedItemPresentationModelInstance->GetAllListReservedPushCandidatesAppIdList();
361 if(__pReservedPushCandidatesAppIdList == null && __pReservedPushCandidatesAppIdList->GetCount() == 0)
363 SceneManager* pSceneManager = SceneManager::GetInstance();
364 AppAssert(pSceneManager);
365 pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), null);
368 __pNfcPredefinedItemPresentationModelInstance->SetSelectNfcReservedPushCandidatesAppIdIndex(itemIndex);
369 SelectItemCheckIndex(itemIndex);
379 NfcPredefinedItemForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
384 NfcPredefinedItemForm::GetDefaultGroupItemHeight(void)
386 return H_GROUP_INDEX_NO_TITLE_DEFAULT;
390 NfcPredefinedItemForm::GetDefaultItemHeight(void)
392 return H_GROUP_ITEM_DEFAULT;
396 NfcPredefinedItemForm::UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem)
401 NfcPredefinedItemForm::UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
405 case ID_GROUP_NFC_PREDEFINED_ITEM:
407 Label* secondLabel = static_cast<Label*>(pItem->GetControl(1));
408 __pNfcPredefinedItemPresentationModelInstance = NfcPredefinedItemPresentationModel::GetInstance();
409 __pNfcPredefinedItemPresentationModelInstance->InitReservedPushCandidatesList();
410 __pReservedPushCandidatesAppIdList = __pNfcPredefinedItemPresentationModelInstance->GetAllListReservedPushCandidatesAppIdList();
411 if (__pReservedPushCandidatesAppIdList == null)
413 SceneManager* pSceneManager = SceneManager::GetInstance();
414 AppAssert(pSceneManager);
415 pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), null);
418 int selectItemIndex = __pNfcPredefinedItemPresentationModelInstance->GetSelectNfcReservedPushCandidatesAppIdIndex();
419 if (__pReservedPushCandidatesAppIdList->GetCount() > 0)
421 String itemSubText = *static_cast<String*>(__pReservedPushCandidatesAppIdList->GetAt(selectItemIndex));
422 secondLabel->SetText(itemSubText);
430 __pTableView->RefreshItem(ID_GROUP_NFC_PREDEFINED_ITEM, ID_GROUP_ITEM_NFC_PREDEFINED_ITEM, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
434 NfcPredefinedItemForm::OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated)
439 NfcPredefinedItemForm::OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView& tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
444 NfcPredefinedItemForm::SelectItemCheckIndex(int itemIndex)
446 if (__pTableView == null)
448 AppLogDebug("__pTableView is null");
452 for (int i = 0; i < __itemCount; i++)
456 __pTableView->SetItemChecked(ID_GROUP_NFC_PREDEFINED_ITEM_LIST, i, true);
459 __pTableView->SetItemChecked(ID_GROUP_NFC_PREDEFINED_ITEM_LIST, i, false);
462 __pTableView->Invalidate(true);
463 __pTableView->RefreshItem(ID_GROUP_NFC_PREDEFINED_ITEM, ID_GROUP_ITEM_NFC_PREDEFINED_ITEM, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
467 NfcPredefinedItemForm::OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs)
470 if (requestId == REFRESH_REQUEST_EVENT)
472 __pNfcPredefinedItemPresentationModelInstance = NfcPredefinedItemPresentationModel::GetInstance();
473 __pNfcPredefinedItemPresentationModelInstance->InitReservedPushCandidatesList();
474 __pReservedPushCandidatesAppIdList = __pNfcPredefinedItemPresentationModelInstance->GetAllListReservedPushCandidatesAppIdList();
475 if(__pReservedPushCandidatesAppIdList == null)
477 SceneManager* pSceneManager = SceneManager::GetInstance();
478 AppAssert(pSceneManager);
479 pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), null);
482 __pReservedPushCandidatesDescList = __pNfcPredefinedItemPresentationModelInstance->GetAllListReservedPushCandidatesDescList();
483 __itemCount = __pReservedPushCandidatesAppIdList->GetCount();
485 AppLog("Enter __itemCount %d", __itemCount);
487 __pTableView->UpdateTableView();
490 SceneManager* pSceneManager = SceneManager::GetInstance();
491 AppAssert(pSceneManager);
492 pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), null);
495 bool NfcReservedPushActivated = __pNfcPredefinedItemPresentationModelInstance->IsNfcReservedPushActivated();
496 __pTableView->SetItemChecked(ID_GROUP_NFC_PREDEFINED_ITEM, ID_GROUP_ITEM_NFC_PREDEFINED_ITEM, NfcReservedPushActivated);
498 int selectItemIndex = __pNfcPredefinedItemPresentationModelInstance->GetSelectNfcReservedPushCandidatesAppIdIndex();
499 AppLogDebug("selectItemIndex %d", selectItemIndex);
502 SelectItemCheckIndex(selectItemIndex);
509 NfcPredefinedItemForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
511 __pLabel->SetTextColor(COLOR_SUB_TEXT);
512 __pLabel->Invalidate(false);
516 NfcPredefinedItemForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
518 __pLabel->SetTextColor(Color::GetColor(COLOR_ID_WHITE));
519 __pLabel->Invalidate(false);
523 NfcPredefinedItemForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
525 __pLabel->SetTextColor(COLOR_SUB_TEXT);
526 __pLabel->Invalidate(false);
529 NfcPredefinedItemForm::OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
531 __pLabel->SetTextColor(COLOR_SUB_TEXT);
532 __pLabel->Invalidate(false);
536 NfcPredefinedItemForm::OnFocusLost(const Tizen::Ui::Control& source)
539 __pLabel->SetTextColor(COLOR_SUB_TEXT);
540 __pLabel->Invalidate(false);
544 NfcPredefinedItemForm::OnFocusGained(const Tizen::Ui::Control& source)
550 NfcPredefinedItemForm::OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
553 if(keyCode == KEY_ENTER)
556 __pLabel->SetTextColor(Color::GetColor(COLOR_ID_WHITE));
557 __pLabel->Invalidate(false);
562 NfcPredefinedItemForm::OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
565 if(keyCode == KEY_ENTER)
568 __pLabel->SetTextColor(COLOR_SUB_TEXT);
569 __pLabel->Invalidate(false);
574 NfcPredefinedItemForm::OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)