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 PhnSettingsMoreOptionsForm.cpp
19 * @brief Setting More option form
22 #include "PhnSettingsMoreOptionsForm.h"
23 #include "PhnSettingsConstants.h"
24 #include "PhnAppUtility.h"
25 #include "PhnSettingsPresentationModel.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::Ui;
32 using namespace Tizen::Ui::Controls;
33 using namespace Tizen::Ui::Scenes;
34 using namespace Tizen::Graphics;
36 static const wchar_t* IDL_SETTINGS_MOREOPTIONS_FORM = L"IDL_SETTINGS_MOREOPTIONS_FORM";
38 SettingsMoreOptionsForm::SettingsMoreOptionsForm(void)
39 : __pSettingsPresentor(null)
40 , __isCallerIdExpanded(false)
41 , __isCallAlertExpanded(false)
46 SettingsMoreOptionsForm::~SettingsMoreOptionsForm(void)
51 SettingsMoreOptionsForm::Initialize(void)
53 Construct(IDL_SETTINGS_MOREOPTIONS_FORM);
58 SettingsMoreOptionsForm::OnInitializing(void)
61 __pSettingsPresentor = SettingsPresentationModel::GetInstance();
62 // Setup back event listener
63 SetFormBackEventListener(this);
65 Footer* pFooter = GetFooter();
68 pFooter->SetButtonColor(BUTTON_ITEM_STATUS_NORMAL, pFooter->GetColor());
69 pFooter->AddActionEventListener(*this);
71 //Initialize list view
72 r = InitializeGroupedTableView();
77 SettingsMoreOptionsForm::OnTerminating(void)
80 __pSettingsPresentor = null;
85 SettingsMoreOptionsForm::OnActionPerformed(const Control& source, int actionId)
95 SettingsMoreOptionsForm::OnFormBackRequested(Form& source)
97 SceneManager* pSceneManager = SceneManager::GetInstance();
98 AppAssert(pSceneManager != null);
99 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MAIN_SETTING_MENU), null);
103 SettingsMoreOptionsForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
105 __autoAreaCode.Clear();
106 GroupedTableView* pMoreOptionsTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
107 if(__pSettingsPresentor != null && pMoreOptionsTableView != null)
109 //set status for 'GROUP_CALLERID_OPTIONS'
110 CallLineIdentity lineIdentity;
111 __pSettingsPresentor->GetCallLineIdentity(lineIdentity);
112 pMoreOptionsTableView->SetItemChecked(GROUP_CALLERID_OPTIONS, (GroupCallerIdOptionsItems) lineIdentity, true);
113 pMoreOptionsTableView->RefreshItem(GROUP_CALLERID, CALLERID_CALLER_SETTING, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
115 //set status for 'GROUP_CALL_ALERT_OPTIONS'
116 CallAlertStatus alertStatus;
117 __pSettingsPresentor->GetCallAlertStatus(alertStatus);
118 pMoreOptionsTableView->SetItemChecked(GROUP_CALL_ALERT_OPTIONS, (GroupCallAlertOptionsItems) alertStatus, true);
119 pMoreOptionsTableView->RefreshItem(GROUP_CALL_ALERT, CALLALERT_SETTING, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
121 //update auto area code status
122 result r = __pSettingsPresentor->GetActivePrefixDialNumber(__autoAreaCode);
123 pMoreOptionsTableView->RefreshItem(GROUP_AREACODE, AREACODE_AUTO_AREA_CODE, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
124 if(r == E_SUCCESS && __autoAreaCode.IsEmpty() == false)
126 pMoreOptionsTableView->SetItemChecked(GROUP_AREACODE, AREACODE_AUTO_AREA_CODE, true);
130 pMoreOptionsTableView->SetItemChecked(GROUP_AREACODE, AREACODE_AUTO_AREA_CODE, false);
136 SettingsMoreOptionsForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
141 SettingsMoreOptionsForm::InitializeGroupedTableView(void)
143 result r = E_FAILURE;
144 GroupedTableView* pMoreOptionsTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
145 if (pMoreOptionsTableView != null)
147 pMoreOptionsTableView->SetGroupedLookEnabled(true);
148 pMoreOptionsTableView->SetItemProvider(this);
149 r = pMoreOptionsTableView->AddGroupedTableViewItemEventListener(*this);
150 pMoreOptionsTableView->UpdateTableView();
151 CollapseSelectiveGroups(pMoreOptionsTableView);
157 SettingsMoreOptionsForm::CollapseSelectiveGroups(GroupedTableView* pMoreOptionsTableView)
159 //This function should be called only from "InitializeGroupedTableView()".
160 //since collapsing individual groups while GroupTableView construction causes flicker.
161 pMoreOptionsTableView->CollapseAllGroup();
162 //Expand other groups
163 pMoreOptionsTableView->ExpandGroup(GROUP_CALLERID);
164 pMoreOptionsTableView->ExpandGroup(GROUP_CALL_SETTINGS);
165 pMoreOptionsTableView->ExpandGroup(GROUP_CALL_SETTINGS_HLPTXT);
166 pMoreOptionsTableView->ExpandGroup(GROUP_CALL_REMINDER);
167 pMoreOptionsTableView->ExpandGroup(GROUP_CALL_REMINDER_HLPTXT);
168 pMoreOptionsTableView->ExpandGroup(GROUP_CALL_ALERT);
169 pMoreOptionsTableView->ExpandGroup(GROUP_AREACODE);
170 pMoreOptionsTableView->ExpandGroup(GROUP_AREACODE_HLPTXT);
171 pMoreOptionsTableView->UpdateTableView();
175 SettingsMoreOptionsForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status)
181 if (tableView.IsGroupExpanded(GROUP_CALLERID_OPTIONS))
183 tableView.CollapseGroup(GROUP_CALLERID_OPTIONS);
184 __isCallerIdExpanded = false;
188 tableView.ExpandGroup(GROUP_CALLERID_OPTIONS);
189 __isCallerIdExpanded = true;
192 tableView.RefreshItem(GROUP_CALLERID, CALLERID_CALLER_SETTING, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
196 case GROUP_CALLERID_OPTIONS:
198 HandleSelectedCallerIdOptions(tableView, itemIndex, status);
202 case GROUP_CALL_ALERT:
204 if (tableView.IsGroupExpanded(GROUP_CALL_ALERT_OPTIONS))
206 tableView.CollapseGroup(GROUP_CALL_ALERT_OPTIONS);
207 __isCallAlertExpanded = false;
211 tableView.ExpandGroup(GROUP_CALL_ALERT_OPTIONS);
212 __isCallAlertExpanded = true;
215 tableView.RefreshItem(GROUP_CALL_ALERT, CALLALERT_SETTING, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
219 case GROUP_CALL_ALERT_OPTIONS:
221 HandleSelectedCallAlertOptions(tableView, itemIndex, status);
225 case GROUP_CALL_SETTINGS:
226 case GROUP_CALL_REMINDER:
229 HandleSelectedSettings(groupIndex, itemIndex);
239 SettingsMoreOptionsForm::GetGroupCount(void)
241 return GROUP_TOTALCOUNT;
245 SettingsMoreOptionsForm::GetItemCount(int groupIndex)
252 itemCount = CALLERID_TOTALCOUNT;
256 case GROUP_CALLERID_OPTIONS:
258 itemCount = CALLEROPTIONS_TOTALCOUNT;
262 case GROUP_CALL_SETTINGS:
264 itemCount = CALLSETTINGS_TOTALCOUNT;
268 case GROUP_CALL_REMINDER:
270 itemCount = CALLREMINDER_TOTALCOUNT;
274 case GROUP_CALL_ALERT:
276 itemCount = CALLALERT_TOTALCOUNT;
280 case GROUP_CALL_ALERT_OPTIONS:
282 itemCount = CALLALERT_OPTIONS_TOTALCOUNT;
288 itemCount = AREACODE_TOTALCOUNT;
292 case GROUP_CALL_SETTINGS_HLPTXT:
293 case GROUP_CALL_REMINDER_HLPTXT:
294 case GROUP_AREACODE_HLPTXT:
307 SettingsMoreOptionsForm::CreateGroupItem(int groupIndex, int itemWidth)
309 String helpText(L"");
312 case GROUP_CALL_SETTINGS_HLPTXT:
314 helpText.Append(AppUtility::GetResourceString(IDS_SETTING_WAITING_HLP_STRING));
318 case GROUP_CALL_REMINDER_HLPTXT:
320 helpText.Append(AppUtility::GetResourceString(IDS_SETTING_STATUS_TONES_HLP_STRING));
324 case GROUP_AREACODE_HLPTXT:
326 helpText.Append(AppUtility::GetResourceString(IDS_SETTING_AUTO_AREACODE_HLP_STRING));
334 TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
335 if (helpText.IsEmpty() == true)
337 pItem->Construct(Dimension(itemWidth, H_LIST_HIDDENGROUP_ITEM));
338 pItem->SetBackgroundColor(COLOR_GROUP_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
342 pItem->Construct(Dimension(itemWidth, H_LIST_MENU_SINGLELINE_HLPTXT_ITEM));
343 //help text item rectangle
344 Rectangle helpItemRect(X_LIST_MENU_HLPTXT_ITEM, Y_LIST_MENU_HLPTXT_ITEM,
345 (itemWidth - X_LIST_MENU_HLPTXT_ITEM), (H_LIST_MENU_SINGLELINE_HLPTXT_ITEM - Y_LIST_MENU_HLPTXT_ITEM));
346 Label* pItemLbl = new (std::nothrow) Label();
347 pItemLbl->Construct(helpItemRect, helpText);
348 pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
349 pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
350 pItemLbl->SetTextConfig(FONT_SIZE_HELP_TXT, LABEL_TEXT_STYLE_NORMAL);
351 pItemLbl->SetTextColor(COLOR_HELP_TXT);
352 pItem->AddControl(*pItemLbl);
353 pItem->SetEnabled(false);
354 pItem->SetBackgroundColor(COLOR_HELP_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
355 pItem->SetBackgroundColor(COLOR_HELP_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
362 SettingsMoreOptionsForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
370 SettingsMoreOptionsForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)
376 SettingsMoreOptionsForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
378 TableViewItem* pItem = null;
383 case GROUP_CALL_ALERT:
385 pItem = CreateExpandableItem(groupIndex, itemIndex, itemWidth);
389 case GROUP_CALLERID_OPTIONS:
391 pItem = CreateCallerIdOptionsItem(itemIndex, itemWidth);
395 case GROUP_CALL_ALERT_OPTIONS:
397 pItem = CreateCallerAlertOptionsItem(itemIndex, itemWidth);
402 case GROUP_CALL_SETTINGS:
403 case GROUP_CALL_REMINDER:
406 pItem = CreateSettingMenuItem(groupIndex, itemIndex, itemWidth);
417 SettingsMoreOptionsForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
425 SettingsMoreOptionsForm::UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem)
427 if(groupIndex == GROUP_CALLERID || groupIndex == GROUP_CALL_ALERT)
430 bool isExpanded = false;
435 subText.Append(FetchSubTextForSelectedCallerId());
436 isExpanded = __isCallerIdExpanded;
440 case GROUP_CALL_ALERT:
442 subText.Append(FetchSubTextForSelectedCallerAlert());
443 isExpanded = __isCallAlertExpanded;
448 Label* pSubTxtLbl = static_cast<Label*>(pItem->GetControl(IDC_SELECTEDOPTION_SUBTEXT_LABEL, true));
449 pSubTxtLbl->SetText(subText);
450 pSubTxtLbl->Invalidate(true);
451 //set Drop-down icon to item
452 SetExpandIconToItem(pItem, isExpanded);
453 pItem->Invalidate(true);
455 else if(groupIndex == GROUP_AREACODE)
457 if(__autoAreaCode.IsEmpty() == true)
459 __autoAreaCode.Append(AppUtility::GetResourceString(IDS_NOT_ASSIGNED_STR));
462 Label* pSubTxtLbl = static_cast<Label*>(pItem->GetControl(IDC_SELECTEDOPTION_SUBTEXT_LABEL, true));
463 pSubTxtLbl->SetText(__autoAreaCode);
464 pSubTxtLbl->Invalidate(true);
465 pItem->Invalidate(true);
470 SettingsMoreOptionsForm::GetDefaultGroupItemHeight(void)
472 return H_LIST_HIDDENGROUP_ITEM;
476 SettingsMoreOptionsForm::GetDefaultItemHeight(void)
478 return H_LIST_NORMAL_MENU_ITEM;
482 SettingsMoreOptionsForm::CreateExpandableItem(int groupIndex, int itemIndex, int itemWidth)
484 String mainText(L"");
491 mainText.Append(AppUtility::GetResourceString(IDS_SETTING_CALLERID_MAIN_STR));
492 subText.Append(FetchSubTextForSelectedCallerId());
496 case GROUP_CALL_ALERT:
498 mainText.Append(AppUtility::GetResourceString(IDS_SETTING_CALL_ALERT_MAIN_STR));
499 subText.Append(FetchSubTextForSelectedCallerAlert());
504 TableViewItem* pItem = new (std::nothrow) TableViewItem();
505 pItem->Construct(Dimension(itemWidth, H_LIST_DROPDOWN_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
508 Rectangle mainItemRect(X_LIST_MENU_TEXT_ITEM, Y_LIST_MENU_TEXT_ITEM, (itemWidth - (2 * X_LIST_MENU_TEXT_ITEM) - W_EXPAND_ICON),
509 H_LIST_DROPDOWN_TXT_ITEM);
510 Label* pMainTxtLbl = new (std::nothrow) Label();
511 pMainTxtLbl->Construct(mainItemRect, mainText);
512 pMainTxtLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
513 pMainTxtLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
514 pMainTxtLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
515 pMainTxtLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);
516 pItem->AddControl(*pMainTxtLbl);
519 Rectangle subItemRect(X_LIST_MENU_TEXT_ITEM, (Y_LIST_MENU_TEXT_ITEM + H_LIST_DROPDOWN_TXT_ITEM),
520 (itemWidth - (2 * X_LIST_MENU_TEXT_ITEM) - W_EXPAND_ICON), H_LIST_DROPDOWN_TXT_ITEM);
521 Label* pSubTxtLbl = new (std::nothrow) Label();
522 pSubTxtLbl->Construct(subItemRect, subText);
523 pSubTxtLbl->SetName(IDC_SELECTEDOPTION_SUBTEXT_LABEL);
524 pSubTxtLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
525 pSubTxtLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
526 pSubTxtLbl->SetTextConfig(FONT_SIZE_SUB_TXT, LABEL_TEXT_STYLE_NORMAL);
527 pSubTxtLbl->SetTextColor(COLOR_NORMAL_SUB_TXT);
528 pItem->AddControl(*pSubTxtLbl);
530 pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
531 //set Drop-down icon to item
532 SetExpandIconToItem(pItem, true);
537 SettingsMoreOptionsForm::FetchSubTextForSelectedCallerId()
541 CallLineIdentity lineIdentity;
542 __pSettingsPresentor->GetCallLineIdentity(lineIdentity);
543 //Fetch text for selected item
544 GroupCallerIdOptionsItems selectedIndex = (GroupCallerIdOptionsItems)lineIdentity;
545 switch(selectedIndex)
547 case CALLEROPTIONS_BY_NETWORK:
548 subText.Append(AppUtility::GetResourceString(IDS_CALLERID_BYNETWORK_STRING));
551 case CALLEROPTIONS_SHOW:
552 subText.Append(AppUtility::GetResourceString(IDS_CALLERID_SHOW_STRING));
555 case CALLEROPTIONS_HIDE:
556 subText.Append(AppUtility::GetResourceString(IDS_CALLERID_HIDE_STRING));
566 SettingsMoreOptionsForm::FetchSubTextForSelectedCallerAlert()
570 CallAlertStatus alertStatus;
571 __pSettingsPresentor->GetCallAlertStatus(alertStatus);
572 //Fetch text for selected item
573 GroupCallAlertOptionsItems selectedIndex = (GroupCallAlertOptionsItems) alertStatus;
574 switch(selectedIndex)
576 case CALLALERT_OPTIONS_OFF:
577 subText.Append(AppUtility::GetResourceString(IDS_SETTING_CALLALERT_OFF_STRING));
580 case CALLALERT_OPTIONS_SOUND:
581 subText.Append(AppUtility::GetResourceString(IDS_SETTING_CALLALERT_SOUND_STRING));
584 case CALLALERT_OPTIONS_VIBRATION:
585 subText.Append(AppUtility::GetResourceString(IDS_SETTING_CALLALERT_VIBRATE_STRING));
597 SettingsMoreOptionsForm::SetExpandIconToItem(TableViewItem* pItem, bool isExpanded)
599 Bitmap* pNormalIcon = null;
600 Bitmap* pPressIcon = null;
604 pNormalIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_EXPAND, W_EXPAND_ICON, H_EXPAND_ICON);
605 pPressIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_EXPAND_PRESSED, W_EXPAND_ICON, H_EXPAND_ICON);
609 pNormalIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_OPENED, W_EXPAND_ICON, H_EXPAND_ICON);
610 pPressIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_OPENED_PRESSED, W_EXPAND_ICON, H_EXPAND_ICON);
613 int itemWidth = pItem->GetWidth();
614 Rectangle iconRect((itemWidth - W_EXPAND_ICON - X_LIST_MENU_TEXT_ITEM),
615 ((H_LIST_DROPDOWN_MENU_ITEM - H_EXPAND_ICON) / 2), W_EXPAND_ICON, H_EXPAND_ICON);
616 //for drawing blue bg header rectangle on left side.
617 Rectangle blueHeaderRect(0,0,W_LEFT_HEADER_EXPAND_ITEMS,pItem->GetHeight());
619 Canvas* pBgCanvas = new (std::nothrow) Canvas();
620 pBgCanvas->Construct(Rectangle(0,0, pItem->GetBounds().width, pItem->GetBounds().height));
621 pBgCanvas->DrawBitmap(iconRect, *pNormalIcon);
622 pBgCanvas->FillRectangle(COLOR_LEFT_HEADER_EXPAND_ITEMS, blueHeaderRect);
623 Bitmap* pActualBgBmp = new (std::nothrow) Bitmap();
624 pActualBgBmp->Construct(*pBgCanvas,pBgCanvas->GetBounds());
625 pItem->SetBackgroundBitmap(pActualBgBmp, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
630 pBgCanvas = new (std::nothrow) Canvas();
631 pBgCanvas->Construct(Rectangle(0,0, pItem->GetBounds().width, pItem->GetBounds().height));
632 pBgCanvas->DrawBitmap(iconRect, *pPressIcon);
633 pBgCanvas->FillRectangle(COLOR_LEFT_HEADER_EXPAND_ITEMS, blueHeaderRect);
634 pActualBgBmp = new (std::nothrow) Bitmap();
635 pActualBgBmp->Construct(*pBgCanvas,pBgCanvas->GetBounds());
636 pItem->SetBackgroundBitmap(pActualBgBmp, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
647 SettingsMoreOptionsForm::CreateCallerIdOptionsItem(int itemIndex, int itemWidth)
650 TableViewItem* pItem = new (std::nothrow) TableViewItem();
651 pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_RADIO);
652 pItem->SetBackgroundColor(COLOR_SECONDDEPTH_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
654 //text item rectangle
655 Rectangle itemRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_MENU_ITEM);
657 String itemName(L"");
660 case CALLEROPTIONS_BY_NETWORK:
661 itemName.Append(AppUtility::GetResourceString(IDS_CALLERID_BYNETWORK_STRING));
664 case CALLEROPTIONS_SHOW:
665 itemName.Append(AppUtility::GetResourceString(IDS_CALLERID_SHOW_STRING));
668 case CALLEROPTIONS_HIDE:
669 itemName.Append(AppUtility::GetResourceString(IDS_CALLERID_HIDE_STRING));
673 Label* pItemLbl = new (std::nothrow) Label();
674 pItemLbl->Construct(itemRect, itemName);
675 pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
676 pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
677 pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
678 pItemLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);//COLOR_PRESS_MAIN_TXT
679 pItem->AddControl(*pItemLbl);
685 SettingsMoreOptionsForm::CreateCallerAlertOptionsItem(int itemIndex, int itemWidth)
688 TableViewItem* pItem = new (std::nothrow) TableViewItem();
689 pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_RADIO);
690 pItem->SetBackgroundColor(COLOR_SECONDDEPTH_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
692 //text item rectangle
693 Rectangle itemRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_MENU_ITEM);
695 String itemName(L"");
698 case CALLALERT_OPTIONS_OFF:
699 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_CALLALERT_OFF_STRING));
702 case CALLALERT_OPTIONS_SOUND:
703 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_CALLALERT_SOUND_STRING));
706 case CALLALERT_OPTIONS_VIBRATION:
707 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_CALLALERT_VIBRATE_STRING));
711 Label* pItemLbl = new (std::nothrow) Label();
712 pItemLbl->Construct(itemRect, itemName);
713 pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
714 pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
715 pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
716 pItemLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);//COLOR_PRESS_MAIN_TXT
717 pItem->AddControl(*pItemLbl);
722 SettingsMoreOptionsForm::CreateSettingMenuItem(int groupIndex, int itemIndex, int itemWidth)
724 //text item rectangle
725 Rectangle itemNameRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_MENU_ITEM);
727 TableViewItem* pItem = new (std::nothrow) TableViewItem();
728 TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL;
730 String itemName(L"");
732 if(groupIndex == GROUP_CALL_SETTINGS)
736 case CALLSETTINGS_CALL_BARRING:
738 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_BARRING_STRING));
742 case CALLSETTINGS_CALL_WAITING:
744 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_WAITING_STRING));
752 else if(groupIndex == GROUP_CALL_REMINDER)
754 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_STATUS_TONES_STRING));
756 else if(groupIndex == GROUP_AREACODE)
758 style = TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING;
759 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_AUTO_AREACODE_STRING));
760 if(__autoAreaCode.IsEmpty() == true)
762 subText.Append(AppUtility::GetResourceString(IDS_NOT_ASSIGNED_STR));
766 subText.Append(__autoAreaCode);
768 //update itemName rectangle
769 itemNameRect.y = Y_LIST_MENU_TEXT_ITEM;
770 itemNameRect.height = H_LIST_NORMAL_TXT_ITEM;
771 itemNameRect.width = (itemWidth - X_LIST_MENU_TEXT_ITEM - W_SLIDER_ICON);
774 pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), style);
776 Label* pItemLbl = new (std::nothrow) Label();
777 pItemLbl->Construct(itemNameRect, itemName);
778 pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
779 pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
780 pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
781 pItemLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);//COLOR_PRESS_MAIN_TXT
782 pItem->AddControl(*pItemLbl);
783 pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
785 if(subText.IsEmpty() == false)
788 Rectangle subItemRect(X_LIST_MENU_TEXT_ITEM, (Y_LIST_MENU_TEXT_ITEM + H_LIST_NORMAL_TXT_ITEM),
789 (itemWidth - X_LIST_MENU_TEXT_ITEM - W_SLIDER_ICON), H_LIST_SUB_TXT_ITEM);
790 Label* pSubTxtLbl = new (std::nothrow) Label();
791 pSubTxtLbl->Construct(subItemRect, subText);
792 pSubTxtLbl->SetName(IDC_SELECTEDOPTION_SUBTEXT_LABEL);
793 pSubTxtLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
794 pSubTxtLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
795 pSubTxtLbl->SetTextConfig(FONT_SIZE_SUB_TXT, LABEL_TEXT_STYLE_NORMAL);
796 pSubTxtLbl->SetTextColor(COLOR_NORMAL_SUB_TXT);
797 pItem->AddControl(*pSubTxtLbl);
804 SettingsMoreOptionsForm::HandleSelectedCallerIdOptions(GroupedTableView& tableView, int itemIndex, TableViewItemStatus state)
806 //check if already checked item is selected
807 if(state == TABLE_VIEW_ITEM_STATUS_UNCHECKED)
809 tableView.SetItemChecked(GROUP_CALLERID_OPTIONS, itemIndex, true);
812 //uncheck previous selection
813 CallLineIdentity oldLineIdentity;
814 __pSettingsPresentor->GetCallLineIdentity(oldLineIdentity);
815 tableView.SetItemChecked(GROUP_CALLERID_OPTIONS, oldLineIdentity, false);
816 tableView.RefreshItem(GROUP_CALLERID_OPTIONS, oldLineIdentity, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
818 //send information to network / save data for checked item index.
819 CallLineIdentity updateLineIndentity = (CallLineIdentity)itemIndex;
820 __pSettingsPresentor->SetCallLineIdentity(updateLineIndentity);
821 //update status for group
822 tableView.RefreshItem(GROUP_CALLERID, CALLERID_CALLER_SETTING, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
826 SettingsMoreOptionsForm::HandleSelectedCallAlertOptions(GroupedTableView& tableView, int itemIndex, TableViewItemStatus state)
828 //check if already checked item is selected
829 if(state == TABLE_VIEW_ITEM_STATUS_UNCHECKED)
831 tableView.SetItemChecked(GROUP_CALL_ALERT_OPTIONS, itemIndex, true);
834 //uncheck previous selection
835 CallAlertStatus oldAlertStatus;
836 __pSettingsPresentor->GetCallAlertStatus(oldAlertStatus);
837 tableView.SetItemChecked(GROUP_CALL_ALERT_OPTIONS, oldAlertStatus, false);
838 tableView.RefreshItem(GROUP_CALL_ALERT_OPTIONS, oldAlertStatus, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
840 //send information to network / save data for checked item index.
841 CallAlertStatus updateAlertStatus = (CallAlertStatus)itemIndex;
842 __pSettingsPresentor->SetCallAlertStatus(updateAlertStatus);
843 //update status for group
844 tableView.RefreshItem(GROUP_CALL_ALERT, CALLALERT_SETTING, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
848 SettingsMoreOptionsForm::HandleSelectedSettings(int groupIndex, int itemIndex)
850 SceneManager* pSceneManager = SceneManager::GetInstance();
851 AppAssert(pSceneManager != null);
855 case GROUP_CALL_SETTINGS:
857 if(itemIndex == CALLSETTINGS_CALL_BARRING)
859 //switch to form - CALLSETTINGS_CALL_BARRING
860 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALLTYPE_BARRING), null);
864 //switch to form - CALLSETTINGS_CALL_WAITING
865 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_WAITING_OPTIONS), null);
870 case GROUP_CALL_REMINDER:
872 //switch to form - CALLREMINDER_STATUS_TONES
873 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_STATUSTONES), null);
879 //switch to form - AREACODE_AUTO_AREA_CODE
880 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_AUTO_AREA_CODE), null);