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 PhnSettingsCallForwardWaitBarrForm.cpp
19 * @brief Call forwarding form
22 #include "PhnAppUtility.h"
23 #include "PhnSettingsCallForwardWaitBarrForm.h"
24 #include "PhnSettingsConstants.h"
25 #include "PhnSettingsPresentationModel.h"
26 #include "PhnSceneRegister.h"
29 using namespace Tizen::App;
30 using namespace Tizen::Base;
31 using namespace Tizen::Base::Collection;
32 using namespace Tizen::Base::Runtime;
33 using namespace Tizen::Graphics;
34 using namespace Tizen::Ui;
35 using namespace Tizen::Ui::Controls;
36 using namespace Tizen::Ui::Scenes;
39 const int IDI_GROUP_TOTALCOUNT = 1;
40 static const wchar_t* IDL_SETTINGS_CALL_FORWARD_WAIT_BARRING_FORM = L"IDL_SETTINGS_CALL_FORWARD_WAIT_BARRING_FORM";
41 static const wchar_t* IDC_SLIDER_CHECHBUTTON = L"IDC_SLIDER_CHECHBUTTON";
43 SettingsCallForwardWaitBarrForm::SettingsCallForwardWaitBarrForm(FormType formType)
44 : __formType(formType)
45 , __pSettingsPresentor(null)
46 , __pErrorMsgPopup(null)
47 , __isCallForwardAlwaysActivated(false)
48 , __pAnimationFrameList(null)
49 , __isCallWaitingStatusAvailable(false)
50 , __isCallWaitingEnabled(false)
54 SettingsCallForwardWaitBarrForm::~SettingsCallForwardWaitBarrForm(void)
59 SettingsCallForwardWaitBarrForm::Initialize(void)
61 Construct(IDL_SETTINGS_CALL_FORWARD_WAIT_BARRING_FORM);
65 SettingsCallForwardWaitBarrForm::OnInitializing(void)
69 __pSettingsPresentor = SettingsPresentationModel::GetInstance();
71 Header* pHeader = GetHeader();
77 case FORMTYPE_CALLFORWARDING_TYPE:
79 title.Append(AppUtility::GetResourceString(IDS_SETTING_FORWARD_CALLTYPE_TITLE));
83 case FORMTYPE_CALLBARRING_TYPE:
85 title.Append(AppUtility::GetResourceString(IDS_SETTING_BARRING_CALLTYPE_TITLE));
89 case FORMTYPE_VOICE_CALLFORWARDING:
91 title.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEFORWARD_OPTIONS_TITLE));
95 case FORMTYPE_VOICE_CALLBARRING:
97 title.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEBARRING_OPTIONS_TITLE));
101 case FORMTYPE_CALL_WAITING:
103 title.Append(AppUtility::GetResourceString(IDS_SETTING_WAITING_OPTIONS_TITLE));
110 pHeader->SetTitleText(title);
113 // Setup back event listener
114 SetFormBackEventListener(this);
116 Footer* pFooter = GetFooter();
119 pFooter->SetButtonColor(BUTTON_ITEM_STATUS_NORMAL, pFooter->GetColor());
122 ConstructAnimationList();
123 //initialize table view
124 r = InitializeGroupedTableView();
130 SettingsCallForwardWaitBarrForm::OnTerminating(void)
132 result r = E_SUCCESS;
133 __pSettingsPresentor = null;
135 if(__pAnimationFrameList != null)
137 __pAnimationFrameList->RemoveAll();
138 delete __pAnimationFrameList;
139 __pAnimationFrameList = null;
145 SettingsCallForwardWaitBarrForm::ConstructAnimationList(void)
147 //Check if already created
148 if(__pAnimationFrameList != null)
152 // Create AnimationList
153 __pAnimationFrameList = new (std::nothrow) ArrayList(SingleObjectDeleter);
154 __pAnimationFrameList->Construct();
157 AppResource *pAppResource = Application::GetInstance()->GetAppResource();
158 if (pAppResource != null)
160 for (int iconIndex = 1; iconIndex <= 30; iconIndex++)
162 //construct bitmap path
163 String bitmapPath(IDB_PROCESSING_ICONS);
167 bitmapPath.Append(0);
169 bitmapPath.Append(iconIndex);
170 bitmapPath.Append(L".png");
171 //Create Animation icons - fetch bitmap
172 Bitmap *pBitmap = pAppResource->GetBitmapN(bitmapPath);
175 // Create AnimationFrames
176 AnimationFrame *pAnimFrame = new (std::nothrow) AnimationFrame( *pBitmap,
177 (IDI_ANIM_DURATION / IDI_ANIM_PROGRESS_COUNT));
178 __pAnimationFrameList->Add(pAnimFrame);
187 SettingsCallForwardWaitBarrForm::OnActionPerformed(const Control& source, int actionId)
197 SettingsCallForwardWaitBarrForm::OnFormBackRequested(Form& source)
199 SceneManager* pSceneManager = SceneManager::GetInstance();
200 AppAssert(pSceneManager != null);
204 case FORMTYPE_CALLFORWARDING_TYPE:
206 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MAIN_SETTING_MENU), null);
210 case FORMTYPE_CALLBARRING_TYPE:
211 case FORMTYPE_CALL_WAITING:
213 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MORE_OPTIONS), null);
217 case FORMTYPE_VOICE_CALLFORWARDING:
220 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALLTYPE_FORWARD), null);
224 case FORMTYPE_VOICE_CALLBARRING:
227 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALLTYPE_BARRING), null);
237 SettingsCallForwardWaitBarrForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
239 // Add your scene activate code here
240 __pSettingsPresentor->AddSettingEventListener(this);
241 int errorCode = ERROR_NONE;
244 case FORMTYPE_VOICE_CALLFORWARDING:
247 __isCallForwardAlwaysActivated = false;
248 errorCode = __pSettingsPresentor->GetCallForwardStatus(CALL_FORWARD_ALL);
249 TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
250 errorCode = __pSettingsPresentor->GetCallForwardStatus(CALL_FORWARD_BUSY);
251 TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
252 errorCode = __pSettingsPresentor->GetCallForwardStatus(CALL_FORWARD_NO_REPLY);
253 TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
254 errorCode = __pSettingsPresentor->GetCallForwardStatus(CALL_FORWARD_NOT_REACHABLE);
255 TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
259 case FORMTYPE_VOICE_CALLBARRING:
262 errorCode = __pSettingsPresentor->GetCallBarringStatus(CALL_BARRING_ALL_OUTGOING);
263 TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
264 errorCode = __pSettingsPresentor->GetCallBarringStatus(CALL_BARRING_INTERNATIONAL_OUTGOING);
265 TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
266 errorCode = __pSettingsPresentor->GetCallBarringStatus(CALL_BARRING_INTERNATIONAL_EXCEPT_HOME);
267 TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
268 errorCode = __pSettingsPresentor->GetCallBarringStatus(CALL_BARRING_ALL_INCOMING);
269 TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
270 errorCode = __pSettingsPresentor->GetCallBarringStatus(CALL_BARRING_INCOMING_ROAMING);
271 TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
275 case FORMTYPE_CALL_WAITING:
278 errorCode = __pSettingsPresentor->GetCallWaitingStatus();
279 TryCatch(errorCode == ERROR_NONE,,"TAPI error occurred");
290 //Show error message popup
291 ShowErrorMessage(errorCode);
292 //in case of TAPI error, un-check all items
298 SettingsCallForwardWaitBarrForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
300 // Add your scene de-activate code here
301 __pSettingsPresentor->RemoveSettingEventListener();
304 /////////////////////////////////////////////////////////////////////
305 ////////////////// List View related functionality //////////////////
306 /////////////////////////////////////////////////////////////////////
308 SettingsCallForwardWaitBarrForm::InitializeGroupedTableView(void)
310 result r = E_FAILURE;
311 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
312 if (pMainMenuTableView != null)
314 pMainMenuTableView->SetGroupedLookEnabled(true);
315 pMainMenuTableView->SetItemProvider(this);
316 r = pMainMenuTableView->AddGroupedTableViewItemEventListener(*this);
319 pMainMenuTableView->UpdateTableView();
320 //play processing animation
321 if(__formType == FORMTYPE_CALL_WAITING)
323 pMainMenuTableView->RefreshItem(0, CALLWAITING_ITEM, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
331 SettingsCallForwardWaitBarrForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status)
335 case FORMTYPE_CALLFORWARDING_TYPE: //decide voice/video type for forwarding / barring
336 case FORMTYPE_CALLBARRING_TYPE:
338 HandleCallTypeSelected(itemIndex);
342 case FORMTYPE_VOICE_CALLFORWARDING:
344 HandleCallForwardingOptionSelected(itemIndex, status);
348 case FORMTYPE_VOICE_CALLBARRING:
350 HandleCallBarringOptionSelected(itemIndex, status);
354 case FORMTYPE_CALL_WAITING:
356 HandleCallWaitingOptionSelected(pItem, itemIndex, status);
366 SettingsCallForwardWaitBarrForm::GetGroupCount(void)
368 return IDI_GROUP_TOTALCOUNT;
372 SettingsCallForwardWaitBarrForm::GetItemCount(int groupIndex)
377 case FORMTYPE_CALLFORWARDING_TYPE: //decide voice/video type for forwarding
378 case FORMTYPE_CALLBARRING_TYPE: //decide voice/video type for barring
380 itemCount = CALLTYPE_TOTALCOUNT;
384 case FORMTYPE_VOICE_CALLFORWARDING: //actual options for call forwarding
386 itemCount = CALLFORWARD_TOTALITEMCOUNT;
390 case FORMTYPE_VOICE_CALLBARRING: //actual options for call barring
392 itemCount = CALLBARRING_TOTALCOUNT;
396 case FORMTYPE_CALL_WAITING:
398 itemCount = CALLWAITING_TOTALCOUNT;
409 SettingsCallForwardWaitBarrForm::CreateGroupItem(int groupIndex, int itemWidth)
411 TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
412 pItem->Construct(Dimension(itemWidth, H_LIST_HIDDENGROUP_ITEM));
413 pItem->SetBackgroundColor(COLOR_GROUP_ITEM_BG);
418 SettingsCallForwardWaitBarrForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
426 SettingsCallForwardWaitBarrForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)
432 SettingsCallForwardWaitBarrForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
434 TableViewItem* pItem = null;
437 case FORMTYPE_CALLFORWARDING_TYPE:
438 case FORMTYPE_CALLBARRING_TYPE:
440 pItem = CreateSettingCallTypeMenuItem(itemIndex, itemWidth);
444 case FORMTYPE_VOICE_CALLFORWARDING:
446 pItem = CreateCallForwardingOptions(itemIndex, itemWidth);
450 case FORMTYPE_VOICE_CALLBARRING:
452 pItem = CreateCallBarringOptions(itemIndex, itemWidth);
456 case FORMTYPE_CALL_WAITING:
458 pItem = CreateCallWaitingOptions(itemIndex, itemWidth);
470 SettingsCallForwardWaitBarrForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
478 SettingsCallForwardWaitBarrForm::UpdateItem(int groupIndex, int itemIndex, TableViewItem* pItem)
480 if(__formType == FORMTYPE_CALL_WAITING)
482 Animation* pAnimation = static_cast<Animation*>(pItem->GetControl(IDC_ANIMATION_CONTROL, true));
483 if(__isCallWaitingStatusAvailable == false)
485 //let the animation play
486 if(pAnimation != null)
494 if(pAnimation != null)
497 pItem->RemoveControl(*pAnimation);
499 //show CheckButton with on-off slider style
500 CheckButton* pSliderButton = static_cast<CheckButton*>(pItem->GetControl(IDC_SLIDER_CHECHBUTTON,true));
501 if(pSliderButton == null)
503 //construct new "CheckButton", if not present
504 int itemWidth = pItem->GetWidth();
505 Rectangle animRect((itemWidth - W_SLIDER_ICON), ((H_LIST_NORMAL_MENU_ITEM - H_SLIDER_ICON) /2), W_SLIDER_ICON, H_SLIDER_ICON);
506 pSliderButton = new (std::nothrow) CheckButton();
507 pSliderButton->Construct(animRect, CHECK_BUTTON_STYLE_ONOFF_SLIDING, BACKGROUND_STYLE_NONE);
508 pSliderButton->SetName(IDC_SLIDER_CHECHBUTTON);
509 pSliderButton->SetActionId(IDA_CALL_WAITING_OPTION_CHECKED, IDA_CALL_WAITING_OPTION_UNCHECKED);
510 pSliderButton->AddActionEventListener(*this);
511 // Add a CheckButton to the Form
512 pItem->AddControl(*pSliderButton);
513 pItem->SetIndividualSelectionEnabled(pSliderButton, false);
516 pSliderButton->SetSelected(__isCallWaitingEnabled);
523 SettingsCallForwardWaitBarrForm::GetDefaultGroupItemHeight(void)
525 return H_LIST_HIDDENGROUP_ITEM;
529 SettingsCallForwardWaitBarrForm::GetDefaultItemHeight(void)
531 return H_LIST_NORMAL_MENU_ITEM;
535 SettingsCallForwardWaitBarrForm::CreateSettingCallTypeMenuItem(int itemIndex, int itemWidth)
537 //text item rectangle
538 Rectangle itemNameRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_MENU_ITEM);
539 String itemName(L"");
542 case CALLTYPE_VOICE_CALL:
544 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_CALLTYPE_VOICE_STRING));
552 TableViewItem* pItem = new (std::nothrow) TableViewItem();
553 pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
555 Label* pItemLbl = new (std::nothrow) Label();
556 pItemLbl->Construct(itemNameRect, itemName);
557 pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
558 pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
559 pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
560 pItemLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);//COLOR_PRESS_MAIN_TXT
561 pItem->AddControl(*pItemLbl);
562 pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
568 SettingsCallForwardWaitBarrForm::HandleCallTypeSelected(int itemIndex)
570 SceneManager* pSceneManager = SceneManager::GetInstance();
571 AppAssert(pSceneManager != null);
575 case CALLTYPE_VOICE_CALL:
577 if (__formType == FORMTYPE_CALLFORWARDING_TYPE)
579 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_FORWARD_OPTIONS), null);
583 //for FORMTYPE_CALLBARRING_TYPE
584 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_BARRING_OPTIONS), null);
595 SettingsCallForwardWaitBarrForm::CreateCallForwardingOptions(int itemIndex, int itemWidth)
598 Rectangle subItemRect(X_LIST_MENU_TEXT_ITEM, H_LIST_NORMAL_TXT_ITEM,
599 (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_SUB_TXT_ITEM);
600 String subText = AppUtility::GetResourceString(IDS_SETTING_DEACTIVATE_STATUS);
602 //main text rectangle
603 Rectangle itemNameRect(X_LIST_MENU_TEXT_ITEM, 0,
604 (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_TXT_ITEM);
608 case CALLFORWARD_ALWAYS:
610 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEFORWARD_ALWAYS));
614 case CALLFORWARD_IF_BUSY:
616 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEFORWARD_IFBUSY));
620 case CALLFORWARD_IF_NO_REPLY:
622 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEFORWARD_NOREPLY));
626 case CALLFORWARD_IF_OUT_OF_REACH:
628 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEFORWARD_OUTOFREACH));
636 TableViewItem* pItem = new (std::nothrow) TableViewItem();
637 pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING);
640 Label* pItemLbl = new (std::nothrow) Label();
641 pItemLbl->Construct(itemNameRect, itemName);
642 pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
643 pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
644 pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
645 pItemLbl->SetTextColor(COLOR_MAIN_TXT);
646 pItem->AddControl(*pItemLbl);
648 Label* pSubTxtLbl = new (std::nothrow) Label();
649 pSubTxtLbl->Construct(subItemRect, subText);
650 pSubTxtLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
651 pSubTxtLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
652 pSubTxtLbl->SetTextConfig(FONT_SIZE_SUB_TXT, LABEL_TEXT_STYLE_NORMAL);
653 pSubTxtLbl->SetTextColor(COLOR_NORMAL_SUB_TXT);
654 pItem->AddControl(*pSubTxtLbl);
656 pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
661 SettingsCallForwardWaitBarrForm::HandleCallForwardingOptionSelected(int itemIndex, TableViewItemStatus status)
663 if(status == TABLE_VIEW_ITEM_STATUS_CHECKED || status == TABLE_VIEW_ITEM_STATUS_SELECTED)
665 //Do not activate any other call forwarding option, if 'CALLFORWARD_ALWAYS' is selected.
666 if((itemIndex != CALLFORWARD_ALWAYS) && (__isCallForwardAlwaysActivated == true))
668 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
669 pMainMenuTableView->SetItemChecked(CALLFORWARDING_GROUP, itemIndex, false);
670 pMainMenuTableView->Invalidate(true);
674 SceneManager* pSceneManager = SceneManager::GetInstance();
675 AppAssert(pSceneManager != null);
677 ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
679 Integer* indexInt = new (std::nothrow) Integer(itemIndex);
680 pArgs->Add(indexInt);
684 case CALLFORWARD_IF_NO_REPLY:
686 //switch to "NOREPLY_ForwardToNumber" form
687 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_NOREPLY_FORWARD_TO_NUMBER), pArgs);
693 //switch to "ForwardToNumber" form
694 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_FORWARD_TO_NUMBER), pArgs);
701 __pSettingsPresentor->SetCallForwardStatus(String(L""),CallForwardCondition(itemIndex), false, 0);
706 SettingsCallForwardWaitBarrForm::CreateCallBarringOptions(int itemIndex, int itemWidth)
708 //text item rectangle
709 Rectangle itemNameRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_NORMAL_MENU_ITEM);
711 String itemName(L"");
714 case CALLBARRING_ALL_OUTGOING_CALL:
716 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEBARRING_OUTGOING));
720 case CALLBARRING_INTERNATIONAL_CALL:
722 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEBARRING_INTERNATIONAL));
726 case CALLBARRING_INTERNATIONAL_EXCEPT_HOME:
728 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEBARRING_EXCEPTHOME));
732 case CALLBARRING_ALL_INCOMING_CALL:
734 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEBARRING_INCOMING));
738 case CALLBARRING_INCOMING_WHILE_ROAMING:
740 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_VOICEBARRING_WHENROAMING));
748 TableViewItem* pItem = new (std::nothrow) TableViewItem();
749 pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_ONOFF_SLIDING);
751 Label* pItemLbl = new (std::nothrow) Label();
752 pItemLbl->Construct(itemNameRect, itemName);
753 pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
754 pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
755 pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
756 pItemLbl->SetTextColor(COLOR_MAIN_TXT);
757 pItem->AddControl(*pItemLbl);
759 pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
764 SettingsCallForwardWaitBarrForm::HandleCallBarringOptionSelected(int itemIndex, TableViewItemStatus status)
766 //Don't change the item status and goto next form.
767 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
768 if(status == TABLE_VIEW_ITEM_STATUS_CHECKED)
770 pMainMenuTableView->SetItemChecked(0,itemIndex,false);
772 else if(status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)
774 pMainMenuTableView->SetItemChecked(0,itemIndex,true);
777 //Whether status is checked or unchecked, always goto BarringPwdForm form
778 //to take password from user. Activation / De-activation of barring happens from BarringPwdForm.
779 SceneManager* pSceneManager = SceneManager::GetInstance();
780 AppAssert(pSceneManager != null);
782 ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter);
784 Integer* indexInt = new (std::nothrow) Integer(itemIndex);
785 pArgs->Add(indexInt);
786 Integer* itemState = new (std::nothrow) Integer(status);
787 pArgs->Add(itemState);
788 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_SET_BARRING_PWD), pArgs);
792 SettingsCallForwardWaitBarrForm::CreateCallWaitingOptions(int itemIndex, int itemWidth)
794 //text item rectangle
795 Rectangle itemNameRect(X_LIST_MENU_TEXT_ITEM, 0,
796 (itemWidth - X_LIST_MENU_TEXT_ITEM - X_LIST_MENU_TEXT_ITEM - W_EXPAND_ICON), H_LIST_NORMAL_MENU_ITEM);
797 String itemName(L"");
800 case CALLWAITING_ITEM:
802 itemName.Append(AppUtility::GetResourceString(IDS_SETTING_CALL_WAITING_OPTIONS));
810 TableViewItem* pItem = new (std::nothrow) TableViewItem();
811 pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
814 Label* pItemLbl = new (std::nothrow) Label();
815 pItemLbl->Construct(itemNameRect, itemName);
816 pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
817 pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
818 pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
819 pItemLbl->SetTextColor(COLOR_MAIN_TXT);
820 pItem->AddControl(*pItemLbl);
823 if(__pAnimationFrameList != null && __pAnimationFrameList->GetCount() > 0)
825 Rectangle animRect((itemNameRect.x + itemNameRect.width), ((H_LIST_NORMAL_MENU_ITEM - H_EXPAND_ICON) /2), W_EXPAND_ICON, H_EXPAND_ICON);
826 Animation* pAnimation = new (std::nothrow) Animation();
827 pAnimation->Construct(animRect, *__pAnimationFrameList);
828 pAnimation->SetName(IDC_ANIMATION_CONTROL);
829 pAnimation->SetRepeatCount(IDI_ANIM_DURATION * IDI_ANIM_PROGRESS_COUNT * IDI_ANIM_PROGRESS_COUNT);
830 pItem->AddControl(*pAnimation);
834 pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
839 SettingsCallForwardWaitBarrForm::HandleCallWaitingOptionSelected(TableViewItem* pItem, int itemIndex, TableViewItemStatus status)
843 case CALLWAITING_ITEM:
845 //set the state based on response
846 CheckButton* pSliderButton = static_cast<CheckButton*>(pItem->GetControl(IDC_SLIDER_CHECHBUTTON,true));
847 if(pSliderButton != null)
849 bool activateWaiting = !(pSliderButton->IsSelected());
850 int errorCode = __pSettingsPresentor->SetCallWaitingStatus(activateWaiting);
851 if(errorCode != ERROR_NONE)
853 ShowErrorMessage(errorCode);
866 SettingsCallForwardWaitBarrForm::HandleGetCallWaitingResponse(bool isCallSuccessful, bool callWaitingActivated)
868 if (__formType == FORMTYPE_CALL_WAITING)
870 __isCallWaitingStatusAvailable = true;
871 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
872 //Hide animation and add on/Off checkbox by modifying item
873 __isCallWaitingEnabled = callWaitingActivated;
874 pMainMenuTableView->RefreshItem(0, CALLWAITING_ITEM, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
879 SettingsCallForwardWaitBarrForm::HandleSetCallWaitingResponse(bool isCallSuccessful, bool isCallWaitingEnabled)
881 if (__formType == FORMTYPE_CALL_WAITING)
883 __isCallWaitingStatusAvailable = true;
884 //Update status of "On/Off" slider button
885 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
886 __isCallWaitingEnabled = isCallWaitingEnabled;
887 pMainMenuTableView->RefreshItem(0, CALLWAITING_ITEM, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
892 SettingsCallForwardWaitBarrForm::HandleGetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const String& callFwdNumber, bool callForwardActivated, int noReplyWaitTime)
894 if (__formType == FORMTYPE_VOICE_CALLFORWARDING)
896 //todo: grey out the item if call is unsuccessful
897 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
899 //todo: set subtext for the item
900 switch (callFwdCondition)
902 case CALL_FORWARD_ALL:
904 pMainMenuTableView->SetItemChecked(0, CALLFORWARD_ALWAYS, callForwardActivated);
905 __isCallForwardAlwaysActivated = callForwardActivated;
909 case CALL_FORWARD_BUSY:
911 pMainMenuTableView->SetItemChecked(0, CALLFORWARD_IF_BUSY, callForwardActivated);
915 case CALL_FORWARD_NO_REPLY:
917 pMainMenuTableView->SetItemChecked(0, CALLFORWARD_IF_NO_REPLY, callForwardActivated);
921 case CALL_FORWARD_NOT_REACHABLE:
923 pMainMenuTableView->SetItemChecked(0, CALLFORWARD_IF_OUT_OF_REACH, callForwardActivated);
930 pMainMenuTableView->Invalidate(true);
935 SettingsCallForwardWaitBarrForm::HandleSetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime)
937 if (__formType == FORMTYPE_VOICE_CALLFORWARDING)
939 //todo: grey out the item if call is unsuccessful
940 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
941 //todo: set the number as the subtext for the item
942 switch (callFwdCondition)
944 case CALL_FORWARD_ALL:
946 pMainMenuTableView->SetItemChecked(0, CALLFORWARD_ALWAYS, isCallForwardActivated);
947 __isCallForwardAlwaysActivated = isCallForwardActivated;
951 case CALL_FORWARD_BUSY:
953 pMainMenuTableView->SetItemChecked(0, CALLFORWARD_IF_BUSY, isCallForwardActivated);
957 case CALL_FORWARD_NO_REPLY:
959 pMainMenuTableView->SetItemChecked(0, CALLFORWARD_IF_NO_REPLY, isCallForwardActivated);
963 case CALL_FORWARD_NOT_REACHABLE:
965 pMainMenuTableView->SetItemChecked(0, CALLFORWARD_IF_OUT_OF_REACH, isCallForwardActivated);
972 pMainMenuTableView->Invalidate(true);
977 SettingsCallForwardWaitBarrForm::HandleSetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated)
979 if (__formType == FORMTYPE_VOICE_CALLBARRING)
981 //todo: grey out the item if call is unsuccessful
982 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
983 switch (callBarringType)
985 case CALL_BARRING_ALL_OUTGOING:
987 pMainMenuTableView->SetItemChecked(0, CALLBARRING_ALL_OUTGOING_CALL, isBarringActivated);
991 case CALL_BARRING_INTERNATIONAL_OUTGOING:
993 pMainMenuTableView->SetItemChecked(0, CALLBARRING_INTERNATIONAL_CALL, isBarringActivated);
997 case CALL_BARRING_INTERNATIONAL_EXCEPT_HOME:
999 pMainMenuTableView->SetItemChecked(0, CALLBARRING_INTERNATIONAL_EXCEPT_HOME, isBarringActivated);
1003 case CALL_BARRING_ALL_INCOMING:
1005 pMainMenuTableView->SetItemChecked(0, CALLBARRING_ALL_INCOMING_CALL, isBarringActivated);
1009 case CALL_BARRING_INCOMING_ROAMING:
1011 pMainMenuTableView->SetItemChecked(0, CALLBARRING_INCOMING_WHILE_ROAMING, isBarringActivated);
1018 pMainMenuTableView->Invalidate(true);
1022 SettingsCallForwardWaitBarrForm::HandleGetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated)
1024 if (__formType == FORMTYPE_VOICE_CALLBARRING)
1026 //todo: grey out the item if call is unsuccessful
1027 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
1028 switch (callBarringType)
1030 case CALL_BARRING_ALL_OUTGOING:
1032 pMainMenuTableView->SetItemChecked(0, CALLBARRING_ALL_OUTGOING_CALL, isBarringActivated);
1036 case CALL_BARRING_INTERNATIONAL_OUTGOING:
1038 pMainMenuTableView->SetItemChecked(0, CALLBARRING_INTERNATIONAL_CALL, isBarringActivated);
1042 case CALL_BARRING_INTERNATIONAL_EXCEPT_HOME:
1044 pMainMenuTableView->SetItemChecked(0, CALLBARRING_INTERNATIONAL_EXCEPT_HOME, isBarringActivated);
1048 case CALL_BARRING_ALL_INCOMING:
1050 pMainMenuTableView->SetItemChecked(0, CALLBARRING_ALL_INCOMING_CALL, isBarringActivated);
1054 case CALL_BARRING_INCOMING_ROAMING:
1056 pMainMenuTableView->SetItemChecked(0, CALLBARRING_INCOMING_WHILE_ROAMING, isBarringActivated);
1063 pMainMenuTableView->Invalidate(true);
1068 SettingsCallForwardWaitBarrForm::UncheckAllOptions(void)
1070 //un-check all items
1071 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
1072 if(pMainMenuTableView != null)
1076 case FORMTYPE_VOICE_CALLFORWARDING:
1078 for (int itemIndex = CALLFORWARD_ALWAYS; itemIndex < CALLFORWARD_TOTALITEMCOUNT; itemIndex++)
1080 pMainMenuTableView->SetItemChecked(0, itemIndex, false);
1085 case FORMTYPE_VOICE_CALLBARRING:
1087 for (int itemIndex = CALLBARRING_ALL_OUTGOING_CALL; itemIndex < CALLBARRING_TOTALCOUNT; itemIndex++)
1089 pMainMenuTableView->SetItemChecked(0, itemIndex, false);
1094 case FORMTYPE_CALL_WAITING:
1096 __isCallWaitingStatusAvailable = true;
1097 __isCallWaitingEnabled = false;
1098 pMainMenuTableView->RefreshItem(0, CALLWAITING_ITEM, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
1105 pMainMenuTableView->Invalidate(true);
1110 SettingsCallForwardWaitBarrForm::ShowErrorMessage(int errorCode)
1112 //show error msg Popup
1113 if (__pErrorMsgPopup == null)
1115 __pErrorMsgPopup = new (std::nothrow) ErrorMsgPopup(this);
1117 __pErrorMsgPopup->ShowErrorMsgPopupN(errorCode);
1121 SettingsCallForwardWaitBarrForm::HandlePopupClosed(void)
1124 delete __pErrorMsgPopup;
1125 __pErrorMsgPopup = null;