2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.0 (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 PhnSettingsRejectListForm.cpp
19 * @brief Setting Reject list form
22 #include "PhnAppUtility.h"
23 #include "PhnSettingsConstants.h"
24 #include "PhnSettingsPresentationModel.h"
25 #include "PhnSettingsRejectListForm.h"
26 #include "PhnSceneRegister.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::Ui;
33 using namespace Tizen::Ui::Controls;
34 using namespace Tizen::Ui::Scenes;
37 const int IDI_TOTAL_GROUP_COUNT = 1;
38 const int IDI_DEFAULT_LIST_ITEMID = 500;
39 //by default, list has 1 item
40 const int IDI_DEFAULT_LIST_COUNT = 1;
41 const int IDI_ADD_FOOTER_INDEX = 0;
42 const int IDI_DEL_FOOTER_INDEX = 1;
43 static const wchar_t* IDL_SETTINGS_REJECTLIST_FORM = L"IDL_SETTINGS_REJECTLIST_FORM";
45 SettingsRejectListForm::SettingsRejectListForm(void)
46 : __pNumbersList(null)
47 , __pSettingsPresentor(null)
51 SettingsRejectListForm::~SettingsRejectListForm(void)
56 SettingsRejectListForm::Initialize(void)
58 Construct(IDL_SETTINGS_REJECTLIST_FORM);
63 SettingsRejectListForm::OnInitializing(void)
66 __pSettingsPresentor = SettingsPresentationModel::GetInstance();
68 // Setup back event listener
69 SetFormBackEventListener(this);
72 //initialize list view
73 r = InitializeGroupedTableView();
78 SettingsRejectListForm::InitializeFooter(void)
80 Footer* pFooter = GetFooter();
83 pFooter->SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
86 String footerItemName(L"");
87 footerItemName.Append(AppUtility::GetResourceString(IDS_ADD_BTN_STRING));
88 FooterItem addFooterItem;
89 addFooterItem.Construct(IDA_ADD_FOOTER_ITEMID);
90 addFooterItem.SetText(footerItemName);
91 pFooter->InsertItemAt(IDI_ADD_FOOTER_INDEX,addFooterItem);
94 footerItemName.Clear();
95 footerItemName.Append(AppUtility::GetResourceString(IDS_DELETE_BTN_STRING));
96 FooterItem delFooterItem;
97 delFooterItem.Construct(IDA_DELETE_FOOTER_ITEMID);
98 delFooterItem.SetText(footerItemName);
99 pFooter->InsertItemAt(IDI_DEL_FOOTER_INDEX,delFooterItem);
101 pFooter->SetBackButton();
103 pFooter->AddActionEventListener(*this);
108 SettingsRejectListForm::OnTerminating(void)
110 result r = E_SUCCESS;
114 delete __pNumbersList;
115 __pNumbersList = null;
117 __pSettingsPresentor = null;
122 SettingsRejectListForm::OnActionPerformed(const Control& source, int actionId)
124 SceneManager* pSceneManager = SceneManager::GetInstance();
125 AppAssert(pSceneManager != null);
129 case IDA_ADD_FOOTER_ITEMID:
131 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ADD_REJECT_NUMBER), null);
135 case IDA_DELETE_FOOTER_ITEMID:
137 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_DEL_NUMBER), null);
147 SettingsRejectListForm::OnFormBackRequested(Form& source)
149 SceneManager* pSceneManager = SceneManager::GetInstance();
150 AppAssert(pSceneManager != null);
151 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MAIN_SETTING_MENU), null);
155 SettingsRejectListForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
157 // Add your scene activate code here
158 FetchNumbersRejectList();
159 GroupedTableView* pMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
160 if (pMenuTableView != null)
162 //fetch latest added numbers
163 pMenuTableView->UpdateTableView();
165 //set item's check status
166 for (int itemIndex = 0; itemIndex < GetItemCount(0); itemIndex++)
168 bool isItemActivated = false;
171 isItemActivated = __pSettingsPresentor->GetUnknownRejectStatus();
175 int listIndex = itemIndex - 1;
176 if (__pNumbersList != null && listIndex < __pNumbersList->GetCount())
178 //numbers from fetched list
179 CallRejectInfo rejectInfo;
180 __pNumbersList->GetAt(listIndex, rejectInfo);
181 isItemActivated = rejectInfo.isActivated;
184 pMenuTableView->SetItemChecked(0, itemIndex, isItemActivated);
186 pMenuTableView->Invalidate(true);
189 //Enable or Disable delete footer button
190 bool enableItem = true;
191 if (__pNumbersList == null || __pNumbersList->GetCount() <= 0)
195 Footer* pFooter = GetFooter();
198 pFooter->SetItemEnabled(IDI_DEL_FOOTER_INDEX, enableItem);
204 SettingsRejectListForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
209 SettingsRejectListForm::FetchNumbersRejectList(void)
211 if (__pNumbersList != null)
213 delete __pNumbersList;
214 __pNumbersList = null;
216 __pNumbersList = static_cast<ArrayListT<CallRejectInfo>*>(__pSettingsPresentor->GetCallRejectList());
220 SettingsRejectListForm::InitializeGroupedTableView(void)
222 result r = E_FAILURE;
223 GroupedTableView* pMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
224 if (pMenuTableView != null)
226 pMenuTableView->SetGroupedLookEnabled(true);
227 pMenuTableView->SetItemProvider(this);
228 r = pMenuTableView->AddGroupedTableViewItemEventListener(*this);
229 pMenuTableView->UpdateTableView();
235 SettingsRejectListForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status)
237 if(status == TABLE_VIEW_ITEM_STATUS_SELECTED)
241 if(tableView.IsItemChecked(groupIndex,itemIndex) == true)
243 tableView.SetItemChecked(groupIndex,itemIndex,false);
244 __pSettingsPresentor->SetUnknownRejectStatus(false);
248 tableView.SetItemChecked(groupIndex,itemIndex,true);
249 __pSettingsPresentor->SetUnknownRejectStatus(true);
254 CallRejectInfo rejectInfo;
255 __pNumbersList->GetAt((itemIndex -1), rejectInfo);
256 // "unknown number" element status changed
257 if (tableView.IsItemChecked(groupIndex,itemIndex) == true)
259 tableView.SetItemChecked(groupIndex,itemIndex,false);
260 __pSettingsPresentor->UpdateCallRejectRow(rejectInfo.rowId,rejectInfo.phoneNumber,false,rejectInfo.rejectCondition);
264 tableView.SetItemChecked(groupIndex,itemIndex,true);
265 __pSettingsPresentor->UpdateCallRejectRow(rejectInfo.rowId,rejectInfo.phoneNumber,true,rejectInfo.rejectCondition);
273 // "unknown number" element status changed
274 if (status == TABLE_VIEW_ITEM_STATUS_CHECKED)
276 __pSettingsPresentor->SetUnknownRejectStatus(true);
278 else if(status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)
280 __pSettingsPresentor->SetUnknownRejectStatus(false);
285 CallRejectInfo rejectInfo;
286 __pNumbersList->GetAt((itemIndex -1), rejectInfo);
287 // "unknown number" element status changed
288 if (status == TABLE_VIEW_ITEM_STATUS_CHECKED)
290 __pSettingsPresentor->UpdateCallRejectRow(rejectInfo.rowId,rejectInfo.phoneNumber,true,rejectInfo.rejectCondition);
292 else if(status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)
294 __pSettingsPresentor->UpdateCallRejectRow(rejectInfo.rowId,rejectInfo.phoneNumber,false,rejectInfo.rejectCondition);
300 SettingsRejectListForm::GetGroupCount(void)
302 return IDI_TOTAL_GROUP_COUNT;
306 SettingsRejectListForm::GetItemCount(int groupIndex)
308 int itemCount = IDI_DEFAULT_LIST_COUNT;
309 if (__pNumbersList != null)
311 itemCount += __pNumbersList->GetCount();
317 SettingsRejectListForm::CreateGroupItem(int groupIndex, int itemWidth)
319 TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
320 pItem->Construct(Dimension(itemWidth, H_LIST_HIDDENGROUP_ITEM));
321 pItem->SetBackgroundColor(COLOR_GROUP_ITEM_BG);
326 SettingsRejectListForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
334 SettingsRejectListForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)
340 SettingsRejectListForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
343 Rectangle criteriaRect(X_LIST_MENU_TEXT_ITEM, H_LIST_NORMAL_TXT_ITEM,
344 (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_SUB_TXT_ITEM);
345 String criteria(L"");
346 //text item rectangle
347 Rectangle itemNameRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM - W_SLIDER_ICON), H_LIST_NORMAL_MENU_ITEM);
348 String itemName(L"");
354 //default "unknown" item
355 itemName.Append(AppUtility::GetResourceString(IDS_DEFAULT_REJECT_ITEM_STRING));
361 int listIndex = itemIndex - 1;
362 if (__pNumbersList != null && listIndex < __pNumbersList->GetCount())
364 //numbers from fetched list
365 CallRejectInfo rejectInfo;
366 __pNumbersList->GetAt(listIndex, rejectInfo);
367 itemName.Append(rejectInfo.phoneNumber);
368 //update item name rectangle
369 itemNameRect.y = Y_LIST_MENU_TEXT_ITEM;
370 itemNameRect.height = H_LIST_NORMAL_TXT_ITEM;
372 switch (rejectInfo.rejectCondition)
374 case CALL_REJECT_MATCH_EXACTLY:
376 criteria.Append(AppUtility::GetResourceString(IDS_MATCHCRITERIA_EXACT));
380 case CALL_REJECT_MATCH_START:
382 criteria.Append(AppUtility::GetResourceString(IDS_MATCHCRITERIA_START));
386 case CALL_REJECT_MATCH_END:
388 criteria.Append(AppUtility::GetResourceString(IDS_MATCHCRITERIA_END));
392 case CALL_REJECT_MATCH_INCLUDE:
394 criteria.Append(AppUtility::GetResourceString(IDS_MATCHCRITERIA_INCLUDE));
403 TableViewItem* pItem = new (std::nothrow) TableViewItem();
404 pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING);
406 Label* pItemLbl = new (std::nothrow) Label();
407 pItemLbl->Construct(itemNameRect, itemName);
408 pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
409 pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
410 pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
411 pItemLbl->SetTextColor(COLOR_MAIN_TXT);
412 pItem->AddControl(*pItemLbl);
414 if(criteria.IsEmpty() == false)
416 Label* pCriteriaLbl = new (std::nothrow) Label();
417 pCriteriaLbl->Construct(criteriaRect, criteria);
418 pCriteriaLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
419 pCriteriaLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
420 pCriteriaLbl->SetTextConfig(FONT_SIZE_SUB_TXT, LABEL_TEXT_STYLE_NORMAL);
421 pCriteriaLbl->SetTextColor(COLOR_NORMAL_SUB_TXT);
422 pItem->AddControl(*pCriteriaLbl);
424 pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
429 SettingsRejectListForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
437 SettingsRejectListForm::UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem)
443 SettingsRejectListForm::GetDefaultGroupItemHeight(void)
445 return H_LIST_HIDDENGROUP_ITEM;
449 SettingsRejectListForm::GetDefaultItemHeight(void)
451 return H_LIST_NORMAL_MENU_ITEM;