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 PhnSettingsForwardToNumberForm.cpp
19 * @brief Setting Forward to number form
23 #include "PhnAppUtility.h"
24 #include "PhnCallPresentationModel.h"
25 #include "PhnSettingsConstants.h"
26 #include "PhnSettingsPresentationModel.h"
27 #include "PhnSettingsForwardToNumberForm.h"
28 #include "PhnSceneRegister.h"
31 using namespace Tizen::App;
32 using namespace Tizen::Base;
33 using namespace Tizen::Base::Collection;
34 using namespace Tizen::Graphics;
35 using namespace Tizen::Ui;
36 using namespace Tizen::Ui::Controls;
37 using namespace Tizen::Ui::Scenes;
39 static const wchar_t* IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM = L"IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM";
40 static const wchar_t* IDL_SETTINGS_FORWARDTO_NUMBER_FORM = L"IDL_SETTINGS_FORWARDTO_NUMBER_FORM";
41 const int IDI_WAITTIMEOPTIONS_TOTALCOUNT = 6;
43 SettingsForwardToNumberForm::SettingsForwardToNumberForm(ForwardCondition forwardCondition)
44 : __forwardCondition(forwardCondition)
45 , __pSettingsPresentor(null)
46 , __selectedWaitTime(WAITTIMEOPTIONS_THIRTY_SEC)
47 , __isWaitTimeOptionsMenuExpanded(false)
48 , __pErrorMsgPopup(null)
52 SettingsForwardToNumberForm::~SettingsForwardToNumberForm(void)
57 SettingsForwardToNumberForm::Initialize(void)
59 switch (__forwardCondition)
61 case FORWARDCONDITION_NOREPLY:
63 Construct(IDL_SETTINGS_NOREPLY_FORWARDTO_NUMBER_FORM);
69 Construct(IDL_SETTINGS_FORWARDTO_NUMBER_FORM);
78 SettingsForwardToNumberForm::OnInitializing(void)
83 //Initialize list view
84 r = InitializeGroupedTableView();
85 TryReturn(r == E_SUCCESS,r,"GroupedTableView initialization failed");
86 //Initialize numeric edit field
87 InitializeNumberEditField();
92 SettingsForwardToNumberForm::InitializeHeader(void)
94 Header* pHeader = GetHeader();
97 pHeader->SetStyle(HEADER_STYLE_BUTTON);
100 doneItemName.Append(AppUtility::GetResourceString(IDS_SETTING_DONE_HEADER_ITEM));
101 HeaderItem doneHeaderItem;
102 doneHeaderItem.Construct(IDA_SAVE_HEADER_ITEMID);
103 doneHeaderItem.SetText(doneItemName);
104 pHeader->AddItem(doneHeaderItem);
105 pHeader->SetItemEnabled(0, false);
108 ButtonItem cancelHeaderItem;
109 cancelHeaderItem.Construct(BUTTON_ITEM_STYLE_ICON, IDA_CANCEL_HEADER_ITEMID);
110 Bitmap* pNormalBmp = AppUtility::GetBitmapFromResourcesN(IDB_CANCEL_FOOTER_ITEM, W_HDR_FTR_ICON, H_HDR_FTR_ICON);
111 cancelHeaderItem.SetIcon(BUTTON_ITEM_STATUS_NORMAL, pNormalBmp);
112 cancelHeaderItem.SetIcon(BUTTON_ITEM_STATUS_PRESSED, pNormalBmp);
113 pHeader->SetButton(BUTTON_POSITION_RIGHT, cancelHeaderItem);
117 pHeader->AddActionEventListener(*this);
122 SettingsForwardToNumberForm::OnTerminating(void)
124 result r = E_SUCCESS;
129 SettingsForwardToNumberForm::OnActionPerformed(const Control& source, int actionId)
131 SceneManager* pSceneManager = SceneManager::GetInstance();
132 AppAssert(pSceneManager != null);
136 case IDA_CANCEL_HEADER_ITEMID:
138 //go back to previous form
139 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_FORWARD_OPTIONS), null);
143 case IDA_SAVE_HEADER_ITEMID:
145 EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
146 if (pEditFieldNumber != null)
148 //disable all other forwarding conditions, if 'CALL_FORWARD_ALL' is activated
149 /*if(__callForwardCondition == CALL_FORWARD_ALL)
151 __pSettingsPresentor->SetCallForwardStatus(L"", CALL_FORWARD_BUSY, false, 0);
152 __pSettingsPresentor->SetCallForwardStatus(L"", CALL_FORWARD_NO_REPLY, false, 0);
153 __pSettingsPresentor->SetCallForwardStatus(L"", CALL_FORWARD_NOT_REACHABLE, false, 0);
157 String phoneNumber = pEditFieldNumber->GetText();
158 int errorCode = __pSettingsPresentor->SetCallForwardStatus(phoneNumber, __callForwardCondition, true, __selectedWaitTime);
159 if(errorCode != ERROR_NONE)
161 ShowErrorMessage(errorCode);
165 //go back to previous form
166 pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CALL_FORWARD_OPTIONS), null);
175 case IDA_SELECT_CONTACT:
177 LaunchContactsAppControl();
187 SettingsForwardToNumberForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs)
189 __pSettingsPresentor = SettingsPresentationModel::GetInstance();
190 __pSettingsPresentor->AddSettingEventListener(this);
194 int errorCode = ERROR_NONE;
195 Integer* indexInt = static_cast<Integer*>(pArgs->GetAt(0));
196 switch (indexInt->ToInt())
200 __callForwardCondition = CALL_FORWARD_ALL;
206 __callForwardCondition = CALL_FORWARD_BUSY;
212 __callForwardCondition = CALL_FORWARD_NO_REPLY;
218 __callForwardCondition = CALL_FORWARD_NO_REPLY;
226 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
227 if(pMainMenuTableView != null)
229 __selectedWaitTime = WAITTIMEOPTIONS_THIRTY_SEC;
230 int selectIndex = (__selectedWaitTime / 5) - 1;
231 //by default, "30 seconds" option is selected
232 pMainMenuTableView->SetItemChecked(GROUP_WAIT_TIME_OPTIONS, selectIndex, true);
233 //uncheck all other items
234 for (int deselectIndex = 0; deselectIndex < selectIndex; deselectIndex++)
236 pMainMenuTableView->SetItemChecked(GROUP_WAIT_TIME_OPTIONS, deselectIndex, false);
238 pMainMenuTableView->RefreshItem(GROUP_SELECT_WAIT_TIME, SELECTWAITTIME_WAIT_TIME, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
239 pMainMenuTableView->Invalidate(true);
242 //fetch forwarding status
243 errorCode = __pSettingsPresentor->GetCallForwardStatus(__callForwardCondition);
244 if(errorCode != ERROR_NONE)
246 //Show error message popup
247 ShowErrorMessage(errorCode);
250 //clear text field and disable "Done" button
251 EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
252 if(pEditFieldNumber != null)
254 pEditFieldNumber->Clear();
255 pEditFieldNumber->SetFocus();
257 Header* pHeader = GetHeader();
260 pHeader->SetItemEnabled(0, false);
270 SettingsForwardToNumberForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId)
272 __pSettingsPresentor->RemoveSettingEventListener();
273 EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
274 if (pEditFieldNumber != null)
276 pEditFieldNumber->HideKeypad();
281 SettingsForwardToNumberForm::InitializeNumberEditField(void)
283 EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
284 if (pEditFieldNumber != null)
286 pEditFieldNumber->AddKeypadEventListener(*this);
287 pEditFieldNumber->AddTextEventListener(*this);
288 pEditFieldNumber->SetOverlayKeypadCommandButtonVisible(false);
291 Button* pContactBtn = static_cast<Button*>(GetControl(IDC_SELECT_CONTACT_BUTTON));
292 if (pContactBtn != null)
294 pContactBtn->SetActionId(IDA_SELECT_CONTACT);
295 pContactBtn->AddActionEventListener(*this);
298 Button* pVoiceMailBtn = static_cast<Button*>(GetControl(IDC_VOICEMAIL_BUTTON));
299 if (pVoiceMailBtn != null)
301 pVoiceMailBtn->SetActionId(IDA_VOICEMAIL);
302 pVoiceMailBtn->AddActionEventListener(*this);
307 SettingsForwardToNumberForm::InitializeGroupedTableView(void)
309 result r = E_SUCCESS;
310 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
311 if (pMainMenuTableView != null)
313 pMainMenuTableView->SetGroupedLookEnabled(true);
314 pMainMenuTableView->SetItemProvider(this);
315 r = pMainMenuTableView->AddGroupedTableViewItemEventListener(*this);
316 pMainMenuTableView->UpdateTableView();
317 CollapseSelectiveGroups(pMainMenuTableView);
323 SettingsForwardToNumberForm::CollapseSelectiveGroups(GroupedTableView* pMainMenuTableView)
325 //This function should be called only from "InitializeGroupedTableView()".
326 //since collapsing individual groups while GroupTableView construction causes flicker.
327 pMainMenuTableView->CollapseAllGroup();
328 //Expand other groups
329 pMainMenuTableView->ExpandGroup(GROUP_SELECT_WAIT_TIME);
330 pMainMenuTableView->UpdateTableView();
334 SettingsForwardToNumberForm::OnGroupedTableViewItemStateChanged(GroupedTableView& tableView, int groupIndex, int itemIndex, TableViewItem* pItem, TableViewItemStatus status)
338 case GROUP_SELECT_WAIT_TIME:
340 //close overlay keypad
341 EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
342 if (pEditFieldNumber != null && pEditFieldNumber->HasFocus() == true)
344 //If Keyapd is open, then "CloseGroup" in OnKeypadClose() callback
345 pEditFieldNumber->HideKeypad();
349 //keypad is closed, directly expand group
350 ToggleGroupExpansion(tableView, itemIndex);
355 case GROUP_WAIT_TIME_OPTIONS:
357 HandleSelectedWaitingTime(tableView, itemIndex, status);
367 SettingsForwardToNumberForm::GetGroupCount(void)
369 return GROUP_TOTALCOUNT;
373 SettingsForwardToNumberForm::GetItemCount(int groupIndex)
378 case GROUP_SELECT_WAIT_TIME:
380 itemCount = SELECTWAITTIME_TOTALCOUNT;
384 case GROUP_WAIT_TIME_OPTIONS:
386 itemCount = IDI_WAITTIMEOPTIONS_TOTALCOUNT;
397 SettingsForwardToNumberForm::CreateGroupItem(int groupIndex, int itemWidth)
399 TableViewGroupItem* pItem = new (std::nothrow) TableViewGroupItem();
400 pItem->Construct(Dimension(itemWidth, H_LIST_HIDDENGROUP_ITEM));
401 pItem->SetBackgroundColor(COLOR_GROUP_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
406 SettingsForwardToNumberForm::DeleteGroupItem(int groupIndex, TableViewGroupItem* pItem)
414 SettingsForwardToNumberForm::UpdateGroupItem(int groupIndex, TableViewGroupItem* pItem)
420 SettingsForwardToNumberForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
422 TableViewItem* pItem = null;
426 case GROUP_SELECT_WAIT_TIME:
428 pItem = CreateExpandableWaitingItem(itemWidth);
432 case GROUP_WAIT_TIME_OPTIONS:
434 pItem = CreateWaitingTimeOptionsMenuItems(itemIndex, itemWidth);
446 SettingsForwardToNumberForm::DeleteItem(int groupIndex, int itemIndex, TableViewItem* pItem)
454 SettingsForwardToNumberForm::UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
456 if(groupIndex == GROUP_SELECT_WAIT_TIME && itemIndex == SELECTWAITTIME_WAIT_TIME)
458 String subText = FetchTextForSelectedOption(__selectedWaitTime);
460 Label* pSubTxtLbl = static_cast<Label*>(pItem->GetControl(IDC_SELECTEDOPTION_SUBTEXT_LABEL, true));
461 if(pSubTxtLbl != null)
463 pSubTxtLbl->SetText(subText);
464 pSubTxtLbl->Invalidate(true);
466 //set Drop-down icon to item
467 SetExpandIconToItem(pItem, __isWaitTimeOptionsMenuExpanded);
472 SettingsForwardToNumberForm::GetDefaultGroupItemHeight(void)
474 return H_LIST_HIDDENGROUP_ITEM;
478 SettingsForwardToNumberForm::GetDefaultItemHeight(void)
480 return H_LIST_NORMAL_MENU_ITEM;
484 SettingsForwardToNumberForm::CreateExpandableWaitingItem(int itemWidth)
487 Rectangle mainItemRect(X_LIST_MENU_TEXT_ITEM, Y_LIST_MENU_TEXT_ITEM, (itemWidth - (2 * X_LIST_MENU_TEXT_ITEM) - W_EXPAND_ICON),
488 H_LIST_DROPDOWN_TXT_ITEM);
489 String mainText = AppUtility::GetResourceString(IDS_SETTING_WAITING_TIME_STRING);
491 Rectangle subItemRect(X_LIST_MENU_TEXT_ITEM, (Y_LIST_MENU_TEXT_ITEM + H_LIST_DROPDOWN_TXT_ITEM),
492 (itemWidth - (2 * X_LIST_MENU_TEXT_ITEM) - W_EXPAND_ICON), H_LIST_DROPDOWN_TXT_ITEM);
493 String subText = FetchTextForSelectedOption(__selectedWaitTime);
495 TableViewItem* pItem = new (std::nothrow) TableViewItem();
496 pItem->Construct(Dimension(itemWidth, H_LIST_DROPDOWN_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
499 Label* pMainTxtLbl = new (std::nothrow) Label();
500 pMainTxtLbl->Construct(mainItemRect, mainText);
501 pMainTxtLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
502 pMainTxtLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
503 pMainTxtLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
504 pMainTxtLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);
505 pItem->AddControl(*pMainTxtLbl);
507 Label* pSubTxtLbl = new (std::nothrow) Label();
508 pSubTxtLbl->Construct(subItemRect, subText);
509 pSubTxtLbl->SetName(IDC_SELECTEDOPTION_SUBTEXT_LABEL);
510 pSubTxtLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
511 pSubTxtLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
512 pSubTxtLbl->SetTextConfig(FONT_SIZE_SUB_TXT, LABEL_TEXT_STYLE_NORMAL);
513 pSubTxtLbl->SetTextColor(COLOR_NORMAL_SUB_TXT);
514 pItem->AddControl(*pSubTxtLbl);
516 pItem->SetBackgroundColor(COLOR_LIST_MENU_ITEM, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
517 //set Drop-down icon to item
518 SetExpandIconToItem(pItem, __isWaitTimeOptionsMenuExpanded);
523 SettingsForwardToNumberForm::FetchTextForSelectedOption(int selectedWaitTimeOption)
527 switch(selectedWaitTimeOption)
529 case WAITTIMEOPTIONS_FIVE_SEC:
530 subText.Append(L"5 ");
533 case WAITTIMEOPTIONS_TEN_SEC:
534 subText.Append(L"10 ");
537 case WAITTIMEOPTIONS_FIFTEEN_SEC:
538 subText.Append(L"15 ");
541 case WAITTIMEOPTIONS_TWENTY_SEC:
542 subText.Append(L"20 ");
545 case WAITTIMEOPTIONS_TWENTYFIVE_SEC:
546 subText.Append(L"25 ");
549 case WAITTIMEOPTIONS_THIRTY_SEC:
551 subText.Append(L"30 ");
554 subText.Append(AppUtility::GetResourceString(IDS_SETTING_WAIT_INTERVAL_STRING));
559 SettingsForwardToNumberForm::SetExpandIconToItem(TableViewItem* pItem, bool isExpanded)
561 Bitmap* pNormalIcon = null;
562 Bitmap* pPressIcon = null;
566 pNormalIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_EXPAND, W_EXPAND_ICON, H_EXPAND_ICON);
567 pPressIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_EXPAND_PRESSED, W_EXPAND_ICON, H_EXPAND_ICON);
571 pNormalIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_OPENED, W_EXPAND_ICON, H_EXPAND_ICON);
572 pPressIcon = AppUtility::GetBitmapFromResourcesN(IDB_LIST_OPENED_PRESSED, W_EXPAND_ICON, H_EXPAND_ICON);
575 int itemWidth = pItem->GetWidth();
576 Rectangle iconRect((itemWidth - W_EXPAND_ICON - X_LIST_MENU_TEXT_ITEM),
577 ((H_LIST_DROPDOWN_MENU_ITEM - H_EXPAND_ICON) / 2), W_EXPAND_ICON, H_EXPAND_ICON);
578 //for drawing blue bg header rectangle on left side.
579 Rectangle blueHeaderRect(0,0,W_LEFT_HEADER_EXPAND_ITEMS,pItem->GetHeight());
581 Canvas* pBgCanvas = new (std::nothrow) Canvas();
582 pBgCanvas->Construct(Rectangle(0,0, pItem->GetBounds().width, pItem->GetBounds().height));
583 pBgCanvas->DrawBitmap(iconRect, *pNormalIcon);
584 pBgCanvas->FillRectangle(COLOR_LEFT_HEADER_EXPAND_ITEMS, blueHeaderRect);
585 Bitmap* pActualBgBmp = new (std::nothrow) Bitmap();
586 pActualBgBmp->Construct(*pBgCanvas,pBgCanvas->GetBounds());
587 pItem->SetBackgroundBitmap(pActualBgBmp, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
591 pBgCanvas = new (std::nothrow) Canvas();
592 pBgCanvas->Construct(Rectangle(0,0, pItem->GetBounds().width, pItem->GetBounds().height));
593 pBgCanvas->DrawBitmap(iconRect, *pPressIcon);
594 pBgCanvas->FillRectangle(COLOR_LEFT_HEADER_EXPAND_ITEMS, blueHeaderRect);
595 pActualBgBmp = new (std::nothrow) Bitmap();
596 pActualBgBmp->Construct(*pBgCanvas,pBgCanvas->GetBounds());
597 pItem->SetBackgroundBitmap(pActualBgBmp, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
608 SettingsForwardToNumberForm::ToggleGroupExpansion(GroupedTableView& tableView, int itemIndex)
612 case SELECTWAITTIME_WAIT_TIME:
614 if (tableView.IsGroupExpanded(GROUP_WAIT_TIME_OPTIONS))
616 tableView.CollapseGroup(GROUP_WAIT_TIME_OPTIONS);
617 __isWaitTimeOptionsMenuExpanded = false;
621 tableView.ExpandGroup(GROUP_WAIT_TIME_OPTIONS);
622 __isWaitTimeOptionsMenuExpanded = true;
625 tableView.RefreshItem(GROUP_SELECT_WAIT_TIME, SELECTWAITTIME_WAIT_TIME, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
636 SettingsForwardToNumberForm::CreateWaitingTimeOptionsMenuItems(int itemIndex, int itemWidth)
639 TableViewItem* pItem = new (std::nothrow) TableViewItem();
640 pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_RADIO);
641 pItem->SetBackgroundColor(COLOR_SECONDDEPTH_ITEM_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
643 //text item rectangle
644 Rectangle itemRect(X_LIST_MENU_TEXT_ITEM, 0, (itemWidth - X_LIST_MENU_TEXT_ITEM), H_LIST_DROPDOWN_MENU_ITEM);
646 String itemName(L"");
647 GroupSelectWaitTimeItems selectedOption = (GroupSelectWaitTimeItems)((itemIndex + 1) * 5);
648 itemName.Append(FetchTextForSelectedOption(selectedOption));
650 Label* pItemLbl = new (std::nothrow) Label();
651 pItemLbl->Construct(itemRect, itemName);
652 pItemLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
653 pItemLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
654 pItemLbl->SetTextConfig(FONT_SIZE_MAIN_TXT, LABEL_TEXT_STYLE_NORMAL);
655 pItemLbl->SetTextColor(COLOR_NORMAL_MAIN_TXT);//COLOR_PRESS_MAIN_TXT
656 pItem->AddControl(*pItemLbl);
661 SettingsForwardToNumberForm::HandleSelectedWaitingTime(GroupedTableView& tableView, int itemIndex, TableViewItemStatus status)
663 GroupWaitTimeOptionsItems currentWaitTime = (GroupWaitTimeOptionsItems) ((itemIndex + 1) * 5);
665 //check if already checked item is selected
666 if (status == TABLE_VIEW_ITEM_STATUS_UNCHECKED)
668 tableView.SetItemChecked(GROUP_WAIT_TIME_OPTIONS, itemIndex, true);
669 __selectedWaitTime = currentWaitTime;
672 //uncheck previously selected option
673 if(__selectedWaitTime != currentWaitTime)
675 int deselectIndex = ((__selectedWaitTime / 5) - 1);
676 tableView.SetItemChecked(GROUP_WAIT_TIME_OPTIONS, deselectIndex, false);
677 tableView.RefreshItem(GROUP_WAIT_TIME_OPTIONS, deselectIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
679 //update selected wait time for selected itemIndex
680 __selectedWaitTime = currentWaitTime;
681 //Change icon and sub text for wait time options menu
682 tableView.RefreshItem(GROUP_SELECT_WAIT_TIME, SELECTWAITTIME_WAIT_TIME, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
683 tableView.Invalidate(true);
687 SettingsForwardToNumberForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
689 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
690 if(pMainMenuTableView != null && __isWaitTimeOptionsMenuExpanded == true)
692 pMainMenuTableView->CollapseGroup(GROUP_WAIT_TIME_OPTIONS);
693 __isWaitTimeOptionsMenuExpanded = false;
695 pMainMenuTableView->RefreshItem(GROUP_SELECT_WAIT_TIME, SELECTWAITTIME_WAIT_TIME, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
700 SettingsForwardToNumberForm::OnKeypadClosed(Tizen::Ui::Control& source)
702 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
703 if(pMainMenuTableView != null && __isWaitTimeOptionsMenuExpanded == false)
705 ToggleGroupExpansion(*pMainMenuTableView, SELECTWAITTIME_WAIT_TIME);
710 SettingsForwardToNumberForm::ShowErrorMessage(int errorCode)
712 //show error msg Popup
713 if (__pErrorMsgPopup == null)
715 __pErrorMsgPopup = new (std::nothrow) ErrorMsgPopup(this);
717 __pErrorMsgPopup->ShowErrorMsgPopupN(errorCode);
721 SettingsForwardToNumberForm::HandlePopupClosed(void)
724 delete __pErrorMsgPopup;
725 __pErrorMsgPopup = null;
730 SettingsForwardToNumberForm::HandleGetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const String& callFwdNumber, bool callForwardActivated, int noReplyWaitTime)
732 if (callForwardActivated == true)
734 //update forward number in text field
735 if(callFwdNumber.IsEmpty() == false)
737 EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
738 if (pEditFieldNumber != null)
740 pEditFieldNumber->SetText(callFwdNumber);
741 pEditFieldNumber->Invalidate(true);
744 //update No Reply Wait time status
745 GroupedTableView* pMainMenuTableView = static_cast<GroupedTableView*>(GetControl(IDC_GROUPEDTABLEVIEW));
746 if (pMainMenuTableView != null)
748 //un-check all waiting time options
750 while(index < IDI_WAITTIMEOPTIONS_TOTALCOUNT)
752 pMainMenuTableView->SetItemChecked(GROUP_WAIT_TIME_OPTIONS, index, false);
755 //enable selected wait time option
756 if(noReplyWaitTime >= WAITTIMEOPTIONS_FIVE_SEC)
758 int selectedIndex = (noReplyWaitTime / WAITTIMEOPTIONS_FIVE_SEC) - 1;
759 pMainMenuTableView->SetItemChecked(GROUP_WAIT_TIME_OPTIONS, selectedIndex, true);
761 pMainMenuTableView->Invalidate(true);
767 SettingsForwardToNumberForm::LaunchContactsAppControl(void)
769 result r = E_SUCCESS;
771 extraData.Construct();
773 extraData.Add(new (std::nothrow) String(SELECTION_MODE), new (std::nothrow) String(SELECTION_MODE_SINGLE));
774 extraData.Add(new (std::nothrow) String(RETURN_TYPE), new (std::nothrow) String(RETURN_TYPE_PHONE));
776 AppControl* pAc = AppManager::FindAppControlN(PROVIDER_ID_CONTACTS, OPERATION_ID_PICK);
779 r = pAc->Start(null, null, &extraData, this);
782 extraData.RemoveAll(true);
786 SettingsForwardToNumberForm::OnAppControlCompleteResponseReceived(const AppId& appId, const String& operationId, AppCtrlResult appControlResult, const IMap* pExtraData)
788 if (appId.Equals(String(PROVIDER_ID_CONTACTS)) && operationId.Equals(String(OPERATION_ID_PICK))
789 && (appControlResult == APP_CTRL_RESULT_SUCCEEDED))
791 const String* rettype = static_cast<const String *>(pExtraData->GetValue( String(RETURN_TYPE)));
792 if (rettype->Equals(String(RETURN_TYPE_PHONE)))
794 const String* pPickResult = static_cast<const String *>(pExtraData->GetValue( String(RETURN_KEY_VALUE)));
795 if (pPickResult != null && pPickResult->IsEmpty() == false)
797 EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
798 Header* pHeader = GetHeader();
799 if (pEditFieldNumber != null && pHeader != null)
801 pEditFieldNumber->SetText(*pPickResult);
802 pEditFieldNumber->Invalidate(true);
803 //enable "Done" button
804 pHeader->SetItemEnabled(0, true);
805 pHeader->Invalidate(true);
814 SettingsForwardToNumberForm::OnTextValueChanged(const Control& source)
816 //enable or disable "Done" button
817 EditField* pEditFieldNumber = static_cast<EditField*>(GetControl(IDC_FOWARDING_NUMBER_EDITFIELD));
818 Header* pHeader = GetHeader();
819 if (pEditFieldNumber != null && pHeader != null)
821 bool activate = false;
822 if(pEditFieldNumber->GetTextLength() > 0)
826 pHeader->SetItemEnabled(0, activate);
827 pHeader->Invalidate(true);
832 SettingsForwardToNumberForm::OnTextValueChangeCanceled(const Control& source)
834 //text change canceled, disable save button
835 const EditField* pEditFieldNumber = static_cast<const EditField*>(&source);
836 Header* pHeader = GetHeader();
837 if (pEditFieldNumber != null && pHeader != null)
839 pHeader->SetItemEnabled(0, false);
840 pHeader->Invalidate(true);