From 86c832b8df93e5bcdc3b5dcefb921a8405a59c7e Mon Sep 17 00:00:00 2001 From: Sehong Na Date: Sat, 31 May 2014 12:28:48 +0900 Subject: [PATCH 1/1] Initialize Tizen 2.3 --- .cproject | 769 +++++ .project | 88 + CMakeLists.txt | 44 + LICENSE.Flora | 206 ++ NOTICE | 3 + inc/CallActiveCallForm.h | 181 ++ inc/CallApp.h | 125 + inc/CallAppControlRequestMgr.h | 64 + inc/CallAppFormFactory.h | 32 + inc/CallAppFrame.h | 35 + inc/CallAppUtility.h | 72 + inc/CallBaseForm.h | 94 + inc/CallButtonsPanel.h | 117 + inc/CallCommonUtils.h | 148 + inc/CallConfCallerListForm.h | 113 + inc/CallCustomItemBgElement.h | 45 + inc/CallDtmfKeypadPanel.h | 80 + inc/CallEndCallForm.h | 135 + inc/CallErrorMsgPopup.h | 78 + inc/CallIAppStateChangeListner.h | 38 + inc/CallICalllogChangeListener.h | 39 + inc/CallIPopupItemSelectListener.h | 48 + inc/CallISettingsEventListener.h | 54 + inc/CallITelephonyEventListener.h | 116 + inc/CallIncomingCallForm.h | 178 ++ inc/CallInfo.h | 179 ++ inc/CallOptionPopup.h | 78 + inc/CallPanelFactory.h | 46 + inc/CallPhoneFormFactory.h | 85 + inc/CallPresentationModel.h | 211 ++ inc/CallRejectInfo.h | 71 + inc/CallSceneRegister.h | 77 + inc/CallSettingDataService.h | 111 + inc/CallSettingsConstants.h | 141 + inc/CallSettingsManager.h | 120 + inc/CallSettingsPresentationModel.h | 87 + inc/CallSoundManager.h | 105 + inc/CallSpeedDialInfo.h | 70 + inc/CallSpeedDialPopup.h | 71 + inc/CallTelephonyManager.h | 245 ++ inc/CallTypes.h | 499 ++++ inc/CalllogManager.h | 136 + lib/nofile.dummy | 0 manifest.xml | 41 + packaging/apps.Call.spec | 84 + res/eng-GB.xml | 190 ++ res/screen-density-xhigh/00_Nocontents_text.png | Bin 0 -> 5145 bytes res/screen-density-xhigh/00_button_01_normal.png | Bin 0 -> 3398 bytes res/screen-density-xhigh/00_button_04_dim.png | Bin 0 -> 3398 bytes res/screen-density-xhigh/00_button_04_normal.png | Bin 0 -> 3398 bytes .../00_button_04_normal_focus.png | Bin 0 -> 3003 bytes res/screen-density-xhigh/00_button_06_normal.9.png | Bin 0 -> 281 bytes res/screen-density-xhigh/00_button_06_press.9.png | Bin 0 -> 338 bytes .../00_button_cancel_normal.png | Bin 0 -> 3185 bytes .../00_button_cancel_press.png | Bin 0 -> 3185 bytes res/screen-density-xhigh/00_button_normal_bg.9.png | Bin 0 -> 1228 bytes res/screen-density-xhigh/00_icon_Back.png | Bin 0 -> 2798 bytes res/screen-density-xhigh/00_icon_Back_press.png | Bin 0 -> 3047 bytes res/screen-density-xhigh/00_index list_bg.png | Bin 0 -> 2812 bytes .../00_indexlist_icon_opened.png | Bin 0 -> 3471 bytes res/screen-density-xhigh/00_list_expand_closed.png | Bin 0 -> 3060 bytes .../00_list_expand_closed_press.png | Bin 0 -> 3098 bytes res/screen-density-xhigh/00_list_expand_opened.png | Bin 0 -> 3040 bytes .../00_list_expand_opened_press.png | Bin 0 -> 3032 bytes res/screen-density-xhigh/00_popup_bg_ef.9.png | Bin 0 -> 3626 bytes .../00_popup_bubble_tail_bottom.png | Bin 0 -> 3671 bytes .../00_popup_bubble_tail_top.png | Bin 0 -> 3381 bytes .../00_reorder_group_list_bg.png | Bin 0 -> 2916 bytes res/screen-density-xhigh/00_volume_icon_Mute.png | Bin 0 -> 3492 bytes res/screen-density-xhigh/00_winset_Back.png | Bin 0 -> 3109 bytes res/screen-density-xhigh/00_winset_more.png | Bin 0 -> 3310 bytes res/screen-density-xhigh/00_winset_more_press.png | Bin 0 -> 3306 bytes res/screen-density-xhigh/C01-1_Back_btn_normal.png | Bin 0 -> 1582 bytes res/screen-density-xhigh/C01-1_Back_btn_press.png | Bin 0 -> 1600 bytes .../C01-1_Incoming call_BG_01.png | Bin 0 -> 3823 bytes .../C01-1_Not saved contact BG.png | Bin 0 -> 130970 bytes .../C01-1_Reject_message_arrow_01.png | Bin 0 -> 3536 bytes .../C01-1_Reject_message_arrow_02.png | Bin 0 -> 3715 bytes .../C01-1_Reject_message_bg.png | Bin 0 -> 3453 bytes res/screen-density-xhigh/C01-1_accept_left.png | Bin 0 -> 25725 bytes .../C01-1_accept_left_dial_answer.png | Bin 0 -> 7907 bytes .../C01-1_accept_left_dial_answer_dim.png | Bin 0 -> 7283 bytes res/screen-density-xhigh/C01-1_accept_left_dim.png | Bin 0 -> 6566 bytes .../C01-1_accept_left_press.png | Bin 0 -> 17348 bytes res/screen-density-xhigh/C01-1_animation_bg.png | Bin 0 -> 9104 bytes res/screen-density-xhigh/C01-1_arrow_g.png | Bin 0 -> 3076 bytes res/screen-density-xhigh/C01-1_arrow_r.png | Bin 0 -> 3069 bytes res/screen-density-xhigh/C01-1_bg.png | Bin 0 -> 128622 bytes res/screen-density-xhigh/C01-1_btn_back.png | Bin 0 -> 3259 bytes res/screen-density-xhigh/C01-1_btn_create.png | Bin 0 -> 3064 bytes res/screen-density-xhigh/C01-1_button_01_press.png | Bin 0 -> 1668 bytes .../C01-1_button_02_normal.png | Bin 0 -> 1631 bytes .../C01-1_button_03_normal.png | Bin 0 -> 1680 bytes res/screen-density-xhigh/C01-1_button_05_press.png | Bin 0 -> 2959 bytes res/screen-density-xhigh/C01-1_button_bg.png | Bin 0 -> 3393 bytes res/screen-density-xhigh/C01-1_button_call.png | Bin 0 -> 1586 bytes .../C01-1_button_call_press.png | Bin 0 -> 1584 bytes res/screen-density-xhigh/C01-1_button_end_call.png | Bin 0 -> 1544 bytes res/screen-density-xhigh/C01-1_button_hold_01.png | Bin 0 -> 3039 bytes .../C01-1_button_hold_01_press.png | Bin 0 -> 3187 bytes .../C01-1_button_hold_normal.png | Bin 0 -> 3447 bytes .../C01-1_button_hold_normal_01.png | Bin 0 -> 1176 bytes .../C01-1_button_hold_normal_01_press.png | Bin 0 -> 1331 bytes .../C01-1_button_hold_press.png | Bin 0 -> 3764 bytes res/screen-density-xhigh/C01-1_button_more.png | Bin 0 -> 3648 bytes .../C01-1_button_more_press.png | Bin 0 -> 3607 bytes res/screen-density-xhigh/C01-1_button_press.png | Bin 0 -> 3357 bytes .../C01-1_call_ID_thumbnail_366x366.png | Bin 0 -> 1788 bytes .../C01-1_call_ID_thumbnail_shadow_224x224.png | Bin 0 -> 4431 bytes .../C01-1_call_ID_thumbnail_shadow_388x388.png | Bin 0 -> 4431 bytes res/screen-density-xhigh/C01-1_call_bg.png | Bin 0 -> 26325 bytes res/screen-density-xhigh/C01-1_call_bg02.png | Bin 0 -> 2087 bytes .../C01-1_call_default_caller ID_720x720.png | Bin 0 -> 47528 bytes .../C01-1_call_group_caller ID_720x720.png | Bin 0 -> 51172 bytes .../C01-1_call_thumbnail_bg.png | Bin 0 -> 35323 bytes res/screen-density-xhigh/C01-1_caller_bg.png | Bin 0 -> 18947 bytes res/screen-density-xhigh/C01-1_calling_BG_01.png | Bin 0 -> 4163 bytes .../C01-1_conference_call_btn_01.png | Bin 0 -> 1529 bytes .../C01-1_conference_call_btn_01_press.png | Bin 0 -> 1532 bytes .../C01-1_conference_call_btn_02.png | Bin 0 -> 1505 bytes .../C01-1_conference_call_btn_02_press.png | Bin 0 -> 1532 bytes res/screen-density-xhigh/C01-1_conference_end.png | Bin 0 -> 1408 bytes .../C01-1_conference_end_press.png | Bin 0 -> 1408 bytes .../C01-1_conference_split.png | Bin 0 -> 1621 bytes .../C01-1_conference_split_press.png | Bin 0 -> 1420 bytes res/screen-density-xhigh/C01-1_contact_btn.png | Bin 0 -> 4286 bytes .../C01-1_contact_btn_icon.png | Bin 0 -> 3270 bytes .../C01-1_contact_btn_icon_press.png | Bin 0 -> 3839 bytes .../C01-1_contact_btn_press.png | Bin 0 -> 3198 bytes res/screen-density-xhigh/C01-1_end call_BG_01.png | Bin 0 -> 3657 bytes .../C01-1_end call_default_caller ID_366x366.png | Bin 0 -> 14943 bytes .../C01-1_end call_default_caller ID_720x370.png | Bin 0 -> 16603 bytes .../C01-1_end call_default_caller ID_720x720.png | Bin 0 -> 34577 bytes res/screen-density-xhigh/C01-1_icon_Hide.png | Bin 0 -> 5257 bytes res/screen-density-xhigh/C01-1_icon_Hide_dim.png | Bin 0 -> 5206 bytes res/screen-density-xhigh/C01-1_icon_Hide_press.png | Bin 0 -> 5239 bytes .../C01-1_icon_Hide_press_wh.png | Bin 0 -> 4220 bytes res/screen-density-xhigh/C01-1_icon_Pause.png | Bin 0 -> 3696 bytes res/screen-density-xhigh/C01-1_icon_Play.png | Bin 0 -> 3975 bytes res/screen-density-xhigh/C01-1_icon_REC_78x78.png | Bin 0 -> 3503 bytes .../C01-1_icon_Reject_with_Message.png | Bin 0 -> 3367 bytes res/screen-density-xhigh/C01-1_icon_add.png | Bin 0 -> 3815 bytes res/screen-density-xhigh/C01-1_icon_add_dim.png | Bin 0 -> 3106 bytes res/screen-density-xhigh/C01-1_icon_add_press.png | Bin 0 -> 3110 bytes .../C01-1_icon_add_press_wh.png | Bin 0 -> 3006 bytes .../C01-1_icon_button_press.png | Bin 0 -> 3944 bytes res/screen-density-xhigh/C01-1_icon_call.png | Bin 0 -> 3674 bytes res/screen-density-xhigh/C01-1_icon_call_press.png | Bin 0 -> 3312 bytes res/screen-density-xhigh/C01-1_icon_contacts.png | Bin 0 -> 3992 bytes .../C01-1_icon_contacts_dim.png | Bin 0 -> 3954 bytes .../C01-1_icon_contacts_press.png | Bin 0 -> 3946 bytes .../C01-1_icon_contacts_press_wh.png | Bin 0 -> 3390 bytes res/screen-density-xhigh/C01-1_icon_end_call.png | Bin 0 -> 4233 bytes .../C01-1_icon_end_call_dim.png | Bin 0 -> 4043 bytes .../C01-1_icon_end_call_press_wh.png | Bin 0 -> 4043 bytes res/screen-density-xhigh/C01-1_icon_headset.png | Bin 0 -> 4075 bytes .../C01-1_icon_headset_dim.png | Bin 0 -> 4037 bytes .../C01-1_icon_headset_press.png | Bin 0 -> 4042 bytes .../C01-1_icon_headset_press_wh.png | Bin 0 -> 3469 bytes res/screen-density-xhigh/C01-1_icon_hold.png | Bin 0 -> 2937 bytes res/screen-density-xhigh/C01-1_icon_hold_74x74.png | Bin 0 -> 2937 bytes .../C01-1_icon_hold_74x74_press.png | Bin 0 -> 2921 bytes res/screen-density-xhigh/C01-1_icon_hold_78x78.png | Bin 0 -> 2942 bytes .../C01-1_icon_hold_78x78_press.png | Bin 0 -> 2929 bytes res/screen-density-xhigh/C01-1_icon_hold_dim.png | Bin 0 -> 2939 bytes res/screen-density-xhigh/C01-1_icon_hold_press.png | Bin 0 -> 2937 bytes .../C01-1_icon_hold_press_wh.png | Bin 0 -> 2935 bytes res/screen-density-xhigh/C01-1_icon_join.png | Bin 0 -> 4348 bytes res/screen-density-xhigh/C01-1_icon_join_dim.png | Bin 0 -> 4357 bytes res/screen-density-xhigh/C01-1_icon_join_press.png | Bin 0 -> 4340 bytes .../C01-1_icon_join_press_wh.png | Bin 0 -> 3598 bytes res/screen-density-xhigh/C01-1_icon_keypad.png | Bin 0 -> 4589 bytes res/screen-density-xhigh/C01-1_icon_keypad_dim.png | Bin 0 -> 3584 bytes .../C01-1_icon_keypad_press.png | Bin 0 -> 3584 bytes .../C01-1_icon_keypad_press_wh.png | Bin 0 -> 4048 bytes res/screen-density-xhigh/C01-1_icon_message.png | Bin 0 -> 6355 bytes .../C01-1_icon_message_dim.png | Bin 0 -> 3649 bytes .../C01-1_icon_message_press.png | Bin 0 -> 3649 bytes .../C01-1_icon_message_press_wh.png | Bin 0 -> 3489 bytes res/screen-density-xhigh/C01-1_icon_more.png | Bin 0 -> 3106 bytes .../C01-1_icon_more_Manage conference call.png | Bin 0 -> 3509 bytes res/screen-density-xhigh/C01-1_icon_more_press.png | Bin 0 -> 3102 bytes res/screen-density-xhigh/C01-1_icon_mute.png | Bin 0 -> 7096 bytes res/screen-density-xhigh/C01-1_icon_mute_dim.png | Bin 0 -> 3866 bytes res/screen-density-xhigh/C01-1_icon_mute_on.png | Bin 0 -> 7093 bytes .../C01-1_icon_mute_on_dim.png | Bin 0 -> 6206 bytes .../C01-1_icon_mute_on_press.png | Bin 0 -> 6206 bytes res/screen-density-xhigh/C01-1_icon_mute_press.png | Bin 0 -> 3866 bytes .../C01-1_icon_mute_press_wh.png | Bin 0 -> 3833 bytes res/screen-density-xhigh/C01-1_icon_record.png | Bin 0 -> 3538 bytes res/screen-density-xhigh/C01-1_icon_record_dim.png | Bin 0 -> 3521 bytes .../C01-1_icon_record_press.png | Bin 0 -> 3530 bytes .../C01-1_icon_record_press_wh.png | Bin 0 -> 3352 bytes res/screen-density-xhigh/C01-1_icon_speaker.png | Bin 0 -> 5811 bytes .../C01-1_icon_speaker_dim.png | Bin 0 -> 3580 bytes res/screen-density-xhigh/C01-1_icon_speaker_on.png | Bin 0 -> 6351 bytes .../C01-1_icon_speaker_on_dim.png | Bin 0 -> 5525 bytes .../C01-1_icon_speaker_on_press.png | Bin 0 -> 5525 bytes .../C01-1_icon_speaker_press.png | Bin 0 -> 3580 bytes .../C01-1_icon_speaker_press_wh.png | Bin 0 -> 3533 bytes res/screen-density-xhigh/C01-1_icon_stop.png | Bin 0 -> 2932 bytes res/screen-density-xhigh/C01-1_icon_stop_dim.png | Bin 0 -> 2934 bytes res/screen-density-xhigh/C01-1_icon_stop_press.png | Bin 0 -> 2932 bytes .../C01-1_icon_stop_press_wh.png | Bin 0 -> 2928 bytes res/screen-density-xhigh/C01-1_icon_swap.png | Bin 0 -> 2918 bytes res/screen-density-xhigh/C01-1_icon_swap_press.png | Bin 0 -> 2036 bytes res/screen-density-xhigh/C01-1_icon_unhold.png | Bin 0 -> 3675 bytes .../C01-1_icon_unhold_74x74.png | Bin 0 -> 3396 bytes .../C01-1_icon_unhold_74x74_press.png | Bin 0 -> 3201 bytes .../C01-1_icon_unhold_78x78.png | Bin 0 -> 3407 bytes .../C01-1_icon_unhold_78x78_press.png | Bin 0 -> 3208 bytes res/screen-density-xhigh/C01-1_icon_unhold_dim.png | Bin 0 -> 3664 bytes .../C01-1_icon_unhold_press.png | Bin 0 -> 3674 bytes .../C01-1_icon_unhold_press_wh.png | Bin 0 -> 3381 bytes res/screen-density-xhigh/C01-1_icon_video call.png | Bin 0 -> 4572 bytes .../C01-1_icon_video call_dim.png | Bin 0 -> 4103 bytes .../C01-1_icon_video call_press.png | Bin 0 -> 4149 bytes .../C01-1_icon_video call_press_wh.png | Bin 0 -> 4568 bytes res/screen-density-xhigh/C01-1_icon_voice call.png | Bin 0 -> 5331 bytes .../C01-1_icon_voice call_dim.png | Bin 0 -> 5084 bytes .../C01-1_icon_voice call_press.png | Bin 0 -> 5084 bytes .../C01-1_icon_voice call_press_wh.png | Bin 0 -> 3559 bytes res/screen-density-xhigh/C01-1_keypad_btn_icon.png | Bin 0 -> 1734 bytes .../C01-1_keypad_btn_input.png | Bin 0 -> 1716 bytes .../C01-1_keypad_btn_normal.png | Bin 0 -> 16343 bytes .../C01-1_keypad_btn_press.png | Bin 0 -> 4578 bytes .../C01-1_lock_icon_accept.png | Bin 0 -> 4136 bytes .../C01-1_lock_icon_accept_arrow.png | Bin 0 -> 2974 bytes .../C01-1_lock_icon_accept_arrow_press.png | Bin 0 -> 2988 bytes .../C01-1_lock_icon_accept_press.png | Bin 0 -> 4150 bytes .../C01-1_lock_icon_reject.png | Bin 0 -> 3614 bytes .../C01-1_lock_icon_reject_arrow.png | Bin 0 -> 3013 bytes .../C01-1_lock_icon_reject_arrow_press.png | Bin 0 -> 2977 bytes .../C01-1_lock_icon_reject_press.png | Bin 0 -> 3627 bytes .../C01-1_multil_default_caller ID_366x366.png | Bin 0 -> 16665 bytes .../C01-1_multil_default_caller ID_720x370.png | Bin 0 -> 19920 bytes .../C01-1_multil_default_caller ID_720x720.png | Bin 0 -> 34175 bytes .../C01-1_outgoingcall_No caller ID.png | Bin 0 -> 69772 bytes res/screen-density-xhigh/C01-1_popup_arrow.png | Bin 0 -> 1430 bytes res/screen-density-xhigh/C01-1_popup_bg.png | Bin 0 -> 1012 bytes res/screen-density-xhigh/C01-1_reject_right.png | Bin 0 -> 25236 bytes .../C01-1_reject_right_dial_decline.png | Bin 0 -> 11996 bytes .../C01-1_reject_right_dial_decline_dim.png | Bin 0 -> 10790 bytes .../C01-1_reject_right_dim.png | Bin 0 -> 6536 bytes res/screen-density-xhigh/C01-1_voice_call_icon.png | Bin 0 -> 6004 bytes .../C01-3_dialer_btn_1line_bg.9.png | Bin 0 -> 1280 bytes .../C01-3_dialer_btn_1line_bg.png | Bin 0 -> 3713 bytes .../C01-3_dialer_btn_2line_bg.9.png | Bin 0 -> 1173 bytes .../C01-3_dialer_btn_2line_bg.png | Bin 0 -> 3666 bytes .../C01-3_dialer_btn_3line_bg.9.png | Bin 0 -> 1290 bytes .../C01-3_dialer_btn_3line_bg.png | Bin 0 -> 3706 bytes .../C01-3_dialer_btn_4line_bg.9.png | Bin 0 -> 1268 bytes .../C01-3_dialer_btn_4line_bg.png | Bin 0 -> 3699 bytes .../C01-3_dialer_btn_5line_bg.9.png | Bin 0 -> 1200 bytes .../C01-3_dialer_btn_5line_bg.png | Bin 0 -> 3660 bytes .../C01-3_dialer_btn_call_bg.9.png | Bin 0 -> 1274 bytes .../C01-3_dialer_btn_call_bg.png | Bin 0 -> 3712 bytes .../C01-3_dialer_btn_option_bg.9.png | Bin 0 -> 1164 bytes .../C01-3_dialer_btn_option_bg.png | Bin 0 -> 3303 bytes .../C01-3_dialer_btn_option_press.9.png | Bin 0 -> 411 bytes .../C01-3_dialer_btn_option_press.png | Bin 0 -> 3063 bytes .../C01-3_dialer_btn_press.9.png | Bin 0 -> 3846 bytes .../C01-3_dialer_btn_press.png | Bin 0 -> 6466 bytes res/screen-density-xhigh/C01-3_dialer_icon_01.png | Bin 0 -> 3715 bytes .../C01-3_dialer_icon_01_press.png | Bin 0 -> 3608 bytes .../C01-3_dialer_icon_clear.png | Bin 0 -> 4701 bytes .../C01-3_dialer_icon_star.png | Bin 0 -> 3477 bytes .../C01-3_dialer_search_field_bg.png | Bin 0 -> 3162 bytes res/screen-density-xhigh/C01-3_icon_call.png | Bin 0 -> 3756 bytes res/screen-density-xhigh/C01-3_icon_clear.png | Bin 0 -> 4223 bytes res/screen-density-xhigh/C01-3_icon_message.png | Bin 0 -> 3860 bytes res/screen-density-xhigh/C01-3_icon_voicecall.png | Bin 0 -> 5365 bytes res/screen-density-xhigh/C01-4_btn_icon_call.png | Bin 0 -> 3294 bytes .../C01-4_btn_icon_call_dim.png | Bin 0 -> 3253 bytes .../C01-4_btn_icon_message.png | Bin 0 -> 3341 bytes .../C01-4_btn_icon_message_dim.png | Bin 0 -> 3341 bytes .../C01-4_btn_icon_video_call.png | Bin 0 -> 3204 bytes .../C01-4_btn_icon_video_call_dim.png | Bin 0 -> 3173 bytes .../C01-4_controlbar_icon_cancel.png | Bin 0 -> 3286 bytes .../C01-4_controlbar_icon_delete.png | Bin 0 -> 572 bytes .../C01-4_controlbar_icon_done.png | Bin 0 -> 3508 bytes .../C01-4_controlbar_icon_save.png | Bin 0 -> 3238 bytes .../C01-4_icon_Blocked(Auto-rejected).png | Bin 0 -> 3237 bytes res/screen-density-xhigh/C01-4_icon_Blocked.png | Bin 0 -> 4363 bytes .../C01-4_icon_call_blocked.png | Bin 0 -> 1740 bytes res/screen-density-xhigh/C01-4_icon_dialed.png | Bin 0 -> 3130 bytes .../C01-4_icon_message_blocked.png | Bin 0 -> 1423 bytes .../C01-4_icon_missed-call.png | Bin 0 -> 4405 bytes res/screen-density-xhigh/C01-4_icon_received.png | Bin 0 -> 3227 bytes res/screen-density-xhigh/C01-4_icon_rejected.png | Bin 0 -> 4160 bytes res/screen-density-xhigh/C01-5_icon_cancel.png | Bin 0 -> 3990 bytes .../C01-5_icon_speeddial_check.png | Bin 0 -> 4224 bytes res/screen-density-xhigh/C01-5_icon_voicecall.png | Bin 0 -> 3572 bytes .../C01-5_speeddial_thumbnail_213x213.png | Bin 0 -> 3236 bytes .../C01_3_dialer_icon_option.png | Bin 0 -> 3019 bytes .../M01_contact_default_image.png | Bin 0 -> 5425 bytes .../M01_contact_default_image_press.png | Bin 0 -> 5959 bytes res/screen-density-xhigh/more.png | Bin 0 -> 3081 bytes res/screen-density-xhigh/more_press.png | Bin 0 -> 3091 bytes res/screen-size-normal/IDL_CALL_FORM.xml | 59 + res/screen-size-normal/IDL_CALL_OPTION_POPUP.xml | 12 + res/screen-size-normal/IDL_CONFCALL_FORM.xml | 59 + res/screen-size-normal/IDL_CONFCALL_LIST_FORM.xml | 38 + res/screen-size-normal/IDL_DTMF_KEYPAD_PANEL.xml | 23 + res/screen-size-normal/IDL_DTMF_KEYS_PANEL.xml | 73 + res/screen-size-normal/IDL_EMERGENCY_CALL_FORM.xml | 48 + res/screen-size-normal/IDL_ENDCALLKEYS_PANEL.xml | 33 + res/screen-size-normal/IDL_END_CALL_FORM.xml | 43 + res/screen-size-normal/IDL_ERROR_MSG_POPUP.xml | 17 + res/screen-size-normal/IDL_INCOMING_CALL_FORM.xml | 112 + res/screen-size-normal/IDL_KEYS_PANEL.xml | 43 + res/screen-size-normal/IDL_MULTIPLE_CALL_FORM.xml | 88 + res/screen-size-normal/IDL_OUTCALL_FORM.xml | 49 + .../IDL_OUT_EMERGENCYCALL_FORM.xml | 48 + shared/data/nofile.dummy | 0 shared/res/messages.png | Bin 0 -> 57662 bytes shared/res/screen-density-xhigh/nofile.dummy | 0 shared/trusted/nofile.dummy | 0 src/CallActiveCallForm.cpp | 2480 ++++++++++++++++ src/CallApp.cpp | 713 +++++ src/CallAppControlRequestMgr.cpp | 309 ++ src/CallAppEntry.cpp | 52 + src/CallAppFrame.cpp | 69 + src/CallAppUtility.cpp | 84 + src/CallBaseForm.cpp | 590 ++++ src/CallButtonsPanel.cpp | 721 +++++ src/CallCommonUtils.cpp | 647 ++++ src/CallConfCallerListForm.cpp | 912 ++++++ src/CallDtmfKeypadPanel.cpp | 545 ++++ src/CallEndCallForm.cpp | 853 ++++++ src/CallErrorMsgPopup.cpp | 267 ++ src/CallFormFactory.cpp | 129 + src/CallIncomingCallForm.cpp | 1707 +++++++++++ src/CallInfo.cpp | 549 ++++ src/CallOptionPopup.cpp | 359 +++ src/CallPanelFactory.cpp | 45 + src/CallPresentationModel.cpp | 1109 +++++++ src/CallRejectInfo.cpp | 69 + src/CallSceneRegister.cpp | 74 + src/CallSettingDataService.cpp | 255 ++ src/CallSettingsConstants.cpp | 88 + src/CallSettingsManager.cpp | 391 +++ src/CallSettingsPresentationModel.cpp | 195 ++ src/CallSoundManager.cpp | 905 ++++++ src/CallTelephonyManager.cpp | 3076 ++++++++++++++++++++ src/CallTypes.cpp | 361 +++ src/CalllogManager.cpp | 270 ++ 347 files changed, 24118 insertions(+) create mode 100644 .cproject create mode 100644 .project create mode 100644 CMakeLists.txt create mode 100644 LICENSE.Flora create mode 100644 NOTICE create mode 100644 inc/CallActiveCallForm.h create mode 100644 inc/CallApp.h create mode 100644 inc/CallAppControlRequestMgr.h create mode 100644 inc/CallAppFormFactory.h create mode 100644 inc/CallAppFrame.h create mode 100644 inc/CallAppUtility.h create mode 100644 inc/CallBaseForm.h create mode 100644 inc/CallButtonsPanel.h create mode 100644 inc/CallCommonUtils.h create mode 100644 inc/CallConfCallerListForm.h create mode 100644 inc/CallCustomItemBgElement.h create mode 100644 inc/CallDtmfKeypadPanel.h create mode 100644 inc/CallEndCallForm.h create mode 100644 inc/CallErrorMsgPopup.h create mode 100644 inc/CallIAppStateChangeListner.h create mode 100644 inc/CallICalllogChangeListener.h create mode 100644 inc/CallIPopupItemSelectListener.h create mode 100644 inc/CallISettingsEventListener.h create mode 100644 inc/CallITelephonyEventListener.h create mode 100644 inc/CallIncomingCallForm.h create mode 100644 inc/CallInfo.h create mode 100644 inc/CallOptionPopup.h create mode 100644 inc/CallPanelFactory.h create mode 100644 inc/CallPhoneFormFactory.h create mode 100644 inc/CallPresentationModel.h create mode 100644 inc/CallRejectInfo.h create mode 100644 inc/CallSceneRegister.h create mode 100644 inc/CallSettingDataService.h create mode 100644 inc/CallSettingsConstants.h create mode 100644 inc/CallSettingsManager.h create mode 100644 inc/CallSettingsPresentationModel.h create mode 100644 inc/CallSoundManager.h create mode 100644 inc/CallSpeedDialInfo.h create mode 100644 inc/CallSpeedDialPopup.h create mode 100644 inc/CallTelephonyManager.h create mode 100644 inc/CallTypes.h create mode 100644 inc/CalllogManager.h create mode 100644 lib/nofile.dummy create mode 100644 manifest.xml create mode 100644 packaging/apps.Call.spec create mode 100644 res/eng-GB.xml create mode 100644 res/screen-density-xhigh/00_Nocontents_text.png create mode 100644 res/screen-density-xhigh/00_button_01_normal.png create mode 100644 res/screen-density-xhigh/00_button_04_dim.png create mode 100644 res/screen-density-xhigh/00_button_04_normal.png create mode 100644 res/screen-density-xhigh/00_button_04_normal_focus.png create mode 100644 res/screen-density-xhigh/00_button_06_normal.9.png create mode 100644 res/screen-density-xhigh/00_button_06_press.9.png create mode 100644 res/screen-density-xhigh/00_button_cancel_normal.png create mode 100644 res/screen-density-xhigh/00_button_cancel_press.png create mode 100644 res/screen-density-xhigh/00_button_normal_bg.9.png create mode 100644 res/screen-density-xhigh/00_icon_Back.png create mode 100644 res/screen-density-xhigh/00_icon_Back_press.png create mode 100644 res/screen-density-xhigh/00_index list_bg.png create mode 100644 res/screen-density-xhigh/00_indexlist_icon_opened.png create mode 100644 res/screen-density-xhigh/00_list_expand_closed.png create mode 100644 res/screen-density-xhigh/00_list_expand_closed_press.png create mode 100644 res/screen-density-xhigh/00_list_expand_opened.png create mode 100644 res/screen-density-xhigh/00_list_expand_opened_press.png create mode 100644 res/screen-density-xhigh/00_popup_bg_ef.9.png create mode 100644 res/screen-density-xhigh/00_popup_bubble_tail_bottom.png create mode 100644 res/screen-density-xhigh/00_popup_bubble_tail_top.png create mode 100644 res/screen-density-xhigh/00_reorder_group_list_bg.png create mode 100644 res/screen-density-xhigh/00_volume_icon_Mute.png create mode 100644 res/screen-density-xhigh/00_winset_Back.png create mode 100644 res/screen-density-xhigh/00_winset_more.png create mode 100644 res/screen-density-xhigh/00_winset_more_press.png create mode 100644 res/screen-density-xhigh/C01-1_Back_btn_normal.png create mode 100644 res/screen-density-xhigh/C01-1_Back_btn_press.png create mode 100644 res/screen-density-xhigh/C01-1_Incoming call_BG_01.png create mode 100644 res/screen-density-xhigh/C01-1_Not saved contact BG.png create mode 100644 res/screen-density-xhigh/C01-1_Reject_message_arrow_01.png create mode 100644 res/screen-density-xhigh/C01-1_Reject_message_arrow_02.png create mode 100644 res/screen-density-xhigh/C01-1_Reject_message_bg.png create mode 100644 res/screen-density-xhigh/C01-1_accept_left.png create mode 100644 res/screen-density-xhigh/C01-1_accept_left_dial_answer.png create mode 100644 res/screen-density-xhigh/C01-1_accept_left_dial_answer_dim.png create mode 100644 res/screen-density-xhigh/C01-1_accept_left_dim.png create mode 100644 res/screen-density-xhigh/C01-1_accept_left_press.png create mode 100644 res/screen-density-xhigh/C01-1_animation_bg.png create mode 100644 res/screen-density-xhigh/C01-1_arrow_g.png create mode 100644 res/screen-density-xhigh/C01-1_arrow_r.png create mode 100644 res/screen-density-xhigh/C01-1_bg.png create mode 100644 res/screen-density-xhigh/C01-1_btn_back.png create mode 100644 res/screen-density-xhigh/C01-1_btn_create.png create mode 100644 res/screen-density-xhigh/C01-1_button_01_press.png create mode 100644 res/screen-density-xhigh/C01-1_button_02_normal.png create mode 100644 res/screen-density-xhigh/C01-1_button_03_normal.png create mode 100644 res/screen-density-xhigh/C01-1_button_05_press.png create mode 100644 res/screen-density-xhigh/C01-1_button_bg.png create mode 100644 res/screen-density-xhigh/C01-1_button_call.png create mode 100644 res/screen-density-xhigh/C01-1_button_call_press.png create mode 100644 res/screen-density-xhigh/C01-1_button_end_call.png create mode 100644 res/screen-density-xhigh/C01-1_button_hold_01.png create mode 100644 res/screen-density-xhigh/C01-1_button_hold_01_press.png create mode 100644 res/screen-density-xhigh/C01-1_button_hold_normal.png create mode 100644 res/screen-density-xhigh/C01-1_button_hold_normal_01.png create mode 100644 res/screen-density-xhigh/C01-1_button_hold_normal_01_press.png create mode 100644 res/screen-density-xhigh/C01-1_button_hold_press.png create mode 100644 res/screen-density-xhigh/C01-1_button_more.png create mode 100644 res/screen-density-xhigh/C01-1_button_more_press.png create mode 100644 res/screen-density-xhigh/C01-1_button_press.png create mode 100644 res/screen-density-xhigh/C01-1_call_ID_thumbnail_366x366.png create mode 100644 res/screen-density-xhigh/C01-1_call_ID_thumbnail_shadow_224x224.png create mode 100644 res/screen-density-xhigh/C01-1_call_ID_thumbnail_shadow_388x388.png create mode 100644 res/screen-density-xhigh/C01-1_call_bg.png create mode 100644 res/screen-density-xhigh/C01-1_call_bg02.png create mode 100644 res/screen-density-xhigh/C01-1_call_default_caller ID_720x720.png create mode 100644 res/screen-density-xhigh/C01-1_call_group_caller ID_720x720.png create mode 100644 res/screen-density-xhigh/C01-1_call_thumbnail_bg.png create mode 100644 res/screen-density-xhigh/C01-1_caller_bg.png create mode 100644 res/screen-density-xhigh/C01-1_calling_BG_01.png create mode 100644 res/screen-density-xhigh/C01-1_conference_call_btn_01.png create mode 100644 res/screen-density-xhigh/C01-1_conference_call_btn_01_press.png create mode 100644 res/screen-density-xhigh/C01-1_conference_call_btn_02.png create mode 100644 res/screen-density-xhigh/C01-1_conference_call_btn_02_press.png create mode 100644 res/screen-density-xhigh/C01-1_conference_end.png create mode 100644 res/screen-density-xhigh/C01-1_conference_end_press.png create mode 100644 res/screen-density-xhigh/C01-1_conference_split.png create mode 100644 res/screen-density-xhigh/C01-1_conference_split_press.png create mode 100644 res/screen-density-xhigh/C01-1_contact_btn.png create mode 100644 res/screen-density-xhigh/C01-1_contact_btn_icon.png create mode 100644 res/screen-density-xhigh/C01-1_contact_btn_icon_press.png create mode 100644 res/screen-density-xhigh/C01-1_contact_btn_press.png create mode 100644 res/screen-density-xhigh/C01-1_end call_BG_01.png create mode 100644 res/screen-density-xhigh/C01-1_end call_default_caller ID_366x366.png create mode 100644 res/screen-density-xhigh/C01-1_end call_default_caller ID_720x370.png create mode 100644 res/screen-density-xhigh/C01-1_end call_default_caller ID_720x720.png create mode 100644 res/screen-density-xhigh/C01-1_icon_Hide.png create mode 100644 res/screen-density-xhigh/C01-1_icon_Hide_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_Hide_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_Hide_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_Pause.png create mode 100644 res/screen-density-xhigh/C01-1_icon_Play.png create mode 100644 res/screen-density-xhigh/C01-1_icon_REC_78x78.png create mode 100644 res/screen-density-xhigh/C01-1_icon_Reject_with_Message.png create mode 100644 res/screen-density-xhigh/C01-1_icon_add.png create mode 100644 res/screen-density-xhigh/C01-1_icon_add_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_add_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_add_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_button_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_call.png create mode 100644 res/screen-density-xhigh/C01-1_icon_call_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_contacts.png create mode 100644 res/screen-density-xhigh/C01-1_icon_contacts_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_contacts_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_contacts_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_end_call.png create mode 100644 res/screen-density-xhigh/C01-1_icon_end_call_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_end_call_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_headset.png create mode 100644 res/screen-density-xhigh/C01-1_icon_headset_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_headset_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_headset_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_hold.png create mode 100644 res/screen-density-xhigh/C01-1_icon_hold_74x74.png create mode 100644 res/screen-density-xhigh/C01-1_icon_hold_74x74_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_hold_78x78.png create mode 100644 res/screen-density-xhigh/C01-1_icon_hold_78x78_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_hold_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_hold_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_hold_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_join.png create mode 100644 res/screen-density-xhigh/C01-1_icon_join_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_join_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_join_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_keypad.png create mode 100644 res/screen-density-xhigh/C01-1_icon_keypad_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_keypad_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_keypad_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_message.png create mode 100644 res/screen-density-xhigh/C01-1_icon_message_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_message_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_message_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_more.png create mode 100644 res/screen-density-xhigh/C01-1_icon_more_Manage conference call.png create mode 100644 res/screen-density-xhigh/C01-1_icon_more_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_mute.png create mode 100644 res/screen-density-xhigh/C01-1_icon_mute_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_mute_on.png create mode 100644 res/screen-density-xhigh/C01-1_icon_mute_on_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_mute_on_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_mute_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_mute_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_record.png create mode 100644 res/screen-density-xhigh/C01-1_icon_record_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_record_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_record_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_speaker.png create mode 100644 res/screen-density-xhigh/C01-1_icon_speaker_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_speaker_on.png create mode 100644 res/screen-density-xhigh/C01-1_icon_speaker_on_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_speaker_on_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_speaker_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_speaker_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_stop.png create mode 100644 res/screen-density-xhigh/C01-1_icon_stop_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_stop_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_stop_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_swap.png create mode 100644 res/screen-density-xhigh/C01-1_icon_swap_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_unhold.png create mode 100644 res/screen-density-xhigh/C01-1_icon_unhold_74x74.png create mode 100644 res/screen-density-xhigh/C01-1_icon_unhold_74x74_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_unhold_78x78.png create mode 100644 res/screen-density-xhigh/C01-1_icon_unhold_78x78_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_unhold_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_unhold_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_unhold_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_video call.png create mode 100644 res/screen-density-xhigh/C01-1_icon_video call_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_video call_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_video call_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_icon_voice call.png create mode 100644 res/screen-density-xhigh/C01-1_icon_voice call_dim.png create mode 100644 res/screen-density-xhigh/C01-1_icon_voice call_press.png create mode 100644 res/screen-density-xhigh/C01-1_icon_voice call_press_wh.png create mode 100644 res/screen-density-xhigh/C01-1_keypad_btn_icon.png create mode 100644 res/screen-density-xhigh/C01-1_keypad_btn_input.png create mode 100644 res/screen-density-xhigh/C01-1_keypad_btn_normal.png create mode 100644 res/screen-density-xhigh/C01-1_keypad_btn_press.png create mode 100644 res/screen-density-xhigh/C01-1_lock_icon_accept.png create mode 100644 res/screen-density-xhigh/C01-1_lock_icon_accept_arrow.png create mode 100644 res/screen-density-xhigh/C01-1_lock_icon_accept_arrow_press.png create mode 100644 res/screen-density-xhigh/C01-1_lock_icon_accept_press.png create mode 100644 res/screen-density-xhigh/C01-1_lock_icon_reject.png create mode 100644 res/screen-density-xhigh/C01-1_lock_icon_reject_arrow.png create mode 100644 res/screen-density-xhigh/C01-1_lock_icon_reject_arrow_press.png create mode 100644 res/screen-density-xhigh/C01-1_lock_icon_reject_press.png create mode 100644 res/screen-density-xhigh/C01-1_multil_default_caller ID_366x366.png create mode 100644 res/screen-density-xhigh/C01-1_multil_default_caller ID_720x370.png create mode 100644 res/screen-density-xhigh/C01-1_multil_default_caller ID_720x720.png create mode 100644 res/screen-density-xhigh/C01-1_outgoingcall_No caller ID.png create mode 100644 res/screen-density-xhigh/C01-1_popup_arrow.png create mode 100644 res/screen-density-xhigh/C01-1_popup_bg.png create mode 100644 res/screen-density-xhigh/C01-1_reject_right.png create mode 100644 res/screen-density-xhigh/C01-1_reject_right_dial_decline.png create mode 100644 res/screen-density-xhigh/C01-1_reject_right_dial_decline_dim.png create mode 100644 res/screen-density-xhigh/C01-1_reject_right_dim.png create mode 100644 res/screen-density-xhigh/C01-1_voice_call_icon.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_1line_bg.9.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_1line_bg.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_2line_bg.9.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_2line_bg.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_3line_bg.9.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_3line_bg.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_4line_bg.9.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_4line_bg.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_5line_bg.9.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_5line_bg.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_call_bg.9.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_call_bg.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_option_bg.9.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_option_bg.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_option_press.9.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_option_press.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_press.9.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_btn_press.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_icon_01.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_icon_01_press.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_icon_clear.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_icon_star.png create mode 100644 res/screen-density-xhigh/C01-3_dialer_search_field_bg.png create mode 100644 res/screen-density-xhigh/C01-3_icon_call.png create mode 100644 res/screen-density-xhigh/C01-3_icon_clear.png create mode 100644 res/screen-density-xhigh/C01-3_icon_message.png create mode 100644 res/screen-density-xhigh/C01-3_icon_voicecall.png create mode 100644 res/screen-density-xhigh/C01-4_btn_icon_call.png create mode 100644 res/screen-density-xhigh/C01-4_btn_icon_call_dim.png create mode 100644 res/screen-density-xhigh/C01-4_btn_icon_message.png create mode 100644 res/screen-density-xhigh/C01-4_btn_icon_message_dim.png create mode 100644 res/screen-density-xhigh/C01-4_btn_icon_video_call.png create mode 100644 res/screen-density-xhigh/C01-4_btn_icon_video_call_dim.png create mode 100644 res/screen-density-xhigh/C01-4_controlbar_icon_cancel.png create mode 100644 res/screen-density-xhigh/C01-4_controlbar_icon_delete.png create mode 100644 res/screen-density-xhigh/C01-4_controlbar_icon_done.png create mode 100644 res/screen-density-xhigh/C01-4_controlbar_icon_save.png create mode 100644 res/screen-density-xhigh/C01-4_icon_Blocked(Auto-rejected).png create mode 100644 res/screen-density-xhigh/C01-4_icon_Blocked.png create mode 100644 res/screen-density-xhigh/C01-4_icon_call_blocked.png create mode 100644 res/screen-density-xhigh/C01-4_icon_dialed.png create mode 100644 res/screen-density-xhigh/C01-4_icon_message_blocked.png create mode 100644 res/screen-density-xhigh/C01-4_icon_missed-call.png create mode 100644 res/screen-density-xhigh/C01-4_icon_received.png create mode 100644 res/screen-density-xhigh/C01-4_icon_rejected.png create mode 100644 res/screen-density-xhigh/C01-5_icon_cancel.png create mode 100644 res/screen-density-xhigh/C01-5_icon_speeddial_check.png create mode 100644 res/screen-density-xhigh/C01-5_icon_voicecall.png create mode 100644 res/screen-density-xhigh/C01-5_speeddial_thumbnail_213x213.png create mode 100644 res/screen-density-xhigh/C01_3_dialer_icon_option.png create mode 100644 res/screen-density-xhigh/M01_contact_default_image.png create mode 100644 res/screen-density-xhigh/M01_contact_default_image_press.png create mode 100644 res/screen-density-xhigh/more.png create mode 100644 res/screen-density-xhigh/more_press.png create mode 100644 res/screen-size-normal/IDL_CALL_FORM.xml create mode 100644 res/screen-size-normal/IDL_CALL_OPTION_POPUP.xml create mode 100644 res/screen-size-normal/IDL_CONFCALL_FORM.xml create mode 100644 res/screen-size-normal/IDL_CONFCALL_LIST_FORM.xml create mode 100644 res/screen-size-normal/IDL_DTMF_KEYPAD_PANEL.xml create mode 100644 res/screen-size-normal/IDL_DTMF_KEYS_PANEL.xml create mode 100644 res/screen-size-normal/IDL_EMERGENCY_CALL_FORM.xml create mode 100644 res/screen-size-normal/IDL_ENDCALLKEYS_PANEL.xml create mode 100644 res/screen-size-normal/IDL_END_CALL_FORM.xml create mode 100644 res/screen-size-normal/IDL_ERROR_MSG_POPUP.xml create mode 100644 res/screen-size-normal/IDL_INCOMING_CALL_FORM.xml create mode 100644 res/screen-size-normal/IDL_KEYS_PANEL.xml create mode 100644 res/screen-size-normal/IDL_MULTIPLE_CALL_FORM.xml create mode 100644 res/screen-size-normal/IDL_OUTCALL_FORM.xml create mode 100644 res/screen-size-normal/IDL_OUT_EMERGENCYCALL_FORM.xml create mode 100644 shared/data/nofile.dummy create mode 100755 shared/res/messages.png create mode 100644 shared/res/screen-density-xhigh/nofile.dummy create mode 100644 shared/trusted/nofile.dummy create mode 100644 src/CallActiveCallForm.cpp create mode 100644 src/CallApp.cpp create mode 100644 src/CallAppControlRequestMgr.cpp create mode 100644 src/CallAppEntry.cpp create mode 100644 src/CallAppFrame.cpp create mode 100644 src/CallAppUtility.cpp create mode 100644 src/CallBaseForm.cpp create mode 100644 src/CallButtonsPanel.cpp create mode 100644 src/CallCommonUtils.cpp create mode 100644 src/CallConfCallerListForm.cpp create mode 100644 src/CallDtmfKeypadPanel.cpp create mode 100644 src/CallEndCallForm.cpp create mode 100644 src/CallErrorMsgPopup.cpp create mode 100644 src/CallFormFactory.cpp create mode 100644 src/CallIncomingCallForm.cpp create mode 100644 src/CallInfo.cpp create mode 100644 src/CallOptionPopup.cpp create mode 100644 src/CallPanelFactory.cpp create mode 100644 src/CallPresentationModel.cpp create mode 100644 src/CallRejectInfo.cpp create mode 100644 src/CallSceneRegister.cpp create mode 100644 src/CallSettingDataService.cpp create mode 100644 src/CallSettingsConstants.cpp create mode 100644 src/CallSettingsManager.cpp create mode 100644 src/CallSettingsPresentationModel.cpp create mode 100644 src/CallSoundManager.cpp create mode 100644 src/CallTelephonyManager.cpp create mode 100644 src/CallTypes.cpp create mode 100644 src/CalllogManager.cpp diff --git a/.cproject b/.cproject new file mode 100644 index 0000000..5255537 --- /dev/null +++ b/.cproject @@ -0,0 +1,769 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..9ccee4e --- /dev/null +++ b/.project @@ -0,0 +1,88 @@ + + + Call + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.autoBuildTarget + all + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + sbi-make + + + org.eclipse.cdt.make.core.buildLocation + ${workspace_loc:/CallApp/Debug-Tizen-Emulator} + + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + true + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.fullBuildTarget + all + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + true + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + org.tizen.nativecpp.apichecker.core.builder + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + org.tizen.nativecpp.apichecker.core.tizenCppNature + + diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..4d951bb --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,44 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) + +# Target name and PKGID +## TODO : set application name and ID +SET(this_target Call) +SET(PKGID nI2PLNdTwi) + +# include directory +INCLUDE_DIRECTORIES( + /usr/include/glib-2.0 + /usr/lib/glib-2.0/include + /usr/include/osp + /usr/include/vconf + /usr/include/media + /usr/include/telephony-client + /usr/include/contacts-svc + inc + ) + +# Source files +FILE(GLOB ${this_target}_SOURCE_FILES + src/*.cpp +) + +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE") + + +# Create executable +SET(CMAKE_EXECUTABLE_SUFFIX ".exe") +ADD_EXECUTABLE (${this_target} ${${this_target}_SOURCE_FILES}) + +# Set link libraries and link options +## TODO : add more link libraries and options +TARGET_LINK_LIBRARIES(${this_target} -L/usr/lib/osp osp-appfw osp-uifw osp-social osp-messaging osp-media osp-image osp-image-core osp-telephony) +TARGET_LINK_LIBRARIES(${this_target} -L/usr/lib capi-media-sound-manager SLP-tapi vconf contacts-service2) +TARGET_LINK_LIBRARIES(${this_target} -Xlinker --allow-shlib-undefined -pthread -pie) + +# Copy info, data, res, and icons directories +INSTALL(TARGETS ${this_target} DESTINATION ../usr/apps/${PKGID}/bin) + +# Copy resource +INSTALL(FILES ${CMAKE_SOURCE_DIR}/manifest.xml DESTINATION ../usr/apps/${PKGID}/info) +INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res DESTINATION ../usr/apps/${PKGID}) +INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/shared DESTINATION ../usr/apps/${PKGID}) diff --git a/LICENSE.Flora b/LICENSE.Flora new file mode 100644 index 0000000..03f0c77 --- /dev/null +++ b/LICENSE.Flora @@ -0,0 +1,206 @@ +Flora License + +Version 1.1, April, 2013 + +http://floralicense.org/license/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and +all other entities that control, are controlled by, or are +under common control with that entity. For the purposes of +this definition, "control" means (i) the power, direct or indirect, +to cause the direction or management of such entity, +whether by contract or otherwise, or (ii) ownership of fifty percent (50%) +or more of the outstanding shares, or (iii) beneficial ownership of +such entity. + +"You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation source, +and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, +made available under the License, as indicated by a copyright notice +that is included in or attached to the work (an example is provided +in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, +that is based on (or derived from) the Work and for which the editorial +revisions, annotations, elaborations, or other modifications represent, +as a whole, an original work of authorship. For the purposes of this License, +Derivative Works shall not include works that remain separable from, +or merely link (or bind by name) to the interfaces of, the Work and +Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original +version of the Work and any modifications or additions to that Work or +Derivative Works thereof, that is intentionally submitted to Licensor +for inclusion in the Work by the copyright owner or by an individual or +Legal Entity authorized to submit on behalf of the copyright owner. +For the purposes of this definition, "submitted" means any form of +electronic, verbal, or written communication sent to the Licensor or +its representatives, including but not limited to communication on +electronic mailing lists, source code control systems, and issue +tracking systems that are managed by, or on behalf of, the Licensor +for the purpose of discussing and improving the Work, but excluding +communication that is conspicuously marked or otherwise designated +in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +"Tizen Certified Platform" shall mean a software platform that complies +with the standards set forth in the Tizen Compliance Specification +and passes the Tizen Compliance Tests as defined from time to time +by the Tizen Technical Steering Group and certified by the Tizen +Association or its designated agent. + +2. Grant of Copyright License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the +Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +(except as stated in this section) patent license to make, have made, +use, offer to sell, sell, import, and otherwise transfer the Work +solely as incorporated into a Tizen Certified Platform, where such +license applies only to those patent claims licensable by such +Contributor that are necessarily infringed by their Contribution(s) +alone or by combination of their Contribution(s) with the Work solely +as incorporated into a Tizen Certified Platform to which such +Contribution(s) was submitted. If You institute patent litigation +against any entity (including a cross-claim or counterclaim +in a lawsuit) alleging that the Work or a Contribution incorporated +within the Work constitutes direct or contributory patent infringement, +then any patent licenses granted to You under this License for that +Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the +Work or Derivative Works thereof pursuant to the copyright license +above, in any medium, with or without modifications, and in Source or +Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works + a copy of this License; and + 2. You must cause any modified files to carry prominent notices stating + that You changed the files; and + 3. You must retain, in the Source form of any Derivative Works that + You distribute, all copyright, patent, trademark, and attribution + notices from the Source form of the Work, excluding those notices + that do not pertain to any part of the Derivative Works; and + 4. If the Work includes a "NOTICE" text file as part of its distribution, + then any Derivative Works that You distribute must include a readable + copy of the attribution notices contained within such NOTICE file, + excluding those notices that do not pertain to any part of + the Derivative Works, in at least one of the following places: + within a NOTICE text file distributed as part of the Derivative Works; + within the Source form or documentation, if provided along with the + Derivative Works; or, within a display generated by the Derivative Works, + if and wherever such third-party notices normally appear. + The contents of the NOTICE file are for informational purposes only + and do not modify the License. + +You may add Your own attribution notices within Derivative Works +that You distribute, alongside or as an addendum to the NOTICE text +from the Work, provided that such additional attribution notices +cannot be construed as modifying the License. You may add Your own +copyright statement to Your modifications and may provide additional or +different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works +as a whole, provided Your use, reproduction, and distribution of +the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, +any Contribution intentionally submitted for inclusion in the Work +by You to the Licensor shall be under the terms and conditions of +this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify +the terms of any separate license agreement you may have executed +with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade +names, trademarks, service marks, or product names of the Licensor, +except as required for reasonable and customary use in describing the +origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or +agreed to in writing, Licensor provides the Work (and each +Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied, including, without limitation, any warranties or conditions +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any +risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, +unless required by applicable law (such as deliberate and grossly +negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, +incidental, or consequential damages of any character arising as a +result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses), even if such Contributor +has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing +the Work or Derivative Works thereof, You may choose to offer, +and charge a fee for, acceptance of support, warranty, indemnity, +or other liability obligations and/or rights consistent with this +License. However, in accepting such obligations, You may act only +on Your own behalf and on Your sole responsibility, not on behalf +of any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason +of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Flora License to your work + +To apply the Flora License to your work, attach the following +boilerplate notice, with the fields enclosed by brackets "[]" +replaced with your own identifying information. (Don't include +the brackets!) The text should be enclosed in the appropriate +comment syntax for the file format. We also recommend that a +file or class name and description of purpose be included on the +same "printed page" as the copyright notice for easier +identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Flora License, Version 1.1 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://floralicense.org/license/ + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..a5964ea --- /dev/null +++ b/NOTICE @@ -0,0 +1,3 @@ +Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved. +Except as noted, this software is licensed under Flora License, Version 1.1. +Please, see the LICENSE.Flora file for Flora License, Version 1.1 terms and conditions. diff --git a/inc/CallActiveCallForm.h b/inc/CallActiveCallForm.h new file mode 100644 index 0000000..270811c --- /dev/null +++ b/inc/CallActiveCallForm.h @@ -0,0 +1,181 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallActiveCallForm.h + * @brief This is the header file for the %ActiveCallForm class. + * + * This header file contains the declarations for %ActiveCallForm class. + */ +#ifndef _PHN_ACTIVE_CALL_FORM_H_ +#define _PHN_ACTIVE_CALL_FORM_H_ + +#include +#include +#include "CallBaseForm.h" +#include "CallIAppStateChangeListner.h" + +class CallButtonsPanel; +class DtmfKeyPadPanel; +class AppCallInfo; + +/** + * @class ActiveCallForm + * @brief This class presents a form based UI for dialing call, active call, conference call, + * single active call, multiple active call scenarios. + * + */ +class ActiveCallForm + : public BaseForm + , public IAppStateChangeListener + , public Tizen::Ui::Controls::IListViewItemEventListener + , public Tizen::Ui::Controls::IListViewItemProvider + , public Tizen::Ui::Scenes::ISceneEventListener + , public Tizen::Base::Runtime::ITimerEventListener + , public Tizen::Ui::IOrientationEventListener + , public Tizen::Social::IAddressbookChangeEventListener + , public Tizen::Ui::IPropagatedKeyEventListener + , public Tizen::System::ISettingEventListener +{ +public: + ActiveCallForm(FormType formType); + virtual ~ActiveCallForm(void); + //From BaseForm + virtual void Initialize(void); + void SetSwapInProgress(bool progress); + void SetCallStateInProgress(bool progress); + void SetConfCallStateInProgress(bool progress); + void OnHoldTelephonyCallback(bool isHeld); + void OnActiveTelephonyCallback(bool isActive); + void OnConfCallHoldTelephonyCallback(bool isHeld); + void OnConfCallActiveTelephonyCallback(bool isActive); + + +public: + virtual result OnInitializing(void); + virtual result OnTerminating(void); + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + + virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs); + virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId); + + virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer); + + // Handle the changes(e.g. participant ended) in conference call + void HandleConfCallChanged(void); + // Used to update multiple call screen + void UpdateMultipleCallScreen(Tizen::Base::Collection::IListT& activeCallsList); + //Handle hold conference call + //IAddressbookChangeEventListener + virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList); + virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList); + //From IOrientationEventListener + virtual void OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus); + //From IAppStateChangeListener + virtual void OnForeground(void); + virtual void OnBackground(void){}; + virtual void OnScreenOff(void){}; + //ISettings Event Listener + virtual void OnSettingChanged(Tizen::Base::String& key); + +private: + // Create the call buttons panel and add to form + result InitializeCallButtonsPanel(void); + // Set the correct bitmaps and action listeners for swap button + void InitializeSwapButton(void); + // Set the action listener for manage conf call button + void InitializeManageConfCallButton(void); + // Set the correct bitmaps and action listeners for hold button + void InitializeHoldButton(void); + // Set the state of the hold button according to call state + void SetHoldButtonStatus(bool toHoldCall); + // This function is used to fetch person details using phone number. + void ShowPersonDetails(const Tizen::Base::String& phoneNumber, const Tizen::Base::String& contactLblName, const Tizen::Base::String& nameLblName, bool isSecondCaller, AppCallInfo* pCallInfo); + // Method to show phone number on screen for all calls except conference call. + void ShowPhoneNumber(const Tizen::Base::String& phoneNumber, const Tizen::Base::String& contactLblName); + // Method to show caller name for all calls. + void ShowCallerName(const Tizen::Base::String& callerName, const Tizen::Base::String& nameLblName); + // This function draws the caller's photo onto screen. + void ShowCallerPhoto(Tizen::Graphics::Bitmap* pPhotoId, bool isSecondCaller); + //This function is used to show small Thumbnail size photo of caller. + void ShowCallersPhotoThumbnail(const Tizen::Graphics::Bitmap& pPhotoId); + // Method to show call duration/state(held) for call in progress + void ShowTimerInfo(const Tizen::Base::String& timerLblName, bool isOnHold, long long startTime = 0); + // Method to set the show state of all the labels when DTMF keypad is launched + void SetShowStateOnKeypad(bool showState); + // Method to set the show state of all the labels when DTMF keypad is launched in Landscape + void SetShowStateOnKeypadLandscape(bool showState); + // Method to populate the list shown on "More" option + void CreateMoreOptionsMenuList(void); + // Method to destroy the list shown on "More" option + void DestroyMoreOptionsMenuList(void); + //Used to Show DTMF keypad + void ShowDTMFKeypad(void); + //Used to hide DTMF Keypad + void HideDTMFKeypad(void); + //Used to show text in text field + void SetTextToDTMFTextField(const Tizen::Base::String& dtmfStr); + // Set hold button status + void SetHoldButtonShowState(bool showState); + void UpdateCallerPhoto(); + + //From IListViewItemEventListener + virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state); + virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status); + virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction); + virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback); + + //IPropagatedKeyEventListener + virtual bool OnKeyPressed(Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo); + virtual bool OnKeyReleased(Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo){ return false; }; + virtual bool OnPreviewKeyPressed(Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo){ return false; } + virtual bool OnPreviewKeyReleased(Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo){ return false; } + virtual bool TranslateKeyEventInfo(Control& source, Tizen::Ui::KeyEventInfo& keyEventInfo) { return false; } + + //From IListViewItemProvider + virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth); + virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth); + virtual int GetItemCount(void); + //Method to show thumbnail image + void ShowThumbnailImage(const Tizen::Graphics::Bitmap* pPhotoId,Tizen::Base::String& photoLabel); + //Check if swap in progress + bool IsSwapInProgress(void); + bool IsCallStateInProgress(void); + bool IsConfCallStateInProgress(void); + +private: + //Start time for Active call + long long __activeCallStartTime; + long long __referenceticks; + //Timer used to show call time + Tizen::Base::Runtime::Timer* __pActiveCallTimer; + //Custom Buttons Panel + CallButtonsPanel* __pCallButtonsPanel; + DtmfKeyPadPanel* __pDTMFKeypad; + Tizen::Social::Addressbook* __pAddressbook; + //Option Menu List for conference call + Tizen::Ui::Controls::ListView* __pMoreOptionsList; + Tizen::Ui::Controls::Label* __pMoreOptionsListAnchor; + Tizen::Ui::Controls::Label* __pSmallPhotoLabel; + Tizen::Base::String __DtmfString; + AppCallInfo* __pActiveCallInfo; + AppCallInfo* __pHeldCallInfo; + bool __isSwapInProgress; + bool __isCallStateInProgress; + bool __isConfCallStateInProgress; +}; + +#endif //_PHN_ACTIVE_CALL_FORM_H_ diff --git a/inc/CallApp.h b/inc/CallApp.h new file mode 100644 index 0000000..f01e4f6 --- /dev/null +++ b/inc/CallApp.h @@ -0,0 +1,125 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef _CALLAPP_H_ +#define _CALLAPP_H_ + +#include +#include +#include +#include + +class IAppStateChangeListener; + +/** + * [CallAppApp] UiApp must inherit from UiApp class + * which provides basic features necessary to define an UiApp. + */ +class CallApp + : public Tizen::App::UiApp + , public Tizen::System::IScreenEventListener + , public Tizen::App::IAppControlProviderEventListener + , public Tizen::App::IActiveAppEventListener + , public Tizen::Base::Runtime::ITimerEventListener +{ +public: + /** + * [Test] UiApp must have a factory method that creates an instance of itself. + */ + static Tizen::App::UiApp* CreateInstance(void); + +public: + CallApp(void); + virtual~CallApp(void); + +public: + // Called when the UiApp is initializing. + virtual bool OnAppInitializing(Tizen::App::AppRegistry& appRegistry); + + // Called when the UiApp initializing is finished. + virtual bool OnAppInitialized(void); + + // Called when the UiApp is requested to terminate. + virtual bool OnAppWillTerminate(void); + + // Called when the UiApp is terminating. + virtual bool OnAppTerminating(Tizen::App::AppRegistry& appRegistry, bool forcedTermination = false); + + // Called when the UiApp's frame moves to the top of the screen. + virtual void OnForeground(void); + + // Called when this UiApp's frame is moved from top of the screen to the background. + virtual void OnBackground(void); + + // Called when the system memory is not sufficient to run the UiApp any further. + virtual void OnLowMemory(void); + + // Called when the battery level changes. + virtual void OnBatteryLevelChanged(Tizen::System::BatteryLevel batteryLevel); + + // Called when the screen turns on. + virtual void OnScreenOn(void); + + // Called when the screen turns off. + virtual void OnScreenOff(void); + + //Called when application becomes active + virtual void OnActiveAppChanged(const Tizen::Base::String& appId); + + virtual Tizen::Ui::Scenes::SceneId GetInitialScene(void); + + //Used to get launch arguments at application launch + Tizen::Base::Collection::IList* GetAppLaunchArguments(void); + + void AddAppStateChangeListener(const IAppStateChangeListener& listener); + + void RemoveAppStateChangeListener(const IAppStateChangeListener& listener); + + // Called when the application control request is received from the caller application. + virtual void OnAppControlRequestReceived(RequestId reqId, const Tizen::Base::String& operationId, const Tizen::Base::String* pUriData, const Tizen::Base::String* pMimeType, const Tizen::Base::Collection::IMap* pExtraData); + //Called when incoming call has to be handled + void SetTopMostWindow(bool bTopMost); + //Gets the time duration since appplication has been launched + long long GetCallAppTicks(void); + +private: + //internal function to process AppControl request. + void ProcessAppControlRequest(RequestId reqId, const Tizen::Base::String& operationId,const Tizen::Base::Collection::IMap* pArgsMap,const Tizen::Base::String* pUriData =null); + //internal function to process AppControl request. + void ProcessWebAppControlRequest(RequestId reqId, const Tizen::Base::String& operationId,const Tizen::Base::String* pUriData); + + //internal function to handle AppControl Request for Incoming call. + void HandleIncomingCallAppControlRequest(RequestId reqId,const Tizen::Base::Collection::IMap* pArgsMap); + //internal function to handle AppControl Request for dial call. + void HandleDialCallAppControlRequest(RequestId reqId,const Tizen::Base::Collection::IMap* pArgsMap,const Tizen::Base::String* pUriData); + //Checks if the number is valid + bool CheckNumberIsValid(Tizen::Base::String phoneNumber); + + void ShowAutoRejectPopup(Tizen::Base::String contactNumber); + virtual void OnTimerExpired(Tizen::Base::Runtime::Timer &timer); + + + +private: + Tizen::Ui::Scenes::SceneId __initialSceneId; + Tizen::Base::Collection::ArrayList* __pLaunchArgs; + Tizen::Base::Collection::ArrayList __listenerList; + Tizen::Ui::Controls::Popup* __pCallRejectedIonPopup; + Tizen::Base::Runtime::Timer __callRejectedIontimer; + long long __callTicks; + Tizen::Base::Runtime::Timer* __pCallAppTimer; +}; + +#endif // _CALLAPP_H_ diff --git a/inc/CallAppControlRequestMgr.h b/inc/CallAppControlRequestMgr.h new file mode 100644 index 0000000..883961b --- /dev/null +++ b/inc/CallAppControlRequestMgr.h @@ -0,0 +1,64 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallAppControlRequestMgr.h + * @brief This is the header file for the %CallAppControlRequestMgr class. + * + * This header file contains the declarations for %CallAppControlRequestMgr class. + */ +#ifndef _CALL_APPCONTROL_REQUEST_MGR_H_ +#define _CALL_APPCONTROL_REQUEST_MGR_H_ + +class CallAppControlRequestMgr { + +public: +//create a singleton instance +static CallAppControlRequestMgr* GetInstance(void); + +private: + CallAppControlRequestMgr(void); + CallAppControlRequestMgr(CallAppControlRequestMgr& requestMgr); + virtual ~CallAppControlRequestMgr(void); + CallAppControlRequestMgr& operator =(const CallAppControlRequestMgr& requestMgr); + + result Construct(void); + static void CreateInstance(void); + static void DestroyInstance(void); + +public://methods + + //Used to check if there is any AppControl request in progress. + bool IsAppControlRunning(void); + //Used to abort any running AppControl request. + void AbortAppControlRequest(void); + //Used to complete any running AppControl request. + void AppControlRequestCompleted(void); + //Used to make Message AppControl request to compose message. + bool LaunchComposeMessageAppControl(Tizen::Base::String& contactNumber, Tizen::App::IAppControlResponseListener* pListener); + //Used to make "ViewContact" AppControl request. + bool LaunchViewContactAppControl(Tizen::Base::String& contactId, Tizen::App::IAppControlResponseListener* pListener); + //Used to make "AddContact" AppControl request. + bool LaunchAddContactAppControl(Tizen::Base::String& contactNumber, Tizen::App::IAppControlResponseListener* pListener); + //Launch "Dialer" AppControl request. + bool LaunchDialerAppControl(Tizen::App::IAppControlResponseListener* pListener); + +private: + static CallAppControlRequestMgr* __pInstance; + Tizen::App::AppControl* __pOpenedAppControl; +}; + +#endif // _CALL_APPCONTROL_REQUEST_MGR_H_ diff --git a/inc/CallAppFormFactory.h b/inc/CallAppFormFactory.h new file mode 100644 index 0000000..00bbeea --- /dev/null +++ b/inc/CallAppFormFactory.h @@ -0,0 +1,32 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef _CALLAPP_FORM_FACTORY_H_ +#define _CALLAPP_FORM_FACTORY_H_ + +#include + + +class CallAppFormFactory + : public Tizen::Ui::Scenes::IFormFactory +{ +public: + CallAppFormFactory(void); + virtual ~CallAppFormFactory(void); + + virtual Tizen::Ui::Controls::Form* CreateFormN(const Tizen::Base::String& formId, const Tizen::Ui::Scenes::SceneId& sceneId); +}; + +#endif // _CALLAPP_FORM_FACTORY_H_ diff --git a/inc/CallAppFrame.h b/inc/CallAppFrame.h new file mode 100644 index 0000000..14aa864 --- /dev/null +++ b/inc/CallAppFrame.h @@ -0,0 +1,35 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef _CALLAPP_FRAME_H_ +#define _CALLAPP_FRAME_H_ + +#include +#include + + +class CallAppFrame + : public Tizen::Ui::Controls::Frame +{ +public: + CallAppFrame(void); + virtual ~CallAppFrame(void); + +public: + virtual result OnInitializing(void); + virtual result OnTerminating(void); +}; + +#endif //_CALLAPP_FRAME_H_ diff --git a/inc/CallAppUtility.h b/inc/CallAppUtility.h new file mode 100644 index 0000000..223255b --- /dev/null +++ b/inc/CallAppUtility.h @@ -0,0 +1,72 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file PhnAppUtility.h + * @brief This is the header file for the %AppUtility class. + * + * This header file contains the declarations for %AppUtility class. + */ +#ifndef _PHN_APP_UTILITY_H_ +#define _PHN_APP_UTILITY_H_ + +#include +#include + +enum KeypadTextPosition +{ + POSITION_LEFT, + POSITION_RIGHT, + POSITION_CENTER, + POSITION_TOP_LEFT, + POSITION_TOP_CENTER, + POSITION_BOTTOM_LEFT, + POSITION_BOTTOM_CENTER +}; + +/** + * @class AppUtility + * @brief This class provides common functionalities across application through static member functions. + * Its instance cannot needed. + * + */ +class AppUtility +{ +private: + AppUtility(void); + AppUtility(const AppUtility& obj); + virtual ~AppUtility(void); + +public: + /** + * Fetches the String from resources based on + * resource id provided by "stringId". + */ + static Tizen::Base::String GetResourceString(const Tizen::Base::String& stringId); + + /** + * Fetches the Bitmap from resources and + * scales it to specified width and height, if provided. + */ + static Tizen::Graphics::Bitmap* GetBitmapFromResourcesN(const Tizen::Base::String& imagePath, int imgWidth = 0, int imgHeight = 0); + + /* + * returns the available phone memory + */ + static long long GetAvailableMemory(); +}; + +#endif // _PHN_APP_UTILITY_H_ diff --git a/inc/CallBaseForm.h b/inc/CallBaseForm.h new file mode 100644 index 0000000..47c3de6 --- /dev/null +++ b/inc/CallBaseForm.h @@ -0,0 +1,94 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallBaseForm.h + * @brief This is the header file for the %BaseForm class. + * + * This header file contains the declarations for %BaseForm class. + */ +#ifndef _PHN_BASE_FORM_H_ +#define _PHN_BASE_FORM_H_ + +#include +#include +#include +#include +#include "CallITelephonyEventListener.h" +#include "CallErrorMsgPopup.h" + +class AppCallInfo; +class CallPresentationModel; + +enum FormType +{ + FORMTYPE_OUTGOINGCALL, + FORMTYPE_EMERGENCYOUTGOINGCALL, + FORMTYPE_INCOMINGCALL, + FORMTYPE_ACTIVECALL, + FORMTYPE_EMERGENCYACTIVECALL, + FORMTYPE_ACTIVECONFCALL, + FORMTYPE_CONFCALLLIST, + FORMTYPE_ENDCALL, + FORMTYPE_MULTIPLECALLS, +}; + +/** + * @class BaseForm + * @brief This class presents a form based UI all call scenarios and provides + * common functionalities in all call forms. + * + */ +class BaseForm + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener + , public ITelephonyEventListener + , public IPopupClosedEventListener +{ +public: + BaseForm(FormType formType); + virtual ~BaseForm(void); + virtual void Initialize(void) = 0; + +public: + //Used to add user specific code after controls are added to form + virtual result OnInitializing(void); + + //From 'Tizen::Ui::IActionEventListener' + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + //Event Listener methods from ITelephonyEventListener + virtual void HandleCallConnected(Tizen::Base::Collection::IListT& pCallList); + virtual void HandleCallDisconnected(bool isLastCall, Tizen::Base::Collection::IListT& pCallList); + virtual void HandleCallHeld(bool isHeld); + virtual void HandleCallActive(bool isActive); + virtual void HandleConferenceCall(AppCallInfo& pCallInfo); + virtual void HandleIncomingCall(AppCallInfo& pCallInfo); + virtual void HandleConfCallHoldOccured(bool success); + virtual void HandleConfCallActiveOccured(bool success); + virtual void HandleCallSwapOccured(Tizen::Base::Collection::IListT& pCallList); + virtual void HandleConferenceChange(void); + virtual void HandleTelephonyError(int errorCode); + //Event Listener method from IPopupClosedEventListener + virtual void HandlePopupClosed(void); + +protected: + FormType __formType; + //Ownership + ErrorMsgPopup* __pErrorMsgPopup; + CallPresentationModel* __pCallPresentor; +}; + +#endif // _PHN_BASE_FORM_H_ diff --git a/inc/CallButtonsPanel.h b/inc/CallButtonsPanel.h new file mode 100644 index 0000000..a3704f5 --- /dev/null +++ b/inc/CallButtonsPanel.h @@ -0,0 +1,117 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallButtonsPanel.h + * @brief This is the header file for the %CallButtonsPanel class. + * + * This header file contains the declarations for %CallButtonsPanel class. + */ +#ifndef _PHN_CALL_BUTTONS_PANEL_H_ +#define _PHN_CALL_BUTTONS_PANEL_H_ + +#include +#include +#include +#include "CallBaseForm.h" +#include "CallTypes.h" + +/** + * @class CallButtonsPanel + * @brief This class presents a panel based UI for keypads used in active call + * and end call scenarios. + * + */ +class CallButtonsPanel + : public Tizen::Ui::Controls::Panel +{ +private: + enum ButtonState + { + BTN_NORMAL, + BTN_PRESS, + BTN_DIM, + }; + +public: + CallButtonsPanel(void); + virtual ~CallButtonsPanel(void); + + bool ConstructPanel(Tizen::Ui::IActionEventListener* pEventListener, FormType parentFormType); + + /** + * Overrides this method to provide user-specific initialization code after the control is added to a container. + * @remarks OnInitializing() is called when the control is about to be added to a container. + * @remarks To cancel adding this control to the parent, return E_FAILURE in this method. + * @see OnTerminating() + */ + virtual result OnInitializing(void); + + /** + * Overrides this method to provide user-specific termination code. + * @return An error code + * @remarks OnTerminating() is called right before the control is removed successfully from the container. + * @remarks To cancel removing this control from the parent, return E_FAILURE in this method. + * @see OnInitializing() + */ + virtual result OnTerminating(void); + //Called to change state, when keypad is opened or closed. + void SetKeypadButtonState(CommandIds cmdId); + //used to set or change speaker button state. + void SetSpeakerButtonState(CommandIds cmdId); + //used to set or change Mute button state. + void SetMuteButtonState(CommandIds cmdId); + //used to set the button panel state in end call form based on type of call. + void SetEndCallPanelState(bool isEnabled); + //Used to enable or disable "Add Call" Button + void EnableAddCallButton(bool enable); + //Used to enable or disable "Join Call" Button + void EnableJoinCallButton(bool enable); + // Used to set the ViewContact is present or not + void ShowViewContactButton(void); + // Used to set the AddToContact is present or not + void ShowAddContactButton(void); + //set the buttons in the panel as the top controls. Chk if its needed in RC2 + void SetButtonPosition(void); + void ShowOrHideAddtoContactsButton(bool isEnabled); + +protected: + // Construct the panel to be shown in "End Call" form + result ConstructEndCallPanel(void); + // Construct the panel to be shown in "Active Call" form + result ConstructActiveCallPanel(void); + // Draws the background for the panel + result AddBackgroundBitmap(void); + // Draws the bitmap at the correct position on the button + void SetBitmapsToButton(const Tizen::Base::String& buttonId, const Tizen::Base::String& buttonName, const Tizen::Base::String& imgPath, ButtonState state); + // Draws the text at the correct position on the button + void SetEnrichedTextToButton(const Tizen::Base::String& buttonName, Tizen::Graphics::Canvas* pCanvas, ButtonState state, int verticalPos); + // Adds the action listener for the buttons + void AddKeyPadActionListener(const Tizen::Base::String& buttonId, CommandIds cmdId); + //Disable the unused buttons for Outgoing / Emergency Forms + void DisableKeysForOutgoingCall(void); + + + //set the View contact bitmaps + void SetViewContacBitmapToButton(const Tizen::Base::String& buttonId, const Tizen::Base::String& buttonName, const Tizen::Base::String& imgBackgroundPath,const Tizen::Base::String& imgPath, ButtonState state); + +private: + //action listener + Tizen::Ui::IActionEventListener* __pActionListener; + FormType __parentFormType; +}; + +#endif /* _PHN_CALL_BUTTONS_PANEL_H_ */ diff --git a/inc/CallCommonUtils.h b/inc/CallCommonUtils.h new file mode 100644 index 0000000..9cfe4c0 --- /dev/null +++ b/inc/CallCommonUtils.h @@ -0,0 +1,148 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallCommonUtils.h + * @brief This is the header file for the %DialUtil class. + * + * This header file contains the declarations for commonly used functions. + */ +#ifndef _PHN_COMMON_UTILS_H_ +#define _PHN_COMMON_UTILS_H_ + +#include +#include + +enum DialerFontStyle +{ + FONT_CALLING_TEXT, + FONT_KEYPAD_NUMBER, + FONT_KEYPAD_TEXT, + FONT_KEYPAD_P, + FONT_KEYPAD_PLUS, + FONT_KEYPAD_CANCEL, + FONT_SUGGESTION_NAME, + FONT_SUGGESTION_MOBILE, + FONT_SUGGESTION_NUMBER, + FONT_SUGGESTION_LIST_NUMBER, + FONT_HIGHLIGHT_SEARCH_KEYWORD +}; + +//Command Ids used in Dialer tab. Always append new command ids at bottom. +enum DialCommandIds +{ + NUM_KEY1 = 1, + NUM_KEY2, + NUM_KEY3, + NUM_KEY4, + NUM_KEY5, + NUM_KEY6, + NUM_KEY7, + NUM_KEY8, + NUM_KEY9, + PAUSE_KEY, + NUM_KEY0, + HASH_KEY, + VIDEOCALL_KEY, + CALL_KEY, + CLEAR_KEY, + CANCEL_KEY, + DIAL_CMD_TOTAL_COUNT, +}; + +enum LogContextActionIds +{ + IDA_LIST_ELEMENT_CALL = 105, + IDA_LIST_ELEMENT_VIDEO_CALL, + IDA_LIST_ELEMENT_MESSAGE, + IDA_LIST_ELEMENT_DELETE, + +}; + + +extern const int ID_NAME_STRING; +extern const int ID_NUMBER_STRING; +extern const int ID_TIME_STRING; +extern const int ID_CONTACT_BITMAP; +extern const int ID_CALLTYPE_BITMAP; + + +extern const int X_TEXT_LINE1_ITEM; +extern const int Y_TEXT_LINE1_ITEM; +extern const int H_TEXT_LINE1_ITEM; +extern const int W_TEXT_LINE1_ITEM; + +extern const int X_TEXT_LINE2_ITEM; +extern const int Y_TEXT_LINE2_ITEM; +extern const int H_TEXT_LINE2_ITEM; +extern const int W_TEXT_LINE2_ITEM; + +extern const int X_TEXT_TIME_ITEM; +extern const int Y_TEXT_TIME_ITEM; +extern const int H_TEXT_TIME_ITEM; +extern const int W_TEXT_TIME_ITEM; + +extern const int X_CONTACT_BITMAP_ITEM; +extern const int Y_CONTACT_BITMAP_ITEM; +extern const int H_CONTACT_BITMAP_ITEM; +extern const int W_CONTACT_BITMAP_ITEM; + +extern const int X_CALLTYPE_BITMAP_ITEM; +extern const int Y_CALLTYPE_BITMAP_ITEM; +extern const int H_CALLTYPE_BITMAP_ITEM; +extern const int W_CALLTYPE_BITMAP_ITEM; + +extern const int X_DIALER_BTN_TXT; +extern const int W_DIALER_BTN_NUM_TXT; +extern const int W_DIALER_BTN_ALPHA_TXT; + +/** + * @class DialUtil + * @brief This class provides static public utility functions to dialer module. + * + */ +class DialUtil +{ +private: + DialUtil(void){}; + DialUtil(const DialUtil& obj){}; + virtual ~DialUtil(void){}; + +public: + //used to get text font for button in dialer tab. + static Tizen::Graphics::Font* GetTextFontN(int textFontStyle); + //used to get text color for button in dialer tab. + static Tizen::Graphics::Color* GetTextColorN(int textColor, int buttonStatus); + //Function to check if keyword is numeric. This function assumes that a string starting with digit will be numeric. + //If needed, it might be implemented in more generic way to check all characters for digits. + static bool IsNumericString(Tizen::Base::String& keyWord); + //Sets the 'bgImg' image to 'pCanvas' Canvas, if image is a 9-patch image. + static void Draw9PatchToCanvas(Tizen::Graphics::Canvas& pCanvas, const Tizen::Base::String& bgImg); + //Used to set image to canvas. + static void DrawImageToCanvas(const Tizen::Base::String& image, Tizen::Graphics::Dimension imageDimention, Tizen::Graphics::Canvas& pCanvas, int pos); + //Used to convert text to Enriched text and set it to canvas. + static void DrawTextToCanvas(const Tizen::Base::String& buttonText1, int fontSize, Tizen::Graphics::Canvas& pCanvas, int pos, int buttonStatus); + //Used to set nnormal, pressed image to button. + static void DrawCanvasToButton(Tizen::Graphics::Canvas* pCanvasNormal, Tizen::Graphics::Canvas* pCanvasPressed, Tizen::Ui::Controls::Button* pButton); + //Used to convert provided digit to its equivalent String instance. + static Tizen::Base::String ConvertDialedNumberToString(int dialNumber); + //Function used to fetch a list of possible names mapped to 'nextCharPos'. + static Tizen::Base::Collection::IList* FetchPossibleNamesListN(const Tizen::Base::String& prevSearchStr, int nextCharPos); + //Function used to convert substring of 'name' to keys typed, eg. Ani -> 264 + static void ConvertNameToNumericKeys(Tizen::Base::String& subContactName, Tizen::Base::String& possibleKeysTyped); +}; + +#endif /* _PHN_COMMON_UTILS_H_ */ diff --git a/inc/CallConfCallerListForm.h b/inc/CallConfCallerListForm.h new file mode 100644 index 0000000..939945e --- /dev/null +++ b/inc/CallConfCallerListForm.h @@ -0,0 +1,113 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallConfCallerListForm.h + * @brief This is the header file for the %ConfCallerListForm class. + * + * This header file contains the declarations for %ConfCallerListForm class. + */ +#ifndef _PHN_CONF_CALLER_LIST_FORM_H_ +#define _PHN_CONF_CALLER_LIST_FORM_H_ + +#include +#include +#include +#include "CallBaseForm.h" +#include "CallTypes.h" + +class AppCallInfo; + +/** + * @class ConfCallerListForm + * @brief This class presents a form based UI for participants list of conference call. + * + */ +class ConfCallerListForm + : public BaseForm + , public Tizen::Ui::Scenes::ISceneEventListener + , public Tizen::Base::Runtime::ITimerEventListener + , public Tizen::Ui::Controls::IFormBackEventListener + , public Tizen::Ui::Controls::ITableViewItemProvider + , public Tizen::Ui::IOrientationEventListener + , public Tizen::Social::IAddressbookChangeEventListener + , public Tizen::System::ISettingEventListener +{ +public: + ConfCallerListForm(void); + virtual ~ConfCallerListForm(void); + //From BaseForm + virtual void Initialize(void); + +public: + virtual result OnInitializing(void); + virtual result OnTerminating(void); + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs); + virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId); + //From IOrientationEventListener + virtual void OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus); + + //Disable all the elements + void DisableAllControls(void); + void OnConfCallHoldTelephoneCallBackOccured(bool success); + void OnConfCallActiveTelephoneCallBackOccured(bool success); + bool IsConfCallStateInProgress(void); + void SetConfCallStateInProgress(bool progress); + // From 'Container'. + // Called when the container needs to draw itself. @n + // Users can override this method to display user-specific drawings. @n + // This method is called after the container has drawn itself, but just before the container draws its child controls. + // + virtual result OnDraw(void); + // Handle change in conf call list + void HandleParticipantsChanged(void); + //IAddressbookChangeEventListener + virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList); + virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList); + + virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer); + virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source); + //ITableViewItemProvider + virtual int GetItemCount(void); + virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int itemIndex, int itemWidth); + virtual bool DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem); + virtual void UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem); + virtual int GetDefaultItemHeight(void); + + virtual void OnSettingChanged(Tizen::Base::String& key); + +private: + // Add the action listener for the buttons + void AddActionListener(const Tizen::Base::String& keyName, CommandIds cmdId); + // Method to show call duration/state(held) for call in progress + void ShowTimerInfo(const Tizen::Base::String& timerLblName, long long startTime = 0); + // Method to set "Hold" Button status + void SetHoldButtonStatus(bool isCallOnHold); + void CreateItemAndAddActionListener( Tizen::Ui::Controls::Button& splitButton, Tizen::Ui::Controls::Button& endButton, Tizen::Ui::Controls::Label& callerLabel, SplitConfCallerCmdIds splitCmdId,EndConfCallerCmdIds EndCmdId, const Tizen::Base::String& displayName); + void CreateTableView(void); + +private: + AppCallInfo* __pConfCallInfo; + //Timer used to show call time + Tizen::Base::Runtime::Timer* __pConfCallTimer; + Tizen::Social::Addressbook* __pAddressbook; + Tizen::Ui::Controls::TableView* __pList; + bool __isCallSplit; + bool __isConfCallStateInProgress; +}; + +#endif //_PHN_CONF_CALLER_LIST_FORM_H_ diff --git a/inc/CallCustomItemBgElement.h b/inc/CallCustomItemBgElement.h new file mode 100644 index 0000000..eabe76d --- /dev/null +++ b/inc/CallCustomItemBgElement.h @@ -0,0 +1,45 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallCustomItemBgElement.h + * @brief This is the header file for the %CustomItemBgElement class. + * + * This header file contains the declarations for %CustomItemBgElement class. + */ +#ifndef _PHN_CUSTOM_ITEM_BG_ELEMENT_H_ +#define _PHN_CUSTOM_ITEM_BG_ELEMENT_H_ + +#include +#include + +/** + * @class CustomItemBgElement + * @brief This class presents a custom drawing for list item in settings forms. + * + */ +class CustomItemBgElement + : public Tizen::Ui::Controls::ICustomElement +{ +public: + CustomItemBgElement(void); + virtual ~CustomItemBgElement(void); + + //From ICustomElement + virtual bool OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus status); +}; + +#endif // _PHN_CUSTOM_ITEM_BG_ELEMENT_H_ diff --git a/inc/CallDtmfKeypadPanel.h b/inc/CallDtmfKeypadPanel.h new file mode 100644 index 0000000..b1d7b5e --- /dev/null +++ b/inc/CallDtmfKeypadPanel.h @@ -0,0 +1,80 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallDtmfKeypadPanel.h + * @brief This is the header file for the %DtmfKeyPadPanel class. + * + * This header file contains the declarations for %DtmfKeyPadPanel class. + */ +#ifndef _PHN_DTMF_KEYPAD_PANEL_H_ +#define _PHN_DTMF_KEYPAD_PANEL_H_ + +#include +#include + +/** + * @class DtmfKeyPadPanel + * @brief This class presents a panel based UI for DTMF keypad + * shown while active call scenarios. + * + */ +class DtmfKeyPadPanel + : public Tizen::Ui::Controls::Panel +{ +public: + DtmfKeyPadPanel(void); + virtual ~DtmfKeyPadPanel(void); + bool Initialize(Tizen::Ui::IActionEventListener* pEventListener,Tizen::Graphics::Rectangle& boundsRect); + + virtual result OnInitializing(void); + virtual result OnTerminating(void); + void setKeysPanelBounds(void); + // Draws the bitmap at the correct position on the buttons + result SetBackgroundtoButton(); +protected: + + enum DialerFontStyle + { + FONT_CALLING_TEXT, + FONT_KEYPAD_NUMBER, + FONT_KEYPAD_TEXT, + FONT_KEYPAD_P, + FONT_KEYPAD_PLUS, + FONT_KEYPAD_CANCEL + }; + //Add action listener. + void AddListenersToButtons(); + void SetBitmapsToButton(Tizen::Base::String& buttonId,const Tizen::Base::String& buttonText,int actionID); + //Sets the background bitmap to button canvas in Pressed state. + result SetPressedBgToCanvas(Tizen::Graphics::Canvas& pCanvas, const Tizen::Base::String& bgImg); + // Draws the image at the correct position on the button + void DrawImageToCanvas(const Tizen::Base::String& image, Tizen::Graphics::Dimension imageDimention, Tizen::Graphics::Canvas& pCanvas, int pos); + // Draws the text at the correct position on the button + void DrawTextToCanvas(const Tizen::Base::String& buttonText1, int fontSize, Tizen::Graphics::Canvas& pCanvas, int pos, int buttonStatus); + // retrieves the position for the text/image in the button + void GetPositionToDraw(Object* item, Tizen::Graphics::Canvas* pCanvas, int itemType, int pos, Tizen::Graphics::Point* itemPos); + // Gets the font based on the style + Tizen::Graphics::Font* GetTextFontN(int textFontStyle); + // Get the color to be set for the text + Tizen::Graphics::Color* GetTextColorN(int textColor, int buttonStatus); + +private: + //action listener + Tizen::Ui::IActionEventListener* __pActionListener; +}; + +#endif // _PHN_DTMF_KEYPAD_PANEL_H_ diff --git a/inc/CallEndCallForm.h b/inc/CallEndCallForm.h new file mode 100644 index 0000000..1bd8c62 --- /dev/null +++ b/inc/CallEndCallForm.h @@ -0,0 +1,135 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallEndCallForm.h + * @brief This is the header file for the %EndCallForm class. + * + * This header file contains the declarations for %EndCallForm class. + */ +#ifndef _PHN_END_CALL_FORM_H_ +#define _PHN_END_CALL_FORM_H_ + +#include +#include +#include +#include "CallBaseForm.h" +#include "CallTypes.h" +#include "CallIAppStateChangeListner.h" + +class CallButtonsPanel; + +/** + * @class EndCallForm + * @brief This class presents a form based UI for end call scenarios. + * + */ +class EndCallForm + : public BaseForm + , public Tizen::Ui::Scenes::ISceneEventListener + , public Tizen::Base::Runtime::ITimerEventListener + , public Tizen::App::IAppControlResponseListener + , public Tizen::Social::IAddressbookChangeEventListener + , public IAppStateChangeListener + , public Tizen::Ui::IOrientationEventListener +{ +public: + EndCallForm(void); + virtual ~EndCallForm(void); + //From BaseForm + virtual void Initialize(void); + +public: + virtual result OnInitializing(void); + virtual result OnTerminating(void); + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + + virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs); + virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId); + + /** + * Called when the container needs to draw itself. @n + * Users can override this method to display user-specific drawings. @n + * This method is called after the container has drawn itself, but just before the container draws its child controls. + */ + virtual result OnDraw(void); + + virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer); + + /** + * Called when the application control is completed. + * @param[in] providerId The provider ID + * @param[in] operationId The operation ID used in application control invocation + * @param[in] pResultList The list of callback strings of application control + * @remarks The specified @c pResultList provides the result code for the first array element. + * @remarks When the invoked application control is terminated without sending a result, + * then this method is invoked with @c pResultList and it contains App::APPCONTROL_RESULT_TERMINATED. + * @remarks Switching forms using Tizen::Ui::Controls::Frame::SetCurrentForm() in this listener disables the upcoming form + * (UiApp::OnForeground()). If UiApp::OnForeground() is being used in the application logic, + * it is recommended to avoid switching forms in this listener. + * @see Tizen::App::AppControl + */ + virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData); + //Used to set the Viewcontact button state in the end call form + void ShowViewContactButton(void); + //Used to set the Viewcontact button state in the end call form + void ShowAddContactButton(void); + // Called by AddressBook to notify when contacts are changed. + virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList); + // Called by AddressBook to notify when categories are changed. + virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList) {}; + //Called when App comes to foreground + virtual void OnForeground(void); + //Called when App goes to background + virtual void OnBackground(void); + //Called when screen goes off + virtual void OnScreenOff(void){}; + //From IOrientationEventListener + virtual void OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus); + + void UpdatePersonDetail(void); + +private: + //initialise the end call panel + void InitializeCallButtonsPanel(void); + //Add the action listener for the buttons + void AddKeyPadActionListener(const Tizen::Base::String& keyName, CommandIds cmdId); + // Method to show phone number on screen for all calls except conference call. + void ShowPhoneNumber(const Tizen::Base::String& phoneNumber, const Tizen::Base::String& lblName); + // Method to show caller name and photo for all calls. + void ShowPersonDetails(const Tizen::Base::String& phoneNumber, const Tizen::Base::String& nameLblName, const Tizen::Base::String& photoLblName, AppCallInfo* pCallInfo); + // Method to show thumbnail + void ShowCallersPhotoThumbnail(const Tizen::Graphics::Bitmap& pPhotoId); + //private method to handle whether to close App or goto initial scene, after no more active calls are left. + void HandleLastCallCompletion(void); + //Handle Add to contacts button press + void HandleAddToContacts(void); + //Method to show thumbnail image + void ShowThumbnailImage(const Tizen::Graphics::Bitmap* pPhotoId,const Tizen::Base::String& photoLabel); + +private: + //Custom Buttons Panel + CallButtonsPanel* __pCallButtonsPanel; + Tizen::Base::String* __pContactNumber; + //Timer used to show End call scene for 3 sec + Tizen::Base::Runtime::Timer* __pEndCallEventTimer; + Tizen::Social::Addressbook* __pAddressBook; + Tizen::Ui::Controls::Label* __pSmallPhotoLabel; + bool __isMsgAppControlLaunched; + bool __isContactAppControlLaunched; +}; + +#endif // _PHN_END_CALL_FORM_H_ diff --git a/inc/CallErrorMsgPopup.h b/inc/CallErrorMsgPopup.h new file mode 100644 index 0000000..a89d212 --- /dev/null +++ b/inc/CallErrorMsgPopup.h @@ -0,0 +1,78 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallErrorMsgPopup.h + * @brief This is the header file for the %ErrorMsgPopup class. + * + * This header file contains the declarations for %ErrorMsgPopup class. + */ +#ifndef _PHN_ERROR_MSG_POPUP_H_ +#define _PHN_ERROR_MSG_POPUP_H_ + +#include +#include + +/** + * @class IPopupClosedEventListener + * @brief This interface is used to notify the popup is closed event to Scenes. + * + */ +class IPopupClosedEventListener +{ +public: + virtual ~IPopupClosedEventListener(void){}; + // Called when the error message Pop-up is closed. + virtual void HandlePopupClosed(void) = 0; +}; + +/** + * @class ErrorMsgPopup + * @brief This class shows message popup in error condition. + * + */ +class ErrorMsgPopup: public Tizen::Ui::Controls::Popup + ,public Tizen::Base::Runtime::ITimerEventListener +{ +public: + ErrorMsgPopup(IPopupClosedEventListener* pEventListener); + virtual ~ErrorMsgPopup(void); + /** + * Function is used to show error message popup + * based on the error code received. + */ + void ShowErrorMsgPopupN(int errorCode); + + //From ITimerEventListener + virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer); + +private: + void ConstructPopup(int errorCode); + //Function is used to fetch error messages based on error code + Tizen::Base::String FetchErrorMessage(int errorCode); + //draws and shows the popup on screen + void ShowPopup(void); + +private: + //Timer used to show message + Tizen::Base::Runtime::Timer* __pTimer; + //Listener to popup closed event. + IPopupClosedEventListener* __pEventListener; + //used to close the popup + int __popupModalResult; +}; + +#endif // _PHN_ERROR_MSG_POPUP_H_ diff --git a/inc/CallIAppStateChangeListner.h b/inc/CallIAppStateChangeListner.h new file mode 100644 index 0000000..632f0a4 --- /dev/null +++ b/inc/CallIAppStateChangeListner.h @@ -0,0 +1,38 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallIAppStateChangeListner.h + * @brief This is the header file for the ICallIAppStateChangeListner class. + */ + +#ifndef _PHN_STATE_CHANGE_LISTNER_H_ +#define _PHN_STATE_CHANGE_LISTNER_H_ + +#include + +class IAppStateChangeListener + : public Tizen::Base::Object +{ +public: + virtual ~IAppStateChangeListener(void) {} + + virtual void OnForeground(void) = 0; + virtual void OnBackground(void) = 0; + virtual void OnScreenOff(void) = 0; +}; + +#endif /* _PHN_STATE_CHANGE_LISTNER_H_ */ diff --git a/inc/CallICalllogChangeListener.h b/inc/CallICalllogChangeListener.h new file mode 100644 index 0000000..b4ddcd6 --- /dev/null +++ b/inc/CallICalllogChangeListener.h @@ -0,0 +1,39 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * @file CallICalllogChangeListener.h + * @brief This is the header file for the %ICalllogChangeListener class. + * + * This header file contains the declarations for %ICalllogChangeListener class. + */ +#ifndef _PHN_CALL_LOG_CHANGE_LISTENER_H_ +#define _PHN_CALL_LOG_CHANGE_LISTENER_H_ + +/** + * @class ICalllogChangeListener + * @brief This class presents call back function from call log module. + * + */ +class ICalllogChangeListener +{ +public: + virtual ~ICalllogChangeListener(void){}; + + virtual void OnCalllogChanged(void) = 0; + +}; + +#endif //_PHN_CALL_LOG_CHANGE_LISTENER_H_ diff --git a/inc/CallIPopupItemSelectListener.h b/inc/CallIPopupItemSelectListener.h new file mode 100644 index 0000000..16210c8 --- /dev/null +++ b/inc/CallIPopupItemSelectListener.h @@ -0,0 +1,48 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallIPopupItemSelectListener.h + * @brief This is the header file for the %IPopupItemSelectListener class. + * + * This header file contains the declarations for %IPopupItemSelectListener class. + */ +#ifndef _IPOPUP_ITEM_SELECT_LISTENER_H_ +#define _IPOPUP_ITEM_SELECT_LISTENER_H_ + +#include + +/** + * @class IPopupItemSelectListener + * @brief Class IPopupItemSelectListener is listener for popup object deletion. + * + */ +class IPopupItemSelectListener + : public Tizen::Base::Runtime::IEventListener +{ +public: + /** + * This is the destructor for this class. + */ + virtual ~IPopupItemSelectListener(void) {} + + /** + * On Item selected. + */ + virtual void OnItemSelected(int itemIndex) = 0; +}; + +#endif // _IPOPUP_ITEM_SELECT_LISTENER_H_ diff --git a/inc/CallISettingsEventListener.h b/inc/CallISettingsEventListener.h new file mode 100644 index 0000000..b8c15ed --- /dev/null +++ b/inc/CallISettingsEventListener.h @@ -0,0 +1,54 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallISettingsEventListener.h + * @brief This is the header file for the %ISettingsEventListener class. + * + * This header file contains the declarations for %ISettingsEventListener class. + */ +#ifndef _PHN_I_SETTINGS_EVENT_LISTENER_H_ +#define _PHN_I_SETTINGS_EVENT_LISTENER_H_ + +#include "CallSettingsConstants.h" + +/** + * @class ISettingsEventListener + * @brief This interface is used to listen to events from Telephony Manager. + * + */ +class ISettingsEventListener +{ +public: + virtual ~ISettingsEventListener(void){}; + + //Handle the response for getCallWaiting request + virtual void HandleGetCallWaitingResponse(bool isCallSuccessful, bool callWaitingActivated) = 0; + //Handle the response for setCallWaiting request + virtual void HandleSetCallWaitingResponse(bool isCallSuccessful, bool isCallWaitingEnabled) = 0; + //Handle the response for getCallForwarding request + virtual void HandleGetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool callForwardActivated, int noReplyWaitTime) = 0; + //Handle the response for setCallForwarding request + virtual void HandleSetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime) = 0; + //Handle the response for setcallBarring request + virtual void HandleSetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated) = 0; + //Handle the response for getCallBarring request + virtual void HandleGetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated) = 0; + //Handle flight mode change + virtual void HandleFlightMode(bool isFlightModeActivated) = 0; +}; + +#endif // _PHN_I_SETTINGS_EVENT_LISTENER_H_ diff --git a/inc/CallITelephonyEventListener.h b/inc/CallITelephonyEventListener.h new file mode 100644 index 0000000..71b52e1 --- /dev/null +++ b/inc/CallITelephonyEventListener.h @@ -0,0 +1,116 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallITelephonyEventListener.h + * @brief This is the header file for the %ITelephonyEventListener class. + * + * This header file contains the declarations for %ITelephonyEventListener class. + */ +#ifndef _PHN_I_TELEPHONY_EVENT_LISTENER_H_ +#define _PHN_I_TELEPHONY_EVENT_LISTENER_H_ + +#include "CallInfo.h" + +/** + * @class ITelephonyEventListener + * @brief This interface is used to listen to events from Telephony Manager. + * + */ +class ITelephonyEventListener +{ +public: + virtual ~ITelephonyEventListener(void){}; + + /** + * Called when the dialed call / incoming call is accepted. + * Implement this to handle voice call events. + * @param[out] pCallList - list of active calls. + */ + virtual void HandleCallConnected(Tizen::Base::Collection::IListT& pCallList) = 0; + + /** + * This function is called when a call is disconnected. It returns the list of active calls, if any is existing. + * Otherwise it returns the last ended call along with call duration and cause to show. + * + * @param[out] isLastCall - true, if this call was last call. + * @param[out] pCallList - list of calls - ended Call if last call, otherwise currently active call. + */ + virtual void HandleCallDisconnected(bool isLastCall, Tizen::Base::Collection::IListT& pCallList) = 0; + + /** + * This function is called when a call is held. It returns the list of active calls + * + * @param[out] isHeld - true for currently held call + */ + virtual void HandleCallHeld(bool isHeld) = 0; + /** + * This function is called when a call is active. It returns the list of active calls + * + * @param[out] isActive - true for currently active call + */ + virtual void HandleCallActive(bool isActive) = 0; + /** + * This function is called when two calls are joined and a conference call is setup. + * + * @param[in] pCallInfo - The conference call information data. + */ + virtual void HandleConferenceCall(AppCallInfo& pCallInfo) = 0; + + /** + * This function is called when incoming call is received. + * + * @param[in] pCallInfo - The conference call information data. + */ + virtual void HandleIncomingCall(AppCallInfo& pCallInfo) = 0; + + /** + * Called when the dialed call / incoming call is accepted. + * Implement this to handle voice call events. + * @param[out] pCallList - list of active calls. + */ + virtual void HandleCallSwapOccured(Tizen::Base::Collection::IListT& pCallList) = 0; + + /* + * Called when the conference call is held. + * Implement this to handle voice call events. + * @param[out] success - If true then the conference call is successfully held else not. + */ + virtual void HandleConfCallHoldOccured(bool success) = 0; + + /* + * Called when the conference call is active. + * Implement this to handle voice call events. + * @param[out] success - If true then the conference call is successfully active + */ + virtual void HandleConfCallActiveOccured(bool success) = 0; + + /** + * Called when the conference list changes. + * Implement this to handle voice call events. + * @param[out] pCallInfo - The conference call information data. + */ + virtual void HandleConferenceChange(void) = 0; + + /** + * Telephony event callback sent to listeners to handle + * error and show customized error message. + * @ param[out] errorCode - error cause returned by SLP TAPI. + */ + virtual void HandleTelephonyError(int errorCode) = 0; +}; + +#endif // _PHN_I_TELEPHONY_EVENT_LISTENER_H_ diff --git a/inc/CallIncomingCallForm.h b/inc/CallIncomingCallForm.h new file mode 100644 index 0000000..be03675 --- /dev/null +++ b/inc/CallIncomingCallForm.h @@ -0,0 +1,178 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallIncomingCallForm.h + * @brief This is the header file for the %IncomingCallForm class. + * + * This header file contains the declarations for %IncomingCallForm class. + */ +#ifndef _PHN_INCOMING_CALL_FORM_H_ +#define _PHN_INCOMING_CALL_FORM_H_ + +#include +#include +#include +#include "CallBaseForm.h" +#include "CallTypes.h" +#include "CallIPopupItemSelectListener.h" +#include "CallOptionPopup.h" +#include "CallIAppStateChangeListner.h" + +/** + * @class IncomingCallForm + * @brief This class presents a form based UI for incoming call scenarios. + * + */ +class IncomingCallForm + : public BaseForm + , public IAppStateChangeListener + , public Tizen::Ui::Controls::IFormBackEventListener + , public Tizen::Ui::Controls::ITableViewItemEventListener + , public Tizen::Ui::Controls::ITableViewItemProvider + , public Tizen::Ui::Scenes::ISceneEventListener + , public Tizen::Ui::ITouchEventListener + , public Tizen::Ui::IOrientationEventListener + , public IPopupItemSelectListener +{ +public: + IncomingCallForm(void); + virtual ~IncomingCallForm(void); + //From BaseForm + virtual void Initialize(void); + +public: + virtual result OnInitializing(void); + virtual result OnTerminating(void); + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + + virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs); + virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId); + + /** + * Called when the container needs to draw itself. @n + * Users can override this method to display user-specific drawings. @n + * This method is called after the container has drawn itself, but just before the container draws its child controls. + */ + virtual result OnDraw(void); + + // From 'ITableViewItemProvider' - Gets the total number of items in the specified group. + virtual int GetItemCount(void); + // From 'ITableViewItemProvider' - Creates the specified item. + virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int itemIndex, int itemWidth); + // From 'ITableViewItemProvider' - Deletes the specified item. + virtual bool DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem); + // From 'ITableViewItemProvider' - Updates the specified item. + virtual void UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem); + // From 'ITableViewItemProvider' - Gets the default height of an item. + virtual int GetDefaultItemHeight(void); + //Handles call disconnect + void CallDisconnected(void); + // From 'ITableViewItemEventListener' - Called when the state of a TableViewItem in the TableView is changed. + virtual void OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status){}; + // From 'ITableViewItemEventListener' - Called when the TableViewContextItem is opened or closed. + virtual void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated){}; + // From 'ITableViewItemEventListener' - Called when the item is reordered. + virtual void OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo){}; + + //From ITouchEventListener + virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo); + virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo); + virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo); + virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){}; + virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){}; + virtual void OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) {}; + virtual void OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) {}; + virtual void OnTouchDoublePressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) {}; + virtual void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs); + virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source); + //From IOrientationEventListener + virtual void OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus); + + //From IPopupEventListener + void OnItemSelected(int itemIndex); + //From IAppStateChangeListener + virtual void OnForeground(void); + virtual void OnBackground(void){}; + virtual void OnScreenOff(void); + +private: + // Method to fetch person details using phone number. + void ShowPersonDetails(const Tizen::Base::String& phoneNumber, const Tizen::Base::String& contactLblName, const Tizen::Base::String& nameLblName, AppCallInfo* pCallInfo); + // Method to show caller name for all calls. + void SetTextToLabel(const Tizen::Base::String& textToBeSet, const Tizen::Base::String& lblName); + // This function draws the caller's photo onto screen. + void ShowCallerPhoto(const Tizen::Graphics::Bitmap* pPhotoId); + //This function is used to show small Thumbnail size photo of caller. + void ShowCallersPhotoThumbnail(const Tizen::Graphics::Bitmap& pPhotoId); + // Method to show call duration/state(held) for call in progress + void ShowTimerInfo(const Tizen::Base::String& timerLblName, const Tizen::Base::String& textToBeDisplayed); + // Method to hide the "Reject with Message" panel + void HideRejectPanel(void); + // Method to create the Tableview to show the list of messages for the "Reject with Message" panel + void InitializeTableView(void); + // Method to create the canvas for the "Reject with Message" Button + void SetBitmapToRejectMessageButton(const Tizen::Base::String& btnName, const Tizen::Base::String& bgBitmap + , const Tizen::Base::String& arrowBitmap, const Tizen::Base::String& messageIconBitmap, bool isButtonInPanel, bool setButtonPressBitmap); + void HandleMultipleCallSelection(int itemIndex); + // Method to initialize footer + void InitializeFooter(void); + // Method to show footer + void ShowRejectMessageFooter(void); + // Method to hide footer + void HideRejectMessageFooter(void); + //Method used to show thumbnail image + void ShowThumbnailImage(const Tizen::Graphics::Bitmap* pPhotoId); + //Hides the rejetec message panel + void HideRejectMessagePanel(void); + //Shows reject message panel + void ShowRejectMessagePanel(void); + //sets reject message panel bounds + void SetRejectMessagePanelBounds(void); + +private: + //contact number for incoming call + Tizen::Base::String* __pActiveContactNo; + //Call Handle for the incoming call + int __incomingCallHandle; + //List for holding the rejectMessages from settings + Tizen::Base::Collection::IListT* __pRejectMessageList; + bool __isAnswerCallStarted; + bool __isRejectCallStarted; + Tizen::Base::Collection::ArrayList* __pAcceptArrowLabelsList; + Tizen::Base::Collection::ArrayList* __pRejectArrowLabelsList; + Tizen::Graphics::Bitmap* __pRejectCircle; + Tizen::Graphics::Bitmap* __pAcceptCircle; + Tizen::Graphics::Bitmap* __pAcceptDial; + Tizen::Graphics::Bitmap* __pRejectDial; + Tizen::Graphics::Bitmap* __pAcceptArrow; + Tizen::Graphics::Bitmap* __pRejectArrow; + Tizen::Ui::Controls::Label* __pAcceptLabel; //for dial + Tizen::Ui::Controls::Label* __pRejectLabel; + Tizen::Ui::Controls::Label* __pAcceptArrowLabel; + Tizen::Ui::Controls::Label* __pRejectArrowLabel; + Tizen::Ui::Controls::Panel* __pCallHandlePanel; + Tizen::Ui::Animations::VisualElement* __pAcceptVisElem; + Tizen::Ui::Animations::VisualElement* __pRejectVisElem; + Tizen::Ui::Animations::VisualElement* __pRejectFinalVisElem; + Tizen::Ui::Animations::VisualElement* __pAcceptFinalVisElem; + Tizen::Ui::Animations::VisualElement* __pAcceptArrowVisElem; + Tizen::Ui::Animations::VisualElement* __pRejectArrowVisElem; + CallOptionPopup* __pOptionPopup; + Tizen::Ui::Controls::Label* __pSmallPhotoLabel; +}; + +#endif // _PHN_INCOMING_CALL_FORM_H_ diff --git a/inc/CallInfo.h b/inc/CallInfo.h new file mode 100644 index 0000000..1458554 --- /dev/null +++ b/inc/CallInfo.h @@ -0,0 +1,179 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallInfo.h + * @brief This is the header file for the %CallInfo class. + * + * This header file contains the declarations for %CallInfo class. + */ +#ifndef _PHN_CALL_INFO_H_ +#define _PHN_CALL_INFO_H_ + +#include +#include +#include +#include "CallTypes.h" + +/** + * @class CallInfo + * @brief This class holds information about currently active Single party, + * mutli-party or conference calls. + * + */ +class AppCallInfo + : public Tizen::Base::Object +{ +public: + enum CallType + { + VOICE_CALL, + VIDEO_CALL, // Currently not supported + }; + +public: + // Default Constructor. + AppCallInfo(void); + virtual ~AppCallInfo(void); + + //returns if a call is conference call or not + bool IsConferenceCall(void); + //Sets the conferenceflag for a call + void SetConference(bool isConferenceCall); + //returns if a call is emergency call or not + bool IsEmergency(void); + //Sets if a call is emergency call + void SetEmergency(bool isEmergency); + //get the call Handle + Tizen::Base::Long* GetCallHandle(void); + //Set the call handle + void SetCallHandle(unsigned int handle); + //Get for Contact Number for the call + Tizen::Base::String& GetContactNumber(void); + //Set the contact number for the call + void SetContactNumber(Tizen::Base::String& contactNumber); + void ResetContactNumber(Tizen::Base::String* contactNumber); + void ResetContactInfo(const Tizen::Social::Contact* contact); + //Sets the contact info for the call + void SetContactInfo(const Tizen::Social::Contact& contact); + //returns contact info if present in contacts db + const Tizen::Social::Contact* GetContactInfo(void); + //returns if a call is held call or not + bool IsOnHold(void); + //Sets the held call for the call + void SetOnHold(bool onHold); + //get the connected time for the call + long long GetCallConnectTime(void); + //Sets the connected time when call started + void SetCallConnectTime(long long connectTime); + //Set the duration time wrt to call app time + void SetDurationTime(long long durationTime); + //get the notified / dialed time when call started + long long GetCallNotificationTime(void); + //Gets the duration wrt to callapp time + long long GetDurationTime(void); + //Sets the notified / dialed time when call started + void SetCallNotificationTime(long long callNotificationTime); + //gets the end call cause + Tizen::Base::String& GetEndCallCause(void); + //Sets the end call cause + void SetEndCallCause(Tizen::Base::String& pEndCause); + //gets the caller list for a conference call + Tizen::Base::Collection::IListT* GetCallerList(void); + //Adds a call to conference call list + result AddCallToCallerList(AppCallInfo& callInfo); + //removes a call from the conference call list + result RemoveCallFromCallerList(int index); + //returns the number of calls in conference + int GetCallerListCount(void); + //sets the type of the call for the logs application + void SetCalllogType(CallLogType callLogType); + //returns the type of the call log + CallLogType GetCalllogType(void); + /** + * This is the equality operator for this CallInfo. + * returns true, if both have same value for call handle. + * + * @param[in] rhs A reference to the %CallInfo instance + */ + bool operator ==(const AppCallInfo& rhs) const; + + /** + * This is the InEquality operator for this CallInfo. + * returns true, if value for call handle is different. + * + * @param[in] rhs A reference to the %CallInfo instance + */ + bool operator !=(const AppCallInfo& rhs) const; + + /** + * This is the assignment operator for this class. + * @param[in] rhs A reference to the %CallInfo instance + */ + AppCallInfo& operator =(const AppCallInfo& rhs); + + // this funtion fetches the contact person's name. + Tizen::Base::String* FetchCallerNameN(void); + //Returns the latest Caller Name for a Number from address book + Tizen::Base::String* FetchLatestCallerNameN(const Tizen::Base::String& phoneNumber); + // this funtion fetches the contact person's photo id, if present. + Tizen::Graphics::Bitmap* FetchCallerPhotoN(void); + //Returns the latest Caller Photo for a Number from address book + Tizen::Graphics::Bitmap* FetchLatestCallerPhotoN(const Tizen::Base::String& phoneNumber); + //Returns the Contact Matched for the PhoneNumber from address book + Tizen::Social::Contact* FetchContactN(const Tizen::Base::String& phoneNumber); + + + +private: + bool __isConfCall; + CallType __callType; + + ///Calllog type information like outgoing, incoming, missed call + CallLogType __calllogType; + + //To uniquely identify both Single / Conf. Call. + Tizen::Base::Long* __pCallHandle; + + bool __isEmergency; + + //applicable only for Single Call + Tizen::Base::String __contactNumber; + + //call is held + bool __isOnHold; + + //system time when call connected + long long __callConnectTime; + + long long __durationTime; + + //system time when the call was notified / dialed + long long __callNotificationTime; + + //end call cause + Tizen::Base::String* __pEndCallCause; + + //callHandles for individual callers in conf. calls + Tizen::Base::Collection::ArrayListT* __pParticipantCallHandles; + + //used to store previously fetched contact. + Tizen::Social::Contact* __pContact; + // having the address book here + Tizen::Social::Addressbook* __pAddressBook; +}; + +#endif // _PHN_CALL_INFO_H_ diff --git a/inc/CallOptionPopup.h b/inc/CallOptionPopup.h new file mode 100644 index 0000000..400d42e --- /dev/null +++ b/inc/CallOptionPopup.h @@ -0,0 +1,78 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallCallOptionPopup.h + * @brief This is the header file for the %CallOptionPopup class. + * + * This header file contains the declarations for %CallOptionPopup class. + */ +#ifndef _PHN_CALL_OPTION_POPUP_H_ +#define _PHN_CALL_OPTION_POPUP_H_ + +#include +#include + +#include "CallIPopupItemSelectListener.h" +#include "CallPresentationModel.h" +#include "CallTypes.h" + +/** + * @class CallOptionPopup + * @brief This class presents a Popup based UI and functionality for popup + * shown for incoming call scenarios. + * + */ +class CallOptionPopup + : public Tizen::Ui::Controls::Popup + , public Tizen::Ui::Controls::IListViewItemEventListener + , public Tizen::Ui::Controls::IListViewItemProvider + , public Tizen::Ui::IActionEventListener + , public Tizen::Ui::IPropagatedKeyEventListener +{ + +public: + CallOptionPopup(IPopupItemSelectListener& listener, CallPresentationModel& callPresenter); + virtual ~CallOptionPopup(void); + result Initialize(void); + // IListViewItemEventListener + virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state){}; + virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status); + virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction){}; + virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback){}; + //IListViewItemProvider + virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth); + virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth); + virtual int GetItemCount(void); + // From IActionEventListener + void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + //IPropagatedKeyEventListener + virtual bool OnKeyPressed(Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo){ return false; }; + virtual bool OnKeyReleased(Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo); + virtual bool OnPreviewKeyPressed(Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo){ return false; } + virtual bool OnPreviewKeyReleased(Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo){ return false; } + virtual bool TranslateKeyEventInfo(Control& source, Tizen::Ui::KeyEventInfo& keyEventInfo) { return false; } + +private: + result ConstructListData(void); + +private: + Tizen::Base::Collection::ArrayList* __pOptionsList; + IPopupItemSelectListener& __popupListener; + CallPresentationModel& __callPresenter; +}; + +#endif // _PHN_CALL_OPTION_POPUP_H_ diff --git a/inc/CallPanelFactory.h b/inc/CallPanelFactory.h new file mode 100644 index 0000000..d88caa9 --- /dev/null +++ b/inc/CallPanelFactory.h @@ -0,0 +1,46 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallPanelFactory.h + * @brief This is the header file for the %PanelFactory class. + * + * This header file contains the declarations for %PanelFactory class. + */ +#ifndef _PHN_PANEL_FACTORY_H_ +#define _PHN_PANEL_FACTORY_H_ + +#include + +extern const wchar_t* PANEL_DIALER; +extern const wchar_t* PANEL_LOGS; + +/** + * @class PanelFactory + * @brief This class provides the Panel factory for Dial application + * + */ +class PanelFactory + : public Tizen::Ui::Scenes::IPanelFactory +{ +public: + PanelFactory(void); + virtual ~PanelFactory(void); + + virtual Tizen::Ui::Controls::Panel* CreatePanelN(const Tizen::Base::String& panelId, const Tizen::Ui::Scenes::SceneId& sceneId); +}; + +#endif // _PHN_PANEL_FACTORY_H_ diff --git a/inc/CallPhoneFormFactory.h b/inc/CallPhoneFormFactory.h new file mode 100644 index 0000000..06fc486 --- /dev/null +++ b/inc/CallPhoneFormFactory.h @@ -0,0 +1,85 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallPhoneFormFactory.h + * @brief This is the header file for the %FormFactory class. + * + * This header file contains the declarations for %FormFactory class. + */ +#ifndef _PHN_PHONE_FORM_FACTORY_H_ +#define _PHN_PHONE_FORM_FACTORY_H_ + +#include +#include "CallBaseForm.h" + +//Corresponding Call form name +extern const wchar_t* IDL_FORM_OUTCALL; +extern const wchar_t* IDL_FORM_OUT_EMERGENCYCALL; +extern const wchar_t* IDL_FORM_INCOMINGCALL; +extern const wchar_t* IDL_FORM_ACTIVECALL; +extern const wchar_t* IDL_FORM_ACTIVE_EMERGENCYCALL; +extern const wchar_t* IDL_FORM_CONFCALL; +extern const wchar_t* IDL_FORM_CONFCALLLIST; +extern const wchar_t* IDL_FORM_ENDCALL; +extern const wchar_t* IDL_FORM_MULTIPLEACTIVECALL; +//Corresponding Settings form name +extern const wchar_t* IDL_FORM_SETTINGS_PREFIX; +extern const wchar_t* IDL_FORM_MAIN_SETTING_MENU; +extern const wchar_t* IDL_FORM_CALL_REJECTLIST_MENU; +extern const wchar_t* IDL_FORM_CALL_REJECTMSGS_MENU; +extern const wchar_t* IDL_FORM_SPEED_DIAL; +extern const wchar_t* IDL_FORM_MORE_OPTIONS; +extern const wchar_t* IDL_FORM_CALL_STATUSTONES; +extern const wchar_t* IDL_FORM_CALLTYPE_FORWARD; +extern const wchar_t* IDL_FORM_CALL_FORWARD_OPTIONS; +extern const wchar_t* IDL_FORM_CALLTYPE_BARRING; +extern const wchar_t* IDL_FORM_CALL_BARRING_OPTIONS; +extern const wchar_t* IDL_FORM_CALL_WAITING_OPTIONS; +extern const wchar_t* IDL_FORM_ADD_REJECT_NUMBER; +extern const wchar_t* IDL_FORM_AUTO_AREA_CODE; +extern const wchar_t* IDL_FORM_ADD_REJECT_MSG; +extern const wchar_t* IDL_FORM_EDIT_REJECT_MSG; +extern const wchar_t* IDL_FORM_FORWARD_TO_NUMBER; +extern const wchar_t* IDL_FORM_NOREPLY_FORWARD_TO_NUMBER; +extern const wchar_t* IDL_FORM_SCENE_SET_BARRING_PWD; +extern const wchar_t* IDL_FORM_DEL_NUMBER; +extern const wchar_t* IDL_FORM_DEL_MESSAGE; +//Dialer & Call Log Form names +extern const wchar_t* IDL_FORM_DIAL_APP; +extern const wchar_t* IDL_FORM_CALL_LOG_DETAIL; + +/** + * @class FormFactory + * @brief This class presents a form factory functionality for all forms. + * + */ +class FormFactory + : public Tizen::Ui::Scenes::IFormFactory +{ +public: + FormFactory(void); + virtual ~FormFactory(void); + + //Factory Method from IFormFactory + virtual Tizen::Ui::Controls::Form* CreateFormN(const Tizen::Base::String& formId, const Tizen::Ui::Scenes::SceneId& sceneId); + +private: + //Used to create forms related to Voice Call module + Tizen::Ui::Controls::Form* CreateVoiceCallForm(const Tizen::Base::String& formId, const Tizen::Ui::Scenes::SceneId& sceneId); +}; + +#endif // _PHN_PHONE_FORM_FACTORY_H_ diff --git a/inc/CallPresentationModel.h b/inc/CallPresentationModel.h new file mode 100644 index 0000000..e4b003c --- /dev/null +++ b/inc/CallPresentationModel.h @@ -0,0 +1,211 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file PhnCallPresentationModel.h + * @brief This is the header file for the %CallPresentationModel class. + * + * This header file contains the declarations for %CallPresentationModel class. + */ +#ifndef _PHN_CALL_PRESENTATION_MODEL_H_ +#define _PHN_CALL_PRESENTATION_MODEL_H_ + +#include +#include +#include +#include "CallAppControlRequestMgr.h" +#include "CallTypes.h" +#include "CallITelephonyEventListener.h" +#include "CalllogManager.h" + +class AppCallInfo; +class TelephonyManager; +class SettingsPresentationModel; + +/** + * @class CallPresentationModel + * @brief CallPresentationModel is Singleton class and acts as interface between + * events from other managers and all the views. + * + */ +class CallPresentationModel: public ITelephonyEventListener + , public Tizen::App::IAppControlResponseListener + , public Tizen::Telephony::ITelephonyNetworkEventListener + , public Tizen::Telephony::ITelephonySimEventListener + , public Tizen::Messaging::ISmsListener +{ +public: + //create a singleton instance + static CallPresentationModel* GetInstance(void); + +private: + CallPresentationModel(void); + CallPresentationModel(CallPresentationModel& presentor); + virtual ~CallPresentationModel(void); + CallPresentationModel& operator =(const CallPresentationModel& presentor); + + result Construct(void); + static void CreateInstance(void); + static void DestroyInstance(void); + //gets the sim info + result GetSimInfo(void); + //Used to check if sim is available + bool IsSimAvailable(void); + bool IfNumberEndsWithHash(Tizen::Base::String& contactNumber); + +public: + //set the telephony event listener + void SetTelEventListener(ITelephonyEventListener* pTelEventListener); + + //Dial an outgoing call + void DialCall(Tizen::Base::String& contactNumber, bool isEmergency); + //End the call + void EndActiveCall(Tizen::Base::Long callHandle); + void EndDialingCall(Tizen::Base::String& contactNumber); + //End the conference call + bool EndConferenceCall(void); + //Ends all active calls + void EndAllCall(void); + /** + * Hold the call. + * @returns true if successful. + */ + bool HoldCall(Tizen::Base::Long callHandle); + /** + * Unhold the call. + * @returns true if successful. + */ + bool UnHoldCall(Tizen::Base::Long callHandle); + //Hold conference call + bool HoldConferenceCall(void); + //UnHold conference call + bool ActivateConferenceCall(void); + //Join active and held call to conference call. + void JoinCall(void); + //Swap between active and held call + void SwapCalls(void); + //Mute or Unmute Call + bool SetMuteStatus(bool setMute); + //Get the call Muted status + bool IsCallMuted(void); + //Set speaker to On or Off mode. + bool SetSpeakerStatus(bool setSpeaker); + //Get the speaker status + bool IsSpeakerOn(void); + //Send DTMF strings + void SendDTMFSignal(Tizen::Base::String& textToBeSent); + //Function to get the conference call info + AppCallInfo* GetConferenceCallInfoN(void); + //Split this call from the conference call + bool SplitFromConference(SplitConfCallerCmdIds splitCallerCmdId, Tizen::Base::Collection::IListT* pConfCallList); + //End this single call from the conference call + void EndCallFromConference(EndConfCallerCmdIds endCallerCmdId, Tizen::Base::Collection::IListT* pConfCallList); + //returns true, if split operation is allowed. Else, returns false. + bool IsSplitAllowed(void); + //Accept the incoming call as per the options + void AcceptIncomingCall(CallAnsweringOptions answerOptions,int callHandle); + //Reject an incoming call and send message, if required. + bool RejectCall(int callHandle, bool sendMsg, const Tizen::Base::String& contactNumber); + //Function used to add call + void AddCall(const Tizen::Base::String& phoneNumber); + //Get the current call count + int GetCurrentCallCount(void); + //Get the current call list + Tizen::Base::Collection::IListT* GetCallListN(void); + //Check if modem and sim initialization is complete. + bool CheckSimInitializationIsCompleted(); + //This function returns true, if contact number is emergency no. + bool IsEmergencyNumber(const Tizen::Base::String& phoneNumber, bool isSimInitialized); + //Resume the alert when there is an incoming call and the already active call is disconnected + void ResumeAlert(AppCallInfo& incomingCallInfo); + //Start the alert in case of incoming call + void StartAlert(AppCallInfo& incomingCallInfo); + //Stop the alert in case of incoming call + void StopAlert(void); + //returns the incoming call handle + AppCallInfo* GetIncomingCallHandle(); + //Gets the contact for the given phonenumber.returns null if not present. + Tizen::Social::Contact* GetContactN(const Tizen::Base::String& phoneNumber); + //Fetch the incoming call details. + AppCallInfo* FetchIncomingCallDetailsN(const Tizen::Base::String& callHandle, const Tizen::Base::String& contactNumber); + //Function is used to auto reject the call based on call settings and return true, if rejected. + bool CheckIncomingCallToBeRejected(AppCallInfo* pIncomingCallInfo); + //Launch dial appcontrol for add call senario + void LaunchDialAppControl(); + //Used to check if Join button should be enabled or not + bool IsEnableJoinCallButton(void); + //Used to check if incomig call is present + bool IsIncomingorDialingCallPresent(void); + bool IsIncomingCallPresent(void); + //Used to launch Messaging AppControl to compose message. + bool LaunchComposeMessageAppControl(Tizen::Base::String& contactNumber, Tizen::App::IAppControlResponseListener* pListener); + //Used to make "ViewContact" AppControl request. + bool LaunchViewContactAppControl(Tizen::Base::String& contactId, Tizen::App::IAppControlResponseListener* pListener); + //Used to make "AddContact" AppControl request. + bool LaunchAddContactAppControl(Tizen::Base::String& contactNumber, Tizen::App::IAppControlResponseListener* pListener); + //Used to check if there is any AppControl request in progress. + bool IsAppControlRunning(void); + //Used to abort any running AppControl request. + void AbortAppControlRequest(void); + //Used to complete any running AppControl request. + void AppControlRequestCompleted(void); + //Used to send message + void SendMessage(Tizen::Base::String& strMsg,Tizen::Base::String& recpientNum); + //Used to show sms error + void ShowSMSErrorNotification(void); + //Checks if message sending is in progress + bool IsMessageSendingInProgress(void); + + //Event Listener methods from ITelephonyEventListener + virtual void HandleCallConnected(Tizen::Base::Collection::IListT& pCallList); + virtual void HandleCallDisconnected(bool isLastCall, Tizen::Base::Collection::IListT& pCallList); + virtual void HandleConferenceCall(AppCallInfo& pCallInfo); + virtual void HandleIncomingCall(AppCallInfo& pCallInfo); + virtual void HandleCallSwapOccured(Tizen::Base::Collection::IListT& pCallList); + virtual void HandleConfCallHoldOccured(bool success); + virtual void HandleConfCallActiveOccured(bool success); + virtual void HandleConferenceChange(void); + virtual void HandleTelephonyError(int errorCode); + virtual void HandleCallHeld(bool isHeld); + virtual void HandleCallActive(bool isActive); + //From IAppControlResponseListener + virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData); + virtual void OnAppForeground(void); + virtual void OnTelephonyNetworkStatusChanged(const Tizen::Telephony::NetworkStatus& networkStatus); + virtual void OnTelephonySimStateChanged(Tizen::Telephony::SimState state); + virtual void OnSmsMessageSent(result r); + +private: + static CallPresentationModel* __pInstance; + //to forward telephony events + ITelephonyEventListener* __pTelEventListener; + TelephonyManager* __pTelephonyMgr; + SettingsPresentationModel* __pSettingsPresentor; + // This is only to save PhoneApp from closing when only 1 incoming call is present and + // incoming call is rejected with "Reject With message" by opening Msg AppControl. + bool __isMessageAppControlRunning; + bool __isDialAppControlRunning; + bool __isMessageSendInProgress; + //Used to manage AppControl requests. + CallAppControlRequestMgr* __pAppControlMgr; + Tizen::Telephony::NetworkManager* __pNetworkManager; + Tizen::Telephony::SimStateManager* __psimStateManager; + Tizen::Telephony::SimInfo* __psimInfo; + Tizen::Messaging::SmsManager* __pSmsManager; + Tizen::Shell::NotificationManager* __pNotificationManager; +}; + +#endif // _PHN_CALL_PRESENTATION_MODEL_H_ diff --git a/inc/CallRejectInfo.h b/inc/CallRejectInfo.h new file mode 100644 index 0000000..5a12c3e --- /dev/null +++ b/inc/CallRejectInfo.h @@ -0,0 +1,71 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallRejectInfo.h + * @brief This is the header file for the %CallRejectInfo class. + * + * This header file contains the declarations for %CallRejectInfo class. + */ +#ifndef _PHN_CALL_REJECT_INFO_H_ +#define _PHN_CALL_REJECT_INFO_H_ + +#include +#include "CallSettingsConstants.h" + +/** + * @class CallRejectInfo + * @brief This class holds information about currently active Single party calls. + * + */ +class CallRejectInfo + : public Tizen::Base::Object +{ + +public: + // Default Constructor + CallRejectInfo(void); + virtual ~CallRejectInfo(void); + /** + * This is the equality operator for this CallRejectInfo. + * returns true, if both have same value for call handle. + * + * @param[in] rhs A reference to the %CallRejectInfo instance + */ + bool operator ==(const CallRejectInfo& rhs) const; + + /** + * This is the InEquality operator for this CallRejectInfo. + * returns true, if value for call handle is different. + * + * @param[in] rhs A reference to the %CallRejectInfo instance + */ + bool operator !=(const CallRejectInfo& rhs) const; + + /** + * This is the assignment operator for this class. + * @param[in] rhs A reference to the %CallRejectInfo instance + */ + CallRejectInfo& operator =(const CallRejectInfo& rhs); + +public: + int rowId; + Tizen::Base::String phoneNumber; + CallRejectMatchCondition rejectCondition; + bool isActivated; +}; + +#endif // _PHN_CALL_REJECT_INFO_H_ diff --git a/inc/CallSceneRegister.h b/inc/CallSceneRegister.h new file mode 100644 index 0000000..e27ac9a --- /dev/null +++ b/inc/CallSceneRegister.h @@ -0,0 +1,77 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallSceneRegister.h + * @brief This is the header file for the %SceneRegister class. + * + * This header file contains the declarations for %SceneRegister class. + */ +#ifndef _PHN_SCENE_REGISTER_H_ +#define _PHN_SCENE_REGISTER_H_ + +//Constants - Call Scene name +extern const wchar_t* IDSCN_SCENE_OUTCALL; +extern const wchar_t* IDSCN_SCENE_OUT_EMERGENCYCALL; +extern const wchar_t* IDSCN_SCENE_INCOMINGCALL; +extern const wchar_t* IDSCN_SCENE_ACTIVECALL; +extern const wchar_t* IDSCN_SCENE_ACTIVE_EMERGENCYCALL; +extern const wchar_t* IDSCN_SCENE_CONFCALL; +extern const wchar_t* IDSCN_SCENE_CONFCALLLIST; +extern const wchar_t* IDSCN_SCENE_ENDCALL; +extern const wchar_t* IDSCN_SCENE_MULTIPLEACTIVECALL; +//Settings Scene name +extern const wchar_t* IDSCN_SCENE_MAIN_SETTING_MENU; +extern const wchar_t* IDSCN_SCENE_CALL_REJECTLIST_MENU; +extern const wchar_t* IDSCN_SCENE_CALL_REJECTMSGS_MENU; +extern const wchar_t* IDSCN_SCENE_SPEED_DIAL; +extern const wchar_t* IDSCN_SCENE_MORE_OPTIONS; +extern const wchar_t* IDSCN_SCENE_CALL_STATUSTONES; +extern const wchar_t* IDSCN_SCENE_CALLTYPE_FORWARD; +extern const wchar_t* IDSCN_SCENE_CALL_FORWARD_OPTIONS; +extern const wchar_t* IDSCN_SCENE_CALLTYPE_BARRING; +extern const wchar_t* IDSCN_SCENE_CALL_BARRING_OPTIONS; +extern const wchar_t* IDSCN_SCENE_CALL_WAITING_OPTIONS; +extern const wchar_t* IDSCN_SCENE_ADD_REJECT_NUMBER; +extern const wchar_t* IDSCN_SCENE_AUTO_AREA_CODE; +extern const wchar_t* IDSCN_SCENE_ADD_REJECT_MSG; +extern const wchar_t* IDSCN_SCENE_EDIT_REJECT_MSG; +extern const wchar_t* IDSCN_SCENE_FORWARD_TO_NUMBER; +extern const wchar_t* IDSCN_SCENE_NOREPLY_FORWARD_TO_NUMBER; +extern const wchar_t* IDSCN_SCENE_SET_BARRING_PWD; +extern const wchar_t* IDSCN_SCENE_DEL_NUMBER; +extern const wchar_t* IDSCN_SCENE_DEL_MESSAGE; +//Dialer & Call Log Scene names +extern const wchar_t* IDSCN_DIALER; +extern const wchar_t* IDSCN_CALL_LOG; +extern const wchar_t* IDSCN_CALL_LOG_DETAILS; + +/** + * @class SceneRegister + * @brief This class presents function to register all scenes. + * + */ +class SceneRegister +{ +public: + SceneRegister(void); + ~SceneRegister(void); + + //This function is used to register all scenes. + static result RegisterAllScenes(void); +}; + +#endif // _PHN_SCENE_REGISTER_H_ diff --git a/inc/CallSettingDataService.h b/inc/CallSettingDataService.h new file mode 100644 index 0000000..8068d44 --- /dev/null +++ b/inc/CallSettingDataService.h @@ -0,0 +1,111 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallSettingDataService.h + * @brief This is the header file for the %CallSettingDataService class. + * + * This header file contains the declarations for %CallSettingDataService class. + */ +#ifndef _PHN_CALL_SETTING_DATA_SERVICE_H_ +#define _PHN_CALL_SETTING_DATA_SERVICE_H_ + +#include +#include +#include +#include "CallRejectInfo.h" +#include "CallSpeedDialInfo.h" + +/** + * @class CallSettingDataService + * @brief This class providing database service APIS to CallRejectInfo Application forms + * + */ +class CallSettingDataService +{ +public: + /** + * Creates an instance of its own. + * creates CallSettingDataService(singleton) if it does not exist else returns the existing form + */ + static CallSettingDataService* CreateInstance(void); + + virtual ~CallSettingDataService(void); + + ///Opens the Database. + /** + * Only one Database is maintained. Its name is hardcoded. + * It is assumed that OpenDB is called once while starting the application and CloseDB is called once while closing application. + */ + result OpenDatabase(void); + + ///Closes the Database + result CloseDatabase(void); + + ///Creates a database table to store CallRejectInfo information + result CreateCallRejectTableDatabase(void); + ///Creates a database table to store SpeedDial information + result CreateSpeedDialTableDatabase(void); + ///Searches for a keyword in the CallRejectInfo Contents from Database + /** + * @param search keyword + * @param Linked list to store the result of the search + */ + bool IsCallToBeRejected(Tizen::Base::String& phoneNumber); + +private: + /** + * Constructor + * made private as CallSettingDataService a singleton. + */ + CallSettingDataService(void); + + /** + * Copy constructor + * made private as CallSettingDataService a singleton. + */ + CallSettingDataService(const CallSettingDataService& dataService); + + /** + * Operator = + * made private as CallSettingDataService a singleton. + */ + CallSettingDataService& operator =(const CallSettingDataService& dataService); + + //checks if the condition is applicable for the passed phoneNumber + bool CheckRejectCondition(Tizen::Base::String& phoneNumber, CallRejectInfo& callRejectInfo); + + ///singleton CallSettingDataService object + static CallSettingDataService* __pCallSettingDataService; + + /// Database object + /** + * Its made static as we need only one instance of it across different CallSettingDataService object calls. + * Its created while calling OpenDB and distructed while calling CloseDB. + */ + static Tizen::Io::Database* __pDatabase; + + ///name of the database + const Tizen::Base::String __strDbName; + + /// an Enumerator used to iterate through the results of a database query. + Tizen::Io::DbEnumerator* __pEnum; + + /// Used to create and execute database statements(queries) + Tizen::Io::DbStatement* __pStmt; +}; + +#endif /* _PHN_CALL_SETTING_DATA_SERVICE_H_ */ diff --git a/inc/CallSettingsConstants.h b/inc/CallSettingsConstants.h new file mode 100644 index 0000000..2bd8e5d --- /dev/null +++ b/inc/CallSettingsConstants.h @@ -0,0 +1,141 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallSettingsConstants.h + * @brief This is the header file for providing common constants across application. + * + */ +#ifndef _PHN_SETTINGS_CONSTANTS_H_ +#define _PHN_SETTINGS_CONSTANTS_H_ + +#include +#include +#include + + +enum CallForwardCondition +{ + CALL_FORWARD_ALL, /* Forward All Calls */ + CALL_FORWARD_BUSY, /* Forward if Busy */ + CALL_FORWARD_NO_REPLY, /* Forward if No Reply */ + CALL_FORWARD_NOT_REACHABLE /* Forward if Not Reachable */ +}; + +enum CallBarringType +{ + CALL_BARRING_ALL_OUTGOING, /* Barring All Outgoing Calls */ + CALL_BARRING_INTERNATIONAL_OUTGOING, /* Barring Outgoing International Calls */ + CALL_BARRING_INTERNATIONAL_EXCEPT_HOME, /* Barring Outgoing International Calls except to Home Country */ + CALL_BARRING_ALL_INCOMING, /* Barring All Incoming Calls */ + CALL_BARRING_INCOMING_ROAMING /* Barring Incoming Calls when roam*/ +}; + + + +enum CallRejectMatchCondition +{ + CALL_REJECT_MATCH_EXACTLY = 1, + CALL_REJECT_MATCH_START, + CALL_REJECT_MATCH_END, + CALL_REJECT_MATCH_INCLUDE, +}; + +enum CallState +{ + /** No call connected */ + CALL_STATE_CALL_OFF = 0, + /** Voice call is connecting */ + CALL_STATE_CALL_VOICE_CONNECTING, + /** Voice call is connected */ + CALL_STATE_CALL_VOICE_ACTIVE, + /** Video call is connecting */ + CALL_STATE_CALL_VIDEO_CONNECTING, + /** Video call is connecting */ + CALL_STATE_CALL_VIDEO_ACTIVE, + + CALL_STATE_MAX + +}; + +//Settings UI contants +// Colors used in List views // +extern const unsigned int COLOR_GROUP_ITEM_BG; +extern const unsigned int COLOR_LIST_MENU_ITEM; +extern const unsigned int COLOR_SECONDDEPTH_ITEM_BG; +extern const unsigned int COLOR_HELP_ITEM_BG; +extern const unsigned int COLOR_NORMAL_MAIN_TXT; +extern const unsigned int COLOR_NORMAL_SUB_TXT; +extern const unsigned int COLOR_PRESS_SUB_TXT; +extern const unsigned int COLOR_PRESS_MAIN_TXT; +extern const unsigned int COLOR_HELP_TXT; +extern const unsigned int COLOR_LEFT_HEADER_EXPAND_ITEMS; +//Main List Option text +extern const unsigned int COLOR_MAIN_TXT; +//Main List text +extern const int FONT_SIZE_SUB_TXT; +//Help text +extern const int FONT_SIZE_HELP_TXT; +extern const int W_HDR_FTR_ICON; +extern const int H_HDR_FTR_ICON; +//Processing Animation constants +extern const int IDI_ANIM_DURATION; +extern const int IDI_ANIM_PROGRESS_COUNT; +//Delete List +extern const unsigned int COLOR_NORMAL_ITEM_BG; +extern const unsigned int COLOR_PRESS_ITEM_BG; +extern const unsigned int COLOR_SELECTALL_ITEM_BG; + +// Dimensions used in List views // +// menu item height +extern const int H_LIST_HIDDENGROUP_ITEM; +extern const int H_LIST_NORMAL_MENU_ITEM; +extern const int H_LIST_DROPDOWN_MENU_ITEM; +extern const int H_LIST_MENU_SINGLELINE_HLPTXT_ITEM; +//text item height +extern const int H_LIST_NORMAL_TXT_ITEM; +extern const int H_LIST_SUB_TXT_ITEM; +//Two line text for Drop down menu item +extern const int H_LIST_DROPDOWN_TXT_ITEM; +//single line text +extern const int X_LIST_MENU_TEXT_ITEM; +extern const int Y_LIST_MENU_TEXT_ITEM; +//Help text +extern const int X_LIST_MENU_HLPTXT_ITEM; +extern const int Y_LIST_MENU_HLPTXT_ITEM; +//custom Item for Bg line +extern const int Y_CUSTOM_BG_ELEMENT; +//Position for delete list item +extern const int X_DEL_LIST_ELEMENT; +extern const int Y_DEL_LIST_ELEMENT; + +// Dimensions for icons // +//Expand icon for DropDown Menu Items +extern const int W_EXPAND_ICON; +extern const int H_EXPAND_ICON; +extern const int W_SLIDER_ICON; +extern const int H_SLIDER_ICON; +//Dimensions for custom bg line +extern const int W_CUSTOM_BG_ELEMENT; +//Item Width for delete list +extern const int W_DELETE_LIST_ITEM; +//Width of Blue Header Rectangle for expandable group items +extern const int W_LEFT_HEADER_EXPAND_ITEMS; + + + + +#endif // _PHN_SETTINGS_CONSTANTS_H_ diff --git a/inc/CallSettingsManager.h b/inc/CallSettingsManager.h new file mode 100644 index 0000000..1922022 --- /dev/null +++ b/inc/CallSettingsManager.h @@ -0,0 +1,120 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallSettingsManager.h + * @brief This is the header file for the %SettingsManager class. + * + * This header file contains the declarations for %SettingsManager class. + */ +#ifndef _PHN_SETTINGS_MANAGER_H_ +#define _PHN_SETTINGS_MANAGER_H_ + +#include +#include +#include +#include +#include "ITapiCall.h" +#include "ITapiSs.h" +#include "tapi_common.h" +#include "TapiUtility.h" +#include "TelCall.h" +#include "TelSs.h" +#include "vconf.h" +#include "CallRejectInfo.h" +#include "CallISettingsEventListener.h" +#include "CallSettingsConstants.h" +#include "CallSettingDataService.h" + +/** + * @class SettingsManager + * @brief This class provides functionality to set and fetch settings related to voice call, e.g. Call barring, + * call forwarding, etc. + */ +class SettingsManager +: public Tizen::System::ISettingEventListener +{ +public: + //create a singleton instance + static SettingsManager* GetInstance(void); + +private: + //constructor + SettingsManager(void); + SettingsManager(SettingsManager& manager); + SettingsManager& operator =(const SettingsManager& manager); + + result Construct(void); + static void CreateInstance(void); + static void DestroyInstance(void); + +public: + // Add the observer for setting events + void AddSettingEventListener(ISettingsEventListener* pSettingsEventListener); + //remove the observer for setting events + void RemoveSettingEventListener(ISettingsEventListener* pSettingsEventListener); + // Get the reject message list + Tizen::Base::Collection::IMapT* GetRejectMessageListN(void); + // Get the reject "unknown" status + bool GetUnknownRejectStatus(void); + // checks if the call is to be rejected + bool IsCallToBeRejected(Tizen::Base::String& phoneNumber); + + result SetCallState(CallState callState); + + void AddSystemEventListener(void); + + void RemoveSystemEventListener(void); + + virtual void OnSettingChanged(Tizen::Base::String& key); + + bool GetFlightModeStatus(void); + +private: + + enum ForwardResponseType + { + SET_CALLFORWARD_RESPONSE, + GET_CALLFORWARD_RESPONSE, + }; + enum BarringResponseType + { + SET_CALLBARRING_RESPONSE, + GET_CALLBARRING_RESPONSE, + }; + enum WaitingResponseType + { + SET_CALLWAITING_RESPONSE, + GET_CALLWAITING_RESPONSE, + }; +private: + virtual ~SettingsManager(void); + //notify event listeners for Setting or Getting Call Forwarding status events. + void NotifyForwardingEventListeners(ForwardResponseType responseType, bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime); + //notify event listeners for Setting or Getting Call Barring status events. + void NotifyBarringEventListeners(BarringResponseType responseType, bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated); + //notify event listeners for Setting or Getting Call Waiting status events. + void NotifyWaitingEventListeners(WaitingResponseType responseType, bool isCallSuccessful, bool isCallWaitingActivated); + +private: + static SettingsManager* __pInstance; + //handle to Telephony API + TapiHandle* __pTapiHandle; + Tizen::Base::Collection::ArrayListT* __pSettingsEventListener; + CallSettingDataService* __pCallSettingDataService; +}; + +#endif // _PHN_SETTINGS_MANAGER_H_ diff --git a/inc/CallSettingsPresentationModel.h b/inc/CallSettingsPresentationModel.h new file mode 100644 index 0000000..8820627 --- /dev/null +++ b/inc/CallSettingsPresentationModel.h @@ -0,0 +1,87 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallSettingsPresentationModel.h + * @brief This is the header file for the %SettingsPresentationModel class. + * + * This header file contains the declarations for %SettingsPresentationModel class. + */ +#ifndef _PHN_SETTINGS_PRESENTATION_MODEL_H_ +#define _PHN_SETTINGS_PRESENTATION_MODEL_H_ + +#include +#include "CallISettingsEventListener.h" + +class SettingsManager; +class CallRejectInfo; +class SpeedDialInfo; + +/** + * @class SettingsPresentationModel + * @brief This class provides data to settings forms and provides functions + * to interact with Settings manager. + * + */ +class SettingsPresentationModel: public ISettingsEventListener +{ +public: + //create a singleton instance + static SettingsPresentationModel* GetInstance(void); + +private: + SettingsPresentationModel(void); + SettingsPresentationModel(SettingsPresentationModel& presentor); + virtual ~SettingsPresentationModel(void); + SettingsPresentationModel& operator =(const SettingsPresentationModel& presentor); + + //perform 2nd phase initialization + result Construct(void); + static void CreateInstance(void); + static void DestroyInstance(void); + +public: + // Add the observer for setting events + result AddSettingEventListener(ISettingsEventListener* pSettingsEventListener); + //remove the observer for setting events + void RemoveSettingEventListener(void); + // Get the reject message list + Tizen::Base::Collection::IMapT* GetRejectMessageListN(void); + // checks if the call is to be rejected + bool IsCallToBeRejected(Tizen::Base::String& phoneNumber); + //Sets the call state + result SetCallState(CallState callState); + //Get Flight mode status + bool GetFlightModeStatus(void); + +protected: + //From ISettingsEventListener + virtual void HandleGetCallWaitingResponse(bool isCallSuccessful, bool callWaitingActivated); + virtual void HandleSetCallWaitingResponse(bool isCallSuccessful, bool isCallWaitingEnabled); + virtual void HandleGetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool callForwardActivated, int noReplyWaitTime); + virtual void HandleSetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime); + virtual void HandleGetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated); + virtual void HandleSetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated); + virtual void HandleFlightMode(bool isFlightModeActivated); + +private: + static SettingsPresentationModel* __pInstance; + //Owned. Is responsible for destroying the instance + SettingsManager* __pSettingsMgr; + ISettingsEventListener* __pSettingsEventListener; +}; + +#endif // _PHN_SETTINGS_PRESENTATION_MODEL_H_ diff --git a/inc/CallSoundManager.h b/inc/CallSoundManager.h new file mode 100644 index 0000000..2f0f821 --- /dev/null +++ b/inc/CallSoundManager.h @@ -0,0 +1,105 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallSoundManager.h + * @brief This is the header file for the %SoundManager class. + * + * This header file contains the declarations for %SoundManager class. + */ +#ifndef _PHN_SOUND_MANAGER_H_ +#define _PHN_SOUND_MANAGER_H_ + +#include +#include +#include +#include "ITapiCall.h" +#include "sound_manager.h" +#include "vconf.h" +#include "vconf-keys.h" +#include "CallTypes.h" + +using namespace Tizen::Base::Runtime; +/** + * @class SoundManager + * @brief This class presents sound related functionality required in call module. + * + */ +enum CallAlertStatus +{ + CALL_ALERT_OFF = 0, + CALL_ALERT_SOUND, + CALL_ALERT_VIBRATE +}; +class SoundManager + : public Tizen::Media::IPlayerEventListener + , public Tizen::Base::Runtime::ITimerEventListener +{ +public: + SoundManager(void); + virtual ~SoundManager(void); + //start the sound manager session + result StartSession(void); + //Change the speaker status + result SetSpeakerStatus(bool setSpeaker); + //Set the sound mode for the call + result SetSoundMode(SoundMode soundMode); + void StartAlert(Tizen::Base::String& contactRingTone); + void ResumeAlert(Tizen::Base::String& contactRingTone); + void StopAlert(void); + //set connect tone + void SetConnectTone(void); + void SetMinuteReminderTone(void); + void SetDisconnectTone(void); + void SetWaitTone(void); + result StopSession(void); + Timer* GetTimer(); + bool GetLastConferenceCall(); + void SetlastEndedConferenceCall(); + result SetSoundPath(bool bSpeaker=false); + static void HandleCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData){} + +protected: + virtual void OnPlayerOpened(result r); + virtual void OnPlayerEndOfClip(void); + virtual void OnPlayerSeekCompleted(result r); + virtual void OnPlayerBuffering(int percent); + virtual void OnPlayerErrorOccurred(Tizen::Media::PlayerErrorReason r); + virtual void OnPlayerInterrupted(void); + virtual void OnPlayerReleased(void); + virtual void OnTimerExpired(Timer& timer); + +private: + bool IsEarJackConnected(void); + +private: + //Sound manager handle + sound_call_session_h __pSoundCallSession; + //For notifying via vibrate during incoming call + Tizen::System::Vibrator* __pVibrator; + // Audio player + Tizen::Media::Player* __pPlayer; + Tizen::Media::Player* __pDisconnectPlayer; + Tizen::Media::Player* __pConnectPlayer; + Tizen::Media::Player* __pReminderPlayer; + Tizen::Media::Player* __pWaitingTonePlayer; + bool __isSoundStatusOn; + bool __isVibrateStatusOn; + Timer __timer; + bool __lastEndedConferenceCall; +}; + +#endif /* _PHN_SOUND_MANAGER_H_ */ diff --git a/inc/CallSpeedDialInfo.h b/inc/CallSpeedDialInfo.h new file mode 100644 index 0000000..98d71e5 --- /dev/null +++ b/inc/CallSpeedDialInfo.h @@ -0,0 +1,70 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallSpeedDialInfo.h + * @brief This is the header file for the %SpeedDialInfo class. + * + * This header file contains the declarations for %SpeedDialInfo class. + */ +#ifndef _PHN_SPEED_DIAL_INFO_H_ +#define _PHN_SPEED_DIAL_INFO_H_ + +#include +#include "CallSettingsConstants.h" + +/** + * @class SpeedDialInfo + * @brief This class holds information about speed dial mappings fetched/stored from database. + * + */ +class SpeedDialInfo + : public Tizen::Base::Object +{ + +public: + // Default Constructor + SpeedDialInfo(void); + virtual ~SpeedDialInfo(void); + /** + * This is the equality operator for this SpeedDialInfo. + * returns true, if both have same value for call handle. + * + * @param[in] rhs A reference to the %SpeedDialInfo instance + */ + bool operator ==(const SpeedDialInfo& rhs) const; + + /** + * This is the InEquality operator for this SpeedDialInfo. + * returns true, if value for call handle is different. + * + * @param[in] rhs A reference to the %SpeedDialInfo instance + */ + bool operator !=(const SpeedDialInfo& rhs) const; + + /** + * This is the assignment operator for this class. + * @param[in] rhs A reference to the %SpeedDialInfo instance + */ + SpeedDialInfo& operator =(const SpeedDialInfo& rhs); + +public: + int rowId; + int keyMapping; + Tizen::Base::String contactId; +}; + +#endif // _PHN_SPEED_DIAL_INFO_H_ diff --git a/inc/CallSpeedDialPopup.h b/inc/CallSpeedDialPopup.h new file mode 100644 index 0000000..d850fb8 --- /dev/null +++ b/inc/CallSpeedDialPopup.h @@ -0,0 +1,71 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallSpeedDialPopup.h + * @brief This is the header file for the %SpeedDialPopup class. + * + * This header file contains the declarations for %SpeedDialPopup class. + */ +#ifndef _PHN_SPEED_DIAL_POPUP_H_ +#define _PHN_SPEED_DIAL_POPUP_H_ + +#include +#include + +#include "CallIPopupItemSelectListener.h" + +/** + * @class SpeedDialPopup + * @brief This class provides popup messages in Speed dial settings form. + * + */ +class SpeedDialPopup + : public Tizen::Ui::Controls::Popup + , public Tizen::Ui::Controls::IListViewItemEventListener + , public Tizen::Ui::Controls::IListViewItemProvider + , public Tizen::Ui::IActionEventListener +{ + +public: + SpeedDialPopup(IPopupItemSelectListener& listener); + virtual ~SpeedDialPopup(void); + int Initialize(void); + + // IListViewItemEventListener + virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state); + virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status); + virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction); + virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback); + + //IListViewItemProvider + virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth); + virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth); + virtual int GetItemCount(void); + + // From IActionEventListener + void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + +private: + void ConstructListData(void); + +private: + Tizen::Ui::Controls::Button* __pCancelButton; + IPopupItemSelectListener& __popupListener; + Tizen::Base::Collection::ArrayList* __pListItemArray; +}; + +#endif // _PHN_SPEED_DIAL_POPUP_H_ diff --git a/inc/CallTelephonyManager.h b/inc/CallTelephonyManager.h new file mode 100644 index 0000000..4321552 --- /dev/null +++ b/inc/CallTelephonyManager.h @@ -0,0 +1,245 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallTelephonyManager.h + * @brief This is the header file for the %TelephonyManager class. + * + * This header file contains the declarations for %TelephonyManager class. + */ +#ifndef _PHN_TELEPHONY_MANAGER_H_ +#define _PHN_TELEPHONY_MANAGER_H_ + +#include +#include +#include +#include "ITapiCall.h" +#include "TapiUtility.h" +#include "CallITelephonyEventListener.h" +#include "CallSoundManager.h" +#include "CalllogManager.h" + +class AppCallInfo; +class SettingsManager; + +/** + * @class TelephonyManager + * @brief TelephonyManager is a singleton class used to intialize TAPI library. + * And register to telephony events, interact with TAPI library. + */ +class TelephonyManager +: public Tizen::Telephony::ITelephonyNetworkEventListener +{ +public: + //Get singleton instance + static TelephonyManager* GetInstance(ITelephonyEventListener* pEventListener); + //Function to initiate (dial) an outgoing call. + ErrorCodes SetupMoCall(Tizen::Base::String& contactNumber, bool isEmergency); + //Function to end a call + result EndActiveCall(Tizen::Base::Long callHandle); + result EndDialingCall(Tizen::Base::String& contactNumber); + //Function to accept/reject an incoming call + result AnswerCall(int callHandle, bool acceptCall); + //Auto Reject call + result AnswerAutoRejectCall(int callHandle); + //Function to accept call with the given options + result AcceptCall(CallAnsweringOptions answerOptions,int callHandle); + //Function to end a conference call + result EndConferenceCall(void); + //Function to hold/retrieve a conference call + result HoldConferenceCall(bool holdCall); + //Function to join active and held call to conference + result JoinCall(void); + //Function to hold/unhold the call + result HoldCall(Tizen::Base::Long callHandle, bool holdCall); + //Function to swap the active and held call + result SwapCalls(void); + //Function to send DTMF strings + result SendCallDTMF(Tizen::Base::String& textToBeSent); + //Function to end a single call from the conference + result EndFromConference(int callHandle); + //Function to split a single call from the conference + result SplitFromConference(int callHandle); + //Function to set the mute status + result SetMuteStatus(bool setMute); + //Function to get the mute Status + bool IsCallMuted(void); + //Function to set the speaker status + result SetSpeakerStatus(bool setSpeaker); + //Function to get the speaker status + bool IsSpeakerOn(void); + //Function to check if split operation is allowed from the conference + bool IsSplitAllowed(void); + //Function to get the conference call info + AppCallInfo* GetConferenceCallInfoN(void); + //Get the current call list + Tizen::Base::Collection::IListT* GetCallListN(void); + //Get the current call count + int GetCurrentCallCount(void); + //Start the alert in case of incoming call + void StartAlert(AppCallInfo& incomingCallInfo); + //Resume the alert when there is an incoming call and the already active call is disconnected + void ResumeAlert(AppCallInfo& incomingCallInfo); + //returns the incoming call handle + AppCallInfo* GetIncomingCallHandle(); + //Stop the alert in case of incoming call + void StopAlert(void); + //Main Callback function used while registering to TAPI + static void HandleCallback(TapiHandle* pHandle, const char* pNotiId, void* pData, void* pUserData); + //Dummy callback function used when nothing is to be done on response + static void HandleCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData); + //Hold Callback + static void HandleHoldCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData); + //Active Callback + static void HandleActiveCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData); + //Hold Conference CallBack + static void HandleHoldConferenceCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData); + //Active Conference CallBack + static void HandleActiveConferenceCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData); + //callback function for dial operation + static void HandleDialCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData); + //callback function for the join operation + static void HandleJoinCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData); + //callback function for the reject call operation + static void HandleRejectCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData); + //callback function for the swap calls operation + static void HandleSwapCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData); + //callback function for the End from conference operation + static void HandleEndFromConferenceCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData); + //callback function for the split from conference operation + static void HandleSplitFromConferenceCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData); + //callback function for Ending conference call + static void HandleEndConferenceCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData); + //Called when bluetooth connection state changes + static void OnBluetoothStateChange(keynode_t *node, void *user_data); + //Check if MOCall is emergency number and returns true. Otherwise, false. + bool CheckIfMOCallIsEmergency(const Tizen::Base::String& contactNumber, bool isSimInitialized); + //Check is modem and sim are initialised successfully and MO call can be made. + result CheckIfMOCallIsPossible(); + //Gets the contact for the given phonenumber.returns null if not present. + Tizen::Social::Contact* GetContactN(const Tizen::Base::String& phoneNumber); + //This function make a synchronus API call to TAPI to fetch active/waiting incoming calls. + AppCallInfo* FetchIncomingCallHandleN(const Tizen::Base::String& callHandle, const Tizen::Base::String& contactNumber); + //This callback function is called by TAPI each time for every single call. + static void HandleIncomingCallStatusCallBack(TelCallStatus_t* pCallStatus, void* pUserData); + //function used to process incoming call and decide whether to reject call based on call settings. + //Rejects the call and returns true, Else returns false. + bool CheckIncomingCallToBeRejected(AppCallInfo* pIncomingCallInfo); + //End all active + void EndAllCalls(void); + //From ITelephonyNetworkEventListener + virtual void OnTelephonyNetworkStatusChanged(const Tizen::Telephony::NetworkStatus& networkStatus); + //Used to check if a call is in incoming or dialing state. + bool IsIncomingorDialingCallPresent(void); + bool IsIncomingCallPresent(void); + //Function to make out going call when hold is succesful on the active call + void CheckPendingDialCalls(int callBackResult); + TapiHandle* GetTapiHandle(void); + void SetSoundPath(void); + +protected: + //function to handle the idle callback(received when call is ended) + void HandleIdleCallBack(void* pData); + //function used to handle events for normal call disconnected. + bool HandleEndNormalActiveCall(AppCallInfo& endCallInfo); + //function to handle the active callback(received when call is connected) + void HandleActiveCallBack(void* pData); + //function to handle call connected successfully + void HandleCallConnected(unsigned int connectedCallHandle); + //function to handle the dial call callback + void HandleDialingCallBack(void* pData); + //function to handle ending of single participant in conference call. + bool HandleParticipantEndedFromConference(unsigned int participantCallHandle, AppCallInfo& conferenceCall); + +private: + //create a singleton instance + static void CreateInstance(ITelephonyEventListener* pEventListener); + //used to destroy 'TelephonyManager' instance at application exit. + static void DestroyInstance(void); + //private destructor + virtual ~TelephonyManager(void); + TelephonyManager(ITelephonyEventListener* pEventListener); + TelephonyManager(TelephonyManager& manager); + TelephonyManager& operator =(TelephonyManager& manager); + //perform 2nd phase initialisation + result Initialize(void); + //initialise the TAPI library + result InitializeTelephonyLibrary(void); + //register for the TAPI events + int RegisterEvents(void); + //unregister from the TAPI events + void UnregisterEvents(void); + //internal function to hold an active call + result HoldActiveCall(AppCallInfo* pActiveCallInfo, bool holdCall); + //internal function to make a call + result DialOutgoingCall(Tizen::Base::String& contactNumber, bool isEmergency); + //internal function to handle waiting call options when single call is present + result AcceptSecondCall(CallAnsweringOptions answerOptions, const int incomingCallHandle); + //internal function to handle waiting call options when multiple calls are present + result AcceptMultipleCall(CallAnsweringOptions answerOptions, const int incomingCallHandle); + //internal function to End Call + result EndCall(AppCallInfo& endCallInfo); + /** + * This function is internally used to fetch contact person details - + * display name & photo id from AddressBook for the given phone number. + * + * @param[in] phoneNumber - The substring of the phoneNumber to search + * @return E_SUCCESS, if found else E_FAILURE. + */ + result FetchContactInfoForNumber(const Tizen::Base::String& phoneNumberStr); + //check if given contact number is valid and returns 'E_SUCCESS', else 'E_FAILURE'. + result CheckValidTelePhoneNumber(const Tizen::Base::String& contactNumber); + //Used to save ended call Log info to Logs database. + void SaveCallInfoToLogsDb(AppCallInfo& endCallInfo); + +private: + static TelephonyManager* __pManager; + + //Outgoing call Info + AppCallInfo* __pDialedCall; + //Incoming call Info + AppCallInfo* __pIncomingCall; + //Active Calls - only 2 active calls at any time + //can hold both Single or Conf. Calls + //mapping of "Call handle" to "CallInfo" + Tizen::Base::Collection::HashMapT* __pActiveCallList; + + //Listener for telephony events + ITelephonyEventListener* __pEventListener; + + SettingsManager* __pSettingsManager; + + //handle to Telephony API + TapiHandle* __pTapiHandle; + //used to connect to Address Book APIs. + Tizen::Social::Addressbook* __pAddressBook; + //used to store previously fetched contact. + Tizen::Social::Contact* __pCachedContact; + Tizen::Social::Category __Category; + //mute status + bool __isMuted; + //Speaker Status + bool __isSpeakerOn; + SoundManager* __pSoundManager; + CallLogManager* __pCalllogMgr; + Tizen::Telephony::NetworkManager* __pNetworkManager; + //Hold call handling + bool __isDialCallPresentAfterHold; + Tizen::Base::String* __pDialNumberAfterHold; + bool __isDialNumberAfterHoldEmergency; +}; + +#endif // _PHN_TELEPHONY_MANAGER_H_ diff --git a/inc/CallTypes.h b/inc/CallTypes.h new file mode 100644 index 0000000..b3137a4 --- /dev/null +++ b/inc/CallTypes.h @@ -0,0 +1,499 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallTypes.h + * @brief This is the header file provides common constants and enums used across application. + * + */ +#ifndef PHNTYPES_H_ +#define PHNTYPES_H_ + +#include "CallCommonUtils.h" + +//bitmap +extern const wchar_t* IDB_BTN_OPTION_BG_ICON ; +extern const wchar_t* IDB_BTN_OPTION_PRESS_BG_ICON; +extern const wchar_t* IDB_BTN_MORE_ICON ; +extern const wchar_t* IDB_BTN_MORE_PRESS_ICON ; +extern const wchar_t* IDB_POPUP_BUBBLE_ICON ; +extern const wchar_t* IDB_DIALER_BTN_LINE_ICON; +extern const wchar_t* IDB_DIALER_BTN_PRESS_ICON; +extern const wchar_t* IDB_VOICEMAIL_BTN_ICON; +extern const wchar_t* IDB_VOICEMAIL_BTN_PRESS_ICON; +extern const wchar_t* IDB_DIALER_BTN_LINE2_ICON; +extern const wchar_t* IDB_DIALER_BTN_LINE3_ICON; +extern const wchar_t* IDB_DIALER_BTN_LINE4_ICON; +extern const wchar_t* IDB_DIALER_BTN_LINE5_ICON; +extern const wchar_t* IDB_DIALER_STAR_ICON ; +extern const wchar_t* IDB_DIALER_MUTE_ICON ; +extern const wchar_t* IDB_DIALER_VIDEOCALL_ICON ; +extern const wchar_t* IDB_DIALER_CALL_ICON ; +extern const wchar_t* IDB_DIALER_CLEAR_ICON ; +extern const wchar_t* IDB_DIALER_CALL_BG_ICON ; +extern const wchar_t* IDB_HIDE_KEYPAD_ICON; +extern const wchar_t* IDB_HIDE_KEYPAD_PRESS_ICON; +extern const wchar_t* IDB_HIDE_KEYPAD_DIM_ICON; +extern const wchar_t* IDB_CLOSE_KEYPAD_ICON; +extern const wchar_t* IDB_CLOSE_KEYPAD_PRESS_ICON; +extern const wchar_t* IDB_CLOSE_KEYPAD_DIM_ICON; +extern const wchar_t* IDB_SPEAKER_ON_ICON; +extern const wchar_t* IDB_SPEAKER_ON_PRESS_ICON; +extern const wchar_t* IDB_SPEAKER_ON_DIM_ICON; +extern const wchar_t* IDB_SPEAKER_OFF_ICON; +extern const wchar_t* IDB_SPEAKER_OFF_PRESS_ICON; +extern const wchar_t* IDB_SPEAKER_OFF_DIM_ICON; +extern const wchar_t* IDB_MUTE_ON_ICON; +extern const wchar_t* IDB_MUTE_ON_PRESS_ICON; +extern const wchar_t* IDB_MUTE_ON_DIM_ICON; +extern const wchar_t* IDB_MUTE_OFF_ICON; +extern const wchar_t* IDB_MUTE_OFF_PRESS_ICON; +extern const wchar_t* IDB_MUTE_OFF_DIM_ICON; +extern const wchar_t* IDB_BACKGROUND_BITMAP; +extern const wchar_t* IDB_VOICE_CALL_ICON; +extern const wchar_t* IDB_VOICE_CALL_PRESS_ICON; +extern const wchar_t* IDB_VOICE_CALL_DIM_ICON; +extern const wchar_t* IDB_VIDEO_CALL_ICON; +extern const wchar_t* IDB_VIDEO_CALL_PRESS_ICON; +extern const wchar_t* IDB_VIDEO_CALL_DIM_ICON; +extern const wchar_t* IDB_MESSAGE_ICON; +extern const wchar_t* IDB_MESSAGE_PRESS_ICON; +extern const wchar_t* IDB_MESSAGE_DIM_ICON; +extern const wchar_t* IDB_END_CALL_ICON; +extern const wchar_t* IDB_END_CALL_PRESS_ICON; +extern const wchar_t* IDB_END_CALL_DIM_ICON; +extern const wchar_t* IDB_ADD_CALL_ICON; +extern const wchar_t* IDB_ADD_CALL_PRESS_ICON; +extern const wchar_t* IDB_ADD_CALL_DIM_ICON; +extern const wchar_t* IDB_JOIN_CALL_ICON; +extern const wchar_t* IDB_JOIN_CALL_PRESS_ICON; +extern const wchar_t* IDB_JOIN_CALL_DIM_ICON; +extern const wchar_t* IDB_CONTACT_ICON; +extern const wchar_t* IDB_CONTACT_PRESS_ICON; +extern const wchar_t* IDB_CONTACT_DIM_ICON; +extern const wchar_t* IDB_SWAP_ICON_NORMAL; +extern const wchar_t* IDB_SWAP_ICON_PRESS; +extern const wchar_t* IDB_POPUP_ARROW_ICON; +extern const wchar_t* IDB_POPUP_BG_ICON; +extern const wchar_t* IDB_MORE_MANAGE_CONFERENCE_ICON; +extern const wchar_t* IDB_CONFERENCE_BG_ICON; +extern const wchar_t* IDB_CONFERENCE_BIG_BG_ICON; +extern const wchar_t* IDB_ACTIVE_CALL_DEFAULT_ICON; +extern const wchar_t* IDB_MULTIPLE_CALL_DEFAULT_ICON; +extern const wchar_t* IDB_KEYPAD_BG; +extern const wchar_t* IDB_KEYPAD_BUTTON_PRESS; +extern const wchar_t* IDB_KEYPAD_NUM1_ICON; +extern const wchar_t* IDB_HOLD_NORMAL_BUTTON_ICON; +extern const wchar_t* IDB_HOLD_PRESS_BUTTON_ICON; +extern const wchar_t* IDB_UNHOLD_NORMAL_BUTTON_ICON; +extern const wchar_t* IDB_UNHOLD_PRESS_BUTTON_ICON; +extern const wchar_t* IDB_CALLOG_LIST_BG; +extern const wchar_t* IDB_LOG_RECEIVEDCALL_ICON; +extern const wchar_t* IDB_LOG_DIALEDCALL_ICON; +extern const wchar_t* IDB_LOG_MISSEDCALL_ICON; +extern const wchar_t* IDB_LOG_BLOCKEDCALL_ICON; +extern const wchar_t* IDB_LOG_DETAIL_CALL_ICON; +extern const wchar_t* IDB_LOG_DETAIL_MSG_ICON; +extern const wchar_t* IDB_LOG_NO_CONTENT; +extern const wchar_t* IDB_VIEW_CONTACT_ICON; +extern const wchar_t* IDB_VIEW_CONTACT_PRESS_ICON; +extern const wchar_t* IDB_VIEW_CONTACT_BG_ICON; +extern const wchar_t* IDB_VIEW_CONTACT_BG_PRESS_ICON; +extern const wchar_t* IDB_CALL_THUMBNAIL_BACKGROUND; +extern const wchar_t* IDB_CALL_THUMBNAIL_SHADOW; + + + +//String messages +extern const wchar_t* IDS_DIALER_MOBILE_STR; +extern const wchar_t* IDS_DIALER_SPEEDDIAL_POPUP_MSG; +extern const wchar_t* IDS_SPEEDDIAL_POP_YES_BTN_STRING; +extern const wchar_t* IDS_SPEEDDIAL_POP_NO_BTN_STRING; +extern const wchar_t* IDS_DIALER_MENU_ITEM_SEND_MSG; +extern const wchar_t* IDS_DIALER_MENU_ITEM_ADD_CONTACT; +extern const wchar_t* IDS_DIALER_MENU_ITEM_SPEED_DIAL; +extern const wchar_t* IDS_DIALER_MENU_ITEM_ADD_PAUSE; +extern const wchar_t* IDS_DIALER_MENU_ITEM_ADD_WAIT; +extern const wchar_t* IDS_DIALER_MENU_ITEM_EXIT; +extern const wchar_t* IDS_SPEED_DIAL_SEARCH_KEY; +extern const wchar_t* IDS_KEYPAD_BTN_NAME; +extern const wchar_t* IDS_SPEAKER_BTN_NAME; +extern const wchar_t* IDS_MUTE_BTN_NAME; +extern const wchar_t* IDS_VOICE_CALL_BTN_NAME; +extern const wchar_t* IDS_VIDEO_CALL_BTN_NAME; +extern const wchar_t* IDS_MSG_BTN_NAME; +extern const wchar_t* IDS_ENDCALL_BTN_NAME; +extern const wchar_t* IDS_ADDCALL_BTN_NAME; +extern const wchar_t* IDS_JOINCALL_BTN_NAME; +extern const wchar_t* IDS_CONTACT_BTN_NAME; +extern const wchar_t* IDS_HOLD_BTN_NAME; +extern const wchar_t* IDS_UNHOLD_BTN_NAME; +extern const wchar_t* IDS_PEOPLE_STR; +extern const wchar_t* IDS_MGR_CONF_CALL_LIST_STR; +extern const wchar_t* IDS_LOG_CONTEXT_CALL; +extern const wchar_t* IDS_LOG_CONTEXT_MESSAGE; +extern const wchar_t* IDS_LOG_CONTEXT_VIDEOCALL; +extern const wchar_t* IDS_LOG_CONTEXT_DELETE; +extern const wchar_t* IDS_AM_TIME; +extern const wchar_t* IDS_PM_TIME; +extern const wchar_t* IDS_CALLLOG_NO_NAME; +extern const wchar_t* IDS_CALLLOG_NO_NUMBER; +extern const wchar_t* IDS_CALLLOG_RECEIVED; +extern const wchar_t* IDS_CALLLOG_MISSED; +extern const wchar_t* IDS_CALLLOG_OUTGOING; +extern const wchar_t* IDS_CALLLOG_RECEIVED_MSG; +extern const wchar_t* IDS_CALLLOG_SENT_MSG; +extern const wchar_t* IDS_CALLLOG_REJECTED; +extern const wchar_t* IDS_CALLLOG_DELETE_FOOTER; +extern const wchar_t* IDS_CALLLOG_CANCEL_FOOTER; +extern const wchar_t* IDS_EMERGENCY_CALL; +extern const wchar_t* IDS_SELECT_CALL_LOG ; +extern const wchar_t* IDS_SELECTED_ITEM_STRING; +extern const wchar_t* IDS_SELECTED_ITEMS_STRING; +extern const wchar_t* IDS_SELECT_NUMBER; +extern const wchar_t* IDS_NUMBER_SELECTED; +extern const wchar_t* IDS_NUMBERS_SELECTED; +extern const wchar_t* IDS_SELECT_MESSAGE; +extern const wchar_t* IDS_MESSAGE_SELECTED; +extern const wchar_t* IDS_MESSAGES_SELECTED; +extern const wchar_t* IDS_NO_LOGS; +extern const wchar_t* IDS_FLIGHT_MODE_ON; +extern const wchar_t* IDS_ADD_TO_CONTACTS; +extern const wchar_t* IDS_TIMER_ON_HOLD; +extern const wchar_t* IDS_CANCEL; +extern const wchar_t* IDS_LOGS_TODAY; +extern const wchar_t* IDS_LOGS_YESTERDAY; +extern const wchar_t* IDS_REJECT_MESSAGE_CREATE; +extern const wchar_t* IDS_VIEW_CONTACT; +extern const wchar_t* IDS_INVALID_NUMBER; +extern const wchar_t* IDS_NUMBER_UNKNOWN; +extern const wchar_t* IDS_USSD_NUMBER; +extern const wchar_t* IDS_CONFERENCE_CALL_STRING; +extern const wchar_t* IDS_CALL_REJECT_FROM_STRING; +extern const wchar_t* IDS_CALL_REJECTED_TITLE_STRING; +extern const wchar_t* IDS_MESSAGE_SENDING_FAILED; +extern const wchar_t* IDS_LOW_MEMORY_MSG; +extern const wchar_t* IDS_LOW_MEMORY_MSG_TITLE; +extern const wchar_t* IDS_SERVICE_UNAVAILABLE; +extern const wchar_t* IDS_CALL_BARRED; +//Panel +extern const wchar_t* PANEL_DIALER; +extern const wchar_t* PANEL_LOGS; + +//Corresponding Call form name +extern const wchar_t* IDL_FORM_OUTCALL; +extern const wchar_t* IDL_FORM_OUT_EMERGENCYCALL; +extern const wchar_t* IDL_FORM_INCOMINGCALL; +extern const wchar_t* IDL_FORM_ACTIVECALL; +extern const wchar_t* IDL_FORM_ACTIVE_EMERGENCYCALL; +extern const wchar_t* IDL_FORM_CONFCALL; +extern const wchar_t* IDL_FORM_CONFCALLLIST; +extern const wchar_t* IDL_FORM_ENDCALL; +extern const wchar_t* IDL_FORM_MULTIPLEACTIVECALL; +//Corresponding Settings form name +extern const wchar_t* IDL_FORM_SETTINGS_PREFIX; +extern const wchar_t* IDL_FORM_MAIN_SETTING_MENU; +extern const wchar_t* IDL_FORM_CALL_REJECTLIST_MENU; +extern const wchar_t* IDL_FORM_CALL_REJECTMSGS_MENU; +extern const wchar_t* IDL_FORM_SPEED_DIAL; +extern const wchar_t* IDL_FORM_MORE_OPTIONS; +extern const wchar_t* IDL_FORM_CALL_STATUSTONES; +extern const wchar_t* IDL_FORM_CALLTYPE_FORWARD; +extern const wchar_t* IDL_FORM_CALL_FORWARD_OPTIONS; +extern const wchar_t* IDL_FORM_CALLTYPE_BARRING; +extern const wchar_t* IDL_FORM_CALL_BARRING_OPTIONS; +extern const wchar_t* IDL_FORM_CALL_WAITING_OPTIONS; +extern const wchar_t* IDL_FORM_ADD_REJECT_NUMBER; +extern const wchar_t* IDL_FORM_AUTO_AREA_CODE; +extern const wchar_t* IDL_FORM_ADD_REJECT_MSG; +extern const wchar_t* IDL_FORM_EDIT_REJECT_MSG; +extern const wchar_t* IDL_FORM_FORWARD_TO_NUMBER; +extern const wchar_t* IDL_FORM_NOREPLY_FORWARD_TO_NUMBER; +extern const wchar_t* IDL_FORM_SCENE_SET_BARRING_PWD; +extern const wchar_t* IDL_FORM_DEL_NUMBER; +extern const wchar_t* IDL_FORM_DEL_MESSAGE; +//Dialer & Call Log Form names +extern const wchar_t* IDL_FORM_DIAL_APP; +extern const wchar_t* IDL_FORM_CALL_LOG_DETAIL; +extern const wchar_t* IDL_CALL_PANEL; +extern const wchar_t* IDL_END_CALL_PANEL; +extern const wchar_t* IDL_OUTCALL_FORM; +extern const wchar_t* IDL_OUT_EMERGENCYCALL_FORM; +extern const wchar_t* IDL_CALL_FORM; +extern const wchar_t* IDL_EMERGENCY_CALL_FORM; +extern const wchar_t* IDL_MULTIPLE_CALL_FORM; +extern const wchar_t* IDL_CONFCALL_FORM; +extern const wchar_t* IDL_DTMF_PANEL; +extern const wchar_t* IDL_DTMF_KEYS_PANEL; +extern const wchar_t* IDL_DIALER_KEYPAD_PANEL; +extern const wchar_t* IDL_FORM_EMERGENCY_DIAL; + +//Constants - Call Scene name +extern const wchar_t* IDSCN_SCENE_OUTCALL; +extern const wchar_t* IDSCN_SCENE_OUT_EMERGENCYCALL; +extern const wchar_t* IDSCN_SCENE_INCOMINGCALL; +extern const wchar_t* IDSCN_SCENE_ACTIVECALL; +extern const wchar_t* IDSCN_SCENE_ACTIVE_EMERGENCYCALL; +extern const wchar_t* IDSCN_SCENE_CONFCALL; +extern const wchar_t* IDSCN_SCENE_CONFCALLLIST; +extern const wchar_t* IDSCN_SCENE_ENDCALL; +extern const wchar_t* IDSCN_SCENE_MULTIPLEACTIVECALL; +//Constants - Settings Scene name +extern const wchar_t* IDSCN_SCENE_MAIN_SETTING_MENU; +extern const wchar_t* IDSCN_SCENE_CALL_REJECTLIST_MENU; +extern const wchar_t* IDSCN_SCENE_CALL_REJECTMSGS_MENU; +extern const wchar_t* IDSCN_SCENE_SPEED_DIAL; +extern const wchar_t* IDSCN_SCENE_MORE_OPTIONS; +extern const wchar_t* IDSCN_SCENE_CALL_STATUSTONES; +extern const wchar_t* IDSCN_SCENE_CALLTYPE_FORWARD; +extern const wchar_t* IDSCN_SCENE_CALL_FORWARD_OPTIONS; +extern const wchar_t* IDSCN_SCENE_CALLTYPE_BARRING; +extern const wchar_t* IDSCN_SCENE_CALL_BARRING_OPTIONS; +extern const wchar_t* IDSCN_SCENE_CALL_WAITING_OPTIONS; +extern const wchar_t* IDSCN_SCENE_ADD_REJECT_NUMBER; +extern const wchar_t* IDSCN_SCENE_AUTO_AREA_CODE; +extern const wchar_t* IDSCN_SCENE_ADD_REJECT_MSG; +extern const wchar_t* IDSCN_SCENE_EDIT_REJECT_MSG; +extern const wchar_t* IDSCN_SCENE_FORWARD_TO_NUMBER; +extern const wchar_t* IDSCN_SCENE_NOREPLY_FORWARD_TO_NUMBER; +extern const wchar_t* IDSCN_SCENE_SET_BARRING_PWD; +extern const wchar_t* IDSCN_SCENE_DEL_NUMBER; +extern const wchar_t* IDSCN_SCENE_DEL_MESSAGE; +//Dialer & Call Log Scene names +extern const wchar_t* IDSCN_DIALER; +extern const wchar_t* IDSCN_CALL_LOG; +extern const wchar_t* IDSCN_CALL_LOG_DETAILS; +extern const wchar_t* IDSCN_EMERGENCY_DIAL; + +extern const wchar_t* TYPE_VIDEO; +extern const wchar_t* TYPE_VOICE; +extern const wchar_t* TYPE_SMS; +extern const wchar_t* TEL; +extern const wchar_t* TO; + +extern const wchar_t* OPERATION_ID_PICK; +extern const wchar_t* OPERATION_ID_VIEW; +extern const wchar_t* OPERATION_ID_ADD; +extern const wchar_t* OPERATION_ID_EDIT; +extern const wchar_t* OPERATION_ID_CONFIGURE; +extern const wchar_t* OPERATION_ID_CAPTURE; +extern const wchar_t* OPERATION_ID_CALL; +extern const wchar_t* OPERATION_ID_COMPOSE; +extern const wchar_t* OPERATION_ID_DIAL; +extern const wchar_t* OPERATION_ID_HOME_MENU; + +extern const wchar_t* PROVIDER_ID_CAMERA; +extern const wchar_t* PROVIDER_ID_GALLERY; +extern const wchar_t* PROVIDER_ID_CALL; +extern const wchar_t* PROVIDER_ID_MESSAGE; +extern const wchar_t* PROVIDER_ID_EMAIL; +extern const wchar_t* PROVIDER_ID_MEDIA; +extern const wchar_t* PROVIDER_ID_CONTACTS; +extern const wchar_t* PROVIDER_ID_PHONE; + +extern const wchar_t* RETURN_TYPE_PHONE; +extern const wchar_t* RETURN_TYPE_EMAIL; +extern const wchar_t* RETURN_TYPE_CONTACT_ID; + +extern const wchar_t* DELIMITER; +extern const wchar_t* LAUNCHTYPE; +extern const wchar_t* PARAM_ORIGIN_MT; +extern const wchar_t* CALL_HANDLE; +extern const wchar_t* CONTACT_NUMBER; +extern const wchar_t* PARAM_CALL_TYPE; +extern const wchar_t* PARAM_CALL_VALUE_VOICE; +extern const wchar_t* PARAM_PHONE_NUMBER; +extern const wchar_t* INPUT_TYPE_PHONE; +extern const wchar_t* MESSAGE_TYPE; +extern const wchar_t* MESSAGE_SMS_TYPE; +extern const wchar_t* MESSAGE_TEXT; +extern const wchar_t* MESSAGE_TO; +//Contacts app control parameters +extern const wchar_t* CONTACTS_VIEW_TYPE; +extern const wchar_t* CONTACTS_VIEW_TYPE_CONTACT; +extern const wchar_t* ITEM_TYPE_CONTACT ; +extern const wchar_t* CONTACTS_ID_KEY; +extern const wchar_t* ITEM_TYPE_PERSON ; +extern const wchar_t* CONTACT_KEY_ITEM_TYPE ; +extern const wchar_t* CONTACT_KEY_ITEM_ID ; + + +extern const wchar_t* SELECTION_MODE; +extern const wchar_t* RETURN_TYPE; +extern const wchar_t* SELECTION_MODE_SINGLE; +extern const wchar_t* RETURN_KEY_VALUE; + +//Settings Strings +extern const wchar_t* SETTINGS_FLIGHT_MODE_STR; +//Voice Call- Common Command Ids +enum CommandIds +{ + IDA_ADD_CALL = DIAL_CMD_TOTAL_COUNT+1, + IDA_JOIN_CALL, + IDA_OPEN_CONTACTS, + IDA_HOLD_CALL, + IDA_UNHOLD_CALL, + IDA_MUTE, + IDA_UNMUTE, + IDA_SPEAKER, + IDA_SPEAKER_OFF, + IDA_OPEN_NUMKEYPAD, + IDA_CLOSE_NUMKEYPAD, + IDA_END_CALL, + IDA_SHOW_REJECT_CALL_MESSAGE_PANEL, //Show the reject with message panel + IDA_CANCEL_REJECT_CALL_MESSAGE_PANEL,//Cancel the reject with message panel + IDA_CREATE_REJECT_CALL_MESSAGE,//Reject the call with new message + IDA_VOICE_CALL, + IDA_VIDEO_CALL, + IDA_MESSAGE, + IDA_END_CONF_CALL, + IDA_HOLD_CONF_CALL, + IDA_UNHOLD_CONF_CALL, + IDA_ADD_TO_CONTACTS, //add current contact to AddressBook + IDA_BACK_EVENT, + IDA_SWAP_CALLS, + IDA_MORE_OPTIONS_MENU, + IDA_MORE_CONF_CALLLIST_OPTION, + IDA_SEND_REJECT_MSG1, + IDA_SEND_REJECT_MSG2, + IDA_SEND_REJECT_MSG3, + IDA_SEND_REJECT_MSG4, + IDA_SEND_REJECT_MSG5, + IDA_SEND_REJECT_MSG6, + IDA_CALL_WAITING_OPTION_CHECKED, + IDA_CALL_WAITING_OPTION_UNCHECKED, + IDA_TOTAL_CMD_IDS, +}; + +//Command Ids for Ending Caller in Conference list. +enum EndConfCallerCmdIds +{ + IDA_END_CALLER1 = IDA_TOTAL_CMD_IDS + 1, + IDA_END_CALLER2, + IDA_END_CALLER3, + IDA_END_CALLER4, + IDA_END_CALLER5, + IDA_TOTAL_ENDCONFCALLER_CMD_IDS, +}; + +enum SplitConfCallerCmdIds +{ + IDA_SPLIT_CALLER1 = IDA_TOTAL_ENDCONFCALLER_CMD_IDS + 1, + IDA_SPLIT_CALLER2, + IDA_SPLIT_CALLER3, + IDA_SPLIT_CALLER4, + IDA_SPLIT_CALLER5, + IDA_TOTAL_SPLITCONFCALLER_CMD_IDS, +}; + +enum CallAnsweringOptions +{ + ANSERWING_OPTION_HOLD_SINGLE_CALL = 503,//Hold previous call and accept incoming call. + ANSERWING_OPTION_END_SINGLE_CALL,//End previous call and accept incoming call. + ANSERWING_OPTION_REPLACE_ACTIVE_CALL,//Replace previous active call with incoming call. + ANSERWING_OPTION_REPLACE_HELD_CALL,//Replace previous held call with incoming call. + ANSERWING_OPTION_END_ALL_CALLS,//end all previous calls and accept incoming. + ANSERWING_OPTION_ACCEPT_CALL,//no previous active calls present +}; + +enum SoundMode +{ + SOUND_MODE_VOICE = 0, + SOUND_MODE_RINGTONE, + SOUND_MODE_MEDIA +}; + +//Type of the call (incoming, outgoing etc for call log database +enum CallLogType +{ + CALL_LOG_TYPE_VOICE_INCOMING, + CALL_LOG_TYPE_VOICE_OUTGOING, + CALL_LOG_TYPE_VOICE_MISSED, + CALL_LOG_TYPE_VOICE_MISSED_UNSEEN, + CALL_LOG_TYPE_VOICE_REJECTED, + CALL_LOG_TYPE_VOICE_BLOCKED, + CALL_LOG_TYPE_SMS_INCOMING, + CALL_LOG_TYPE_SMS_OUTGOING, +}; + +//Error code to handle error scenarios +enum ErrorCodes +{ + ERROR_NONE, + ERROR_INVALID_INPUT, + ERROR_DIAL_FAILED, + ERROR_INVALID_NUMBER, + ERROR_REJECT_FAILED, + ERROR_JOIN_FAILED, + ERROR_SWAP_FAILED, + ERROR_END_CALL_FAILED, + ERROR_END_FROM_CONFERENCE_FAILED, + ERROR_SPLIT_FROM_CONFERENCE_FAILED, + ERROR_CODE_SIM_INITIALIZATION_FAILED, + ERROR_NOT_EMERGENCY_NUM, + ERROR_TAPI_INIT_FAILED, + ERROR_TAPI_ERROR, + ERROR_BARRING_PWD_TOO_LONG, + ERROR_FLIGHT_MODE_SET, + ERROR_GENERAL, + ERROR_SERVICE_UNAVAILABLE, + ERROR_USSD_NUMBER, + ERROR_CALL_BARRED +}; + +enum DialerRequestType +{ + REQUEST_SHOW_SUGGESTION, + REQUEST_SHOW_ADD_TO_CONTACTS, + REQUEST_SHOW_SPEED_DIAL_POPUP, + REQUEST_CALL_SPEED_DIAL_NUM, +}; + +enum IncomingCallFormRequestType +{ + REQUEST_ITEM_SELECTED, +}; + + +//Dimensions for Small photo of caller/callee. +extern const int W_SMALL_PHOTO; +extern const int H_SMALL_PHOTO; +extern const int W_CONFERENCE_PHOTO; +extern const int H_CONFERENCE_PHOTO; +extern const int W_CALL_THUMBNAIL; +extern const int H_CALL_THUMBNAIL; +extern const int W_CALL_THUMBNAIL_SHADOW; +extern const int H_CALL_THUMBNAIL_SHADOW; + +//Maximum number of calls +extern const int IDI_MAX_ACTIVE_CALLS; +extern const int IDI_MAX_CONF_CALL_PARTICIPANTS; +//Constants used for custom list item in message panel in Incoming call screen +extern const int IDA_FORMAT_SENDTEXT; +extern const int IDA_BUTTON_CANCEL_OPTIONS_POPUP; +extern const int ID_MULTI_PARTY_CALL; +extern const int ID_SECOND_INCOMING_CALL; +//Constants +extern const wchar_t* IDI_KEY2_TXT; +extern const wchar_t* IDI_KEY3_TXT; +extern const wchar_t* IDI_KEY4_TXT; +extern const wchar_t* IDI_KEY5_TXT; +extern const wchar_t* IDI_KEY6_TXT; +extern const wchar_t* IDI_KEY7_TXT; +extern const wchar_t* IDI_KEY8_TXT; +extern const wchar_t* IDI_KEY9_TXT; + +#endif /* PHNTYPES_H_ */ diff --git a/inc/CalllogManager.h b/inc/CalllogManager.h new file mode 100644 index 0000000..984088b --- /dev/null +++ b/inc/CalllogManager.h @@ -0,0 +1,136 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CalllogManager.h + * @brief This is the header file for the %CallLogManager class. + * + * This header file contains the declarations for %CallLogManager, %CallLogDetails, %LogListComparer class. + */ + +#ifndef _PHN_CALL_LOG_MANAGER_H_ +#define _PHN_CALL_LOG_MANAGER_H_ +#include "contacts.h" +#include +#include +#include "CallInfo.h" +#include "CallTypes.h" +#include "CallICalllogChangeListener.h" + +using namespace Tizen::Social; +class CallLogDetails; + +/** + * @class LogListComparer + * @brief LogListComparer provides comparison functions used to + * sort an arraylist of CallLogDetails. + * + */ +class LogListComparer +: public Tizen::Base::Collection::IComparerT +{ +public: + LogListComparer() {}; + virtual ~LogListComparer() {}; + result Compare (const CallLogDetails& obj1, const CallLogDetails& obj2, int& cmp) const; +}; + +/** + * @class CallLogDetails + * @brief CallLogDetails used to store information call logs. + * + */ +class CallLogDetails +: public Tizen::Base::Object +{ +public: + CallLogDetails(); + virtual ~CallLogDetails(); + bool operator ==(const CallLogDetails& rhs) const; + bool operator !=(const CallLogDetails& rhs) const; + CallLogDetails& operator =(const CallLogDetails& rhs); + + void SetCalllogDbId(int id); + int GetCalllogDbId(void); + void SetCalllogType(contacts_phone_log_type_e type); + CallLogType GetCalllogType(void); + void SetContactDbId(int id); + int GetContactDbId(void); + void SetFirstName(char* name); + char* GetFirstName(void); + void SetLastName(char* name); + char* GetLastName(void); + void SetDisplayName(char* name); + char* GetDisplayName(void); + void SetContactImagePath(char* path); + char* GetContactImagePath(void); + void SetPhoneNumber(char* number); + char* GetPhoneNumber(void); + void SetShortMessage(char* message); + char* GetShortMessage(void); + void SetStartTime(time_t time); + time_t GetStartTime(void); + void SetDuration(int duration); + int GetDuration(void); + void ConvertTimetoDateTime(void); + Tizen::Base::DateTime GetDateTime(void); + +private: + //TODO: Naming conventions to be followed. + //NOTE: Below fields are not owned. + int calllog_db_id; /**< Call log entry id */ + CallLogType calllog_type; /**< Call log entry type */ + int contact_db_id; /**< Contact's id in database */ + char* first_name; /**< Contact's first name (also known as given name) */ + char* last_name; /**< Contact's last name (also known as family name) */ + char* display_name; /**< Display name (how contact's name should be presented) */ + char* contact_image_path; /**< Path to image with contact's picture */ + // contact_number_type_e phone_number_type; /**< Phone number type (i.e.: work, cell) */ + char* phone_number; /**< Phone number */ + char* short_message; /**< Short message for this log */ + time_t startTime; /**< Timestamp of this change */ + int duration_sec; + Tizen::Base::DateTime dateTime; + +}; + +/** + * @class CallLogManager + * @brief CallLogManager is a singleton class used to save and retrieve call log related data. + * + */ +class CallLogManager +{ +public: + static CallLogManager* GetInstance(void); + +private: + CallLogManager(void); + virtual ~CallLogManager(void); + result Construct(void); + static void CreateInstance(void); + static void DestroyInstance(void); + unsigned long GetDuration(long long start_time); + int GetPersonId(Tizen::Base::String& personId); +public: + result AddCallogInfoToDatabase(AppCallInfo* calllogInfo); +private: + static CallLogManager* __pCallogManager; + Addressbook* pAddressBook; +}; + + +#endif // _PHN_CALL_LOG_MANAGER_H_ diff --git a/lib/nofile.dummy b/lib/nofile.dummy new file mode 100644 index 0000000..e69de29 diff --git a/manifest.xml b/manifest.xml new file mode 100644 index 0000000..2dc9239 --- /dev/null +++ b/manifest.xml @@ -0,0 +1,41 @@ + + + nI2PLNdTwi + 1.0.0 + C++App + + true + true + true + + + 2.1 + + http://tizen.org/privilege/uimanager + http://tizen.org/privilege/application.launch + http://tizen.org/privilege/notification + http://tizen.org/privilege/power + http://tizen.org/privilege/appusage + http://tizen.org/privilege/lockmanager + http://tizen.org/privilege/messaging.write + http://tizen.org/privilege/telephony + http://tizen.org/privilege/vibrator + http://tizen.org/privilege/contact.read + + + + + + CallApp + + + + + http://tizen.org/appcontrol/operation/call + tel + + + + + + diff --git a/packaging/apps.Call.spec b/packaging/apps.Call.spec new file mode 100644 index 0000000..4d39c1f --- /dev/null +++ b/packaging/apps.Call.spec @@ -0,0 +1,84 @@ +Name: apps.Call +Summary: Call application +Version: 1.0.0.0 +Release: 1 +Group: TO_BE/FILLED_IN +License: Flora-1.1 +Source0: %{name}-%{version}.tar.gz +BuildRequires: cmake +BuildRequires: pkgconfig(osp-appfw) +BuildRequires: pkgconfig(osp-uifw) +BuildRequires: pkgconfig(osp-social) +BuildRequires: pkgconfig(osp-messaging) +BuildRequires: pkgconfig(osp-media) +BuildRequires: pkgconfig(osp-image) +BuildRequires: pkgconfig(osp-image-core) +BuildRequires: pkgconfig(osp-shell) +BuildRequires: pkgconfig(osp-telephony) +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(capi-media-sound-manager) +BuildRequires: pkgconfig(vconf) +BuildRequires: pkgconfig(tapi) +BuildRequires: pkgconfig(mm-sound) +BuildRequires: pkgconfig(contacts-service2) +BuildRequires: osp-appfw-internal-devel +BuildRequires: osp-uifw-internal-devel +BuildRequires: osp-media-internal-devel +BuildRequires: hash-signer + + # runtime requires +Requires: osp-installer + +%description +Verification application: Call + +%prep +%setup -q + +%build +MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'` +%ifarch %{ix86} +%if 0%{?simulator} +CXXFLAGS="$CXXFLAGS -D_OSP_DEBUG_ -D_OSP_X86_ -D_OSP_EMUL_" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER} +%else +CXXFLAGS="$CXXFLAGS -D_OSP_DEBUG_ -D_OSP_X86_ " cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER} +%endif +%else +CXXFLAGS="$CXXFLAGS -D_OSP_DEBUG_ -D_OSP_ARMEL_" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER} +%endif + +# Call make instruction with smp support +make %{?jobs:-j%jobs} + +%install +rm -rf %{buildroot} +mkdir -p %{buildroot}/usr/share/license +cp LICENSE.Flora %{buildroot}/usr/share/license/%{name} + +%make_install +###### for package signing step ###### +PKG_ID=nI2PLNdTwi +%define tizen_sign 1 +%define tizen_sign_base /usr/apps/${PKG_ID} +%define tizen_sign_level platform +%define tizen_author_sign 1 +%define tizen_dist_sign 1 + +%post +/sbin/ldconfig +PKG_ID=nI2PLNdTwi +echo "/usr/etc/package-manager/backend/tpk -i /usr/apps/"${PKG_ID} +/usr/etc/package-manager/backend/tpk -i /usr/apps/${PKG_ID} +cp -f /usr/lib/osp/osp-ui-app-loader /usr/apps/${PKG_ID}/bin/Call +/usr/bin/vconftool set -t int memory/call/state "0" -g 6521 -i -f + +%postun +/sbin/ldconfig +PKG_ID=nI2PLNdTwi +echo "/usr/etc/package-manager/backend/tpk -u "${PKG_ID} +/usr/etc/package-manager/backend/tpk -u ${PKG_ID} + +%files +%defattr(-,root,root,-) +/usr/apps/* +/usr/share/license/%{name} diff --git a/res/eng-GB.xml b/res/eng-GB.xml new file mode 100644 index 0000000..889fe07 --- /dev/null +++ b/res/eng-GB.xml @@ -0,0 +1,190 @@ + + + + If No Reply + Show + Call Connect Tone + Delete + Exit + There will be a signal sound when the line is connected + Call waiting, Call barring, Prefix... + Keypad + Match Criteria + Sep + Mute + Manage Auto Reject Mode + Int'l calls + Done + No Messages + Seconds + Hide + No Logs + Add Call + Add Wait + Yes + %d Messages Selected + Voice Call + Minute Reminders + Set Reject Messages + .Name + already in use + There will be a signal sound when the line is disconnected + During call, notify me of incoming calls + Set Reject Messages + End Call + If busy + Remove + Cancel + Includes + On Hold + Call Forwarding + Auto Area Code + Invalid Number. + Rejected Call + people + Add Contact + Off + Speed Dial + Contacts + Oct + AM + Ends With + Speed Dial + Cancel + Change contact + %d call logs selected + No Number + Save + Call rejection + %d Number Selected + Add the area code on the dialer by default + No Name + Barring Password length should be less than or equal to 4. + Apr + Speed Dial + Join Call + Jun + Jul + Mobile + Waiting Time + Call Waiting + If Out Of Reach + Incoming When Roaming + TAPI Server Initialization Failed. + Add + Message + Voice Call Forwarding + May + Edit + Show My Caller Id + Mar + Received Message + Alerts On Call + Add To Contacts + Select Speed Dial + Send Message + Exactly The Same As + Hold + Accept Call After + Outgoing Call + Call Waiting + TAPI Error Occurred. + Call Status Tones + Emergency Calls Only. + Putting Held Calls(%d) On Hold + Putting Active Calls(%d) On Hold + Ending All Calls + Unknown + Ending Call + Ending Active Calls(%d) + Split From Conference Failed. + Ending Held Calls(%d) + Ending Call With + Putting %ls On Hold + Call Forwarding + %d Numbers Selected + Calling... + View Contact + Unhold + Please Disable Filght Mode to Call + Add Pause + Call Waiting + Select All + Call End Tone + Sound + Call Barring + All Incoming Calls + Select Number + %d Message Selected + Not Assigned + Starts With + Voice Call + Invalid Parameters Passed. + Edit alerts that sound during calls + Int'l calls except home + Conference Call + Speaker + Delete + No + Select Call log + Missed Call + Received Call + Invalid Number + Feb + Create + Dec + Select Number + Sim initialization is failed or not completed. + Select Message + Call Barring + Nov + Sound + Vibration + Reject With Message + Cancel + All Outgoing Calls + Video Call + Manage Conference Call + Sent Message + Enter Number + No Speed Dial Assigned.\n Assign now? + Yesterday + By Network + Close + Send + Emergency Call + PM + Show + Call Not Allowed. + Edit Reject Messages + General Error. + More Call Settings + Voice Call Barring + Reject Failed. + Always + There will be signal sounds every minute + Video call + Swap Failed. + Deactivated + End From Conference failed. + Join Failed. + Aug + Today + Jan + %d call log selected + Unknown + USSD is not supported + Call Ended + Swap + Conference Call + End Call + Call Rejected From + Call Rejected + Message Sending failed + Low Memory + Memory Low, Delete some data + Network Unavailable + Call Barred + diff --git a/res/screen-density-xhigh/00_Nocontents_text.png b/res/screen-density-xhigh/00_Nocontents_text.png new file mode 100644 index 0000000000000000000000000000000000000000..55b732994a5c00e37ace4fc3ad20465462177539 GIT binary patch literal 5145 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/00_button_04_dim.png b/res/screen-density-xhigh/00_button_04_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..76865ecb7a627a1a96cc4a2d6fe689e663ce84fa GIT binary patch literal 3398 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/00_button_04_normal.png b/res/screen-density-xhigh/00_button_04_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..76865ecb7a627a1a96cc4a2d6fe689e663ce84fa GIT binary patch literal 3398 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/00_button_04_normal_focus.png b/res/screen-density-xhigh/00_button_04_normal_focus.png new file mode 100644 index 0000000000000000000000000000000000000000..06c39d843ef073cc8aa2c5870bb59f4bd0e1aee7 GIT binary patch literal 3003 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/00_button_06_normal.9.png b/res/screen-density-xhigh/00_button_06_normal.9.png new file mode 100644 index 0000000000000000000000000000000000000000..355f50d46c5c6b2bf0d0f26dde95b1a4bda17e30 GIT binary patch literal 281 zcmV+!0p|XRP)$;Z|VpVkvi1KC9mU?#$^S zk5?Rn2=ryiT(wwL$da{%*IQ|yG)Itk;c?+BwV~(cx`52`3cs#uGDZGMq1gI}&fv)v zN4W}~ODz%GYAr93`CdX~tCRIw);q23nG72plN{9bN;!MB9F$;hU|i4?@q*z{y$0LH iLt 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 OO@WDlrG6F6CHlV@G|;I4 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/00_button_cancel_press.png b/res/screen-density-xhigh/00_button_cancel_press.png new file mode 100644 index 0000000000000000000000000000000000000000..f8eaf80b9b264afd064a42612cd43b8639a3a33b GIT binary patch literal 3185 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 OO@WDlrG6F6CHlV@G|;I4 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/00_button_normal_bg.9.png b/res/screen-density-xhigh/00_button_normal_bg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..325b5426afcf5f885304db9074da99211ba21f0c GIT binary patch literal 1228 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%nF$y5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8Mv>2~2MaLa!-Ky`Y4UTL84#CABECEH%ZgC_h&L>|v`++-@<#X&zK> z3U0R;qWpsU1UACoPmMS$Ex>Q{>t8BD$sD4}gD{G%a6j$a){eKFE#?rji>Lwz#C44gFg8Jv4 z_x#xWYTx^-Q?^{Y%>K7gWA?l=#~6Gsf4DQD{0Z;RINe~=pY4AR);J1i%>N!1di3$@ zrsn=fHMbwCsIwGoVn~h5V?4AwYGV8$gFDd;Hs|F<=UIFfJ;2Vg<8d$Vyj01Ax~1zG zGG}RpL^dqaC}8}dCVKp%bqarAS#;yBbsM8Q@=|Uv1Tn5W(93Z6@(Koy1Nn@%wuv@G zGVWS;n9XC7i+2Fd?FXw{ pzx|o`$M>I9dDfTvx#yU87+OB$zgbkvJrPvCc)I$ztaD0e0sxN`sn`Gj literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/00_icon_Back.png b/res/screen-density-xhigh/00_icon_Back.png new file mode 100644 index 0000000000000000000000000000000000000000..e217a0a64b37836f78a99955634a67e35151366e GIT binary patch literal 2798 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/00_indexlist_icon_opened.png b/res/screen-density-xhigh/00_indexlist_icon_opened.png new file mode 100644 index 0000000000000000000000000000000000000000..4a07f55dc9ce64c5daee130a34917458d89ceff8 GIT binary patch literal 3471 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/00_list_expand_closed_press.png b/res/screen-density-xhigh/00_list_expand_closed_press.png new file mode 100644 index 0000000000000000000000000000000000000000..b421ad12c552e414a5c71024700a4cc030381dee GIT binary patch literal 3098 zcmZ{m`8O1P7so#$`<5(8WT&z3*_pxEg~1?Y$qY%Blr5UczGO+(X++t#iW(-AEo2!X z>sYdf@MLL}?a?3bz31HfI_I8y&OPt<{pBWHvxKuSUStFSu$UMd*ql=DU((Z_)(Y={ znNu+M8#~?ufa(0dqyl-*F95)3___hQ7JB9^VVe$|W~!wK}lQlKS3&xi_x&k?r;1vJ35*Ta1QT$2H=5|5UL0S3RH8%_nBp9yhM z6{G{f^Pcerz)KTU4cI3d0;D|PM45G{gK-%kZ{mP525;&?3yGbn7SJ;TdF%L?D}W{( zxOR((gn;N=z-hGYp!G|thJ6Kc>Qrv67Ex5)5bI1Y6F}$SAS)nAGU1WpRCPP!mZvA% z7Mjbeh*f6$zS9RlK|0r|+MS~i5^D{Kq?$rty(zQyiS|U;-F@MBX`s^o^l)=Qk%Pz5 za&;FmnzR_-v&y#F zHLz;?v;B3W&u^7%!ZOh4chjGD6Pk>ta!*8xq|o!^#_S8V8q;tji3)y+=d>0!OII;g zut`J++8Oh2YX_cDkGpR4AziZ@C_X-nZGtO2!`51Be`9_RBbKRMj5d17^z~MdLS8C& z0q$$yyNlY%s)Z|GE4|nzQ*~fn@-06u&?$A?k(cdkhrYck&5+^I`&PJ$xw7-(8~ZBi z#)LhOfw#dl99Y8^234A1sGysGzA@4qX*q6OCU{9y`P?Lf8UuB-b(@56Mw!_=@ek+z zbX;&(RER?wON)$hq@I^!508g+sEKkUz!W8jX=hB{79oZ>hKz>p+K8-5m*bR;FN$P* znY`swOQ-%!T2QJxW)Z*GzNoawwLF5qS6(toj6-;(JcD;zy@*B1hHAZ$ywhQG9-?A$0D)86VZTW1` z<(g%273eZQglwW4n2~6|Bg*;O)(YrcOa758k>EX(1n$%Gmo@l@9T@{Syx# zKpJz7_#2b7E6NMiVM?Y-4s|v=&rrH_3poM%&x0%(RwPTacOnyKIJd6MU*RiJHYX~0 zUiYcU%FaSo8dq9Z!q=NsYc@*pCC!G7jt5v){Vr39>k@EuD(NhK#dgAWx|Fe$+d^Ao zuST}Qr(IEKK-O|mR{Es&<`R0D5Goj5Ze=kMI9U+c<|Ca8-nUS=0%%ZepX3_<% z&nf|aTKsZdmv%i^v0J8F_FQy2aZu~kh|v=xwq)kFa_zMa0Euf%D^g~ZJ) z)+{#jY%GW+S4uR^HO;&F`}$w@kLIf2v=zn_S8yx1G2Cput5b-RG@*>p;Av93=v3mk zNocwoF~ze;)da99yIY@)J}X-g4yF<*=!wI9AD>jck`lY&|ZMcT-eYa9#@BJ z+bAQy-c;T6-i(`i(Wm_4O1`7gy|3-vu zu{ZU_!4(v@EgqfUI)N`1bQZMKW)x=}Z}zFR)OXkSTDAM--;9}sJrX&&brN>EMiktTP{E~(2xYE6yn{UVZjIeRfD0ce2>_`CzdW#?UtYHngzZpz2`!IP5w^z;fFd zViETAXL^%LsOV>QO~N(m+If> ztLq`BsXgC%ak9bD#xeJlP#kOKAj6MbZmznmUaJ)lN@iT(Ix7`xPg|wckVt^|j#yQ0 zIAqsEHj9T@_+W3e_B?KVPvx`DWXHG^6R|!uw&7xhlyjVY@Afwq&!@wckXXY>=E>%I zG%h(6vcwnX*YhcN>e;*U$`0bK0n`v`b$Lc6-J?>4r7cW{$0yy>^{&k?e76Xi(f z%SW;um7T>1YQ*!vr!p$8?ezuJw$y(C&Ee?BYqpf6h z!&$p7e>}!-1bCFP(R2aL9YDanpA#Xie)lW7w*z@p)rj z4e`1UaWky>eK?A;%9pQ3n%->={l$GUI+CxhJ>9$$=12KV*_-8_jtrDIBK0;-1WRmI zH(52^+|}FApMXurjp#ZbPmOO)J-XczT(C1Z1*g!)L=7CL@1?TA&Zg$3_QtZruIFFX zQCFYW4Ln*sEQJl+8W7LtIevNETf@UG7r8&OK1LeM87$1+&d&Jc`>^egt-({l{9CVP*{l{H3OCMkZ08km480aHHCVx(}`nKt@ z$IQVw`zKa0tWXUM>r+-QY|0Nov4*qR-#H%UClT+6M!WObPv8Yl!ktC!4|Gsn<1@(% zWh$vW)eleC{#UdlcKVdZOh-tRr+>?xNFy4FtV(*z*X<00hJ(_gEoJ_xBUhA*(Z2nV zZ2xTk&)u=`>1QD-%bV3jM*FRhZYzF@&?X+L8 a*1!yo`*HN5^SPn_=1dGN4QimSkN*z=I#^`wJYSdBv&a{wC?jq?yD8beI&A4N4Y{|g`Dfi z9im^3Ryp>s=l}LM&olFx`MjC=%)FVzo8|@#w3lfC01QTkx>o0?{nx1}&ttV$z`{Au z_#4_j0DzA5uakj-XIuc#T6n==H*b3S1^PYk^z-L4g2DLw@B4Xp-E#*Zcot)gf?IEL zXb=|;pe70EEE7K~c4|H=Xfm2DT||PPhS@lQzhs8pvg?wb9tF=paRPa2DmsPTQj$K2 zcA9FHzce-aMMBcx@lx0e@5y%J`tVuvl;%e5KBj4es*{>N$57r<5lvqOy?W_ubboK( z(yFv}B(0D?V5V+z<9~1}NCu7~)YY#GbW*(oWWnQf)S%O>uv6wrJc(%wnr}~rjv?y| zOuu15jb;Pdp{dYvpsi1a#^i}ugJKHcH00{C0&YqHC($SC;{c60$`2z0c3J%FWX0)# zkJUXv7kH|H+L2pHdH^W{*gQ;nRlu|qkTF7d7=nft(1~ZJYXsEvK*lm5Rvb`-0jB{$ z!C(-R57_kg5b8g#*E4TOoNp?>Q5`3wq8DjLEfqk8KuBK|!y9p4XH#;%;9Q_B-5rw8 zEf=Z4^mYFe0LAI-=W6#)gYk^@c)U_7meEma>pdk&z{O?dY;B~*|NL-Eff1u;l8~m$ zXf;Z-&snMPE`{eEy5fh#WRFHB?PgHCIg8l$|GOK#lBc+tnYGo`Y2#j~o%0|f{0!CY z*oip3_d7!Ugn0P%-Lg=moI|7m#nIR9PY0%DS4J{uVqE6d(+o~p=tw8L;{v@#E;ytF z+lnPiK&oy*%D!BgKq53l{Dbfq$!&R2@|aw6Q4uuU)g%i`m#TDdCI4k2%8U%`TqXjr z*XGytMU0vp?HRo^5=8o;b!t#74A34%836#?(G`-04>oD_Qv;w|94XPD!*kHZCD}=N zrR(Bc7u|`IQVdk6w;Rd~rFBDJx$h)i8wC}M8*bp0aDsf%=2hsl^o+~&XO!-?dCREb z&-BNcx~NO6J(7k(XMmd3nSVBc%q0mam`cr=AA7{#Wk|u2EX4OQfz49DBwf)^)+!0k zXJg2_r*Z#+O1!;(Yr5J1kc&ErYd4V1ifpvh_(IG0KwsaGq{(z0dM!{(U(?WBOyhR)U+7RfP(MmjyFF&boOw zQmJG~@?9T@UB#^Stje$Qtn%;K(PCV*1703kFN;|X-Zkc4V_s8Oqjb-c)3JF`U^QP^ z0>7k~b{kq(g0*^O8DGh&@UTE-IGV%Aq^zzqd;GE|rzg?t)wjUbOY_-R&2v8^#)dWx zzU6)+KM0~{h+~iLPe6%r7jjW?p}2#%UgepVbB`x;_rqnBWw-M-@|p7eY>*OIiO1~e zgS6Sk*&^9I5)gP*b$RtdHJ#1A%@91T>W+1Iy}pgS^-2}Zmz)}#YRt`TYaVMO9P29ss#a@xu!!wT`Nwnpi z^0p;wR9BU#z~qhP5lvS6Ssq$cD|rD&&jQV9HpD7&_al-P*nWsFi}RE#nBrvJ?Y*mW za&wS1hBcNo2HPD<^*a@q@(#T=+v7+^oql6cdr<>a8vY_?!+OSgzJj)b!%RczJ)TSbgJOW6 zIxnQ3@Y53J(4!42bIx|oU5ZJ^jjF$x(EmrDDaEVLenn`-r_ZPFg$Shxzle$1mf3EB zl^L#Fyj;yx&9r~`({SnVWWHjdhU}EwM&U-`RN-Qa)9v8flGsY@TX&Y)<&X$3eA&VZrBFET8*b_mL8!41D3M$aTWGM2) zNS#Q#3&%&HkNMxHYN-<3e>KkR=%f_mbl7#$qUxg7y6X5n2fjb8<0o$9;nVS6jIlQ( zzD<6na$a{%?unomjg5~*#A&7aCm=76%H}Etjn2UyEb9Kz&Cy*bM9EsHypl3jl+dh} zzNCDVW|36Q(KbymzmfH?4zolhM~d(sYmjg%ZAdq7H%b69sx+D~4YQZHYQASEVHTS4 zJ-uBqMCgNjndBNSMzrc_yD5X|e4%O)N5LaLA2|)x4%z68^rr#PYJRg!ENTn2?(t}- z);+fI?1OJ|3*>4x)kp89r?nStrD(Cx@^A3lVp9@SjVO17$NS;LL6w}EqU*yupPB{< zPnDnjcuv}3>1J8Vz?Q|CAf$Ma>m9XsRT|X;LI|`g>=&=c-J+~jf18Ar@R_iv*+Jyi zM|6mUnt4aw=^BjcY9{mErn8}4iw)nNo7!=(KtgO6o1Oo}VR$sz6O-!M2%Nd>Po~A@ zg4cNB{RZFX&t<)-s_DhKjd+ZCY_2az71=T7ROhbeGWs&i%)Vh*y!B@1@RuF|k~=I$ zXp6?ea4+7gzioG~_=q1?(}KT*AHe^>m3GJGo1LeQd`EYA!rFf+e4ilLwG&S@KfWW_ zklC0`cucq-8yz=K&|f!Xb(2W5NW99RI{PRktagcN{MsX46ffj1v|z75ztFni z*v`eS)#8)p=;YQy=!pU08q+fcb=wf*efUSO+0Cf&Ow`^;3MLy99wGgE&WTWp4cl>1#YRIWsY0)w>@hssK?oR z<90(kn!`MZn>^VVLB;!{a|T4p*yxe7^ushJ*u}K`w4peLxb31Fnkp*G zTK7*kPby#|ZX+T^oM)wHL-m{-kcgv+?J4|d-e^hgUT)@lpT}jVTbbKi1){fMJ9{Y$9zx3NS?o6A6kE|IL_qG%p_5e=k1@k%1aT>|4lwu zLn|`?LWKc9M+5MibdH+YkS7^frQQmYQaKg-w2Q6S4|Ow5LL-;p}TpB-;dN_{JQv1V0{{myyE z|2Dk|-+G=FA0EP%&_qUS-g>#0QZxCpm+{w*$5PQ@bi0$#28!Hd4Z|FdEhe-)5Op8GuK-aqd4&rP~+ZNkDRzz6_fF*7x^J7@hrpr<|el|F&< z=fn_T>i7Tvrb~Z71@fQq0l;YE1BYL~?(HA!|G?WnK-dfp7Y+#W_wu>t2|(x!-X4vx zU+2-G%aZbjrpTFlGDinM-*89d!HFmpIE;cqWv{i-eE?LUV@&j*&8nbH@p8f$+XgJ}CKV=@ zsx3IwV`a`yseNE;xtJ&nNXBERvG_UxLw`||1Pa8e=+)fui*pmpEAU{&wficIc{V+I~E$d)@9~S zM9FY1+j0h`8Rn<%DVJPJf<2Y~BtCj}XK6w1h+20+4b2aFxYcn5Pi$W^*J8YUG#R3{|k3i+Zhq}pcd9ghoORp@Yd z&#Du^_S=oVuwAMJ%Rpn$OMl5tWG0cyJsBmMM$elUcPP?sO2e5VCft|EWqZvcL(Npl zE*T;0U@Ek$6Ldi{;ihp@hITJdjy{fWF;U9I*4yfQVSWcEmTL&a8oyxrd?#2bKb@zj z;B(Mh0i9I!;A++7O$ZGq)~Jm^ohAe(>~_V#6lICBo-!>LzAUE7F~gw2Kpkt_A$bi~Zt+&4iQ`un zpS!YB0?JfQbb>Se5`;Y>5#FUC#+d|HmLxv8VD{z}Vw7{#c=W!V=(=1*fvTy1D6Vhj zj&D7kW~Q95Y;W8Oex-9oWkqmBWY?Jy@2(&C>d<~k%C7&eIsYpAs_H7OXRfk=!^?cT zx$gqbCtJEkWQEyZ8JN5_Ze58->AYgx)amcrkIP}ES`%w5Z4%ky_Y$q-~7 zacA^1W|?P6WC_YZ5EYfBmGhNM4tov*i1dov_K~&54l4G`6%1dps~jrv*Ej72?a>w5 z2lBwEK#%T62kE8C(sF3T<5!b~3g4WV)(zARPoe`D3UB;E{7KYA$B zoO>eFoT5`%QLG79F;_u0*zIL{>Cr9c1|B{Owq{t9D$Ci6N}lK1kzSG(ELF86DtX@Y zt<28JMpcgu&f3>=8`uhP0;D2i}*GBY5Tb{#xfo&9j${} zg-YKN!Qy7akdODvwsQ+V+{P4I`j^dzwXXfX90@r=ocR4NJ1}8J(KaxP(UO@-e9%v7 zf&Ne-NDujkE&NueKD@*&%PnUyHiI|9F0v-%aMQpasV z%l$YfO~(?HgVU`B;~IR8_(XF}a~Ve&(Hdu6RXBm}touReBUCi<*R4*`l4}Wmgh)5E zJ1@HNQ*Gxqt`!&A6#37I4joIvG;5WRlTg%yw?SN5H?-#SNzbJ)n@It56`=J=fd1Vjg@Dcxy3y^Z;MbP|&ee zPJX?uzU{M}F#CK^^|^GRqsoKNoxSj{wyPt0OwY3veHW^uY~VIn^t&}thzBGCSuCrXOtL-%+-o5`msS%;9<&rW;KCE%q zqrOjkrgQt|meLu;EE$&&hm6-t3rIu>j40)(g^bL?A1oODHq17hFF-5VXug&=SCi4L zRJaSB(P&a_((6|6avU5-;ZbJyEG}y*$keLezxQF`cxx|V3BSa&9Ko9l>Ae*YR!r*H zk1OM;P~eo)%GS3`wEipeKL+eF zKlzEqvz_N>Tbv!7i%$t9@fJvVA=J0l>bsit(7-S<<1+U}+4vi@)zJ6J1R1|^o2o5j zPHj}HM7WhN_I7)Jbo)Ch-%Tb5#?`pU&DqJVTQ(?&XFHa*SHn)7Rk zH+_lQ;jQl?yeR8}g&L%}{noG_JZBT*g_=5Zt$X4Aluwj{1)jO6AjuQbK=X8n@M*?DIvf0AdS3cKJWKp$;a|F% znoD{?C+o*$@Zmed5{0~{FHQ$)d3hjFhvS=*q>|ttW1wgns0GJp6ex053Isktw0+5<6enrseYP12}dl4@`VGnS6D4RX-(%Aoc9x{c}X%X@qQs%D9n=X>Up{U zW2c%NBPLw|rkKR<;;mw>_3YKrhX!`f<6ODBUgM%&v%1PeP)0wb>2DYui}?(~>KKKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000A3NklqD$dpr&UwiCdexRSAm8hD0_>2(zF(O5)PDx{!;g6+lV)MDn~OCFACjAG>Z zr}R3*6A?`wjgtW!0sH_k@R?gL{YqaK0Nwz&Ot1&x1i1i~GVy3!dOSmKnfdX#c{nY2 z3t&q`*8tw8=MP3kVGZ9qWYP(5k1qjjEaH2DzZUTVArZZRS&d7N_W)K&96m(ZQ_XH<2VHxWTJ)0bXnLSWT!dt+uVtGl( zxw&a>VgFQng3qYPUu@@B1#_`x4QD)X33wRwrn@0js<>NPG-^zfAvitF045@87869& zsblOU7INgc;QY99QG3zQ+c)Ak8&$=Bq#WJoEu)L=vKlA;D(6q z8pz}mfO`OYaSqQ_zS&#p9pJL(aRBgvh;9LV0q~8PhcjU}sj|NZ@DacRfSrJso{w7R zy;CMpRVKFp-UE0|L{~}s8+9xVg@%wU&4vW}kj6H_ORrm6Cl7d36YT_8ZXX;3xU5>N zhGkTa*r#W1(|9a+ee$#?pgcY%5Lp94{B2(-0?24LWceMG*LMk8dR^-Lx5nrC<5pm5 z5DmRHdWn`zhSvwRfSvOAKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000AmNklsHbSsIMpbu37Z(>V zP1AgmPN#bcX;~KH@whEX(hC500o(y_8^9=m4icZ}Nl^fppP&Df&1S#u?(X&sR8bTZ zi^WJR7R!;6qvZM_M$KzJpVx`EwzeJ%g79l%Vq$D&X6BzD6Nv;=Rs9_d2G%}6pEjm zoNUOl+%>4K>qw{5A9P(WG3wa>>HsVNCYi;+!n30Ek+ra}FstkOsitXN#pS`lfe{Xe zW9*y+Rt0cHR-@;2XMJA>iq>iOHC0s~h@u#unwk>F$HzTQkk99#s;afRy84FMe7y-| zl>u#Z8N>Qh+TkQhrr(6-k)Nz__9^ka=Op<_BJ1v7N?}+a+7y?x1c<%xw5kIF_X!B zYu2?CML|BF|Gcxaljb069AuS&Z19lXf`TtC;c)n=rfHW)M@M}3ISqwE>s-jNSzc)u zm%ReLhRtTP7r9*Sk<+!D?z6eMIm;~WR*LGaAiGJXR*7Ykl`rhA78Bh1wjc;@z#{ePK>)*nK;Y1_tWqElcuoh7L3*!7fR_L+0F()q zjZO3u)cIZT(GhKgI|TEf4rGO%xvKfEt_OD%W6O?n8nQXiRxQ%?IMxeLzH12tBM^wQ zhLcF1vbh}ZJbDcZ0x+41ATps*@6_e}0A*EW?*(Q9cDwHLKS9w1 ps#z>|{4diFP`kx_yJxQB?*KdmF^e}p8EF6j002ovPDHLkV1gmGKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0007DNklAnq)T#yT-2CT%TXW5lDtWN{PMidAHr3`r2haoP{{|Xcw}3IW^16QxTbA`3Kz2Hvic8kpn>^or$5xG6mUTizEh0Le&1N5+ zFXla%TmS6STb5M>@V;8DqS*HJ2!y8V9tsR!0I%K>2fGwQc*)%1yZLm(F}X-^)KAK@e6Z)87FA9Nu>#EV@W600000 LNkvXXu0mjf>3LP@ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/00_reorder_group_list_bg.png b/res/screen-density-xhigh/00_reorder_group_list_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..9e57e51c976859ae9379348b7a46656681fcbf73 GIT binary patch literal 2916 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/00_winset_more.png b/res/screen-density-xhigh/00_winset_more.png new file mode 100644 index 0000000000000000000000000000000000000000..473d5aa6a8e79dbe3d1ca8bda054d524fc548545 GIT binary patch literal 3310 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/00_winset_more_press.png b/res/screen-density-xhigh/00_winset_more_press.png new file mode 100644 index 0000000000000000000000000000000000000000..cc82721426d7838c7764744883ddb7112d39b7ff GIT binary patch literal 3306 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 RN;@v5 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�>=+7Ro^qla|si>~aQYAb8z}Mo( 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 LN2(70e(V1LpmDQ^ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_Reject_message_arrow_01.png b/res/screen-density-xhigh/C01-1_Reject_message_arrow_01.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0023ea97d41cb33aab7d0886d481b03d04464e GIT binary patch literal 3536 zcmV;>4KMPEP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0008}Nkl;f?L-@za@zP7fu z9_hM1FN?-xD@!Jm_f=I*1b0$le`~c`yTB;4LP_iwunX)L3We=Pqj4ZxX>3Al-@EH$;2;Wm($c|T5ETo~Lc+4F zJ7Mk3WHL6ee^Ox-%yr#Fx7!^@nj%wasZ>e>TIiIXhb5EA*K>1oZw$j&1`STKpR$;$s!N)trPkKgUS+e{yTFVetyC&@v)Md3GOMer!f~7taO^)8 z@q9jiGo4P)nx-j$18?+CVS(p!P%f80v|6oApbrSI)yZ5gH*edv<~YtVum`w)Fa}Hm znl}Uk;P5<50*!ln3U9yRSqFdIW&wzcunSOpZv`SWX?%Gqg-M`N;T?*#+ig*+)kbHG zf5J4)=en-@2T3}-pM_z?VsXD(t!~!qbvG&+7Tz!8@pv{2>-Bn@z!zX(S=Lj-FcxLo zdkU1qJ^|moh+DKQ>xC>D4DTpd-y8LAp-_0=Xf%GvwAUZrQ8E7nP6JElRhr3U-U1ze zcu$G}3@@s*R4VDf{CVLmi=9F{ozCww!aD_|{Nera64*azrBZp3RDA#9<9C+JEX7MRF}{@R{veHU&Fk91KLY@B5tghdzpQuw0000< KMNUMnLSTX!zLzZk literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_Reject_message_arrow_02.png b/res/screen-density-xhigh/C01-1_Reject_message_arrow_02.png new file mode 100644 index 0000000000000000000000000000000000000000..32e76be5564dcad31b2bebade9244711e18c2531 GIT binary patch literal 3715 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_Reject_message_bg.png b/res/screen-density-xhigh/C01-1_Reject_message_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..a5668ad514fa9e6ad7c5936c1844eb79780bfeeb GIT binary patch literal 3453 zcmbtWXE>bO7T#l&(K|ti-g`azn9*x6q9#$oNJNl0Y9gZ(qD1tJkVG#LWJHi?L5R_! zw`dU@+@pj9))S^+>Z0G)3k z$e}+SLa-VNl)i@ccL1PfKKo!G=gBz$s4T9d(HAdz`uO|Y@$~WKHA16#eQ*1CT)*iK zK+q)K8jG=BWz*cB-9?$i;U1g#Sg|5_txyR#mQ-PJK1v4TIKF}jR?AjKJv~yc?)*4- zQW7qa)l!n?0o6Fg65q3=$mekndJgA9pL>lq?SJh%c|E4JQn7=t?Wbr#&}0}YSSsOY zN>MzFUn09YI_H<9k>ON=zJLKydyVhTu>cGlglT9<@V8LB1F)cBY6NI8%WaW8AA3r_ zhRSw=;i6zI{;9v2AaE=I8Ipu50!V!r4xc4#4f08WbFZ80BDg38oJH<`9R@i3L3St% zI6mfMh2^ILUS{_=UErw>D*7)y&;xd|fW^b4Llulm0a+tk4?|F04_b%})HMJ>17t1Z zqQwAdC~)o;5C{TM*?>iV+g9UGi7JK_aY(7`8jS`)RlRUWgp?nJt*tbVDA9;rf<@Vd z#3ctQ-4>k9As?CaLEY>ipmL6Fh3@k*`7i>ZI+C@0m7w1t|>^6U$3W;#e!?Ag%=e65D0ObLR#ALCdo z`At%l4CSmIV0di|xwkcMlc>fz>Ay`??*{S_M=?zXa*xAnEHyvVyhb;asBlKI-C9WmDZAU7+E7I@9f%Sr@RnHA$j%9{r#bt8$ zEO{N9=Q&n0B?TBprDO+GWdXtJrDbdhv*PbLs(q1cMka-o&(eoEJ=s0?ufP1}|CVtk zoyRv2)!B@&xMjMg{ZnLOeQk%^oKH1d1 z_hC0j1z)k;ql=*;f^GS2O)R)-Y03RO}T%snb^=t%x}!ysP5mMFB%94M4T72L+%hUJ$T zR33~QM>~o0m~R`3n}t03Beh8>Snz{Fq2zKylt^hxlPRs~Os-lUTTTG4x4foWvs~n( z)D%Bd8J}4i0lS9%>JiXe;T~Oc^5IrOy$nw}#YeB&lnOF?DJlZ0=o`jCbWEJ02J3F? z@xCvV57Poi(*Q*F;wiprC%r>7fCZA|lz2!$~wwo=@7Uz;m#sMcus1y4~evXV)} zTq3W~c=LcD?mc2rzG0hL71k^qV&)ZorL`xb^)<|Eo!W+KIr`rE^w`E_3p*M6xz{c~ zWAI#Btnm-3Sf#rpKT&z^ojP03{TiB2^}63`9L-)p>SaxeZ!>{Hjqyuj>Yeqxk2hh|>8j2+w> z+~f*v`mXrL$dqH#{;}4_cT+Yn8?zCQ5%)u*!`glAs`#?igN#G(%a!Kdej8ozA^0(c z03Bhh;qwUhkS4||c~oNEfUfJpyA%9YpcJh#tG0JhW<)0g0g% z^Ay7u0=TiiA8fpX`FMSDHDWjo zyWO9NPsiU2lm0R7JoStay5dHhyFu@>^_IbZen{^$VMV=3o#?dv#(%qJYMI&gjcv|L zwX5E1{%aa1X~Py>jZYeLsv4ZU8a6|kUx#|^uX5$75NCFqga2eZ9UaM2)tqVG3Gvzg zu)jCQHWPMRJUX)f zBy}&D9!-{)uUo`|FwSMJob}kC%skdY%*a7BkNB9?;Q)tICi&kCV^(hWu6YcZTzC5CI78SIxgOe}g>y zKN_{zPWSILJ%jQ4Nm0LL;w z1@Z7m@`d>NK6QgbQmYIdt(IrzOou0$O+mesTbSLat*Wqy}ARx^M+Zii;$Z zXLueEHsxoV;Xp zeBi9h8JX|6fCxAM#>gqC8p@p!fZqOM1*?1tRg>=eML`uFGLV)yyh+qAB0?yLHEcuV zuRuxxKosu3yT3de65)BF6lz5@fSfc#P$%74BlT8Dw|_Aqt)qo@4LuG2MLh2nv}lF_ zEi2er*oH(1_;qeMYiIZ`I&~3Ht!BPv+ke6&V<1UZIMg9lO=lNE`Fjdyzya})Rsp{R v@x5?16to%bv&}FaBh>&Il0oIB?2QobKNSGbHqOZ+?>;1 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_accept_left.png b/res/screen-density-xhigh/C01-1_accept_left.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a487473950f3a40d6145dd16e385130738e8a1 GIT binary patch literal 25725 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 N002ovPDHLkV1n&q@=X8$ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_accept_left_dial_answer_dim.png b/res/screen-density-xhigh/C01-1_accept_left_dial_answer_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..96bdde3a72854869dee4f211b6cf0c50e56d3187 GIT binary patch literal 7283 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 N002ovPDHLkV1hR{+I0W` literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_accept_left_dim.png b/res/screen-density-xhigh/C01-1_accept_left_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..cbd4a6a5a100c5804a72d8c1e2350966c0fe1335 GIT binary patch literal 6566 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 Y0P42HY4ku^@Bjb+07*qoM6N<$f>`>JW&i*H literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_accept_left_press.png b/res/screen-density-xhigh/C01-1_accept_left_press.png new file mode 100644 index 0000000000000000000000000000000000000000..2f3082794fd835e2ebf6271a70c4e841429ae6a1 GIT binary patch literal 17348 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 bnIQRm16ebI>dD|WNeEi!#?=z7TMz#asA(G< literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_animation_bg.png b/res/screen-density-xhigh/C01-1_animation_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..17df09a77627258c2de42dd5e7344e55fa26d5b8 GIT binary patch literal 9104 zcmeI1=TlV6*2Wt_auSIm91sLVa&*YdkfXrh3_&Fih)7hDAV>}eL?kl^DmjRtgG0_B zVGxiw1jzydSAv6*u6o|8x9a%8`v=U2uCD6+tkr9;+Rv}MYR6nP(x#(6M-2d=)78;1 z1>n^CpM#S8#|jpqo&95?^3bvH27u=5&p`q*v)KWlHgzED+dq^YQtC@C?ALwT)2va=C(WMfgXjGOCoY{1DAhD@svM3Isxo zTL`Dic9~hu_LOa=npmrU28UFr48zBrJ^*r)Sbn_i&XFIEz5<7nOTf_I6kTf~Ke=FM zw{W~PQ0k!uz?@I;;IW8!^|=s5@({P)02b?z-6geXZvoWte@d{4GikF;|yf)FR&$DRP((BKz? z_f)HPQ39Zm8!B9>&biydF49bXzUA~(3(cX8TsV}!y%ov`rFIB8?`3nT>>*SrvcHl` z*hc(=8kbD7iF0JK2fbLU`CEEr4~FlylsPRz^`TT`>fMxQZFwi7N$g^gd%u zEjnaOar`{*qM1!D=qJhQNSemNdCYaVww1k3L87d+YLgVZfz-pp$a-zbC!tj)${%Ro zz_3N~=fbs~(Y$x?k<3hF&CPo6_4=H0yjYR^oka2ut)M-26@YJW=mM7rxsOBcx!))kEs;>cpBU`KKIvcF6>DBu{5 zLonhX(G=GV+K*j(o>1gd*lA4x^EY&GBDb-$YkgM1zL>Dw@)>#~c(yMpr30ezk zqY`na(JN*XX48e#g{+3k3VRh|C9e6Ld374TO?L`6({mbcgya~w7tZ)Mtb9KoBz^=x za{FGmr%j6_ucqZE$J652l{#cS-Ich+yYOF3VAtE!VEMKwwrO+WN!UT9=ObEwYca&T zbXqU)FSvEObv_p$7vL4pH(WE^%rrH`7F;S&G*C3?>hJ4+)<2pdo24u{Cbg2ak~Nk! zTVrGCXDNay!n}3Vty;7!u-L@Z--)njhp8}#>)G6h}K1br!&C0DTbYcFPn zYYH=&xa>{UppMq$HnMB>=jE>5zFH2 zobGN|)brW%ygnB&w1>{B&T8E#!oS><+jQBCntIwN^Yl`Vg|zqkwr0UCHWbt8H<~J^365fHND1d z?m0IjW?>KbP8?1GP6k0?$VCzqX-ueksMV>1{eb(tO$n+Bc*n0*6C3LBxma};^~8te z50_fXd7ZmIKPu-Xtfb?Ta4z%_SA#!|zNfHVwvB5GrWK5cia2i;Ddezb-s5qT zQdVe?411jP$P-$^YnY5dt)Z5k?)8>AMpPYl+=;6Z=T4z`=UV-!?6id_H3nMn32rGg zCQMOa^~dx;QcH6#_iyx7_uwDNXKy_{*DxX_f}5@(cqPgBO!lh?(i?O2Bary-}+leb;g<)XW=S@m)>m3W<;rbO-;V%Yo;9>H7H6OL5gHR8=l%ne7JMjQ`x52^{O6)`2N`>6+R*UOFEJU6;X zhe(eo_~&^+Vow2H6Ek4d`0Qx=*<7l?wsfI(C}YeB~Z;0xakxo z@5Kj}%~1^hb&m_hC4LKb1`U9}DM3D|Vhh^p1`)cDragImqMxjTbX+63~5 zuz};Gy+j7s>BNl0-blL0^_(jz5Xii$*U{=>A#A{5Kp=@7tU0){rLOZiG@`PuEYpr1&&vZ}3g)__5@T`^KsI zbfB0YlE7yl-v=4C?8Ugblsn=w7Oq_R`53bDbmryQdROCCamntCnYo2)(9==NlGtAf zy&FeeTRpMXw{w4`f}C`a*FJW@%gt{8ip)OwXdgcozObIMVU_bw1%w=ph_HWRS?GV( z@^kD&NXK=cjKH$>n3W{W?b mz(n8tufEx7vYhjy2QPx#Ih+$#Ie+}}0J@q+8Wm8RhyMk&*fB%^ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_arrow_g.png b/res/screen-density-xhigh/C01-1_arrow_g.png new file mode 100644 index 0000000000000000000000000000000000000000..dc63e48353555ed97a17f9a7da83146fd0fb60ba GIT binary patch literal 3076 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 LNkvXXu0mjf#aFRe literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_bg.png b/res/screen-density-xhigh/C01-1_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..0f9b4805ba6dd76c633a040978405bc8f8673eb9 GIT binary patch literal 128622 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 ymj1Rg6zDSr z1<%~X^wgl##FWaylc_cg49rTIArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XP}#GU}mUbW};_k zVqj@vsiRh+i#(Mch>H3D2mX`VkM*2oZxQ#zd*q`*i_F@Av`lL zCBM8Ftlrnx$}_LHBrz{J)zigR321^|W@d_&ftj0=i-n=9i;J*(J3ovn(~mttdZN0qkX~Ox$j9 z#%Uf@ZwhX=xZu>Q4|I$^C}NQ!8YToxJs>7L*#bH6grAxROzlO$Wc}w=&p%*pVexcv z45_&FCi;B7kfTW5ZtLg-!L1V|d_(whd!s_Gyt-InAjNmA+dgkudHyl`1GCEy%RBhm zMD!gK5awTUeO}HQ&$S&g9h-CyEz@pHO+PN#!L_xbXlD5gcQ!NONk1#z&(6Pp+dO0E z(o_Ml?MWYgJ-rlKS2?-g(r%f8%;z6Bo;*IgHTrv)oZXJw^RKW>xU~AIWZm4eIx&$p zm05OEZ`3Eu%ACdc=D$+HpR1p%w`|;c_0EqCaew!0ocH|lQKy9gYGFEB`zG(Leg5yU z@^QZT+c}>rvCYn7kcI?&*ZOpbN27}@Z!r&?)0qq zTmgp~FGU~jAN)&99^B*P`&V%Hu>QQ~t6eIT=k7GQo?*G+a^7JT-FY3%S34ghhcQ^n zbsiJ?W-i^}E5hzGQ_zpmUeVyipWY8&OZ$tR+5)|POO#B=Yc^0|Ff#bWE;^atAI^9o943w4JGi6iX zgsBS|l=Mw}-p;Dm)SkD?%`SW*=d3$_PaCwcU0L_@wz7qgvdwNc(TLqsL>&d!O?v*( za`l$wl_zYPbe$)QOSSpB8*t6KG%?oP_M}ylTIiAG%AfM~^MtSJ*vJvSb^R^V9jv^* zvCVH+F3RG1qne@dN@{DiKr37H()MNX&2AS2wmnh(o_&F1mX)+Y*o7HFCOwj~tOA=0 zudi6faO+9rT;3a-zqw8jUpepIk6YoYZV{(AOZv^HF6cet7Ob8nP@KZx61KWDBUVuA z{O78W#ZKF1!#Z9ZvRqI@}O&I?MgOh|fqIqm2Lb#L+O zr3>TMJ0EH2I^d9YE>>^q^{~$(UsNWnoRS)uFe@#C!D=p_MIW;n`^DVdS2Ita5$9^X zq%W(PcYPm2=ey`F%+o$;Si985b2E4NYbI~G-XRes-xBeAdtbr&DL>u&s?&PeUsQ=G zoV}_yCqj^;;l=x(S8p%g{8{__JiC|v|3wlQc=YBn957wH4pc{Yy85}Sb4q9e0MsXg Ah5!Hn literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_button_05_press.png b/res/screen-density-xhigh/C01-1_button_05_press.png new file mode 100644 index 0000000000000000000000000000000000000000..b68bd66ddb40f0994bb0f33d7ae1895e2f5e2f46 GIT binary patch literal 2959 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 Fe*kJ>WMcpT literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_button_call_press.png b/res/screen-density-xhigh/C01-1_button_call_press.png new file mode 100644 index 0000000000000000000000000000000000000000..d580d24f05fa526698f323b94d3fc377572fad9e GIT binary patch literal 1584 zcmeAS@N?(olHy`uVBq!ia0vp^d_Y{l!3HGt5*!nNlw^r(L`iUdT1k0gQ7VIDN`6wR zf@f}GdTLN=VoGJ<$y6H#24v4 zq}24xJX@vryZ0+8WTx0Eg`4^s_!c;)W@LI)6{QAO`Gq7`WhYyvDB0U7*i={n4aiL` zNmQuF&B-gas<2f8n`;GRgM{^!6u?SKvTcwn`Gtf;oFf&vzGto0N zF|ahT)KM@pFf`CNG}1RP*EKY-GBvj{FjRm7C7^9ZDQQ+gE^bh}fIM5JjFOT9D}DX) z@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal z@=Hr>m4GgVcpgi&u1T;Y}Gc(1?$-uzH%*@!;#l_gt(9qS;(bUDs&Dp}p z(Za&n)YQZUrq?AuximL5uLPzy1)m37xbI(>8PqO3RXK0ouu7R!vwb2~S`J)pdM_V?NS=KE{kZ{N)#xbS}0 z(MPf$KLf;X2yBqCu{@%HZE6;54*U=XEZ}{%# z+GE%JlK-wfZ8pvO(0U!K9~tsx0WZH!covzI^{BbSeLaH50k`c>+u1MpTH+tP) z#-H@D`uJ|?m-@6&t*Pucf3~WN=j)x>_kSP%Y+b%H?iO(j4Hm3&EC==~w9b8dX0`bF zSj(h`m+su%^Lw)6;?ob8xT!B&=zIJ#XXC<0Hqt7=lfQ~JC-(NKHWr&{8VY4pJG_wN zPpD9Cn0Ni~g@39om$%u^6A_tx_dRoHgO-Q1$i!#YI+P^?Q$3zOxbbjia!s%D9e0z8 z@)a$nTBkIP-4hI+#7tej%A0}5vBCJj)dCiad+sK_pEQEl+q(LSwqBZ>HRElE1#?D7 z%I3<@;L?_4zYz0Ho{dW+Lm7mNSg#hH%UHBZTqf96eU*;*vKI<3-Y)j!ZFug=ydr() z#H)S(^}`KT-74fWaVX(WWoB_OHs7SiC?XdzW%X3cbwaVa%j20YyvUxpdG3VHO5TK+ z^?d<0E4mzdQ&K%jUoiU5U(uwTzSHfP#b?e1rXuwh7=F$$_#W+K=1)KHe9863;|32)w=dTy z4?ej-rMBAm$LaL$--p)m=S;2nyiYAB^TXz&`HXA~g*pw4%TJxo1eM{Qu6{1-oD!M< D;S*MW literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_button_end_call.png b/res/screen-density-xhigh/C01-1_button_end_call.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc2d30cc1db69bc8b1316dd475bc680dd11b817 GIT binary patch literal 1544 zcmaJ>dr;GM9FOQ^qA0RW>+3F5*oi>X@NS?M+VH4S9;L3hiV&Jei{xPvY^lNuqB6JB z&G-02#Q`D;!`-rCNgKAb9iC7IEg!ZMGKN#j%LwY&vm2_PD$vj|X4V%db2!0`O_ zzY>uEFj;KYrSWN+1jI;_63mH_SV=};13;w0%3#KI1P^8r*=9;EesZ=+44QGdSRbO1 zY8Vw^GRNCkBGs0tGuqY}Ww=gQ39^I9MtRmidE$QdkPXfsiyT0G1*lVTcq4M<1~ejm6g@ zS~PYvmT;1bO+3#a5M;4fB$glv&1OTeOeTY*fly#zfPe_#@+ls(22kAMF$I+1jI5dA z%`^o%6|pQjkC%&uOy8A2GUKuoH`*qlVUQJLAXp-GmNW*`X#O8clH+KO*AnmZ{ZC;| zm(LK8mf+|-)+h{a?P6yr22rsD#?!2hrgO)-m~5hXnlsT1s7eiyz@Xkt;k1Pt!D}># zn&NnjG7@T3E*2CdW;2c`Wuf6P3df*mkPL=nU?m(Lqf~_{L&Ic&;mWYsF)m6Q^GJf? z$GG@=ZtR3yrxi#>h>Q}fc>{sRvNQ>fl#G}s&P6q$-Y6HJI2Uw6E+ixaIS2c%L62Pt z?s0C%Z7UqcjZaX5+gZWZm4(-m0KjFF8jaRjZ{1%7(;dkk=ZA8?$C*9Jep=VQNqZ;3 zFn?Hk*&g+3Qm0>`%e|vgm~b?BdI@fxBT`N+sadk}c&Jv@>s_1P3^g}?O1Zm{q`s}> zAiur$_lHA&-mwf_ZJROMYnQF@e6#|J*Q=kjP_7k<`0j`u&wYO+Jmc-J`Sh;($F0rR zYsg2oEz`^I;x3p+>Es*o;r9MK#p}Y&17&~N$$}U5TUSnk>Q-lh~8j>q~W|Nio>oFa$AbvI}~J$=cP(q|&8XrF88 zb%()_E{QW_tXU)P>@4be`ppTZZdXz!JJTXh8qU~#VWSV)(cQi6_|G7?wcHo>tPb)z z{q&q)(bs&jb?e=^J3#N*1=}xn7q9;g-LO!*Jg0}R3DV4n%z!>gZGB*jYDH_Tn#_#pm(VcAmuMbCON`+6#>?{}WrKCM9KSa`tjdF9oa zc~^@1{9d)rjyksU*hllCup8eZ5!V8mkL+5l_G#M*bpAAW*;KnbC@%kGL*AR5vcYQR z$?176)tfp}90r1lcy7Z|GW6H=GM_g~jbHuN;+Js$#Kkjm*XXBj4_)bH63Pxo{36nC zUhh#_dTzfuDzq5(f_&D*z;zt`?f_@{SVOtM^*D5+qrPx z{Sls*7B#{12EjP$&QZ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_button_hold_01.png b/res/screen-density-xhigh/C01-1_button_hold_01.png new file mode 100644 index 0000000000000000000000000000000000000000..7b9de93f039a1eaa8a83d2e82ffeed7b5c2e9f25 GIT binary patch literal 3039 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 PZxtBmm}=L+93uY*N$%c! literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_button_hold_normal.png b/res/screen-density-xhigh/C01-1_button_hold_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..99641b961e8f77acdd5eb9ad0c87a84d7a12156b GIT binary patch literal 3447 zcmY*bWmFXG^L-GcTRMC}5Df7v$mR&u0LI^7#k)xqCiv10Zy^$P#X4 zxz46~xUjEfl!(YO^0Q#2<>oak#RotVI!;3guqK6ANuGprh7GNJ2NFaq z2{ssc%ZL)e0yM(Yw90{oE(xM2PskFKkO8M*SC4`on;zmu#3Y$O4TyHT$qm=*_;1~7Mh(9i;~I7XUAKuHTE%@gBp0I~?+ zG$$>hMxyA&r1Be8FoKFYQTCML0TeKp#8nZT0sBoBdFM;c1sW3F zVfmcWQL+qQ_dWqof@HnucJDM4M_-4-$)};|?}=}8lAm95aalQA!&m!j0I(DsIeI1r zY2rdClOuf2O0RE|dEBKbd3c!O-pHWQ3`*8#VSE06XQT7#Ic8>NZFP0puvg38c?kC8 z4BmYY3p;)AJ5uH3@Zjr*Wx*(E$0$9rqp#hc_KnMU@EKIGE_2_~^-fx7&QEy9uk{+Z zU~EKLR?L|L(zFXw_oU0NC23{c=(|34et&sU?3h$-Q4TbCsgXn=#VZ|MNq-p$Gui}W zmk$BhZS(8;B0@=u@Q7K$hn(-IpX!xd2MBkAi~s=cY70tO4K=9`Py(P`5+&N8$-Upj zA%-RA>AF1EMRVdLAFCzU+pWc@MSUN^6XftZnbE&XH{mEdzF9Jp1R0IBjC-E<+6yyke4Cn8snPm8o67Zw5Ijz z0*m>|S5{1N>2_MRuh16t<_VQoWFHnNj>NDT7?stQW{-1uuzMVO)_)IfWtz{vYMT2Q zHa5Jj_dWMJ>3#?;T|8^dKq6d(vyg*=1I`)3QJ-gA&N-gKIbbEJAhnrC%xB2=v$hdM zi#}#W4pC zRmznKD0roxmHL}V+tVa++aBW{Gw2)hlDGF(+WYxvTsfOU#rVDHs^cF<$@L1o9hrIj zNVF~Ql(#KK6;<_05h`OS18cI_%W_wzSjh`GdJ$|&MHH#X-HS|KVA;8`e1p4O))*t@ z=HQLW$<48;)~`0N*4ylmuiL69D(}!~vptTY*Bmeub`aKsr{gXc5iMsd=PRfy*i2NF z4(cRO-eugc+O$JDeJi%}ia*>%6dU_hEQECs|L{D4oLZgw{HZw5qqQM#q7@`3(Be2$ z`s4!qRCpl+grDY6#~ux6nRB*t?ouogGph1>Lid?2L#k)L!;0XFPrpz9YawzWejy{1 z4U_Ex3lmKFjdEpUW#fU7Pa~xxllgLms!~(Z#6n`>RN-QalU=Bt7`hVu-p!zK)vnxj z8{O_3XQyaeW@ByV*rZ!qRC|50t+uU#sRCn~Xv&?U^!SM%EOMh3kLWKp`Kv`~P1v9123Z$D=p0=L04 z;-_U+&{u|U^m-Oq7LMz|+2NR=n7zc5B%|nIiCi^_Lhk;yAE%4=v+KP(8g7kvzy-y0*mcf=`vmU?VdvS}sPAsa&~`(K%?)qV^x{9PNcdxRjYL=!%wkG88pesHx3d1#WE8DrOTE5(CFFV1 z)FeFP2eMr*Ot4R;Ol%DkD_r%w-I&gJzEG){t>6)#kF=^%hg3`k@_B$3ir*v?4c~x& zbAL2k;}+L=*5{kj0=b$^@zJ~KdCg^8acZldKNHM3n_~yvg zr=}sobA=Z>FVDA_yP20V&}H#PFmYa+ZyhyWij67(VFc$HIsO6(pXck#XZ@ao7!?Tvw_$yHaq``FXC2XO-im~A+YDN zKAjes3ti(*@EhvPpUZkzRo#oZk9Qw)U;nlsUTjaFgUbDuOYciJGy9Hi@y@%ggI_uX zNbZOTp)Cdt#k}rRdEf3<@ewzotZwzjYTxRQmHhVDe6#b^k?-g>cSQRy*&h=G`}V_A zwT~YN)+E*@6Ydjk#|Fnuhw61nsP&_qV;{#_Q=fpX0n#zjQwjlk^c3dH1n-!tl|}mG z%}qV}fqy=n743wG)5+6WKYP)?Ea0ylwz_^uwRm`yPHFa0YDCQv#rQvuc;UPdFRg;z z0^LH(f@6CZ`&P40YNL}I3*jevgnt-b$g0?e8SYtq^qgIf9?yjD;!}&Vi=ISE{GM|n zl%gYuuDC@n2EUzF#^9wfo%0l;a=S9lVfTITZX;ps3hX_spkC>o&qnZu%30>P*+AQi zwt_m0gEwY7yrVh7{cxSTSOGV`-x2nc?R;{gSW$JpV=vtAu>54xXOqV zF78b}SA7c;0K%^WfQSL$_xS~`1MpB1fDI=Al=1*z_sh7~rwhQPQUh&GtI*jWa~*!; z8a(|!2Z*!2H-+1$AJ%47N=otZGZ-f_x#uKi=b|n)_UL9F3I7+vO2jl{;xl!?-<+wC zLyOGdT48Jvyc7I&+Fb;x#oEloY+1asvA2udc|2}r>*&~*#{=X53^ft}(#UWR*_KSz=q}YFr#=sY@ zXZc=B=*F>J#8{WD2g7(G3`n8h=QLB@FP9d9aZE&p7; ztjUg!`8)06m6Vlfq{V`*y}dmf@a+wFERPS;EXc%v5J|phhvchW3qe&U=i|oVu@Eo= z{^T)Hx*1fEP)`)8|79S956TwI^n(E|eDl*(|5yQ@CCULxy<6Q(Y5xD8UOfC&IhOuY z|D%8H7iOuy_6zkts{6m{Sl9o3rguyC{W(J}CBL+VaZahoWrPFp*l0b=6wEC1oP~gh zOIXt?tBs8NjfQ1o4B#ahB0a~g4~3#14BVA>w6XCZ4TS(f6v|gzLSh^F?dSo4{-NX3 zW(vfr)0<19Vg;g-B=BooY$il}L_w;;p`a@y*c0IrLV8 zMOAz65?I5TzZXL2rL73&xYfQR__R%JW;clyA}w$vx63bkKYE0&M|rsyxKE+Cb_&Wn zz`wJHr>9E=0awajqEM|{t=lG359=?9toYwPk#)@J1p5BB1kZXzrW+PX0UzCTO@O|< R+{I=C107TCIxVN@{{z=wVOanG literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_button_hold_normal_01.png b/res/screen-density-xhigh/C01-1_button_hold_normal_01.png new file mode 100644 index 0000000000000000000000000000000000000000..c95ea48dddebd0050b9f25149f3d14fc6afee129 GIT binary patch literal 1176 zcmaJ>TSyd97#=N3Eqll$Dud%#MA*({-HSW9R=cy-V!PS8kv^2o&Kz~vX3jWswjB+- zNEAi)D5-=fAA$m*zzBS>m!w{Li3lpF9;%0et`r4PXUtWJwt@N2IX~a`{g?A|4mZWu zmzFFpp(v^}xs!1I%0VSoo>prZb zs2Q}HY{4zDje?9cMshHWtr>((QFUut0VPrz! zWjL42`FP;-FuaEgcmk_{o8vi_ce9+|#dCt!FK|4V_-GQ%RN94v*f0@`oPu;G#)iPM z*=&}{)-cHIVEI5Gz;bTZ?RF7_%j(v#WV>{$DyJYqOEy<4IfqqLe}z9HdF6e@f7d zNm<>RXcK7|YfA>pGn`XW4j7C5AF64SXbUIcRKEWdwvycjWE0Rr8B-<~*Iwm>GK8=R zC5+4@LOXL^Z0bZ9S)IrL;bt$xgRQErpsY2HkHv(jZedB6VN?v#M1fINMex=51MZO5 zSL+T(cs|01d=X#BSL=_|itdI6znJ5SNX}?b$2qPt#r5aqI-{T&B(exibr)0`Or(MF zk_9z?E}p!46I>;KF5bLcmL$VE7d!2ub1pJH&USKa$zgKvp-!gVBx9Yj4!)(Rg1J#~ zUDAH??in9Huy(;dX-ur1UvhEyboiuEpugC@zuGQ3ai@6I*P<`W1`3x9-vF1*Gj|uw zX>M{WDhlZOdvM&oo0Z~ueM=@BKlsYCrW<;A;S4?1r}G!hqwLOc3?16oy#3IG5A literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_button_hold_normal_01_press.png b/res/screen-density-xhigh/C01-1_button_hold_normal_01_press.png new file mode 100644 index 0000000000000000000000000000000000000000..c0250f69707732f853b96c8e68c5245a819ba72e GIT binary patch literal 1331 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 Td6@n8EC7bL&2+25&Qbpd3z!h- literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_button_more.png b/res/screen-density-xhigh/C01-1_button_more.png new file mode 100644 index 0000000000000000000000000000000000000000..c43908561bd38baa9d9a43c6d4b07fc3e822e456 GIT binary patch literal 3648 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 XJ=m`hSI;Lmp9dJ}nd>4!E-(KFu*bfP literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_button_press.png b/res/screen-density-xhigh/C01-1_button_press.png new file mode 100644 index 0000000000000000000000000000000000000000..de4c3f92777b26e445f4d9c4b8cce56144d719ea GIT binary patch literal 3357 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_call_ID_thumbnail_366x366.png b/res/screen-density-xhigh/C01-1_call_ID_thumbnail_366x366.png new file mode 100644 index 0000000000000000000000000000000000000000..a85028b75878a7d33ec43b2e2b1b269d5e6110a8 GIT binary patch literal 1788 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 dsvKm&_&+#t0*e3u literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_call_ID_thumbnail_shadow_388x388.png b/res/screen-density-xhigh/C01-1_call_ID_thumbnail_shadow_388x388.png new file mode 100644 index 0000000000000000000000000000000000000000..cb114f0bab660c2b6db27575d722cced8eb392db GIT binary patch literal 4431 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_call_bg.png b/res/screen-density-xhigh/C01-1_call_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..70a0039c4994184a3d3d14517fb148c9ac0d984e GIT binary patch literal 26325 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 BxuNW~Ah(fixpUq@+Zo2BSNr8>C~f(H)Yb5k}{4 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 z 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_caller_bg.png b/res/screen-density-xhigh/C01-1_caller_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e3fbee9b8b6df0c229896185fd9497b02040fdf9 GIT binary patch literal 18947 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 I%`CtE5A{C(fdBvi literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_conference_call_btn_01.png b/res/screen-density-xhigh/C01-1_conference_call_btn_01.png new file mode 100644 index 0000000000000000000000000000000000000000..b50ddf08fa980a3504b236b3e42314462b09d5da GIT binary patch literal 1529 zcmeAS@N?(olHy`uVBq!ia0vp^d_e5P!3HGLFFij7q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1Ffc1+hD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Keo`G(%ftjI#nTejE ziGihwrH+D;fuVuEp^?6Uxvrssm8rRvfuRBvC;@FNN=dT{a&d#&1?1T(Wt5Z@Sn2DR zmzV368|&p4rRy77T3YHG80i}s=>k>g7FXt#Bv$C=6)VF`a7isrF3Kz@$;{7F0GXJW zlwVq6s|0i@#0$9vaAWg|p}_G8yuzFu#E6=>*lEl2^R8JRMC7=m(LT&-jW|!2W%(B!Jx1#)91+bT`GI6`b z8K-$ry(zfe;(}AJKF~4xpom3^XqXT%^?;c0WDDfL6MkwQFtrx}lXdcGHC6@&rd&@K z$B>F!SHk_Xg&jreC(l&z^|+EGaL`_GOHhu2Yqz`qq9;#|KG-UMVDgvbiZ|>UP0MQ< z6e>QwaW!bYW^b6VF?-ET-)l4e8vmZNa^|jO6W*QMCMa)HHuLWNKliGC&%Rm7BIp>o zH*UYO-uG60j`Kb3u@B$3?9VWfT7PA?3lr;uRXf(}uD=tvci)Z>y?Iu){Vf4M&wRGs zcm3_RZD!GP`=i(LevAwD`Ow&_zQVTRN5!*rGOQJ6IYz&s5eaF z5q!|XP_nw}ljWkazIF-!sG^FPN!_P9j&EM`O)}8EXk)7|mucE0pWN6$=TIll#$~G7 zePw;WLS3&2TONt;^XzUm*5^~vI_FdVNkS={h0~SKP=f!jbxE1!oU?k%t79(SKl%S< zp{ir(!}^u0z7?{X_GzD-CdzWr$@S~q6Zs2XSLlf=f6-X;*y=!Y12b!Q+by$d+is&W zmBpE}1S;048VcRW*?&JTc+#v}>u)ei_uP#=5tQNG^Xi%0biJ5JWu4%2&p%J_Th1Th zwpcJ?8f#l(gYg#Y&p*EeUp%{Z^^aNi%j_6uYp;=FoEF=czVp5C&jZh8CRSHRdZ}dW y=e2nuuP$|d_aW_t{;Jvk!hW1Cc>L45fsx@Fb6fQMvY*kQ!r0T*&t;ucLK6TRF+)}W literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_conference_call_btn_01_press.png b/res/screen-density-xhigh/C01-1_conference_call_btn_01_press.png new file mode 100644 index 0000000000000000000000000000000000000000..10a73a57f7e6fd720faf67a983843a8cb5fa3ac9 GIT binary patch literal 1532 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_conference_end_press.png b/res/screen-density-xhigh/C01-1_conference_end_press.png new file mode 100644 index 0000000000000000000000000000000000000000..ee1758919b3e30b6441e9ac8b27f431d1e016d56 GIT binary patch literal 1408 zcmeAS@N?(olHy`uVBq!ia0vp^0YL1c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh*)icxGNo zet9uiy|1s8XI^nhVqS8pr;Du;&;-5A%oHm(7h^LES5p%UBWDvsLsvs5OE*&&BNtOw zH#ZY!XGde0UYGpj(%jU%5}4i;gkDpedO=Acw*Y9fOKMSOS!#+~QGTuh*vnR#xZPre z(>$o&6x?nx#;I2y=oo!a#3DsBObD2IKumbD1#;jCKQ#}S+KYh6`sc2yWCjMtFP<)r zAr-gY+lVV2ASq z%l-b+;(zggKQvVApU(QG$mp-W>D2xQ zD&~1RZg@UhcubbZfN4jV$7)0NnTLw}>_e~jihh~1V)?y=8>Q04=Y2NW`qV1?;y<=m zvG=~lczU;f%DuU5mf1F|nTM_&uYDBvyX(Dqz^(0l!LPiHHt(w3_o~|G`JJpYit}93 zWLK9eMoNX%Cx(SG+n-u0tNrZerr@>D)``wN%5$T%|NE+H=hZhN?mxM~7#zD&cU69F zWN0(vD=tgPMMB3uS*`XK4f!==>xC^54slC%PLBEcJmIcX?ETkkrgdfQGvwS9^y=Qm z3v0wh_p8@lF!R`|e(b+?c>W^owJps&InswivKxNoUfUg)T+;AguVN`bmT<-l{s$3{ d!y6bG_?LV7{Q35EHn2!!@O1TaS?83{1OUQo`KbT^ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_conference_split.png b/res/screen-density-xhigh/C01-1_conference_split.png new file mode 100644 index 0000000000000000000000000000000000000000..74cfc0b688d8c77577ddc35703eee5209433072b GIT binary patch literal 1621 zcmaJ>Yfuws6wO$0T8)ws1w^XrDi$S=-9Um_6E(0&2_+PPV(K7eNj46*M72xZnblPYjjHGZtB7_8bND2eeU?Cg~$%18kKn%f<2o{T=5CIG!k`M%ffr$rX zqfrJU5`(HIVzDa)Xkr*EA`)d}WC$~Ygd~+Bf@Lz92oj6LVgZW~(3utnvk5Hp5|;vs z(|XEmWz3`na4KTSWICe&*-T%TKv*YbE%d}Ou?HryVO9|=gq$V0fLiVULkVIMO*1k0 zn|%LMn2yV|;-VOwCetZB+c@JAXDBNYM&TGkQgI}i>N>?}6UmUYiL?S?u@WH+tT$T> zWClHs*J=@sg=R2|9@n4>kW~P zoQ?fgqg`99dz{lr+p>#EH-la@Uj=3BTyCh~MCGr02wLEc#$U^iwVf zRu|XZowvBwdr!&e;YHlPY$xlR#!6lqA1?o%=cb%^clJ~joA`X6_s)nUo`&yqrf)v& z9PIC-xL(-D2WPrXdpVi|obKBf)Cd5aETz{IH&u99Oyo+xrkW(EwyCmn5XuX^V9Zj! z%HEzg@MlOhuW)xwXSbjF&eEX~8I6b+M_gk(YLof?d?~(Hc6(( zju6)eo_PSb>Yn%b@%t8a$Zy@R*Iy2JdiQ9!=Y=ILmYTqey>kiVtL)ss`gY}TL;1z) z`DHPhpbs~kia-Bk%T`XqeYJN^FW2n9E8w#XX^CLkjX++@o#G)=@Ht1k!}dp-s(cmX zH``-D!R0(gcii3*dCfn_hx;W8{+2FZsK1)!@b;*?6~U7WcQ*7FcRga6z~9iK+Qi?A%_LmF<@_J zs>~tSoq8hTSaUX2kQ`icBi%me*l1pU`Ycgx>V0=CVc2)LDAN&eaK%_i^QIS(H@tm* zKM@%)RH0Z{XqThMbo}h~k9&4`x*411eSRr%AK;N}SbW+TQkq}pULLoi;c&7~R1t%0 zD}AwQj~8BbHZ$-?*-77Zms`hx`^SAB>dsZTZx9}`-?O}&>39d+n)6CgTL4zh8m-~F g9K~9z#s11GiPN~h??_b_p6k5mHL57IA~Y%IA8B}Nt^fc4 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_conference_split_press.png b/res/screen-density-xhigh/C01-1_conference_split_press.png new file mode 100644 index 0000000000000000000000000000000000000000..ec1ceebdfb05f76825ebb6d1a55198eb6d19ecda GIT binary patch literal 1420 zcmeAS@N?(olHy`uVBq!ia0vp^E8U}fi7AzZCsS=07?_nZLn2Bde0{8v^K*7iAWdWaj57fJ{tG z$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@*g}%P{mFDKcRTq~8r6Sym)!^cg z%7Rq=pw#00(xPNw#HA^NtSYc_E=o--$uA1Y&(DE{Vn9ZINq%ugeu08>u&JJ*LU?9g zN`84USiP^Wm1kaYNn&1ds;7&s63_&_%*+%kb2AfTH%B8A3nOPULqk_XOH(5kS7%FO zBO@0BXLBbATTy+!hDLQgt^!)eCf(h zfj%;~KUQDT3>Cfp?eXtTYq>O2Synz}<6vNMKu0NMn=a&Pv=n411)Wm04YS!c_uIy{ ztQCv<98P#_UothvYoWFNLTgKDu|r`KCfiL?b9SC{B~|C-tS_RDTc<64$+xFSvTSzK zT{WYJM)#J+Ms=iDP1!JE+0-Lnezde+2~t>b?b^iniA9GCB&AlbajP9G;~H!2<7oC9s6fDC{cD z-=2Ll)v9@=@AR9IET5v6eB_*Ez0`WE>Bi*&lWQJKk>=Os>Q$D#>@;Uxi0FrD%ul>; zZVA~s^V=R9&AaBz0h2a*mFKThta!S6$*u-P=bddQ{ufx7{1-NkV%d7MzIYSg#+qeO zg|B#TJDq!S^a}rPt|y!hS>-#wEz0`mU~&41+V2l%osurg{$N{@Vp{g{ZR)Mm?}3@- z4|@}YOxLSl@w4IO^59?a!ahvpgZSpkD~b$E3TQ}x;pH@WMmC0jzs094|0vxCDjz*v L{an^LB{Ts5JkI+W literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_contact_btn.png b/res/screen-density-xhigh/C01-1_contact_btn.png new file mode 100644 index 0000000000000000000000000000000000000000..02102c004f065496c1bdf5214a3fbdb6bfa79769 GIT binary patch literal 4286 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_contact_btn_icon.png b/res/screen-density-xhigh/C01-1_contact_btn_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8fc7ba91b6365d7593b6aed8bb879d0da88a9d99 GIT binary patch literal 3270 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_end call_default_caller ID_366x366.png b/res/screen-density-xhigh/C01-1_end call_default_caller ID_366x366.png new file mode 100644 index 0000000000000000000000000000000000000000..1ffd35b05ac568df2793829ff3d7dda83124baac GIT binary patch literal 14943 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_end call_default_caller ID_720x370.png b/res/screen-density-xhigh/C01-1_end call_default_caller ID_720x370.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6df5877db21a0b52960f7cfcb9508c9409b156 GIT binary patch literal 16603 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 ZNXC-tH$~3a{_8Q2v7xy^iQct`{{!_z1fu`| literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_end call_default_caller ID_720x720.png b/res/screen-density-xhigh/C01-1_end call_default_caller ID_720x720.png new file mode 100644 index 0000000000000000000000000000000000000000..085c0575145ec2513089ebef2fac9af1f2037715 GIT binary patch literal 34577 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 P00000NkvXXu0mjfZe#r_ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_Hide_dim.png b/res/screen-density-xhigh/C01-1_icon_Hide_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..03f7db66f40bbd928a08ae77ac8fddd48e366fe5 GIT binary patch literal 5206 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 G*#7|JeDRFMrf*cH=V!{ilHGcyb`dHMPN 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_Hide_press_wh.png b/res/screen-density-xhigh/C01-1_icon_Hide_press_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..ca158c44ae9494b4f1e0fcca69f2a0aaba2c1362 GIT binary patch literal 4220 zcmZXWRag{kpoG6==?3XgkVd+chF!X2X{8%!l*XmIrCCxsL}C#M7eo+{4v|J$1QA4# zJpSkMoQs+FdgfxDiPzInB_U)W1OSkzt0@`$quzhQ$NlFi6vqw!K;Wfj<_iGPo&N*@ z`Gs@<5bCTo!Vmyf5T%Tosc0v1q)P6)$28ridz-!RQM0wY!GlBCL{CUJ_fG`Kmw+T@Bv1<03*Z{drS5mmiHKfjDleN(jRH!BdLHwPztOP zD5yY?s9a7%P=XDtN9=4jfF3`v=6bO`4UnkwykH2hc*#l)DM<$`cO2rBfU`8HA2&`= z2Bt!Q%2Bgl63p`hA$1c+HPF-!Fk|FI%>bVm2-4j3bC92=8JL6chXe}9jAd*9Y}<7R8T&PxG+b-%F58$Q7n2Bb7D(*354;}F}~ zlBnd_S)yYznL-;V*;_C<@%pbD<!*LiWUkIm z*LuFOhl@N3SH(VG>-+p$tAc4fgCNRwX**T*s-5Weih25ezq)OQDKFKAKBaexQhw5j zNX7klSO(8Wj;UMwZ>xNlP`Ooc(Bvuy2~Ov)eqsmxqsc{X>WBGu2EcKrXYUL*J{0L3 zxjycH`&0f}wS)s89n~|u0kBkJ7eEZR$PeNJpi~mh+oZ_&yO)j+gUi&5v(!s;Wi1f} zWAE>Sk;4e>kxV|;JoOPU?wHXgW?pN-83krBjJ|VBrWdI|pV3=VSue5+8~mbP?yhhG zY{gIbcWhV};vlvOrfezrw0Y6zti5X3l!@#tLvd94_chbS)r1Wa5G+P&%*V1mSdy`i zRo+u$A54;i9V%7`ZH{e<&VX-Wzvd|DY~lO#%aChDBY z7E?TkOQ8-L@EO&P9?A&|iK zhq2h)Ra7(8GS!(^t7c(h7o%7pct`+^((mKCpINQh%K47sZ$F)_h;Xc_8XwynW$GP4 z^58gl|3h}lc(@2xM;ey;n^%Y_$|;p84+FM6zM29tH3qiKp#^)lW<1H4d@K(>MQ@@u zKWvI_GH$XSTM(jb6}(@a8-C+97Tb?1^tV4TNep%5 zV4M>-eE}UFofEx3-RoSfO8V(U`ay)yL*f10ojkHUPa{)aG;auX`Y>UZMiyrlBd;K$ zrna(nrIyI(#ApPOT4QM#+NfeAYPeBDFq2(pREyHvH)J$)s*$dat#zvQM99AiGrNw* zHT$6TK^Oi?zvPY8M%MrfksWr`NqRoDW=sS?C{vFHajQVv`(!~zfN_( zTcYux3RT&y+-Y_hPO3Pl!S$F+)hTrh2eo7P)o{6ru!=@oR_e4-pw_K|v9wdk|Gh`m zVQx{6C9+7%vuY)pxO!=%zvI<#}%fRCe_6_#|_knUwTuxR_P3`a6hxrED9hE$l(pu75 zgQK5E%SPw�zAFzliJ<>=b+{SZ%j94>0FLSEJuLs5ft#SDGE7yF8-JCCw^Kjm)34 zs5GD&IOaMVI;$wEI&?C1>Wb!^J~aJ8520(?>6^CZaTgoW?&we(CtF&l_K%Gp4l}zm zL*IoaU(4c=#C|2MV>V|F^KJE^k}{TB$sa2`ln?#*J9|&i$#k52d|q?|eP@KH-vwn@ zFs(t>Jc@mcxuNg5SkRvBhz&Nn{se4ny@6`LrdeGDO;A{F@lk!BxSwe2B^`FHP+g{TO_k{`4cQf%R-BcPxF(g)~|(Y^DO+i!z)4tF@-@GPIImo-fUC^H!*^ou z$$q!0%7G50y$7o3!sjGKo)=Dn+Ptj4Pyl<_0IOFWSM zqi6-+R!0<9O0iPmy~R1r=7a~5|IS*dQ}$c*$fZ&)p>b|%{CyVJJg^O1Uo=;oV` z9*OOOceC(@+*;D=am@G$(Xh&0ggN&YUc6=}2NTElqw&L%*>yz^Mh`x>3@@fVEc{t~ zdqCMoxt@Wph|x6RXExpLu6LDemhlc;B;26Jc@SfaTQBoA0nO_^t6O(qlG7O0%^9Ta z7H-))9MRhbaoZ;{BHW4&-Cz20@I=>C&}_BM<{}2gC`TQi&`7mNn?wC#o_i@^i!s)7 z_Q#qn=j`clZTAKU4O)W%r07Von6Zf^(-1ejI?JR zXB{rpFI&#!8{=#D&a*GwpET&Wdmju!r=Zt(Y^3Nf9W%4cQ?dwy)VT-ys-%PWdTvlZ z{rO2GNQ{yT2fnd+DFtrsoe`{_-6fG)c%Bqozm7M3?>Vy*v!E+1|2SWzz%c*P!q(!Q z?q|8lx$i4MSE`Hm$O^?|%mOt|5JN5tdlA!_PRHX(s4P@yn84p9>%}s3@Q&Tsswr=|Ni96C=(qoU0-})UlFK*p2d25pYTFT1(yWe-2o6Kq5!Op_Y{Kk&QZXJg~ z-EF~+XM2oA566~&cL)BWxt*IWl9XNUJ_+(X`*?P`O0yj1!*xA2()rb&>#(6qx6A6c z!hzyf_;T#5yv5DZ{LiHqt{DH4lgTC3Gu-IN@tgG1R5CbDYF_F{3`xv>(IYuY$#3#L z*Lzo0@NxTb&LY~IvYU}cS{lKy^V$6`W0Sd)r8&nrneW|0Dz3j{_UT_Q4)hJ&?HLLX z6}J3se0k98zvR#SvwW3IcQb_L1^2D<-#4d*6IGX)^qHBr*wEaQD?3sC#eaX3#ZJvY z8-O4V0FaRY{Js6hJpi5w0r1@#0I6I6XgxEmKB@qKQ>Ct?hzMBtQRwFUSeY)SxMr_V zEZbd4Gk;EVmfNy6KA?umE%QF%$^tSW2gx2G!K*>l#j-0%{VF12qRg~h@l{;w1)QQ* zTf2tevN_9j(zSr*0f+n3`i4_2fx&w_nk@p$qn6u0k^|S9f+g&?fA~6XU-q17l|`^% zc>J|}@tG9xCLn$Q_5X;$s^u-Vk{IBFcwikuw;@%VfwGVzyd%gFX%i70L$p_#!5s0U-=b-9HS11`O5IO%4P{Rwa1z{1c>vh((~AL$woP zP1-~fKz@$@wzUv~H3M|Py9!nm&;tYj!;S&$N3s&u@5{{n2KVm*g zcqRB6dWJPiYVEi{Dg*t2GY9;Q%{fGHnWoHj*}KrtVX1~w&W2NPMCHXXfh~qbX3~dW zk0X^V+z#DQnfNI_kh{a-E_wg;9oK4Xr107e{-PCUtgl^$&!-HN9yX!4qr?=|i7!Ir zx))F7yma1x6s&2Yv=BU>qW#k_LYaoP74PPI40hYpZiMg2h?T%kf9r;sad7$SHJfDX zY0TV3HsT1h&RzOiIvs~p�YaA9!@oOH}$Q>@Ibw@17)6Tm;cVQ$b>jv)jZ;7Y7#u zX@t4DC#87FOATrKDdAz-HNT-hZhWbj4UvlhN-PcP($4Z0=bh@Ez(H)7Xp@dXt$iDB z#T+eDi2`3<+-{)dJN;G)XPsXgmK6w10dTUMrw5%;r>c7+6b+>hz1*bJj_VO+Cnzp( zrMl=TzM3>1KZ((hOzz0O^*m@Qg+^IO&jESSjy5~iObcldadiv)(B2H3^FqGEQ<~Q< zDUWzsUNtgf3B2sdkDIp<5W`eZJTXBf6%k0gq6>2hmm*IIaUWTd3Y9;%BZaPNDly}Y zVGFP>N$OD~Fs$9J;qFO?^;niUS7GXXz;qpMK+**L4Rrt{K>N6Jkl>-t!h|k{*ScjV z@RtVGqkC_WUT3a%CQ93G`srF|&j;^!sWhBc8`OSNu@?72WURAV_ffc{$&AMsyELdi zct&^`HST%_te~L-xg++>^(`}l+fn lF8oUWt>v|Zk73APX>+JNpT>B_VSIZmC# zWHHxA>!I%0tEK4NKx^?M@}s*GWHN;H+1yu=6>^Q50jv4gGco3g1YUj0@#@LJq7x-; zE3mi0!!c62ew7HO-R6MngDJ;JK+1`_hj$|~fJjFP=j$XU3Cj|YcXAjFn=DTm>qn}Q zm7378h0J#wm;Dm)Hho$%N_Pj(k~;2*BDq-lf&xmzy8;o+qqHu#mCFIB*L$+4qZYm0 zT`PWGF3OHCrZqi3)fC8g*BhSy8_!_fj@-{V!J(XWG%xIn5BhR;tulT>%2N>&$>NM7 z;Yg3NcxmvV0?P~CMKdgut9icW{7XrXAfhDkh>W%YI~j(T9wNrilkZeGcivO1sW-&! zJdaCPp_|hs%39E~5VHD01Y%3OSDd_Ac(X}#+ta~MBR6MIi5$I$6fc9kVIl4*VMG5?o5M~26 zFMFPE(jg3tcn>scR=PC!&+hRZC`)nu?-DXA{9jh_oUVfQ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_Pause.png b/res/screen-density-xhigh/C01-1_icon_Pause.png new file mode 100644 index 0000000000000000000000000000000000000000..2134376348d224704404caf60afa79c9e6414f01 GIT binary patch literal 3696 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_REC_78x78.png b/res/screen-density-xhigh/C01-1_icon_REC_78x78.png new file mode 100644 index 0000000000000000000000000000000000000000..b187c25ea949a98ead831b836e9cd31e0c496a28 GIT binary patch literal 3503 zcmZXXRaDf062|`sE*&B%A>G{_yL1XHEL{Rih%BL$;L<5b=OU5xV{ihJDus)Wm5@RwmbGYs+NkS+x;h@iU|}q7QW7$e+DL#To@gF_ zi}ig{#E01Up{w=a4<55^7dxZ3jdM!7Ri~)>aeNE`Nv4*#ktC9&9L)S+En=Xze|<|x zC5(sz0ZM|!72e3+KrN${t0azY7 z$EpFY@<7$NS-d)6E&@=w==RD2^MZhgHq1o}sBHo;V-&=7009XgViX(23*ZF<_Ji!~ z0YGF9K&5d4Q~1eWL$S;E*QuO3g%%E3^)M>}L2rB*Oo*9hOq-UUO3LA$L#~QYcVG^^ zSeOL)+UW=Y6sA!B-S+e*V2rG0Y)mQ%O=c&!-wC>7b9CIi-5#$*r~tsaU+CnmfN=dI zq&x`edHbI82+!4)xbVeAf=eB_N+VFXw+K5${PRY==xxiw!uHnIyiPCJ%3%l=atrUa z!@zEy{SH;QzBpg&*x(2gvkBA0yIkuYInyg<98V>TbX?j=*1T>azPo0cX6w~a+N;ttOf@L;OaewJ@Q<(clg%RSZ4iY?cU|o#Gaf~--Pa>eriMnL%(!!%m;9&V0OJ&5SnwpdTBh)|9y-XAYbHh7GO+;!-;DYhlHLC)D?s-_=ujhD-c zpbsRIEy2}AXyZ>tF=Y=WUgXM-M$l;M7FWN|n119+>w4k#>AT;T2g@1E23ZrZso_1% z?^)k*&-_V9qp2eXV&OdWd35-6aC(2bPuY4U^wSCS15goZ(Sz*W9P%75Q*%Bv-z(~r zA)*YO46Y0YK4EBiMM=d<1+nR==`b|8+}0$dM#EIxWV4*`TV|zc1?tIx34;l|T)r%( z0$%0?RsI-iaT5o!=+WyjgnTqA{A{<`*3Uxxl)gSdfYpPvGWtcBWG~m}(S=tp`C7AY zm|7DQE6R&xA>umXuzKUubQfj(&1~<>d_M!iU7pgc)6n=8s$<>_UWO70y%tetYmbV| ztW5JttxBUx&4YHSn!{35NxOQh#Z?%Y>VOWnHMb@_dF(!F*JQzDxs<4sMqg3xyhf

4`Yb%4fMwIPwBZPi8-jAgad>n8KYC^ll1md zU=kj{{xpKv^r%3J9WorU)+19|CKW!+XuQ!NPju_I-sITy?Dy>dzy;!B<xMGPo7RNW!drYJPGb||bi;>*vXq4K82Xn7+qZQ5&b@8cgQm_=dG&eShh^AL zM^Z;_M=?w9MkLhSHZYF5|5A8)H!FLtxXQpViKqMn3) zpPj&W*l|ec2_@lgh%^yvQW=Z-_EeUGDIk}rq8Do*ll~u73cfO$M9!0k{+vlff!$2qa5mvdsma)Rh&3Ox!HE{1eo*R< zls3sgjy~~Xf$f$^?((;7dZc>Gd2$6bxi48f#T4b*MI%yE-g<*8SoPD;@O}7>%gf;^ z=cu~dzUK)|!ps@?Up?yIR^7J{BtnBrzC$f}=J@dI;Lb3Y&e6Cb+04oU{?Wsc`XTIF z>HOn&cZZbSlLSM=UEEa zW{B|`>daY6Zz!+qZE+fRnR40NSrII-BFn7E+Q}k&PP(wzK)PzyaCrVp9V?tQ%7bl< zKtozSbSgBrIhTGN8Ns=rXKiL2PV%)IinsW$NRJ{-WE!o9&~CqvJ*e4AmKQiK{O&+;E=k_|lW zxJ4cN3zABan!d^J-(W|m1#azK5UyS@lgcf=Obo7C$De-uk_pZv><-R7$<@d+$-T02 zwEAK=qBJ?XzY=tbAHSKAi?X8BauIph7~0elOW$-=l+fpN_4% zlY1S1q3~OuQol>sm2Z&TtTm`hZ?{9}|XlaB)FJ}(s#wN2Ti?U9#(mFj~72oV*4(LB&`@8#@JH7^p zi`t%!;#^*uVEC%Tq05 zeE9<^+6Tw(pN3DU7si?zQ5*tgxCYfA2wor;2xYp0mkrX861PpP--u>HoaTn{t8hQ5 z^3kUcAXLCrI*N=>qw_D->664!#0c82#-~2Cu<)rE);$uOAWd|!@Gf&-#`3w{2LbmR z=o>WE@KGk`p)*qJ?Mi+I32a1qIHlq!6A&WMo@9b+LY_^|^nRsf@Mb=9xNMY=8$_V2ssbJclVYaPC{H3Ks?Pj?b%#U4mS{rH!;E%G_LD;!$bd7$*o3l$2HvqUy!WnK#{z!Jq z^iYD0sRuZg-iVBxenVRmZ?7$l_psp~$Us{oMN+3SiIKd`W&=ldS_JIcW{epBV|=TM z$3xF{-!<5P>GVC*I@4*IWr&sCmpm`nEZwbYI%jCXEf2={u4|04LMXd8=T8T>IPAce z90*3bRTo$jXJnqm2x~ozg(GqtBf2(2)1gF`pGI-y{Od|w;jL|akR9IhT7+4U{Tp3n z=&ZXTXXIYRO<(r30n!TeJ~8h(UKWK^14;)Z)Hm;8`@dQF|13HF3({XQ8&BZ? X-n}40<}T`guNk1NZlG2Jwh#X=9;bNs literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_Reject_with_Message.png b/res/screen-density-xhigh/C01-1_icon_Reject_with_Message.png new file mode 100644 index 0000000000000000000000000000000000000000..586e6d9d8fdd26b5a13f6a2d408548dfba487482 GIT binary patch literal 3367 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_add_dim.png b/res/screen-density-xhigh/C01-1_icon_add_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..39791fa11e122a2aa250a21afc23685d606018a4 GIT binary patch literal 3106 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_add_press_wh.png b/res/screen-density-xhigh/C01-1_icon_add_press_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..c07e615566d8800efa50ed846536b7daf32aca54 GIT binary patch literal 3006 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 A(*OVf literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_button_press.png b/res/screen-density-xhigh/C01-1_icon_button_press.png new file mode 100644 index 0000000000000000000000000000000000000000..35d77b53a6f056899d9e91c9f88346cff479bc02 GIT binary patch literal 3944 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_call_press.png b/res/screen-density-xhigh/C01-1_icon_call_press.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0f49c07b64c3efcfd7393258ba54b95c7e2084 GIT binary patch literal 3312 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_contacts_dim.png b/res/screen-density-xhigh/C01-1_icon_contacts_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..56e771d1cfed85c1bb44a5be78a8544d42dd805a GIT binary patch literal 3954 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 M07*qoM6N<$g6T3|#sB~S literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_contacts_press.png b/res/screen-density-xhigh/C01-1_icon_contacts_press.png new file mode 100644 index 0000000000000000000000000000000000000000..4838c2092cdde7031e2151cddeef7a86db5c405e GIT binary patch literal 3946 zcmV-w50&tVP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000D)Nkl1p`=eh7j904SHs0;Lq9D1uVT@9*#TudlBwgpiV=D6(n0a0Br? ze!u_C($dlc+T%E#PB@)T0DvF}@Or%{6bfHD9FAE+$ghf`oHy&(IV}sS9LH(y!i12X zXf*mmJRVowwp=bF5C|x{ySqQvi}<(;*JIICKtjkHQ4~G-e7^1)lu}GhP1TL46|kd; z-ByUlKI_ z{{H@i0cyzb@Nk|1YD-Da;wL93|63Z65W;V7Z(r+G|LExGy`=$1M@L_A9QQ)6`k73o z-^lYZd^Kisb92P!^Xa|x^plDn@$lUgt1&*GPuEdck|f#ET^InpyuAEJuj1F&*L#+q zi8vgNKlG~I*VmV8hp8MrJUl#WbkT!@gMR@~OAjKC;s)@x!RNCAK-J53)4o&!um|9m zM%?tz&d#m?tg6K`a~FP?m2`A;{MCT@_21P$1nmY0yWRdymSs(gtVRzUEd>Zb=6U{I zy^X7nM6{g&0pQQOySx9?HoCdF`Jm?`k(mIoxVZS6+BRETTko5B^|ch>+S=L|svjmP z?P~UMw+!I;`1mWeZ3YJic?S6DVb*?QDdQ03oDlkj>uS<_0hx3WbD)g$2~J z-6Ne&BODIPk|gEuY1^-?@)$JDL<|S4UM+3_o=_+x%+Jqjeicb6MKYO0GMSVmN!qJI zQcD5WHjfK};0^|Zh(@Cge}_vcMJkm-B9TD3TrL7AKDXVir2%Vb0ETLt$3vlzA@`6L;|r`Y_(FU?5S<5bt_oE+3^4%8ja%k`1l*tv8JeLCK8E6zA`&rErCGbGsCBH zBO@aYSR_|hSG?hXcDudPDu7QJIee0QQ*tkm@=-I{*Lx07*qoM6N<$ Ef>b$MD*ylh literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_contacts_press_wh.png b/res/screen-density-xhigh/C01-1_icon_contacts_press_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..81913d4433acb8f466bcadac9d6d9ffc73999b19 GIT binary patch literal 3390 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_end_call_press_wh.png b/res/screen-density-xhigh/C01-1_icon_end_call_press_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..1ac854713ce72928f1f152db26bc9d3c29c32c75 GIT binary patch literal 4043 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_headset.png b/res/screen-density-xhigh/C01-1_icon_headset.png new file mode 100644 index 0000000000000000000000000000000000000000..e604393db7820aa0d0a2f8b6ab0d585ed874deab GIT binary patch literal 4075 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_headset_press.png b/res/screen-density-xhigh/C01-1_icon_headset_press.png new file mode 100644 index 0000000000000000000000000000000000000000..0020f422ad4aa4f8f493541db71cea0c24957e63 GIT binary patch literal 4042 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_hold.png b/res/screen-density-xhigh/C01-1_icon_hold.png new file mode 100644 index 0000000000000000000000000000000000000000..ff00328365dbbe4ad0027d414abcf1bb33036430 GIT binary patch literal 2937 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_hold_74x74_press.png b/res/screen-density-xhigh/C01-1_icon_hold_74x74_press.png new file mode 100644 index 0000000000000000000000000000000000000000..3299cb4a78c863127a2bf1763dea8940d2a648f9 GIT binary patch literal 2921 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 Ih;!6`0Y}1HcmMzZ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_hold_78x78.png b/res/screen-density-xhigh/C01-1_icon_hold_78x78.png new file mode 100644 index 0000000000000000000000000000000000000000..2c1beabb02d0a683dbd81c2a4592b8bffa6acf26 GIT binary patch literal 2942 zcmZ`*X*3jk`~HdSTh=VoV++~FE;}>!HH?g(d>7!@`h>o|hf~z+`NsXML^~e?Uup z&dGQI$hpw@8reStfPwuFC_ql$WdP_cz2NX0H$2e+=!c$YUjbt{T)@{K?csIb9e|)I zoDB+Lv&N-)FuMmcjl(=QMO$;y3RuGuF&wF)5`uKBCUJs=lblv3RX%O#&Xz| zOJ5^z!xLc&a2T$kAt}^K(*h`hMi^*8t9fp#EPw17%Q`IE zi2@Tv(Hf9?-INx?0dzu=VI@GvfC7Wd614#ZRKU64&2U7u z0jf~o+$$^`1fsG5hry1W#t+GA)>Vn~q_S%?h$5=`SVvlEKN>qbnJeNXV{SkN-CdZII-=B?Qvz@9X;FlxN|)Voqx@+q z#)=GRT{r+>rxD%uMVyur;~6AgG zG*!t+&N=}hU~2@~(e%Hd8tY`xkgDDbHp3 z+HmPt=Ve!Uxmcu;l<*i^3OkfFG!EXWBEl9Amlq>Gy~1SET-mvBoROA1STOM*L&^f*@?zgLGg3*y#&_e^+}S(g=;sok^W zb#04stY^v!5to!w9AH(21nbvUv1ROvf9I$UL~h6(nZtxB%p|Ldoziks%ZD6Zlvsg~|C8NR?kGrv9 z!)JpkS1*gjqsq_-?N{OUC-Kzw9cCSt@K;s^Z|^KNbqg@K@ze%M33@YC#Qcp_>J)uD zF!}hAL}S(oq%lzwUtXvRS1?hqtF_*J?x9VynB{kv7hplRDqfno8=f%Bv3+gf8efT` z8BxyN$s3=MnSrb@s<5gs+-O#=-YmtHH0w9oA7PnwdrZWf#0*g>q>H#!n@O9QQuT^(zzYAn4}O0-C`sK_5fb-ejO_(&+P=XtX{K~1hE z_z=QeP_Epl`mXAZt+eK}u!gXIPBdwlVkem^AP$i5hwuD3)NZQH=8*EXw8OggGS;9d zz?UtUNQ;T_q#P8GQ5w= zt<7!UEF-_(Qr_~~ik*J(N%6(Ce0zn5pF4WtU#*shv>9Hc%X-gMhFiidv8cLLVW=B4 z)vjv%O?`17{=j9MTkEHm|BFSfMGci%`C0orpHy1wd+YlxJJ9)eqUYdGgwO7tg`5q6 zQp{Bf6lFYC7wdT8=rH85;D=;wHM0B9n#oPwqynNYr*29_Rm5^zm7r(u_or2Y2di16 zRFW5S^o{UuW1neUR$LN0!WqS)W25b2w3B_~ki0{3nM#2})9{CLdcXBD^k#EWa+a#E zrA?G1wD2FN%9;MHXM;C4tmN(efnJQOzpcapeb zv124*9`fvaYLim1NS8vf)G{$jto&({8I##eu3A1<&LaUIc}=xuxyWa!PyJwcLGv^M zY8|!W@up@~Y^h!F-NAKFFl^5-$=?SosZwLqRaS56ll)IhBhk^J$)r^XK z$$`yJwSDBLDtX&4&NkWF+2)@SiepUeq#?+a=E{4jH5z`wWco$Ui;^)nsVg;OA0<0B z9h_)=Y$4lH*qV=ejJh8gAJracSI6Vm4l|B?ZdFfznLMOt$~zbuS3}>IE;Y9nj4kTwzk1dXyAeIZre4*CPlD0=);z z*~u};waGbhbaia7{G>HBwmutjY)Jl#B~MYqKG51*>C-+(d3wDR54G*ZJBL`1Y_fuHl7gMrR`eT@4 zHuA4)sj4n$`=6{Gm%<0{4vOY;pT0cpujb~0h98b@jFX14h6*!xGSfczJT5+2Z{6T| zP3~^*zS8nBNI~xQ-p!-Uw!rB?$ac{ji{;W|fhXc;p1`s@#d2hL~o-QJ2>N{DN z9wWe^KXjXF>j^QrMUqxhT!aKM5#s-nT8vkoK^p>Q{_DOMX#R__lz%GN(4xiuu4hic z%1_gNtWD$lpz|TyBWMTjlvOqS*8d)(the}K*#h}Li~l$J59hW1u|8+VG713B&L~0t W>ZPcnkz&2`rGc@&gwqLyf literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_hold_78x78_press.png b/res/screen-density-xhigh/C01-1_icon_hold_78x78_press.png new file mode 100644 index 0000000000000000000000000000000000000000..91078ac297d157744180b4f14ab894f746ccce0b GIT binary patch literal 2929 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 ZN(&g5*f4S!;-ixkSeV!vXTx literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_hold_press.png b/res/screen-density-xhigh/C01-1_icon_hold_press.png new file mode 100644 index 0000000000000000000000000000000000000000..133dee75f2fc603dbe493511d145ed9fb4eb1ac6 GIT binary patch literal 2937 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_hold_press_wh.png b/res/screen-density-xhigh/C01-1_icon_hold_press_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..3e78d4693f2ee827c417462f266b98e712b5083a GIT binary patch literal 2935 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 V5E@W37f!YXW=7VA)d;uf{{pzUQ%C>+ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_join.png b/res/screen-density-xhigh/C01-1_icon_join.png new file mode 100644 index 0000000000000000000000000000000000000000..c9205df94b2a5b0ff9b15d487f5dd18c1625bc40 GIT binary patch literal 4348 zcmY+GRaDds6UP4wNVjx%cM2}GyL3q`4HCkVlG5PPDF`SjEe(r;E+XB%2#837l(Z7k z@bO-L7c;-BIdh)p%sKNUJke7pA!Hx~0DweO17>*7C;t^b?tM?8II6n`ftQB4F8~ld z{I5Vj?mIdFAk=q(LZ3Ww_Vn}gb@udP(}Y6VynH;JT-+T2AaE|<2w`lrO`~wObOOsy)tc9LMX#C(hK6G>}FTS3y`PR-y)a`&ZXRlp_ea zya00i#%JulH=H2gJRA%b}FS zehk!(nI`06sJUofvYW1^}NJ5HpC6;RkR+0NX)M&OjhK z2cS|rG6nw?M3HX^+&h)i0B+`zQ;o317xu<8H5Fmu!)Ve9Qpwn1+2tyWbO+_oOGHSK ztsIX6Kv5d?z1riOKny7ggON!=lRg#R>A=0?u(w~k-59U&QU-ukzwn7$A<;$#wEyCYkg$$W$2ni=9zD@1V;WB7oDVYls^r8neMQ zn2!{Eu;k*b)V`)Y9t0#JuVY))#ot6U7$|%v{tRudlx2ukD_eb8Enp zdn3dqI2f~@zuvPhxz4!Geq>3QZ?EkA{@mynpW(2p7X1eKhSUbGW443}yfoKvv9j2h zLORs~Qdf*NtT%|Od?@uIS8gndMpL`2uH@|$gEOu3nM?g|zpoUFZ&~!RzL`#rY^(py z`i*@OKui)#9W@Y-;G@r@!=ppc2hi1L>y*<^CD9KUi^+=bW^d(?<#@u)1keJZ)M>+n zZ?)d?yk!&+HLj{IuU@Jqf*-?2j8m&@jKWZAa7m-JDuVBsHSp^EC%Z5{@_u=L@3ApAxIz9T(_Xb5DpRTp`vk^JaHwFr^yOGqyzKD?S<@q=^8|p96l6}M6 zlB7^wRV)XU)RHu9G(3Leq=dJY?S1~vPmf@WuOjO>JaLKYkpCAyW4V-0v$&&`TXkku zrdf?fjX{n2Zkr5hzaqc9O|`}RDuPsHK#SLkR~?axd62(lG;6e2L0Cbfs~~@h5~+48 zV=Qig1#~>GILIz&w?P)@cvdV0wQXH8g^Au6-*{YBoT?L>;WiR;;m#9d=)ir_-kxA) z(SiBD22krBWoVh*Tf3~)=(OeuaOt$#D>brYmwu}?t~HN-kN#2~Tpo5FZQUK+gIq)1 z=5qe>$2yO72F6CmO2&TVNarbt&q!?LZRO46EjQU(1X>88E74yZH5=9~%FPeZtJ}%Mo8wEU)xLMK~W(($U-%mbN@+R_2xtMncN@0B`ncJcWvvKnApOS0n zha>#GF8M}zQ|bs>M6++yaePvOcI1dimZC@=WB=k{+q#zDskilN@Z@QJUSnSOe&u}q zfy{x+LEJ*&s8k_;fw`pbx1K@hiowQ&5>eq>F}LN~aDAwL1mg1+r>KKynrYq4ho-WC z>NC4TTE%~gK80(FYhc+Wi6!%=qq3b%gH0p)J)Q+mW0s*WIq#m`1>a2o6-aIn0y`l> zCBhQx>O44Rt}jxgVXoY zTBU=y`XtMQHkzY(t6sP2kmxMt$rsS%`m=dRD9E>oN2RB|_J&lm>t>)4JBUpu|B+h9 zn19}2*#S=)`Gtzq6Ivr^=tM`vryq} zJi)qd5jI`JkzJobZo5Qq!i|`)-G!NbYkf0O^X1QWm$CVbiqr{-D5`ndEb5m(`4$2< z7~?#LJ8~A@e5$JHZGJZHH0iXxxg=a*Nt#)mwV6fwoMd+H6Unm4r~T7^s`H{*V|?>1 zQD|s$X$SaAt7F9wX6&(&@q6PF<4a?igUQ9ub~ESCCk_}xTK`GyP0w4lp4})8wa>#r zaNTLAX~!$gtHv`WR6_OkdFGXeb)BAv_x=F(B=!v+CnJPzPbdS=t9Vna{>%twQCCRrQLb8^QSOzc zz2#T^QN@WLJ4?aW>hr8*@1(%yL0ZSgLoRdMky9Cnqw(bYxA|e=A{Ps`^CjqzEeFi9 zE1BovS8~7AN!7cgt;em8F;+)k{EiytHy)aPG0m-)f9kR0w*$V-n9?6;dDoJQYPND~ zJ_v669O87g%~&9dSv+YA`b%^7W4b_2VX^Hv*z>IK>~xuCG2Dmu1~bw!8^C)|*Q($8 z^h9}IWfr;^H?3rOyYTaH;iYS5K+*BUg8CV5Ow{;o+G#2o^g(J)>PRd}>~6s$MLD@& zNw5XX88tw6`U-5Jb8_C#^kQC3EWM`+p2PUkLt{d|9SKTG>i zprp9XiOJP|SHMC5^I_>Snf`hx+e^MX=ZlZ0M&Bx~GUzih?r^ZPkFOmhh3D_{CYytX zp)LRfa{~Y}3IHzd?zs&BFT?;~#})wOvjKqCGyQ3w8UWz(YQj{E1LyYM8E8-iF%5Jy zirk8fxGji9V-~m}e9yo`p=mB*a(j-aE0G%6jhJrEOz>~Elyzd(V2y8U(JW{v>j9|? zc1vWYTM;q=1d?&*2Q-d$6pWZ})tZO7fA zY~zSaE-ugRkr)m!8}@xfKeG2UXQ2Do0_e-*68(f^7D+N!)(C~y&3`UP`EDpkM zY+_<_Kk($mi_>u@8D?hYEy7tMVN(vK0Y|}9*?F`_>E}Hv)d)8H4unJw8d3{$mwmXo zxfw2*yA{OJ*4D-w&o>D6q9!wjPuI&*6HhNJfLT)q1mSRaHePt;$===`iDYS7S{n1c z6%4*U3S1@r9KotEBiQ#wdbc{x8|A|Bv$hYUj8SQ)zvw#oTaKk@z^U_Z2^m=b#?pa!wwaO{JK=CB%RKv zfu@n3p%lOI-I@BrZ2A}o`(Ojp_nukL(;iZ0dE<{qpR20{1{;!{rRFS5Ofq>&ex!0l zH_o+(UH!G%gBietXle*>un0JId@f5M#pLNj>zF5eQd+Rm3oFL_c3ugBm1iQck!-f1 zq1RJhj~4V{-W=60j$nZW>QW5W2e0;7v6WZCXoDZkB<=0)MhT6msF1TzPQ0GdWZQj} z&PB5Q^v&`~@ZkSuL zK2x`)rA1nWydmJ?7Z7|hLC6;PZ*NvbaG)S3XQF%6%b$1UUU7m}@2DR>a^qCpfC?OZ zg74tq03cx;X?67zGc$-;@BaRNug%e%m*wTHJU>BYpwimH;<9J$@0SB7BaSp>1Y&C;3XklcYc3jP5yr{7pM4St#zKOcKvX!O zk7l)>+S}VFgv|rTD%ne5zP`t;C10xfu?w~)rluMlBuP9d$eXEuy3C(gvRmnr`%iYjdmr{@DLK5zWn7P{FHj=Kj~fj1 zFb!NJ{4Reh8*)rsubuw>R)fnvWdHlF`vYYxU~=0pYWdI;9o$(~R#w51y5+|4^|0TN z6!x8(G;Y7MrRs1D3m68ZK<5&cX$#H1Tl$O@vPFmZ2lH)up6%T-Or&R)l~j{J_~fqh zz?9#Q-FHBiED}cbhRelS;m?U`E73(*fmi3+Un`%>q`&gSsh+N`U)wMrm{%Sh7%GBA zS|afNY1c^b?9qE)*3PX9Qu6^2CB^c@gf~XW4-UU+s;nI34>Ye^;MKE_att9M#=%L;Ebl(I^<%#h6Vs%uP3ebHUt+mTW( z_~dtxWZ-3nr3+Q1JILL|<)V9(CyTcUEuh?vLZKE0ZG(g5%?FndM7CjJVWn*Nu`-Dz z*O6FRj>t&1P)8@v#L-JQO+U;co%o&{04;-sKfY>7eg9qnO;tS@3St}iKj!H=9{>OV literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_join_dim.png b/res/screen-density-xhigh/C01-1_icon_join_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..45d2164fb8fcaa93e3b92359e4569cb2baaa4488 GIT binary patch literal 4357 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_join_press.png b/res/screen-density-xhigh/C01-1_icon_join_press.png new file mode 100644 index 0000000000000000000000000000000000000000..16af3a1c0b203e018dff518d15ff2059350ef9c9 GIT binary patch literal 4340 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_keypad.png b/res/screen-density-xhigh/C01-1_icon_keypad.png new file mode 100644 index 0000000000000000000000000000000000000000..e30dd9c8a718e268966c4d9988a25248456c31d6 GIT binary patch literal 4589 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_message.png b/res/screen-density-xhigh/C01-1_icon_message.png new file mode 100644 index 0000000000000000000000000000000000000000..00b4adbddf30aecebb7e6b76ff3f69945dc99471 GIT binary patch literal 6355 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

A~u~(H6%1zk!2j#Vkntk`!rDk#KN!0gYhgSc%0w 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 P)d=WlKGwjh*@pigEHpDn literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_message_dim.png b/res/screen-density-xhigh/C01-1_icon_message_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..c31d5d0abf462fa834385427c7faa5c7d8a644e2 GIT binary patch literal 3649 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 LA_G-$`>_83u; literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_message_press.png b/res/screen-density-xhigh/C01-1_icon_message_press.png new file mode 100644 index 0000000000000000000000000000000000000000..c31d5d0abf462fa834385427c7faa5c7d8a644e2 GIT binary patch literal 3649 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 LA_G-$`>_83u; literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_message_press_wh.png b/res/screen-density-xhigh/C01-1_icon_message_press_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..8d658a0bfefbb66ca8096133da868bbf54fc867f GIT binary patch literal 3489 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 P00000NkvXXu0mjfGID0c literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_more.png b/res/screen-density-xhigh/C01-1_icon_more.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3170d305d5737400296cb9d9919b82abf1ff3e GIT binary patch literal 3106 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 J>tGJg{|EC2k!An@ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_record_dim.png b/res/screen-density-xhigh/C01-1_icon_record_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..74bcb2c60445e5c3becc4b4b79b8501072bc6d7a GIT binary patch literal 3521 zcmaJ@INK6J{3*SgoHr0IUW@j$esNw6GzR zh!NgbZ~6C$+#gXCKgB1zHPfiS2a31nt&aWvd81YG3NtsivA#a5-wU>N9JY$Mf_Fd0 zT3tT*6RCWGKmGps2Om<}9;rig_PzVdiD5a%*lV&Fr^U@Qor@0?*B6|VcYF1mFfd_; zH8VQ@RL%U9W9jm{iQw1w`uHcVU4E>Ho)fCB$N`O>s-W<6u_}9K!rumhw6GxT4?F-I zwfS~^6Cx!zE{Y2W`4})?Z#S40Ozwi<2ynPp7X=oI8*Stic98g{&MAvEbC1jLqZaSB{79|h zNAuT_w5Us{9Z5!{F-S`9$TOb+a!P{nrjjz}#h&qW=@QW;^KlO)FqqvnNSD)>^Lq@yn4+I6Hdk2Vzl2h|F8CVI z%BGScU$XVJ)}3ZPO%*aAiT%k!BGdasQoO$h-1I<{EW>%E>24imZ9iM%!#cvY#8c<7 zreGpEq!yM;o+ud1?Z~B}3p0cn&+1ljbMVRDo+rCcMi^t(EqFJh%Ai%?)9pXKEKbr= z@i1Lc-f6ltdI{R_1W50FKDtDRv>@gcfnHM?bb@X|d&0+@cU!c&KvtKHH)Ckt#jBY_ zAybrFWH5FewcfKXv(CQGb7V`7a#Hs%JG1y9WIpVv&$>aoA-h5Bnk%hgS(aW>(zvc&)vko5Gp3B}A0Ri>fy6DN?RiplNjO`7`0R+)K{3 zWR;rg5(S8izKm6i`EjP38p&F&|5;&>G1-<-WzKPA(lW!ry&w13D`X8ZQm%GhHQ71Y zuv*<(vs#_q4*7oLMR-5%Xl3HUxU(ila2cCwzh1#;1vskJmuVgY(Q9NxBukk8p zFKN>Z?)0hL&n^1=2vKC{Te%$CvGtcDLgEs7>HW9zREH8q+(OAmyg-R#QSOuT_f_VU z7+5$ogV^_|L&_bq9CKD<(lO)8rBm83wP{j3`t8>E*1Y?@`%49g1$YDujCPFn^UaMg z756HX43!KAM!$@{9i7gTD^QV|k=`oUDwru)`QTs^Vk3&KLVtACYhJghu--?v`^4HP zSeL^rZR}gL>rwUm({1%_mA5M~#u>)7Mbq$}#zXWFy7~iag@h`8j=Gl9hBGp-HGo0!q2h8ru5e#1qVFVoTLKOnqaB--Swqv0 z-0Sr~Srkm_z?tEg!06+I zeUJV4#W!DM-`p#*mI?gYGYI)^wlS_o@g_^sYo#vI1Y&}Ozu)4OaF$57s-J26P##=^ zcRXNL{jD1CW=(ZX`Tnx>vi0LH_pu)aKa804_!d2mU4gvdy>__{yB-HB5&R%HVIook zX-jZ^7WSN{GgVD-!S#3Z+@3~CF-C(?BQ2^vYNM;3$9?eEt9l;%RxU0b=RqB78u@ej zD~aQ#V{%UU?`a069Wzfap4AepC_MJF7}S&f1rL)tc5e@N(|cjg_hvDPhu;X zs>SI<6|>b16O12Z{-;4JT*Z{ae?%Y5pGqFu&DjmVD={uVo-hls6Xr5L(iJued;KfD zT`rWbPo`XS0}~@y{i@xN%5bSbv4|=E8Mn8zieiUU^y~Cj{@@xOqYN~B2fpd{Y^2UL zw)v{hC;5W}R~E^TSIeuqTh?OaXmG_(sEyE!FiA7q)yl1NG;vrVyS7MVbni>c@WQM6 zg$Hl0_vpImR$rsb;|#3CIANO|b)E{%%Ko7X@Lpi*_*&5tXJMU{*6Pit1>1gH83nN=PC#kh>QO}K4uE{he}QfJrXZ01n=P|eM^Qms5}-8=oQwIGo*DzwlR zjfP-KJC#4SyH*b2MwQf{WzZAoU#R^4#L|1mnKPg9efIG7-?G1^7Hr$`m#Rab7c4=R zMpJH6uIGB^EqJwt#G381>~nAXdSh?@y#c}r!b=ifYV-`|+Z5-73e-GpT4Yy;df?9I zE7U=-7?nJg<;%kUAH05=q3hdtvK2fRmE!!fl<>M$lF2*IIN_WUp5XkWeC+~@{Bv6; z+fOE6RL7@xmcuS|7Vgj#$|_rj>K{XgJm$BfCNtniV=1UCR79lspGAj-x9IRKXWWV> zjqkxH+Mv}5t?T41rFJEp-OMG7iQ9miq5_&)sU3e!?#fZ!!=q-`!(aKFCYr2X-U z`kuxdWGQ}1&Gu?>_F(aaCpNhFczjU@PaGRPc9njbMgzH(mX|gXM-{hQ^gvZX;fGql z<@QA-WXxquposbE?bS#FGm}K*+0^a~ZajCqB^x1)}M2~5W05%({yU_wemcJH6!Dih%oo~!dXUa;pX4ucGfjF z0)Q}n06;_oz@O_I-3EZCk^r#d004@)0Kn|~`f;B&01*7r)6{^5%>SD2G|80W7&ydN zG9CgiG%jMr=?Lkx5_uXwvdZ?eFbmkDID!Hu`-bM!)a?rmISTC(lN~i>rOc$*s6bj5 zdJJJtL#SP8`9rJ>56<;`!uID+PESJTAJww(W@insB0+4$H|PVXzTUtILF|45DRn|w zb;4Gbe;beuLFbd^r($wC;C6>IXVC>}2OP3D9u;M`GAiHNcD!o?m z()Lvr3>z=r={ZRX=+5r##&49DIfV;;8gE;p0^*(5pQmh$v*;kLPKjn)*{N6j8=CMm zY4`wXib9bb4C@-?yOt+*iX}FJnQ{?-_2v-J$5L%Q5Zog{yQ#gjriu4anrUts-gp#f zELf&md=HMD-o<$zRD;LPm)wI!6jns`MwtG~4f3lZ4xyMMwaY|XZKlnE(Dvyzp7ui? ziM-~)&k*pk)GM~%pZgR<#Ohp*K+3}J%WHNs%cy4y>5F$W*vvuMh_wmy695mc7CH1= z5vv~~{;%xYFM2{W<27U*^id~KJFSo2*i;@tlFaWlk?APTjszs}n1k!{|U^_&n+$(Puj2*K{{|$s%c*r~R1W z__;tcArXw?U8h(R2>Mbpp};}bwcs^@aLgl)WIw){30gj!)sz39lwI(s5d%pHvpqA&CjFa^0D4-+nhjuwsQ&@n?tTsc literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_record_press.png b/res/screen-density-xhigh/C01-1_icon_record_press.png new file mode 100644 index 0000000000000000000000000000000000000000..dca1d50dfdaac724927ba01edd1cdaefed4cba65 GIT binary patch literal 3530 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 RN#6hf002ovPDHLkV1m69;OPJW literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_speaker_on_dim.png b/res/screen-density-xhigh/C01-1_icon_speaker_on_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..879be149f8e975043f727f1283b3776d9caa4d19 GIT binary patch literal 5525 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 XEw*t{-|4Ph00000NkvXXu0mjfD78f% literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_speaker_on_press.png b/res/screen-density-xhigh/C01-1_icon_speaker_on_press.png new file mode 100644 index 0000000000000000000000000000000000000000..879be149f8e975043f727f1283b3776d9caa4d19 GIT binary patch literal 5525 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 XEw*t{-|4Ph00000NkvXXu0mjfD78f% literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_speaker_press.png b/res/screen-density-xhigh/C01-1_icon_speaker_press.png new file mode 100644 index 0000000000000000000000000000000000000000..964b348b30d033bf1a5623039352691ba57ea0d8 GIT binary patch literal 3580 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_stop_dim.png b/res/screen-density-xhigh/C01-1_icon_stop_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..1bfe8d5e8c2924eae9e09b45ecc06ff8c7042bb9 GIT binary patch literal 2934 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 H)H(9MySh?- literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_swap.png b/res/screen-density-xhigh/C01-1_icon_swap.png new file mode 100644 index 0000000000000000000000000000000000000000..12c0d8d61918f0a962ef68ef572d691ef61254b5 GIT binary patch literal 2918 zcmaJ@2{@E%8=g3pED_0)WsHyxW??XsNf^vnCX8ju6tiK?Kt*?B5T(Eq9ZC5{i9Qz|G%!k|9h_Qdzb6E@8@~n=YGHMOL4_H$V#b60RRA5 zEC%f^Y;jw+q`2^zaUG~3Y*e{+1TLQC&kZGo&;Zs{7MTXbGDrb5cN&Qr7TiIz1OP-q zbPocT;Npy=uo%XqEgxeZgDpe@0G3ufHi>eQ#s!jT0dyt`v|N851f)|@AaA$}#D#53 z3#4PhLumMLoChWRBn3eQSsesg@{mFT28~Ms@)$u(4w8ogeda|9`&-js5b(1L_aqAR zcTxlwSD-B`ga(8gLyRa8Gbqr^)EH_CL6{;8fiMUZ0*1oC5OX6a1PM1sLZHAe7f2W_ zgzArUN85jiB^;qZfm|*d2?mFTh8l;O7_&kGz)%DN0fxZ9Fqo0h!-x~cC?!tnCqI7BDmf3bljU zpdscKW)M3QC<1N@v$p?=MYAZU7&IpLE0+2X*8IEJEh#YA!pLY^2>mpTY9GR406#Ao zN&kK>rr+iJf~9^x7x;IvU|}-gt-}6Cp}$TE)w9+8CR^d)oA7B&q1r=)vPM-%z6Ss# zMzCmW58lWNA8F@Z4l0`C>TK)McD(EMLUAY|P#$9^z(8WQn}OmU6B61A$Rkn;SW~#s zCHc{ozQ=y~uI`d9rfnA_9Sz(^#czu3=Zob64N?)at~j|c#{JkTR7p+y*iyxfCsyl~ z5l^0kMILx<<-b`)Ryl(q*AcKS-wd=<|Er~-bBdFzDl5ZFFpxCSvKCa>%1okOcT-c7 z;dGEu-_AY61~D@cpF=NbisNfdt@yVb-K*QePu;&*?DXUA2Vwd>WdplLM@QQSIA>}mC;jsJ12Mk76RXR6%$a>Fj!(@*;fJbo z!{-@MSEQnHoz@J1#u9RxkqHrJ@~Wz`-1hBi_rI8H0uz1LF+7~z(b-Aq$w4%)zIg*X zJYkY>`?lHKOh;DNkibXv4zaAi`vqj}>C)-wuTGRfDXpn|??YTR{H8 zq)<4V;j&}SQBn8Y@*cB4ZAM)yE&X}BtZbpidriWcjeFqrnibNtED?V;|Hxw2oI^%HX zlanRWO4N`3DQrUCAg zYH^ZJJX>2@YUm5C-Tp{zcyQ3btNi#_a`Zh~$!VUpF#@q}GD50IPD+v}5eQDjIB_*+ z1iK2gk}?u=v$QSOiWF4<#nE;4V|)Bmt1rj=&gTSqP+_VirKQ}A^mKu(R(wT}XI`o& zg-kwi4eM56>S`>$j6VunjyZDQ?MpA%@l|sIBGcNd76Go)IsyX<=Z{F(Wu%Q2|xZ z)Z8>-{#dL}vLCQ*Bz1lC#N+Y9=}P0b=!&s_y%(9elN@UyM((GgMdn(nsJ(pDq6%hj z`{s`Vfk0=ndBd-CGS@a~2BL*o#I)T_ky#Lp<$$wXvYjm{pf)M^%evi+(+ADF=J_IsU%Jz z`|{<--POS@*?Y~+v%!Ue2M&I^VkB)W7TdA=LT#Z_HvbHB>aN!9h__65W?Pwkq5EKk zQjBkn!VlnGk20GdUOm3vue17HNpbKD3<6s`g=*zmr&_FbU(H;cnQ3|QX=Ww^*tHlScsexX zuy0ykch{tX-{g^+t1Wg84xgIds5e~Dmz~aC))Sj7!`yOGa=aZ88JR;$v11$~5))wZ zyOqk$HB-I4vrlxK*Ihaj_dFpXL5}@F=l9?2>&t5IVo`D?$F+1!!u0nyCFifanzB_3 zP?M<_o=s(ks6wYpM)K$g$zf9x_Qq&e=)xG4Xj4Q(0edW zO!}!yNTkR5p|mj3xV3 zm^vqu7j}Ec4{qiC_pE@LxV1Uq>*PaDP7YmS)Fal8-w0dNtGgiGq$s_H-lkvGIzArV zLHySqH8oISVPQc<#W~`=@QcMBy(1Zojg5;zxL^N_!BCNkG4Xrcccj(fm-CaK%YnA_ zg?1C_nB-J2X&SXSl;IEKpMOHg!S3*m6_JOZ@-B`Tj)t%<3uB7HMK=l1- zO!N31CgMs^WK47T+O0)Yecs@S!&do$$A~b%7 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_swap_press.png b/res/screen-density-xhigh/C01-1_icon_swap_press.png new file mode 100644 index 0000000000000000000000000000000000000000..78a7510403d4a7d3b1042a340e325532a9ad0af8 GIT binary patch literal 2036 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 a=-&V^*Pr<}HAM~p0000x=y43 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_unhold_74x74_press.png b/res/screen-density-xhigh/C01-1_icon_unhold_74x74_press.png new file mode 100644 index 0000000000000000000000000000000000000000..5bb0bc3ad987c277c3be2b2b731a4a0c9b641582 GIT binary patch literal 3201 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_unhold_78x78.png b/res/screen-density-xhigh/C01-1_icon_unhold_78x78.png new file mode 100644 index 0000000000000000000000000000000000000000..95e21aa4f14fc6f2d965588c31cada2d767d79fe GIT binary patch literal 3407 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_unhold_dim.png b/res/screen-density-xhigh/C01-1_icon_unhold_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..4d68eacc795ede4dbe624a8e8b5a9d656963553f GIT binary patch literal 3664 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 foA!S0(^*c literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_unhold_press.png b/res/screen-density-xhigh/C01-1_icon_unhold_press.png new file mode 100644 index 0000000000000000000000000000000000000000..c27b75a8777b0b2bce847b56ed0ebd7e7b6a6eaa GIT binary patch literal 3674 zcmV-g4yEylP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000ApNklzY7{;I1%;s@(S*w>^lm(@tR03NBy`*#xdfHyRcx=Fe;-3@* zQ4s0byO2E!9t1DK(E2Bf>>*`kaJ9z6P*9MD1;Mf+1iHyKJ3W}t(iU;zj?T=!KgcD7 znQwl4&&&6IGZS$f2TJ`kr~(zJ0#%?2R8*h}RDmi`QGqH@1*$+r1*$+5_{m^+aZnK% z1z-YrZG+|$<9HVz;O z;DOdamkbXNz8EP%f8$`1f~(LIHDgb68tjI|Z-_;H(zm z+dwjWHSqsvZEeNM$_ldC?BhftF$&-rfQK4kmn4%(SeAvQrKK-hT3Ws**-tW}0$nmP zG6LJSnNFt%Nsf~2&>DD64ZIH9wlOm^gYE6@V*s0_Qt5ZCfiCFk>Vj#SFio?gv$J!I zQZf-^< zlYwPf@nkajEy*F0k5phCZDBT>t+j=dB)=y4Kn2#(7UuJLV_{+8t5_^HL9$1eF?CWX z6fi$OkJZ)H0)QWDZQ*?^V*)9##_sMerlzKFczC!EU_P9)d|BQ@C|^UNZ$FQBu2pF zS`?8NB!9WDF&F_AR}qn)MI=YEe4k?pqCi_jvH;%tVK6}wc#f;Rzf(UA$_PMQ{}7QK z0Ivaj@Z0$OEbs$>y{f!-ejTJ=1^#C%N(J65u5U$T3&5{IDa?jX#Fa$krHEJnDnVKj z_(9-)wayh0K<-nZt6P#P@b9=@R@<*50KRzAJ`e&O$NBRg?bmyRgu4=WRGoE~2pL`r zJj2yC({BhVhDUKNipUPheS{pZ?#eZiyixlV^!G$W|Gn*Y=W6uz02><{907*qoM6N<$f?M3i_y7O^ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_unhold_press_wh.png b/res/screen-density-xhigh/C01-1_icon_unhold_press_wh.png new file mode 100644 index 0000000000000000000000000000000000000000..7703fe35e9b4d89b06733cec503523bb2f3c6b60 GIT binary patch literal 3381 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 LNkvXXu0mjfXOTZ$ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_video call.png b/res/screen-density-xhigh/C01-1_icon_video call.png new file mode 100644 index 0000000000000000000000000000000000000000..a6ba953fd0b1b98818a67dcd461bc78df195f5ea GIT binary patch literal 4572 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 FV1i+Ml^g&7 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_video call_press.png b/res/screen-density-xhigh/C01-1_icon_video call_press.png new file mode 100644 index 0000000000000000000000000000000000000000..1ca9abb95beb6305f55525cc98a4a66d820db607 GIT binary patch literal 4149 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_icon_voice call_dim.png b/res/screen-density-xhigh/C01-1_icon_voice call_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..8ed30b08b6c3706e6a2b89652cf1d18ce33f7f79 GIT binary patch literal 5084 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_keypad_btn_icon.png b/res/screen-density-xhigh/C01-1_keypad_btn_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3601e3570c8215b4d24b474465919b7db8b0db6e GIT binary patch literal 1734 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 VAT*wQ^;(f8Ky*3ceA_8J`#;$P$uR%` literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_keypad_btn_normal.png b/res/screen-density-xhigh/C01-1_keypad_btn_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..55004653d8723a2e9dbaf04ded1b8b6d1d180d55 GIT binary patch literal 16343 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 Awg3PC literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_lock_icon_reject.png b/res/screen-density-xhigh/C01-1_lock_icon_reject.png new file mode 100644 index 0000000000000000000000000000000000000000..de951cc41cdd16eca52ed1ec9a4bf7a52077b9a1 GIT binary patch literal 3614 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 Hu0mjf)ccnE literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_lock_icon_reject_arrow_press.png b/res/screen-density-xhigh/C01-1_lock_icon_reject_arrow_press.png new file mode 100644 index 0000000000000000000000000000000000000000..d1c03e2b18c2cd26362f39396ed0dd967b7525d5 GIT binary patch literal 2977 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_multil_default_caller ID_366x366.png b/res/screen-density-xhigh/C01-1_multil_default_caller ID_366x366.png new file mode 100644 index 0000000000000000000000000000000000000000..33399016a8aaf1209e9491c29b91bb8400f829aa GIT binary patch literal 16665 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_multil_default_caller ID_720x720.png b/res/screen-density-xhigh/C01-1_multil_default_caller ID_720x720.png new file mode 100644 index 0000000000000000000000000000000000000000..f13ec554f3f237d1d02d49617a6ed834de0c841b GIT binary patch literal 34175 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_outgoingcall_No caller ID.png b/res/screen-density-xhigh/C01-1_outgoingcall_No caller ID.png new file mode 100644 index 0000000000000000000000000000000000000000..57c5d57c5d2a82d3b578aa581f5bbe7d04e378d6 GIT binary patch literal 69772 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 z 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-1_reject_right_dim.png b/res/screen-density-xhigh/C01-1_reject_right_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..6bdedea4765e2aa3c810bb5e5c41806a63d21692 GIT binary patch literal 6536 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�MymrE)Ob!y9 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-3_dialer_btn_3line_bg.9.png b/res/screen-density-xhigh/C01-3_dialer_btn_3line_bg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..820ca772fe309e3e205477b4769640f396a8b40b GIT binary patch literal 1290 zcmV+l1@-!gP)tR9jSua}MS&aRi;^{&At28tn=LjvIt2q6&CfFY$xgOY}WsFE~Q5K%)> zTai?1udDuqURJs3Wq(2Mdeh$Y2eeXppqkD*UK_B9!4W}KH7k8G?9RN;%=gXQeXq~A zw}*PMZ%^5lC}&aOOC+B6b#y$J3%tvG+d8%+aV}~Y#*4vV@a4n0{syAbvR?DM?yGo* zZ#nQLY*%qEObB@iLWc-Bq?l%+PfD{~cQ2cZvTdPS5b)+OBb`$J!PH zq~Rz{0*8InBl_t5$~O%ZpSDMCr_RpSKd(im*xti(hOO0g4q4-i zYdrVG#Ipdk?l_foXN47eDxg|ja>#K}aAxEs*&j_W1>N35=;Ct5nd zSr2ITjeuqi$-3EyLPN_tNtp-#;AL&HzqV9BfJ7c}0I|*hAQPMHFF=nxWa4uYF^3Nf zfV)rtz)JxT009sH0T2KI5C8!X009sH0T2KI5C8!X009sH0r;N)=raUR0r+nK#61uI z0T2KI5C8!X009sH0T2KI5C8!X009tyg9kkGhSq~?$(>)_|EA(>TeQ{CYQbl)E1-9p zI;jyFineTPi>}hGhHP7OLEkl+vC))0G`sv8I`@n9zQ=mf)JhJ}YNz=hCVYSQ#%`}Q z9c|^E6ARxTAA5fnYrq)Q;_WnOH~!30va)+?y4PG^sYa^YWPfkdnfLyPvot^q>BtCA zvz1R~d{GXzho$!)YD77wsDR(``S;1rbi_ zEHznLNGwIG-R2FYCjJPkM|vdH9w}}Q*kW+V7)Q)l$ZeVqCr zV5H$ES&x3rQ$wtINwp>gv$WjItlXN|$)e#ExU9e;18W60^Hf`kqFELoe03}ZOz65qtXT%SjGXhduy5RC z!p33_=5l++jwTb&CWBgFo7@S(c7m<5%hb%y`XE*-5&M*^TAd7#L24gXYJ6N7z zlPQ2;HP|xTLlCJ7*$KaD)JvLGCx;AYtI-EzF{hZ(rvQ>~Rl*I;w<_UVo>ghjeyH-2 z%vRf-T~B8hgCJIl$o>rg(vl4h+ZrW2Pi=Vn7n3zA6%p(6ssI2007*qoM6N<$f_qF; AcmMzZ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-3_dialer_btn_3line_bg.png b/res/screen-density-xhigh/C01-3_dialer_btn_3line_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..6198e8819439c3ce6c68e3bd11f359c36d1477ab GIT binary patch literal 3706 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-3_dialer_btn_4line_bg.png b/res/screen-density-xhigh/C01-3_dialer_btn_4line_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..3f5c80e86d50ee199e966f296019316baf8a50e6 GIT binary patch literal 3699 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-3_dialer_btn_5line_bg.9.png b/res/screen-density-xhigh/C01-3_dialer_btn_5line_bg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..75e5b7cde6dc5e790efc8d0720dea9936d30b4c6 GIT binary patch literal 1200 zcmV;h1W)^kP)~C?Gys8m~95>)o}Nopsi+6MsbcpoyKN)Z`mWiDl9%N@XQY93m4+a#w^Z z_!0aHB!t8rmt61*;1cl<3Tlf$!@RS$<2K&lq^*$38EIr|cK19p?>TdKUZ1bK!5j0L zjdN|&FJ_M~lX=;f&%e}~SaYAXzk90SGN@^q=fmOfYZs%@x8E_%w|W_SGvGLHU=7bC z*oAckX$97G{Z$0Ipz9Yxmem`II+0K;cI8sox*X6Q6>E5gckpfl>$Stf!w0*&yL@9~gRiZv@p8G`nx#_d;d>MLdx~MD0P4NMLXpV8ML@hxat?{Z zQMb0Xt{og4{I$8cDT6I7E%EvJc|JEcCw~_f7Uch#nVG-)Q<>YUVGV~2#sI-dq+D(h zJOL17==tfLJKyi@?C{mq)mE@4=j`k(FBA$qn;ZT~)vONy!AT$&Vl+7n#}MPqA<5x)kxPzZ=2tIL(CHF}`^NItJ4p_NLdC5zXb5`e)} zii;EMD4Jaob5tf?RF}+!o9xCAn&D{U;{}GqLi>|~Hvy?+lB+s95WByrYOJ6}%zl)x zl*!G*5dfEHWMU#-tJS&!6dC|Ux9$cFtE%Ysb;V#w+!I{J#{nWKsDRvf!8t7;sIhyB z&Tb2-W&@fzgu8)Q#{jsM*|B`$)BwZ!QUtFB4SOM^#nVW%1h|#t4%|QhGNTg%rv~WO zSE^y}0?-$+Gkr!}d*%QU{9_4-vh05czy%=y0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY=~AOQXx0h|E;698Q_0uX=z1Rwwb2tWV=5P$##AOHafKmY=~fE}}E0VKO^DsHw# zvt*XRXYg+T^uA9{PV#|7;;1b;YR`MNMK>F}@vvI0-bd&DNxkpIVv&!Hjd90G{L!hg z8(rufThlL_X1G$R{IIgJa-uZ=eeXkqgPg^kUs|o{hW);GYkH%(zE_L)lpv z2-KX-z}Pv0XR}%EBocpyWA@jo!9Ej#Z>YMR_inED`FhaOubO56E&k(IC%>4Uo_>Tx zPEAe8pn0J=WWml6TzfbEt=RqNLY{3!vpx*!@eyx(K%2n%BB&-9MqnHPMA|PjyM$6iwYUjoH>50L=Lmkx zWYWPZ)3V7xKS+fST;qt9g1)G8lp?AH3B_8wO$O3P?T;KR-d>!hH3@P-SD8F1<1 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-3_dialer_btn_5line_bg.png b/res/screen-density-xhigh/C01-3_dialer_btn_5line_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..88801b3509a6c5ff6af85cc7147efb197daddd55 GIT binary patch literal 3660 zcma);HS*tMZhb{{`)7q{om01&X0V~T*8?$Ik=uAV`3 zW5Pb_dYjM@vYSBS!)TLvK^#PsIx!sii*&|4RO;%uEW>#*IEjg233SGSq;bRx1X~b<>K|O+5>^Q( z=Jo+72^*X^UfgkE0au|43Qst@2|59+fN2s!pj#i+Ey^1GK(Ph;<@`=$*szuO!XeW|D_nwrS3OZHE>( zh<4MM+BZ=xE8$eUh%*+FA~3)+_29IzCU}FRv?c}Ax+`G?CkvI@IO1IB@=?P5yEiTY z;H1sFXNI2;C(JcseFFJ#tbC`L#{-19Xs7rBz%w;&Vc2Mc@(>{asO5!&YE@azdKd+} z@mYKDmU~EU?WEs9xchq{ln`R4FjhZ1fy%cK{;2Utvuh}

UeJUkr-NIPTgcFEiscg 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 VAolEe{l9YswABsNsv&l7{||-g;rRdn literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-3_dialer_btn_call_bg.9.png b/res/screen-density-xhigh/C01-3_dialer_btn_call_bg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..38a69e6b379675e99feb6c6bd105b10f07e4a368 GIT binary patch literal 1274 zcmV%9xt#kmz}-L%RgQmyg9 zwuucUedwc)rY}DF7x?CjzW4`dQZJa}`JSCFm!&KiipHEtP6)H-d_TX-nYZ6J5ZK?t z{B>wg!Io9XS5cs@?%_at`$O48i_<6FNw#W!78KlDaG@i#5??! z1#iOgiVI=OvL1s_v1Jt-j#FmDy_k_mL`x%1Sg|}E?_#lZ3HD&G0A;c&*i+o|yhjk- zsShUWXK$^1J+;2{)A-Ff_VTp})_-;M=eA1&cM`*mLrS8Y0IJ#*nh3(EdjenrmMw=dj1bz_=6|M5xIbh(Gsyxl2Q^~Db6zS;6;Xw18!+D?@cPbJHu)QCj9 zAkO-kk1G z%}PFNSdNR*AroZp_hbivlTpvPTdUs;Uz=oAJkscLjS$XR3u&fJx~yy<@x5+3eSjbn zlnWYuskQ+MaU;;Q>93Z4?f7tr*{k)ti~9?JV4u06+H_2{-EPH7R)_4A2@TQoOqsGz z5$abx)NYM^Im;T}=@#Y42PionWok0Hs+#VLe6=78oe)LzBGYXD;Wa~Qm4hAh^on8b3($!3zGgc!ibZ>H ztHOjtptT*q8;q~CYM|9SC_qipk9ebB)8cNwVWw*FZ9vPvuA2Z{vC0!I6$b_o=Za># z3z|&_^|;f3MnlWLNtp-#;AOh6E&UGwp9p|OUjRV2Twq&ZgYD0`qcga6CBXB&!OUbW6`v=p1$5Fq<*jSI-&VeLERQuH#e%&tR?-svk(XpG|7f~DTwi9ULW#lJ9&)bnH)Am^ z#88e*S<)hMG`Don645Jea$UFR1upz*cDSBvV6-3J4t>PCq)(-O*Uq}4 znON#LWy&yN!JZhzH%e>lJBS|TQBC*c-u8ek28WDs#HrGo+%rl)`7YRJ-o@zzI4q1zauvs7r+iB#{^=hX3ifE$kyvNJ% zF2C;=d0Eb9BB!IfSv33x7vxxEV66~lo+vd8n^HhTbi4#yXkNAGEC)@a=Atb8H(@g2 zdvOM5g*{_elZkJWK`)S|a6<4*kh*52n)qEGK(wmm9@kCU!2!*}Cd2n&FU|-D%YAGz zIS@pHl;IwNNGRskDJH2=ZCa_vNcmQy5BB2BUPhlB$WE&gzR;akCH%I-s#C6vGZ6y-K&GLtY`z)|}-xO%NamNi)<%4a7r9E0tIut%ncw4{mG; zD!_=jJON6=CMWjySWX<^G8hbg&VeBK4&eCBkPre0om_;_ZF96u_gzU@!q4}5DfjEF=8apjcVG6)T z?Hr>FxXJ)E6EEXb05c(g#zm`N3Rn;TgfvWD)Ped|0D+_=X#@yK0U?8!$Y%gvAYeDl z$>|3~WCJv+r>5XP&+906`RV8}N^cc_8hNSQVCf=oyLZJmH++Q+1^ZZ{nDn-d{i;LS^TML@~N|yE`ra`yR zUR#7I_RYUw@D1i-{re^tOvDM z0GxJs^!(%{#0_-~-w<|pog~;Muew0Oh|3dz7&Jw5NF1jNJyU@dCA_Rjz<;G#r7kH#(+aBMOEtb(lSEgT zJNd4eNj5>EXm_&Om0~GL4l*Q!*kd3N?SCUAIM}Du@PeNx)p4|eqlUD4kg5J<4Q@y5 zh2unnFCG<41wkZ%=c~kK&#I_yrfsIXpkBfDm`m)@5|JbkZiGQE4@YW+Rx@||qksJj z4kE(QX6pQ$b5u#xAj-fPNWUZ(RV+k=r!Dz`M#C55X{u?}>9>ZQ`}~!;V(LtssXvyS z+!_g_()ih)4@Yk0Z}n}7ZZU7MpIQ>8!e$lcv+7 z`)Yfcd${Mmq-0UF;X^S{UdCJo0tP6fFT>X??J~xhc*Y@PAxYuGtleyiY!4GNJ~-b; z+LRIEbj@_`bY?z~ab;Cm)oK-q$(hNhaZ;s?QBa+#iKr2}lIUkfwMkXJ{-F`G5wudK zBDxA%;bAQQCD2M zg=Oi8m#wNSl7fh8ikdbVo~60S6QHxaF7v!~iFSF*GtYwKR%uS2Z9Zcz6Vq-JcD8b> z%E-(xt5&Zzs8&1dlBhc>&oApz=`g>Bkt+^q@>ubxL6eXV^LLFFjaJHu%jtAvr7!9P ztK3SNi#n8jyWf@{XBB+62`$j}C|~vO+P!)l1i~6)-LJ|o)JVx=FrAT-+XocoNyAQe#mT=>9vvX_d9OxY9 z80xf@Ju8#ZmeC#>9~&B+0EU}ozGoswX^WE;D=Yhzd36(ZdsI>AHzG} zMp{UjmztSaSU0KG=GQ)*>!|H0e^lP4o2pw~FbD0c{{#O4uWV(k-(J8+)xq82LH1Aw zdT8rFUEgtPS87mu(0^E20^%83P0 zG@N?$S^ukiqud!aC_S|8efU{Se5_X3s9>g?U@r6E%5c|~ruT)H^+v$-MSgBmZtqbA z>g%z@@vGzL<msx3E{kRx(m3Q0?I?5;y`g@ zVTv%z2iKPYAKAMT<)u;1e;XH%6cY;D6loQc!fL~|durKThkqs4vSW6$kSWMli(uL7Fld~#KS zufa=_?PBfngMu#RW3y)YW*Tp_9!m-G)k(a4^L_2+=q!3Of0G0qNS_57w)XTdLiV0V zmeW-VQt?Y?C}_v%zDWD6NXb`0m+T|`#8OE~;fO0t(y6}wI<9C`rVaq$_g zagJ=f9e5kx3Svzs_~F)+T=URefEcb+wr6a?JI_bZ2z54f=^l?Ak;Ha zwwa?nM!K_?)0!)*``er*T&7+2cUA=oEXgyfGIuh`-;ymZHIuEqY(Bd9tAYY$j`N~A z!r_p%l5X&~PUrF;$Z;8Y<1fbN##hD?$I~k<_Vbr-r;eEeJO7IPnnhW5Vz6>QzN1WV zOmt>lW}UA!uA4COb+J|Zml@aY*0s9sUPnW?)3{gyPICBs+s|2+X<1{#q`BvZYUD#t zzTf7b_zI9okeU3KH@L~^sqDYCk0Dyau#!nH`6L9^Y!J*m@nM0ofL<%*oaU(J8s%JD zI#{;rjmb^T9jpf2sG*)vr{@O+3;tWSLlwgVcO8*y zuPHoE+9|y^rd96ZcV#+dkXEPPyiXfZ+tjAtOmn_U+qxfkAAoODXY__T@;Y+r+N|8# zjsv<{0$nis%mtFjmGdtDKXi9)Q?JwZ zT;WJ@5wa3JD{pzbyl}D{@*3e=cs8}HhQW^vpSVrANTPr|Ov+9gjUtOWEO;R&CABI4 z4!eI-4w-P8;4YxQExsMCqo)G}U(O!RBd4;aiZV|#Q@h#-V#!*xNb-y>+9MuhV z03hHg0EC7Ez`whD?gPLFApkhA0|4nP0HF8yWILb=0Jzl}%8JH*OTSR^9-Jx+Lw`01%8GAS;&g9xpB0)a4>z zmmB(f^$RO{2Bs-!;fXI9RZ)XwrKs9`?fRVW@8eUwmXq5`z9%-bD4~Gw+H70GdSWRS zh?Dc-%3=Y8^V_}yD`>s!Gf6kn=i%N>hr{Z*(G&|uQw!Kp!~UV3tOdKDl&(y;ovgZk z3HE=PIW}@I@u%V&=J)R{)FyI|vI53;E}ds5{2WzTf?bct$d5@LnU^3)>4`TQ>Sz?N9 zlHD-|iCFQQ<+-lf)>Z??fEJIppA!iZ$_J#*twwi9)H-E`8v^fpygaw$goCv83%YBY zHnB{7r-^1N`1w<-PIiUBr?<+Sq;%ZjMPL1K*N}g7#iI>D7q@y#!;& zsw%;UE)EM|H|!dNR~U8PIv&r99wJ@O|EIkSp*Re&?_Yw^cKt$Rn(v$Z*dK_YE#$AV zP!^1iD=zjT>fkYpQ26lCcx5{ zR3|_n;={VX9lf8hb^{TCUZ{b>6C7N-F|fJ~4pLRzXQL48T^tnUoY+CE@TlJY(k5zc zqI4Q17Q(V3Cda12P?>aV)R@q&*QZj0j)#`0tdtFCWf0x*rB!TvJm@BiGxf4YZ@b7) zu&-q+(yGoVODaBgm#6oFswi~Fw<=I;&M40pUsFZY1h_1i=y7L&z|BR@Lq^}>e=vak X5~liU{k-zN;(&&Vu5z7{UD*Et?<5B^ literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-3_dialer_btn_option_bg.9.png b/res/screen-density-xhigh/C01-3_dialer_btn_option_bg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..795c5135e2e0531f2da8bacdd11f170b53a0f7fe GIT binary patch literal 1164 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-3_dialer_btn_option_press.png b/res/screen-density-xhigh/C01-3_dialer_btn_option_press.png new file mode 100644 index 0000000000000000000000000000000000000000..76cbd4694e674ec08307efad67178e5e5d0313c6 GIT binary patch literal 3063 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 FV1f_VtB3#q literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-3_dialer_btn_press.9.png b/res/screen-density-xhigh/C01-3_dialer_btn_press.9.png new file mode 100644 index 0000000000000000000000000000000000000000..549481eae1b5caa430d0f6fedae68d28c5f2ba43 GIT binary patch literal 3846 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-3_dialer_btn_press.png b/res/screen-density-xhigh/C01-3_dialer_btn_press.png new file mode 100644 index 0000000000000000000000000000000000000000..6dc22bc37e57dd5cdde4381074e893ff9cbd45b9 GIT binary patch literal 6466 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-3_dialer_icon_01.png b/res/screen-density-xhigh/C01-3_dialer_icon_01.png new file mode 100644 index 0000000000000000000000000000000000000000..5753355233ad4d9c3512d36274dbadb15f10aaf9 GIT binary patch literal 3715 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-3_dialer_icon_01_press.png b/res/screen-density-xhigh/C01-3_dialer_icon_01_press.png new file mode 100644 index 0000000000000000000000000000000000000000..b79f2c667a16fa863e28fdab63864deaf9b6fefe GIT binary patch literal 3608 zcmZ9OXE59iw8sC7=vMDmSiN_mm(@GFSkdbW5jD{g+0}(8(a8!)^iHg3i54}8-ic^I z$Qvaq>dkxK`{~a7p7WeJ-_A30W=^8HsU8(M8#w>~R0jImmVe#oUy&03t#?er_x>80 zzrJk{08r5XD-e+Xk_76N5b#|l zRs8CSmQeya)5y<~k(A3)D+$ez&M(YOMq`-3UA(|((M_wPL&QEN3O~SL`i}i>%KC>P8?a}MzIklbYV{FqnNf#+)w!Vyo9GbF1i<9t-E|L!bD0GT~6zDQ3=#u1!zoFjK%CiTdV?bTO z>357s(F}k_c#2jjprH#wV{`f8KoJq(JmTiM0ho&c&H_)jrvNneEH45C*ky7vf{M}s zE_#myZNN(zs2;a|rUM`)0R~T_K1E<&43IRi@ze+ETY#=H8j41MloF7%NQe~zh#~;z zK^~q^ASMrB&^@wI`6W_Ivm^XBsk}y&R$fINj2)?10Evx_IH%y40ka5$ybFO#zJ_>D zSRSi1Mwa^P@n--iN@x7L?eSIU7`S$9Og;q%b`snBNPGizb=|n$8n5!#0D$%2$cbxF zi6%C*GBMis`ZeDnk(VPy(L;QaXCt*nGf=d;!nSR_{NKocEIQnoqg^3d}3U}G5&%q#&vl+RqwKe;^q=E1?@9% zZAA(*Y*^3*q-f_SA4``&6SZCled3$EasRd^dO@hRCI{4etAQfY#mXJr2!9(1&>(}m zzTpAjsNJu7T9A|w?G?Q~9&+tIl6BxcT-$C%g1Q(_VsAdXpy_4IRc%9s-v_7<3{Tt!p;)Y8W7no3$M5gf3SFu z)qAk2KlQl_X<@fu2ZoGDbC8tYg?ljp$j@}gc$Rf7#kc710dk?FfHDc;|!)o@3YEW>T20a{I2)z4OMT}{}Y zcrZ5RVCJZAI=U(RVbIo zSE9=O5bAFuZLboEZF`M-&0udWiW;0YI{LXN+*q4JMY(;bs^T7E^OGd;?2tsbjaWJMabgN*Q?>lZmR*X{~sr zPYHW*yLQOO2W5x3g&!Qzg~onmt6`lx=NwNYt`Jwg=VhmQlt|(xN?zh6$}tv|PjUf% zDiDc*rC$~>hh7a>iA$DC&U#FG>x9ai8Qtf))XDey?KgNgeEWU--|!RjbMqUS?3oc+Y+SJU56&!8f*>UY+zco+1REzV)J#j&~ zGNW2P)%G4{bY?thd-D8Bm4qsO0bB*S3yBPR7s#Mwt+bjy_VQ5u$)}U-T?rI&oMwDp zW&=k*BGh*e3on?`LouUTgQAZUk`j%gM#OW}#0%K_R|Y#b4TDbu9M;1pPq76}1w9Al zOLd3xhxZQSmtTFBeI-yZmHU`>huEYC~;9MPXHX)z;~=LRZUR%ZOR8U!ha%8tf_0jr&db%>+<}<^!P! z6ET_?JA#X|@WA59wJa;9XyBl-}&6!NehNDm4sF(E&ZFb}gA<}^Lh7d8oh z@gu!ME{yk+Oo`}LYm7ieT8A-}@k)VGAyfV%E?;R?rB12n7wKsMT9w=;893A)YTNVC zNVP|7;*zdU!~V1|^iU2AqZkHfO7F(y8%Wmsa)VSG9- zxE#909`85&F>g8ZT}4%2tNXa;r04GTs#u{NIJ+`uI|uxLYGLsm)tdFYgVWzSOAUP)5^FNoLdUu5s9ZxLl;fZ6T$FI{*Q>kIMQu9(r;;7>G3-72Y zDt=QByxP4igN?h7^A|E-zrG%+WoD9yJe%2{8=J_TD9$;`$@u8|xa4ZDYoE1lslTV6 z^TSZ6jFjVv^~FJV$Z`ne=bJTZv(3j`PX%wh{xqDzzm#2Mux4c35E14cU%JVNE&csB zx!m+EO#mRA4*<~70PyGLukQlDLrDPGa|QsVTmWG9d*Sp+7XS!h2HKj4(8V7G2fj;^ zG;vOB5Dj(&JCeN*%f+dQE#lN<_aZ8zzmwN>NEFDQri@u8t9_blO><_l=o^Ix2or(A zRO(cGiFP8Xpi3i^pa&}YA5gCUYkL0wusVeIRW@~|r6z^WTY`Gf7vPMt=sFc22Konn z^Vrf5tHnI##8|l%0lO_qy8xUKJ70`Jw#d3dZolV6LMMUm%?eL=6+vf}nQaUhKByS_ ziUh1@L-k|fmJg#p3V)k}0YCuYMWG(TOM+=I+NfIw%?#0~J2w&msKXsRY(t3u(GhxR zvXEyg9?er>?}_WYa@==6`A*6gL5s268)EC)eig>W+|Hr>7Cb*~s?DF2qBcXNz3DZf z_@@I_SEs7vO@EuYdg68U^JOFtG+JklAB6Ckkn>7SnwYT-hD5t4QhLMdp5MBb(wsvQ zO!r*WkgyW?h=%!ka(cetpQ#?IsElmEt0dd*%Q7@N79Li^Hy14OvqkBX{ zX4-oXg7a{*c56`FD|72ezFHpwh1|VUN9rvVk)X2>gZEH;zQMZFA`?N?aE%)Q-Jl}v zY+I&9Hc{ZOZfVvJV(#W1UaoZ*)&tK+_rgy2X<*pq(TZ5Q@P^#i!GbeUtcwjoZGtmN zCKMsJ$SpHgePh7z+X~xErO?TO^U*J>^&Lk?s^;od)zh_ay(bMq?{Rg(3^?if232Hv+Uo~0}OObwQIGUqy7hR@s@r7 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-3_dialer_icon_clear.png b/res/screen-density-xhigh/C01-3_dialer_icon_clear.png new file mode 100644 index 0000000000000000000000000000000000000000..719cde765a40842a95ce259f8bb9cd85f7997605 GIT binary patch literal 4701 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 AumAu6 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-3_icon_call.png b/res/screen-density-xhigh/C01-3_icon_call.png new file mode 100644 index 0000000000000000000000000000000000000000..767fd97fc7cb8ae6beb6d6ac2f7e29a5076ccf49 GIT binary patch literal 3756 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 Vk{v&M-&gE=00009a7bBm000XU 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 T1G!(b00000NkvXXu0mjf%nJiK literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-4_btn_icon_call.png b/res/screen-density-xhigh/C01-4_btn_icon_call.png new file mode 100644 index 0000000000000000000000000000000000000000..0b1038e5b191ac49ce0c74afdf3ad99a6a3d4324 GIT binary patch literal 3294 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-4_btn_icon_call_dim.png b/res/screen-density-xhigh/C01-4_btn_icon_call_dim.png new file mode 100644 index 0000000000000000000000000000000000000000..d2a68f6370fc5b728d5fe4672b4fb1244e1dfa69 GIT binary patch literal 3253 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 XHEXk7|B4Y{00000NkvXXu0mjf9|9~Y literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-4_btn_icon_video_call.png b/res/screen-density-xhigh/C01-4_btn_icon_video_call.png new file mode 100644 index 0000000000000000000000000000000000000000..fe450c56cc100395db9fbdaa2ccefffb00394321 GIT binary patch literal 3204 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 LNkvXXu0mjfclY0| literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-4_controlbar_icon_cancel.png b/res/screen-density-xhigh/C01-4_controlbar_icon_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..0960b627a3b69e5c769798650bea7e2ad5f8cf04 GIT binary patch literal 3286 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 U`XdR*xc~qF07*qoM6N<$g3e46EC2ui literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-4_controlbar_icon_delete.png b/res/screen-density-xhigh/C01-4_controlbar_icon_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..33a6bc7f16c0f3575b1a4d82e4ff30b39de629a2 GIT binary patch literal 572 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 Y0G~tc&d7UTwEzGB07*qoM6N<$g1FW5_5c6? literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-4_icon_Blocked(Auto-rejected).png b/res/screen-density-xhigh/C01-4_icon_Blocked(Auto-rejected).png new file mode 100644 index 0000000000000000000000000000000000000000..7f2cf706c17fc9c8e59050cae46d1794779a4451 GIT binary patch literal 3237 zcmV;W3|jMvP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0005dNklE0$g0-Xb zJ&^kX7;7q!2^<988a9`;64*MND+FQzObS9^r!xx>X{R0?Gmo_NT`0^ktShhtGJr$u^`w z(nDx+&At`h`)Fh~)5)Qkjt+r3IXA};r6P7HY2+w0iHmqO?}ELSd3}czUkFW~3Ybk( z+#tiX&@4@%>05zXFkmy$00000NkvXXu0mjf8$E=00009a7bBm000XU z000XU0RWnu7ytkYPiaF#P*7-ZbZ>KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000IyNkl7La{;JGaG2qM*Pgr?x^??x`b8A!zx)G-4p=aW%cfs<7 zIU?0<_r}!?00960!s``$fCXIu$ye9_qxj303@9FXDK4H2)pQvxv>B13115nS0&}3W z9#kPLG?2rU;ib6v8FY=jQ2HuTP+}M${_>>>*1*Bz$36xIhGLi>$qrQj00030|D=?$ z4Z=VSMW0Zb(11j71$#hA#RklhCD;QAWdkZ`nS;h1G;~O59LYF#isUN$~B2LbH#ZWXpFrJR7HrpsXX@9dAQiN8SY9F#f-pfN=r&Q&cU zXZJ!1dvWeTdm-#wJp>!9hXFnVu!vXzwg$eKc%2!b(jD@O>^UaRPYX7{1Gu_b&Nq1n z00960t)KFLjj@8aYt2#Vn9Cb%d#Ib;z;!BLkU zlyY8sH@KLop=~}&lD{c@v8a{!u~mErRAday1LIwQj+3Xb7pln8$ejy|ffi5&21Yv* zYg;;64$h(H@2CNKg|p+Y z@>FTh@$-NaJNkedYrX#xBn!NDs&tYG6x9)Mbtc0_4)8D~C4Qw*kvi}w*xv^;vxN7d zs6LIPN5C`yayKuE64-xg=?4G+|NrcluS*0$6vsbu&7yc=ykyZLc+nu3j+3(pf*|+@ z*bbXuQ8WogMT=mvnFLY1Dwr$=lbCOUg19J%isk(9+I>9s`@TEx$9MXl zVgCb$>_bFgUW?$gSsOTTv{y94ClRL8o|t`^NXvz*R4X-PD&Rot0CQ0cwNe!a*dx%8 zU04G)EHO>sGPY>GEWRsXLbk~V&;@p7l+7BkEnp=GP%E|VNTTJ*{6;iR)=oniZhFqg z2l@%j7`|0+(O3$l0o-P83EAH}?*RTb+G4=RaLowro!4Ll)2*0Ev*3t}0lg?|w1tA+ z#Q;8(0NRWJJS&0eVKAW5`rPQr;{u@LMt_ng^`C(eL+T|C;5=nFth9d3E1EIm{mrAQ z6PxxF>t=8FJ|Ua{dxrZRIB|S<6i6-pTI_nd2c{e#sq6k{9z%=}u3MP)tdgT5l0uEI zv|g8NUjo`?M^;t(D@`NWR^@pSSOO-cAUeQNU_$>w_;2ioUGrzDBZ#8-&j^B$5D;{V z1Z;$eAlM3mA0Q$q5mFimNQ8jkXRs6mt%Q`Rl!#*Ss#i(U2Cc+2Pe`$df=vQ}2PyW5 zy6(=-?9ROW;T>3Bu{&?~?A*O`&zaltSNh+-(JsMGOD9KZm4`w3C*w*>gWP)j*Gf$% zI-0;mmHTH`hTsH+KH!}y_5qJ^c_rx;uqLhf>yITFsk!xRp&kKSz)I1IS2ly*1QTNh zfX_TMHDlvcy6nn_;3H3R8^EOlxh629PoT%)7zOr9{_}{|BG>XHccW>3NZ0gxjJuE-G6bAkiu@Lto!6=%x^KyhO^LOm zNJNJ%q5Bj#tVJ*}W|sSV0rv#F_8ETajmIK7Z!rs|5@Y7-%-}1_xs@F09gFCD%eh(v z$1D}Zk;P*OP4r8ZXRK9=CdQ07I5?q*K8sas?^O)n&_ow4;|?mXgAPvquqBljp`Ucm zW6E(IoyKC)li9@fbxE#)x0Xv<7OyDej22a0}-_ztX+cC}TuEJB!0yQJM$ zJxUnMN*ZmC|7dH>GPj)~&&$X~wJiP>bbZk-!M_~82LPsu``4hzGhYAz002ovPDHLk FV1m5#7{CAk literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-4_icon_call_blocked.png b/res/screen-density-xhigh/C01-4_icon_call_blocked.png new file mode 100644 index 0000000000000000000000000000000000000000..b5bbe160fe4b67ac239aa69ac2eb7d2144c94af0 GIT binary patch literal 1740 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 U>OUHYl>h($07*qoM6N<$f+@tv761SM literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-4_icon_message_blocked.png b/res/screen-density-xhigh/C01-4_icon_message_blocked.png new file mode 100644 index 0000000000000000000000000000000000000000..e665864e32ea3294246f6182107b11f592ca75d6 GIT binary patch literal 1423 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 KMNUMnLSTY9xzdCH literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-5_icon_cancel.png b/res/screen-density-xhigh/C01-5_icon_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..c6cb2ded655cc2bd50b43fd068c28fa0224092a3 GIT binary patch literal 3990 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/C01-5_icon_speeddial_check.png b/res/screen-density-xhigh/C01-5_icon_speeddial_check.png new file mode 100644 index 0000000000000000000000000000000000000000..df13f7ecdb5e1ac0631bdc6925292d5ebcafd302 GIT binary patch literal 4224 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 N002ovPDHLkV1nI&l5YS2 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/M01_contact_default_image.png b/res/screen-density-xhigh/M01_contact_default_image.png new file mode 100644 index 0000000000000000000000000000000000000000..846a993af2f8de73147e4edb2afc6f0060418043 GIT binary patch literal 5425 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 b_5T9^!kr!#K*%g%00000NkvXXu0mjfWYkAK literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/M01_contact_default_image_press.png b/res/screen-density-xhigh/M01_contact_default_image_press.png new file mode 100644 index 0000000000000000000000000000000000000000..a34bb4ed89371645517f09d091b04546e762db57 GIT binary patch literal 5959 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 + + + + + 720 +

+ + + + + + + + + + + + + + diff --git a/res/screen-size-normal/IDL_CALL_OPTION_POPUP.xml b/res/screen-size-normal/IDL_CALL_OPTION_POPUP.xml new file mode 100644 index 0000000..437aee0 --- /dev/null +++ b/res/screen-size-normal/IDL_CALL_OPTION_POPUP.xml @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/res/screen-size-normal/IDL_CONFCALL_FORM.xml b/res/screen-size-normal/IDL_CONFCALL_FORM.xml new file mode 100644 index 0000000..8e1e79f --- /dev/null +++ b/res/screen-size-normal/IDL_CONFCALL_FORM.xml @@ -0,0 +1,59 @@ + + + + + + 720 +
+ + + + + + + + + + + + + +
diff --git a/res/screen-size-normal/IDL_CONFCALL_LIST_FORM.xml b/res/screen-size-normal/IDL_CONFCALL_LIST_FORM.xml new file mode 100644 index 0000000..3871683 --- /dev/null +++ b/res/screen-size-normal/IDL_CONFCALL_LIST_FORM.xml @@ -0,0 +1,38 @@ + + + + + 720 +
+ + + + + + + + + + + + + +
diff --git a/res/screen-size-normal/IDL_DTMF_KEYPAD_PANEL.xml b/res/screen-size-normal/IDL_DTMF_KEYPAD_PANEL.xml new file mode 100644 index 0000000..5fdc016 --- /dev/null +++ b/res/screen-size-normal/IDL_DTMF_KEYPAD_PANEL.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + diff --git a/res/screen-size-normal/IDL_DTMF_KEYS_PANEL.xml b/res/screen-size-normal/IDL_DTMF_KEYS_PANEL.xml new file mode 100644 index 0000000..9afdaed --- /dev/null +++ b/res/screen-size-normal/IDL_DTMF_KEYS_PANEL.xml @@ -0,0 +1,73 @@ + + + + + 720 + + + + + + + + + + + + + + + + + + diff --git a/res/screen-size-normal/IDL_EMERGENCY_CALL_FORM.xml b/res/screen-size-normal/IDL_EMERGENCY_CALL_FORM.xml new file mode 100644 index 0000000..0db8882 --- /dev/null +++ b/res/screen-size-normal/IDL_EMERGENCY_CALL_FORM.xml @@ -0,0 +1,48 @@ + + + + + 720 +
+ + + + + + + + + + + +
diff --git a/res/screen-size-normal/IDL_ENDCALLKEYS_PANEL.xml b/res/screen-size-normal/IDL_ENDCALLKEYS_PANEL.xml new file mode 100644 index 0000000..aaba4fe --- /dev/null +++ b/res/screen-size-normal/IDL_ENDCALLKEYS_PANEL.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + diff --git a/res/screen-size-normal/IDL_END_CALL_FORM.xml b/res/screen-size-normal/IDL_END_CALL_FORM.xml new file mode 100644 index 0000000..93b251f --- /dev/null +++ b/res/screen-size-normal/IDL_END_CALL_FORM.xml @@ -0,0 +1,43 @@ + + + + + 720 +
+ + + + + + + + + + +
diff --git a/res/screen-size-normal/IDL_ERROR_MSG_POPUP.xml b/res/screen-size-normal/IDL_ERROR_MSG_POPUP.xml new file mode 100644 index 0000000..3c64c5b --- /dev/null +++ b/res/screen-size-normal/IDL_ERROR_MSG_POPUP.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + diff --git a/res/screen-size-normal/IDL_INCOMING_CALL_FORM.xml b/res/screen-size-normal/IDL_INCOMING_CALL_FORM.xml new file mode 100644 index 0000000..0b2a9e1 --- /dev/null +++ b/res/screen-size-normal/IDL_INCOMING_CALL_FORM.xml @@ -0,0 +1,112 @@ + + + + + 720 +
+ + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/res/screen-size-normal/IDL_KEYS_PANEL.xml b/res/screen-size-normal/IDL_KEYS_PANEL.xml new file mode 100644 index 0000000..74b6aa7 --- /dev/null +++ b/res/screen-size-normal/IDL_KEYS_PANEL.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + diff --git a/res/screen-size-normal/IDL_MULTIPLE_CALL_FORM.xml b/res/screen-size-normal/IDL_MULTIPLE_CALL_FORM.xml new file mode 100644 index 0000000..0773fb5 --- /dev/null +++ b/res/screen-size-normal/IDL_MULTIPLE_CALL_FORM.xml @@ -0,0 +1,88 @@ + + + + + 720 +
+ + + + + + + + + + + + + + + + + + + +
diff --git a/res/screen-size-normal/IDL_OUTCALL_FORM.xml b/res/screen-size-normal/IDL_OUTCALL_FORM.xml new file mode 100644 index 0000000..7b2ec4b --- /dev/null +++ b/res/screen-size-normal/IDL_OUTCALL_FORM.xml @@ -0,0 +1,49 @@ + + + + + + 720 +
+ + + + + + + + + + + +
diff --git a/res/screen-size-normal/IDL_OUT_EMERGENCYCALL_FORM.xml b/res/screen-size-normal/IDL_OUT_EMERGENCYCALL_FORM.xml new file mode 100644 index 0000000..64b2b66 --- /dev/null +++ b/res/screen-size-normal/IDL_OUT_EMERGENCYCALL_FORM.xml @@ -0,0 +1,48 @@ + + + + + 720 +
+ + + + + + + + + + + +
diff --git a/shared/data/nofile.dummy b/shared/data/nofile.dummy new file mode 100644 index 0000000..e69de29 diff --git a/shared/res/messages.png b/shared/res/messages.png new file mode 100755 index 0000000000000000000000000000000000000000..5f70e415805b630f6f5fcb23ce8429ac206b19bb GIT binary patch literal 57662 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 m zDP@v5j}skuia;TSf}Vje%u&d}EzSapHx{6W7A7SnPw3ru;PBg-6d5BTFa3@N6>VZ* zA#-1{=-a0wA|pNt4hn?NSNQ{WEuhLp98v^un1S%BV#er_O96>dIf-dyX$F*SDJZy% zK=%gEKvWryg2E8Xp?pV8LT~*+Ff%S(yfmm&*Jr*4;aj?F5rzFDLB+y&U@g<9O{`YF ze3{w)e!gV_;Zs0-x`RnI79fRio<@)$10*Vq7!+m7X+XJ?O%+Yq&Z8%9k^~O$J6j1k{PNgVAde{?VX{nn0m+I9@PscH5}P@DJe= z$CyBP)l>9Zl#@Nr!YiE4p{iJKqau(@*(-F z7Ga@b!(et?)z1&UA%Wl;PIBT@$yZ~d)<*7RDWtKuWk-{a!pgKGPgu0?ofu5$nFQX; z-JOtdc}&;t{g#0&zCjOPY$%ID|4!xiL{LRzcyRF>3ilu8&u$HG5DxOPdey{F6nx+V zA$-WJC+Xg+_(%2`DJZlVL6Rkad;?(^C7E<#iRDldXX7~&-%dzNONTGevbMpc%EXRc z`_l6!$lmdx)~pA^?x~=P3hKfAX7=P-QIV0)!#lK3La+70_kHLR10ue{n?jlAG@wr7 zz=(8j@C}4oQKlVvqB!huD2H$NVK6h{^~$Ww%oX_cS)qJ!!1ht)~m)Aqy-kvV-CL?^khCin%B8>fv2f!f?ia;TSLU9IiL%kD& ziLb}v7xvI23t{<$KQhuY7H-?|`^?c}Kf&)q@pHnvI?M_`+2^`H1n-XDQ4)r4Cx?pS zITwd!%ctYVlqy}SM0+o9uQ=$nkHSme@DD%92`_uox8$j)UK$J9^@52SO2!N{4y(Ab z46dnwYcXZz(}@7@vQ{`eFRoot7LI^_s19D@NIeg0EvFx2Dz&X`^pV%>E~w*7^Zw! z`VGH<#V@#V!*5S<`2hS}5%N@6*J)o?cJ^=Z=H%AZYu2rY8wRPU#y5zi8nDsczm@)T zLA7@j53=aRG#@{1RLSV5$jZ=@OT*d^#UaQs@Zl1^aSp#<=Nbq{gd2S6<_oq^9%5RU zhP?~EQcs1TCc-lF2@u3HaFhKM46jGeo;$zy7a_wm?$JH2`fZ<}!G(nfYDd*bjCuJ4 PGMhDS)o4+}Uhn)LTQ)|m literal 0 HcmV?d00001 diff --git a/shared/res/screen-density-xhigh/nofile.dummy b/shared/res/screen-density-xhigh/nofile.dummy new file mode 100644 index 0000000..e69de29 diff --git a/shared/trusted/nofile.dummy b/shared/trusted/nofile.dummy new file mode 100644 index 0000000..e69de29 diff --git a/src/CallActiveCallForm.cpp b/src/CallActiveCallForm.cpp new file mode 100644 index 0000000..116e346 --- /dev/null +++ b/src/CallActiveCallForm.cpp @@ -0,0 +1,2480 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file PhnActiveCallForm.cpp + * @brief Active Call Form class + */ +#include +#include +#include +#include +#include +#include "CallActiveCallForm.h" +#include "CallButtonsPanel.h" +#include "CallInfo.h" +#include "CallAppUtility.h" +#include "CallDtmfKeypadPanel.h" +#include "CallPresentationModel.h" +#include "CallSceneRegister.h" +#include "CallTypes.h" +#include "CallApp.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; +using namespace Tizen::Base::Utility; +using namespace Tizen::Graphics; +using namespace Tizen::Media; +using namespace Tizen::Social; +using namespace Tizen::System; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui::Scenes; +using namespace Tizen::Shell; + +//constants +const int IDI_MAX_SECONDS = 60; +const int IDI_MAX_MINS = 60; +const int W_HOLD_BITMAP = 78; +const int H_HOLD_BITMAP = 78; +//for Options menu list +const int IDI_POPUP_TEXT_SIZE = 33; +const unsigned int COLOR_POPUP_TEXT = Color32<255, 255, 255, 255>::Value; +const int IDI_MOREOPTIONS_LIST_ITEMS = 1; +const int W_OPTION_ANCHOR = 72; +const int H_OPTION_ANCHOR = 22; +const int W_MGR_CONFCALL_BITMAP = 64; +const int H_MGR_CONFCALL_BITMAP = 64; +const int X_POPUP_ANCHOR = 632; +const int Y_POPUP_ANCHOR = 140; +const int W_POPUP_ANCHOR = 72; +const int H_POPUP_ANCHOR = 22; +const int IDI_OPTIONMENU_ITEM_SPACING = 16; +const Point IDI_OPTIONMENU_POS(238, 162); +const Dimension IDI_OPTIONMENU_DIMEN(486, 99); +const int X_PHOTO_LBL = 166; +const int Y_PHOTO_LBL = 232; +const int W_PHOTO_LBL = 388; +const int H_PHOTO_LBL = 388; +const int W_PHOTO_LABEL = 720; +const int H_PHOTO_LABEL = 720; +const int W_RIGHT_MORE_ICON_MARGIN = 24; +const int W_MORE_LABEL = 466; +const int H_MORE_LABEL = 162; +const int W_MORE_ICON = 70; + +static const wchar_t* IDC_CONF_CALL_MORE_BUTTON = L"IDC_CONF_CALL_MORE_BUTTON"; +static const wchar_t* IDC_HOLD_BUTTON = L"IDC_HOLD_BUTTON"; +static const wchar_t* IDC_SWAP_BUTTON = L"IDC_SWAP_BUTTON"; +static const wchar_t* IDC_HOLD_LABEL = L"IDC_HOLD_LABEL"; +static const wchar_t* IDC_TEXTBOX = L"IDC_NUM_EDITFIELD"; +static const wchar_t* IDC_CALLER1_LABEL = L"IDC_CALLER1_LABEL"; +static const wchar_t* IDC_BACKGROUND_LABEL = L"IDC_BACKGROUND_LABEL"; +static const wchar_t* IDC_CALLER1_TIME_LABEL = L"IDC_CALLER1_TIME_LABEL"; +static const wchar_t* IDC_NUMBER1_LABEL = L"IDC_NUMBER1_LABEL"; +static const wchar_t* IDC_VOICE_CALL_ICON_LABEL = L"IDC_VOICE_CALL_ICON_LABEL"; +static const wchar_t* IDC_CALLER2_LABEL = L"IDC_CALLER2_LABEL"; +static const wchar_t* IDC_NUMBER2_LABEL = L"IDC_NUMBER2_LABEL"; +static const wchar_t* IDC_CALLER2_TIME_LABEL = L"IDC_CALLER2_TIME_LABEL"; +static const wchar_t* IDC_SWAP_LABEL = L"IDC_SWAP_LABEL"; +static const wchar_t* IDC_BACKGROUND_LABEL2 = L"IDC_BACKGROUND_LABEL2"; +static const wchar_t* IDC_PARTICIPANTS_LABEL = L"IDC_PARTICIPANTS_LABEL"; +static const wchar_t* IDC_CALLER1_BIGPHOTO_LABEL = L"IDC_CALLER1_BIGPHOTO_LABEL"; +static const wchar_t* IDC_CALLER2_PHOTO_LABEL = L"IDC_CALLER2_PHOTO_LABEL"; +static const wchar_t* IDC_CALLER1_PHOTO_LABEL = L"IDC_CALLER1_PHOTO_LABEL"; +static const wchar_t* IDC_KEY_BG_LABEL = L"IDC_KEY_BG_LABEL"; +static const wchar_t* IDC_DTMF_KEY_BG_LABEL = L"IDC_DTMF_KEY_BG_LABEL"; + +const int MIN_MEMORY_NEEDED = 1048576; + +ActiveCallForm::ActiveCallForm(FormType formType) + : BaseForm(formType) +{ + __pActiveCallTimer = null; + __pCallButtonsPanel = null; + __pDTMFKeypad = null; + __pMoreOptionsList = null; + __pMoreOptionsListAnchor = null; + __pSmallPhotoLabel = null; + __pActiveCallInfo = null; + __pHeldCallInfo = null; + __isSwapInProgress = false; + __isCallStateInProgress = false; + __isConfCallStateInProgress = false; + __pAddressbook = null; +} + +ActiveCallForm::~ActiveCallForm(void) +{ + if (__pActiveCallTimer != null) + { + __pActiveCallTimer->Cancel(); + delete __pActiveCallTimer; + } + if (__pMoreOptionsList != null) + { + __pMoreOptionsList = null; + } + if (__pMoreOptionsListAnchor != null) + { + __pMoreOptionsListAnchor = null; + } + if (__pSmallPhotoLabel != null) + { + __pSmallPhotoLabel = null; + } + if (__pActiveCallInfo != null) + { + delete __pActiveCallInfo; + } + if (__pHeldCallInfo != null) + { + delete __pHeldCallInfo; + } + if(__pDTMFKeypad != null) + { + __pDTMFKeypad = null; + } +} + +void +ActiveCallForm::Initialize(void) +{ + switch (__formType) + { + case FORMTYPE_OUTGOINGCALL: + Construct(IDL_OUTCALL_FORM); + break; + + case FORMTYPE_EMERGENCYOUTGOINGCALL: + Construct(IDL_OUT_EMERGENCYCALL_FORM); + break; + + case FORMTYPE_ACTIVECALL: + Construct(IDL_CALL_FORM); + break; + + case FORMTYPE_EMERGENCYACTIVECALL: + Construct(IDL_EMERGENCY_CALL_FORM); + break; + + case FORMTYPE_MULTIPLECALLS: + Construct(IDL_MULTIPLE_CALL_FORM); + break; + + case FORMTYPE_ACTIVECONFCALL: + Construct(IDL_CONFCALL_FORM); + break; + + default: + break; + } +} + +result +ActiveCallForm::OnInitializing(void) +{ + result r = E_SUCCESS; + + //Hold Button - Shown on single active/conf call scene + InitializeHoldButton(); + //Swap button for multiple call screen + InitializeSwapButton(); + //Initialize manage conf. call list form + InitializeManageConfCallButton(); + __pCallPresentor = CallPresentationModel::GetInstance(); + return r; +} + +void +ActiveCallForm::ShowDTMFKeypad(void) +{ + if(__pDTMFKeypad == null) + { + Rectangle rect(0, 0, 0, 0); + if (GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT || GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE) + { + rect.width = GetClientAreaBounds().width; + rect.height = GetClientAreaBounds().height - __pCallButtonsPanel->GetHeight(); + } + else if (GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE_REVERSE) + { + rect.height = GetClientAreaBounds().height; + rect.width = GetClientAreaBounds().width - __pCallButtonsPanel->GetWidth(); + } + + AppLog("DTMF Keypad rect(%d,%d,%d,%d)",rect.x,rect.y,rect.width,rect.height); + __pDTMFKeypad = new (std::nothrow) DtmfKeyPadPanel(); + __pDTMFKeypad->Initialize(this, rect); + //set layout relation w.r.t call buttons panel + RelativeLayout* pRelativeLayout = dynamic_cast(GetLandscapeLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->SetRelation(*__pDTMFKeypad, this, RECT_EDGE_RELATION_LEFT_TO_LEFT); + pRelativeLayout->SetRelation(*__pDTMFKeypad, __pCallButtonsPanel, RECT_EDGE_RELATION_RIGHT_TO_LEFT); + } + AddControl(__pDTMFKeypad); + } + EditField* pTextBox = static_cast(__pDTMFKeypad->GetControl(IDC_TEXTBOX)); + __pDTMFKeypad->SetBackgroundtoButton(); + __pDTMFKeypad->SetShowState(true); + __pDTMFKeypad->Draw(true); + __pDTMFKeypad->Show(); + + pTextBox->SetPropagatedKeyEventListener(this); + pTextBox->SetEllipsisPosition(ELLIPSIS_POSITION_START); + +} + +void +ActiveCallForm::OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus) +{ + AppLog("ENTER"); + + Layout* pLayout = GetLayoutN(); + if (pLayout != null) + { + pLayout->Update(); + } + if (__pCallButtonsPanel != null) + { + //update position of call buttons panel + Label* pKeysBgLbl = static_cast(GetControl(IDC_KEY_BG_LABEL, true)); + //__pCallButtonsPanel->SetBounds(pKeysBgLbl->GetBounds()); + + //bring button on top + __pCallButtonsPanel->SetButtonPosition(); + + RelativeLayout* pRelativeLayout = dynamic_cast(GetPortraitLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_LEFT_TO_LEFT); + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_RIGHT_TO_RIGHT); + pRelativeLayout->Update(); + } + + pRelativeLayout = dynamic_cast(GetLandscapeLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_LEFT_TO_LEFT); + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_RIGHT_TO_RIGHT); + pRelativeLayout->Update(); + } + + //change orientation of DTMF Keypad, if it is visible. + if(__pDTMFKeypad != null) + { + Rectangle rect(0, 0, 0, 0); + if (orientationStatus == ORIENTATION_STATUS_LANDSCAPE || orientationStatus == ORIENTATION_STATUS_LANDSCAPE_REVERSE) + { + rect.height = GetClientAreaBounds().height; + rect.width = GetClientAreaBounds().width - __pCallButtonsPanel->GetWidth(); + } + else if (orientationStatus == ORIENTATION_STATUS_PORTRAIT || orientationStatus == ORIENTATION_STATUS_PORTRAIT_REVERSE) + { + rect.width = GetClientAreaBounds().width; + rect.height = GetClientAreaBounds().height - __pCallButtonsPanel->GetHeight(); + } + __pDTMFKeypad->SetBounds(rect); + RelativeLayout* pRelativeLayout = dynamic_cast(GetLandscapeLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->SetRelation(*__pDTMFKeypad, this, RECT_EDGE_RELATION_LEFT_TO_LEFT); + pRelativeLayout->SetRelation(*__pDTMFKeypad, __pCallButtonsPanel, RECT_EDGE_RELATION_RIGHT_TO_LEFT); + pRelativeLayout->Update(); + delete pRelativeLayout; + } + pRelativeLayout = dynamic_cast(GetPortraitLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->SetRelation(*__pDTMFKeypad, this, RECT_EDGE_RELATION_LEFT_TO_LEFT); + pRelativeLayout->SetRelation(*__pDTMFKeypad, __pCallButtonsPanel, RECT_EDGE_RELATION_BOTTOM_TO_TOP); + pRelativeLayout->Update(); + delete pRelativeLayout; + } + __pDTMFKeypad->setKeysPanelBounds(); + __pDTMFKeypad->SetBackgroundtoButton(); + __pDTMFKeypad->InvalidateBounds(rect); + __pDTMFKeypad->Invalidate(true); + + //HideDTMFKeypad(); + //ShowDTMFKeypad(); + } + + //change orientation of DTMF Keypad, if it is visible. + if (__pDTMFKeypad != null && __pDTMFKeypad->GetShowState() == true) + { + if (orientationStatus == ORIENTATION_STATUS_LANDSCAPE || orientationStatus == ORIENTATION_STATUS_LANDSCAPE_REVERSE) + { + //in landscape mode, caller info is visible. + SetShowStateOnKeypad(true); + //Hide few labels and buttons in landscape mode when DTMF keypad is shown + SetShowStateOnKeypadLandscape(false); + SetHoldButtonShowState(false); + } + else if (orientationStatus == ORIENTATION_STATUS_PORTRAIT || orientationStatus == ORIENTATION_STATUS_PORTRAIT_REVERSE) + { + //in Portrait mode it is hidden beneath DTMF Keypad. + SetShowStateOnKeypad(false); + DestroyMoreOptionsMenuList(); + } + } + } + + + UpdateCallerPhoto(); + //More option is displayed recreate it + //CreateMoreOptionsMenuList(); + //CreateMoreOptionsMenuList(); + //create options menu list + if (__pMoreOptionsList != null) + { + __pMoreOptionsList->SetPosition(Point(GetWidth()-W_RIGHT_MORE_ICON_MARGIN - W_MORE_LABEL,H_MORE_LABEL)); + + } + if (__pMoreOptionsListAnchor != null) + { + __pMoreOptionsListAnchor->SetPosition(Point(GetWidth()-W_RIGHT_MORE_ICON_MARGIN - W_MORE_ICON, Y_POPUP_ANCHOR)); + Bitmap* pBgPopupArwBmp = AppUtility::GetBitmapFromResourcesN(IDB_POPUP_ARROW_ICON, W_OPTION_ANCHOR, + H_OPTION_ANCHOR); + __pMoreOptionsListAnchor->SetBackgroundBitmap(*pBgPopupArwBmp); + delete pBgPopupArwBmp; + pBgPopupArwBmp = null; + + } + + + +} + +void +ActiveCallForm::UpdateCallerPhoto() +{ + IListT* activeCallsList = __pCallPresentor->GetCallListN(); + if(activeCallsList != null && activeCallsList->GetCount() > 1) + { + for (int index = 0; index < activeCallsList->GetCount(); index++) + { + //Fetch call info + AppCallInfo callInfo; + activeCallsList->GetAt(index, callInfo); + + String contactNo; + if(callInfo.GetContactNumber().IsEmpty() == false) + { + contactNo.Append(callInfo.GetContactNumber()); + } + else + { + contactNo.Append(AppUtility::GetResourceString(IDS_NUMBER_UNKNOWN)); + } + + if (callInfo.IsOnHold() == false) + { + AppCallInfo* activeCallInfo; + activeCallInfo = new (std::nothrow) AppCallInfo(); + *activeCallInfo = callInfo; + + if (activeCallInfo->IsConferenceCall() == false) + { + + ShowPersonDetails(contactNo, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,activeCallInfo); + delete activeCallInfo; + } + else + { + + Bitmap* pPhotoBitmap = AppUtility::GetBitmapFromResourcesN(IDB_CONFERENCE_BG_ICON,W_CONFERENCE_PHOTO,H_CONFERENCE_PHOTO); + if (pPhotoBitmap != null) + { + Label* pPhotoLbl = static_cast(GetControl(IDC_CALLER1_PHOTO_LABEL)); + if (pPhotoLbl) + { + pPhotoLbl->SetBackgroundBitmap(*pPhotoBitmap); + pPhotoLbl->Invalidate(true); + } + delete pPhotoBitmap; + } + } + } + else + { + AppCallInfo* heldCallInfo; + heldCallInfo = new (std::nothrow) AppCallInfo(); + *heldCallInfo = callInfo; + + if (heldCallInfo->IsConferenceCall() == false) + { + ShowPersonDetails(contactNo, IDC_NUMBER2_LABEL, IDC_CALLER2_LABEL, true, heldCallInfo); + delete heldCallInfo; + } + else + { + Bitmap* pPhotoBitmap = AppUtility::GetBitmapFromResourcesN(IDB_CONFERENCE_BG_ICON,W_CONFERENCE_PHOTO,H_CONFERENCE_PHOTO); + if (pPhotoBitmap != null) + { + Label* pPhotoLbl = static_cast(GetControl(IDC_CALLER2_PHOTO_LABEL)); + if (pPhotoLbl) + { + pPhotoLbl->SetBackgroundBitmap(*pPhotoBitmap); + pPhotoLbl->Invalidate(true); + } + delete pPhotoBitmap; + } + } + } + } + } + else + { + if(__pActiveCallInfo != null) + { + Bitmap* pPhotoBitmap = __pActiveCallInfo->FetchLatestCallerPhotoN(__pActiveCallInfo->GetContactNumber()); + ShowCallerPhoto(pPhotoBitmap, false); + delete pPhotoBitmap; + } + } + + delete activeCallsList; + activeCallsList = null; +} + +void +ActiveCallForm::HideDTMFKeypad(void) +{ + if(__pDTMFKeypad != null) + { + EditField* pTextBox = static_cast(__pDTMFKeypad->GetControl(IDC_TEXTBOX)); + __DtmfString = pTextBox->GetText(); + __pDTMFKeypad->SetShowState(false); + pTextBox->SetPropagatedKeyEventListener(null); + } +} + +result +ActiveCallForm::InitializeCallButtonsPanel(void) +{ + result r = E_SUCCESS; + //Set background bitmap for call keypad + Label* pKeysBgLbl = static_cast(GetControl(IDC_KEY_BG_LABEL, true)); + Bitmap* pBgBitmap = AppUtility::GetBitmapFromResourcesN(IDB_BACKGROUND_BITMAP, pKeysBgLbl->GetWidth(), pKeysBgLbl->GetHeight()); + if (pBgBitmap != null) + { + pKeysBgLbl->SetBackgroundBitmap(*pBgBitmap); + } + + if (__pCallButtonsPanel == null) + { + __pCallButtonsPanel = new (std::nothrow) CallButtonsPanel(); + __pCallButtonsPanel->ConstructPanel(this, __formType); + __pCallButtonsPanel->SetBounds(pKeysBgLbl->GetBounds()); + r = AddControl(__pCallButtonsPanel); + } + + RelativeLayout* pRelativeLayout = dynamic_cast(GetPortraitLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM); + } + pRelativeLayout = dynamic_cast(GetLandscapeLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_LEFT_TO_LEFT); + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_RIGHT_TO_RIGHT); + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM); + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_TOP_TO_TOP); + } + + return r; +} + +void +ActiveCallForm::InitializeSwapButton(void) +{ + Button* pSwapBtn = static_cast(GetControl(IDC_SWAP_BUTTON)); + if (pSwapBtn) + { + Bitmap* pSwapBmp = AppUtility::GetBitmapFromResourcesN(IDB_SWAP_ICON_NORMAL, + W_HOLD_BITMAP, H_HOLD_BITMAP); + if (pSwapBmp) + { + pSwapBtn->SetNormalBitmap(Point(0, 0), *pSwapBmp); + } + delete pSwapBmp; + pSwapBmp = null; + + pSwapBmp = AppUtility::GetBitmapFromResourcesN(IDB_SWAP_ICON_PRESS, + W_HOLD_BITMAP, H_HOLD_BITMAP); + if (pSwapBmp) + { + pSwapBtn->SetPressedBitmap(Point(0, 0), *pSwapBmp); + } + delete pSwapBmp; + pSwapBmp = null; + pSwapBtn->SetActionId(IDA_SWAP_CALLS); + pSwapBtn->AddActionEventListener(*this); + } +} + +void +ActiveCallForm::InitializeManageConfCallButton(void) +{ + Button* pMoreBtn = static_cast(GetControl(IDC_CONF_CALL_MORE_BUTTON)); + if (pMoreBtn != null) + { + pMoreBtn->SetActionId(IDA_MORE_OPTIONS_MENU); + pMoreBtn->AddActionEventListener(*this); + if (__formType == FORMTYPE_MULTIPLECALLS) + { + //Correct state will be set in OnSceneActivated based on the call + pMoreBtn->SetShowState(false); + } + else if (__formType == FORMTYPE_ACTIVECONFCALL) + { + pMoreBtn->SetShowState(true); + } + } +} + +void +ActiveCallForm::InitializeHoldButton(void) +{ + Button* pHoldBtn = static_cast(GetControl(IDC_HOLD_BUTTON)); + if (pHoldBtn != null) + { + //set status of Hold Button + SetHoldButtonStatus(true); + pHoldBtn->AddActionEventListener(*this); + } +} + +void +ActiveCallForm::SetHoldButtonStatus(bool toHoldCall) +{ + //background bitmap & button name + String btnName(""); + Bitmap* normalImg = null; + Bitmap* pressImg = null; + if (toHoldCall) + { + btnName.Append(AppUtility::GetResourceString(IDS_HOLD_BTN_NAME)); + normalImg = AppUtility::GetBitmapFromResourcesN(IDB_HOLD_NORMAL_BUTTON_ICON, + W_HOLD_BITMAP, H_HOLD_BITMAP); + pressImg = AppUtility::GetBitmapFromResourcesN(IDB_HOLD_PRESS_BUTTON_ICON, + W_HOLD_BITMAP, H_HOLD_BITMAP); + } + else + { + btnName.Append(AppUtility::GetResourceString(IDS_UNHOLD_BTN_NAME)); + normalImg = AppUtility::GetBitmapFromResourcesN(IDB_UNHOLD_NORMAL_BUTTON_ICON, + W_HOLD_BITMAP, H_HOLD_BITMAP); + pressImg = AppUtility::GetBitmapFromResourcesN(IDB_UNHOLD_PRESS_BUTTON_ICON, + W_HOLD_BITMAP, H_HOLD_BITMAP); + } + + //Action id + CommandIds cmdId = IDA_HOLD_CALL; + switch (__formType) + { + case FORMTYPE_ACTIVECALL: + { + cmdId = toHoldCall ? IDA_HOLD_CALL : IDA_UNHOLD_CALL; + } + break; + + case FORMTYPE_ACTIVECONFCALL: + { + cmdId = toHoldCall ? IDA_HOLD_CONF_CALL : IDA_UNHOLD_CONF_CALL; + } + break; + + default: + break; + } + + //set background bitmap, button name & action id + Button* pHoldBtn = static_cast(GetControl(IDC_HOLD_BUTTON)); + Label* pHoldLbl = static_cast(GetControl(IDC_HOLD_LABEL)); + if (pHoldBtn) + { + pHoldBtn->SetActionId(cmdId); + pHoldBtn->SetNormalBitmap(Point(0, 0),*normalImg); + pHoldBtn->SetPressedBitmap(Point(0, 0),*pressImg); + pHoldBtn->Invalidate(true); + } + if (pHoldLbl) + { + pHoldLbl->SetText(btnName); + pHoldLbl->Invalidate(true); + } + + //free the resources + delete normalImg; + normalImg = null; + delete pressImg; + pressImg = null; +} + +void +ActiveCallForm::CreateMoreOptionsMenuList(void) +{ + //create option list anchor + if (__pMoreOptionsListAnchor == null) + { + Bitmap* pBgPopupArwBmp = AppUtility::GetBitmapFromResourcesN(IDB_POPUP_ARROW_ICON, W_OPTION_ANCHOR, + H_OPTION_ANCHOR); + __pMoreOptionsListAnchor = new (std::nothrow) Label(); + __pMoreOptionsListAnchor->Construct(Rectangle(GetWidth()-W_RIGHT_MORE_ICON_MARGIN - W_MORE_ICON, Y_POPUP_ANCHOR, W_POPUP_ANCHOR, H_POPUP_ANCHOR), L""); + __pMoreOptionsListAnchor->SetBackgroundBitmap(*pBgPopupArwBmp); + + delete pBgPopupArwBmp; + pBgPopupArwBmp = null; + + // Adds a Label to the Form + AddControl(__pMoreOptionsListAnchor); + } + + //create options menu list + if (__pMoreOptionsList == null) + { + __pMoreOptionsList = new (std::nothrow) ListView(); + __pMoreOptionsList->Construct(Rectangle(Point(GetWidth()-W_RIGHT_MORE_ICON_MARGIN - W_MORE_LABEL,H_MORE_LABEL), IDI_OPTIONMENU_DIMEN), false, SCROLL_STYLE_FADE_OUT); + __pMoreOptionsList->SetItemProvider(*this); + __pMoreOptionsList->AddListViewItemEventListener(*this); + //Add option list to the form + AddControl(__pMoreOptionsList); + } + else + { + //Hide option menu list + DestroyMoreOptionsMenuList(); + } +} + +void +ActiveCallForm::DestroyMoreOptionsMenuList(void) +{ + if (__pMoreOptionsListAnchor != null) + { + //removes and delete the child control + //Commented this for the bug N_SE-52426 and added SetShowState(false) below + RemoveControl(__pMoreOptionsListAnchor); + __pMoreOptionsListAnchor = null; + } + + if (__pMoreOptionsList != null) + { + + //removes and delete the child control + //Commented this for the bug N_SE-52426 and added SetShowState(false) below + RemoveControl(__pMoreOptionsList); + __pMoreOptionsList = null; + } +} + +result +ActiveCallForm::OnTerminating(void) +{ + result r = E_SUCCESS; + if (__pCallPresentor != null) + { + __pCallPresentor = null; + } + if(__pDTMFKeypad != null) + { + __pDTMFKeypad = null; + } + return r; +} + +void +ActiveCallForm::OnActionPerformed(const Control& source, int actionId) +{ + + String dtmfString; + switch (actionId) + { + case IDA_END_CALL: + { + //End the currently active / dialing call + if (__pActiveCallInfo != null && __pActiveCallInfo->IsConferenceCall() == false) + { + String activeContactNo; + activeContactNo.Append(__pActiveCallInfo->GetContactNumber()); + //Check if it is call is in dialing state, then + if (__formType == FORMTYPE_EMERGENCYOUTGOINGCALL || __formType == FORMTYPE_OUTGOINGCALL) + { + __pCallPresentor->EndDialingCall(activeContactNo); + } + else + { + //end active calls + __pCallPresentor->EndActiveCall(*__pActiveCallInfo->GetCallHandle()); + } + } + else + { + __pCallPresentor->EndConferenceCall(); + } + } + break; + + case IDA_END_CONF_CALL: + { + AppAssert(__formType == FORMTYPE_ACTIVECONFCALL); + __pCallPresentor->EndConferenceCall(); + } + break; + + case IDA_OPEN_NUMKEYPAD: + { + if(__pDTMFKeypad != null) + { + Rectangle rect(0, 0, 0, 0); + if (GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE_REVERSE) + { + rect.height = GetClientAreaBounds().height; + rect.width = GetClientAreaBounds().width - __pCallButtonsPanel->GetWidth(); + } + else if (GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT || GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE) + { + rect.width = GetClientAreaBounds().width; + rect.height = GetClientAreaBounds().height - __pCallButtonsPanel->GetHeight(); + } + __pDTMFKeypad->SetBounds(rect); + RelativeLayout* pRelativeLayout = dynamic_cast(GetLandscapeLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->SetRelation(*__pDTMFKeypad, this, RECT_EDGE_RELATION_LEFT_TO_LEFT); + pRelativeLayout->SetRelation(*__pDTMFKeypad, __pCallButtonsPanel, RECT_EDGE_RELATION_RIGHT_TO_LEFT); + pRelativeLayout->Update(); + delete pRelativeLayout; + } + pRelativeLayout = dynamic_cast(GetPortraitLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->SetRelation(*__pDTMFKeypad, this, RECT_EDGE_RELATION_LEFT_TO_LEFT); + pRelativeLayout->SetRelation(*__pDTMFKeypad, __pCallButtonsPanel, RECT_EDGE_RELATION_BOTTOM_TO_TOP); + pRelativeLayout->Update(); + delete pRelativeLayout; + } + __pDTMFKeypad->setKeysPanelBounds(); + __pDTMFKeypad->InvalidateBounds(rect); + __pDTMFKeypad->Invalidate(true); + + } + + + + if (GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT || GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE) + { + //hide only in portrait mode. + SetShowStateOnKeypad(false); + DestroyMoreOptionsMenuList(); + } + if (GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE_REVERSE) + { + SetShowStateOnKeypadLandscape(false); + } + + //Hide the hold button as it goes behind DTMF keypad + SetHoldButtonShowState(false); + ShowDTMFKeypad(); + __pCallButtonsPanel->SetKeypadButtonState(IDA_CLOSE_NUMKEYPAD); + } + break; + + case IDA_CLOSE_NUMKEYPAD: + { + if (GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT || GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE) + { + SetShowStateOnKeypad(true); + } + if (GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE || GetOrientationStatus() == ORIENTATION_STATUS_LANDSCAPE_REVERSE) + { + SetShowStateOnKeypadLandscape(true); + } + HideDTMFKeypad(); + __pCallButtonsPanel->SetKeypadButtonState(IDA_OPEN_NUMKEYPAD); + } + break; + + case IDA_ADD_CALL: + { + long long mem = AppUtility::GetAvailableMemory(); + AppLogDebug("Available Memory = %lld",mem); + if(mem < MIN_MEMORY_NEEDED) + { + MessageBox LowMemory; + String msg = L""; + LowMemory.Construct(AppUtility::GetResourceString(IDS_LOW_MEMORY_MSG_TITLE), AppUtility::GetResourceString(IDS_LOW_MEMORY_MSG), MSGBOX_STYLE_NONE,1000); + int modalResult = 0; + // Calls ShowAndWait() : Draws and Shows itself and processes events + LowMemory.ShowAndWait(modalResult); + return; + } + //switch to Dialer Form to make an call + if(__pCallPresentor->GetCurrentCallCount() == 1) + { + __pCallPresentor->LaunchDialAppControl(); + } + } + break; + + case IDA_HOLD_CALL: + { + bool success = true; + if (__pActiveCallInfo->IsConferenceCall() == false) + { + if(__pActiveCallInfo->GetCallHandle() != null) + { + if(IsCallStateInProgress() == false) + { + success = __pCallPresentor->HoldCall(*__pActiveCallInfo->GetCallHandle()); + SetCallStateInProgress(true); + } + } + } + else + { + success = __pCallPresentor->HoldConferenceCall(); + } + } + break; + + case IDA_UNHOLD_CALL: + { + bool success = false; + if (__pActiveCallInfo->IsConferenceCall() == false) + { + if(__pActiveCallInfo->GetCallHandle() != null) + { + if(IsCallStateInProgress() == false) + { + success = __pCallPresentor->UnHoldCall(*__pActiveCallInfo->GetCallHandle()); + SetCallStateInProgress(true); + } + } + } + else + { + success = __pCallPresentor->ActivateConferenceCall(); + } + } + break; + + case IDA_HOLD_CONF_CALL: + { + AppAssert(__formType == FORMTYPE_ACTIVECONFCALL); + if(IsConfCallStateInProgress() == false) + { + bool success = __pCallPresentor->HoldConferenceCall(); + SetConfCallStateInProgress(true); + } + } + break; + + case IDA_UNHOLD_CONF_CALL: + { + AppAssert(__formType == FORMTYPE_ACTIVECONFCALL); + if(IsConfCallStateInProgress() == false) + { + bool success = __pCallPresentor->ActivateConferenceCall(); + SetConfCallStateInProgress(true); + } + } + break; + + case IDA_OPEN_CONTACTS: + { + //Open Contacts APP + //Launch call application + AppManager* pAppManager = AppManager::GetInstance(); + pAppManager->LaunchApplication(PROVIDER_ID_CONTACTS); + } + break; + + case IDA_MUTE: + { + bool success = __pCallPresentor->SetMuteStatus(true); + if (success) + { + __pCallButtonsPanel->SetMuteButtonState(IDA_UNMUTE); + } + } + break; + + case IDA_UNMUTE: + { + bool success = __pCallPresentor->SetMuteStatus(false); + if (success) + { + __pCallButtonsPanel->SetMuteButtonState(IDA_MUTE); + } + } + break; + + case IDA_SPEAKER: + { + bool success = __pCallPresentor->SetSpeakerStatus(true); + if (success) + { + __pCallButtonsPanel->SetSpeakerButtonState(IDA_SPEAKER_OFF); + } + } + break; + + case IDA_SPEAKER_OFF: + { + bool success = __pCallPresentor->SetSpeakerStatus(false); + if (success) + { + __pCallButtonsPanel->SetSpeakerButtonState(IDA_SPEAKER); + } + } + break; + + case IDA_JOIN_CALL: + { + AppAssert(__formType == FORMTYPE_MULTIPLECALLS); + __pCallPresentor->JoinCall(); + } + break; + + case IDA_SWAP_CALLS: + { + if(IsSwapInProgress() == false) + { + AppAssert(__formType == FORMTYPE_MULTIPLECALLS); + __pCallPresentor->SwapCalls(); + SetSwapInProgress(true); + } + } + break; + + case IDA_MORE_OPTIONS_MENU: + { + //Show 'more' options menu + CreateMoreOptionsMenuList(); + } + break; + + case NUM_KEY0: + { + dtmfString.Append(L"0"); + SetTextToDTMFTextField(dtmfString); + __pCallPresentor->SendDTMFSignal(dtmfString); + } + break; + + case NUM_KEY1: + { + dtmfString.Append(L"1"); + SetTextToDTMFTextField(dtmfString); + __pCallPresentor->SendDTMFSignal(dtmfString); + } + break; + + case NUM_KEY2: + { + dtmfString.Append(L"2"); + SetTextToDTMFTextField(dtmfString); + __pCallPresentor->SendDTMFSignal(dtmfString); + } + break; + + case NUM_KEY3: + { + dtmfString.Append(L"3"); + SetTextToDTMFTextField(dtmfString); + __pCallPresentor->SendDTMFSignal(dtmfString); + } + break; + + case NUM_KEY4: + { + dtmfString.Append(L"4"); + SetTextToDTMFTextField(dtmfString); + __pCallPresentor->SendDTMFSignal(dtmfString); + } + break; + + case NUM_KEY5: + { + dtmfString.Append(L"5"); + SetTextToDTMFTextField(dtmfString); + __pCallPresentor->SendDTMFSignal(dtmfString); + } + break; + + case NUM_KEY6: + { + dtmfString.Append(L"6"); + SetTextToDTMFTextField(dtmfString); + __pCallPresentor->SendDTMFSignal(dtmfString); + } + break; + + case NUM_KEY7: + { + dtmfString.Append(L"7"); + SetTextToDTMFTextField(dtmfString); + __pCallPresentor->SendDTMFSignal(dtmfString); + } + break; + + case NUM_KEY8: + { + dtmfString.Append(L"8"); + SetTextToDTMFTextField(dtmfString); + __pCallPresentor->SendDTMFSignal(dtmfString); + } + break; + + case NUM_KEY9: + { + dtmfString.Append(L"9"); + SetTextToDTMFTextField(dtmfString); + __pCallPresentor->SendDTMFSignal(dtmfString); + } + break; + + case PAUSE_KEY: + { + dtmfString.Append(L"*"); + SetTextToDTMFTextField(dtmfString); + __pCallPresentor->SendDTMFSignal(dtmfString); + } + break; + + case HASH_KEY: + { + dtmfString.Append(L"#"); + SetTextToDTMFTextField(dtmfString); + __pCallPresentor->SendDTMFSignal(dtmfString); + } + break; + + default: + break; + } +} + +bool +ActiveCallForm::IsConfCallStateInProgress(void) +{ + return __isConfCallStateInProgress; +} + + +bool +ActiveCallForm::IsCallStateInProgress(void) +{ + return __isCallStateInProgress; +} + +bool +ActiveCallForm::IsSwapInProgress(void) +{ + return __isSwapInProgress; +} + + +void +ActiveCallForm::OnActiveTelephonyCallback(bool isActive) +{ + AppLogDebug("Enter"); + //reset hold status and show call timer + ShowTimerInfo(IDC_CALLER1_TIME_LABEL, !isActive, __activeCallStartTime); + SetHoldButtonStatus(isActive); + SetCallStateInProgress(false); +} + +void +ActiveCallForm::OnHoldTelephonyCallback(bool isHeld) +{ + AppLogDebug("Enter"); + //reset hold status and "OnHold" text + ShowTimerInfo(IDC_CALLER1_TIME_LABEL, isHeld); + if(__pActiveCallTimer != null) + { + __pActiveCallTimer->Cancel(); + } + SetHoldButtonStatus(!isHeld); + SetCallStateInProgress(false); +} + +void +ActiveCallForm::SetConfCallStateInProgress(bool progress) +{ + __isConfCallStateInProgress = progress; +} + +void +ActiveCallForm::SetCallStateInProgress(bool progress) +{ + __isCallStateInProgress = progress; +} + +void +ActiveCallForm::SetSwapInProgress(bool progress) +{ + __isSwapInProgress = progress; +} + +void +ActiveCallForm::SetTextToDTMFTextField(const String& dtmfStr) +{ + String dtmfString; + int cursorPos; + if(__pDTMFKeypad != null) + { + EditField* pTextBox = static_cast(__pDTMFKeypad->GetControl(IDC_TEXTBOX)); + + int startpos=-1,endpos=-1; + pTextBox->GetBlockRange(startpos,endpos); + if(startpos != -1) + { + pTextBox->Remove(); + pTextBox->ReleaseBlock(); + } + pTextBox->InsertTextAtCursorPosition(dtmfStr); + cursorPos = pTextBox->GetCursorPosition(); + dtmfString.Append(pTextBox->GetText()); + pTextBox->Clear(); + pTextBox->SetText(dtmfString); + pTextBox->SetCursorPosition(cursorPos); + pTextBox->Invalidate(true); + } +} + +void +ActiveCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs) +{ + AppLog("ENTER"); + //set itself as listener + __pCallPresentor->SetTelEventListener(this); + AddOrientationEventListener(*this); + Tizen::System::SettingInfo::AddSettingEventListener(*this); + + CallApp* pPhoneApp = static_cast(CallApp::GetInstance()); + pPhoneApp->AddAppStateChangeListener(*this); + + //Initialize keypad and buttons + InitializeCallButtonsPanel(); + + AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance(); + __pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID); + if(__pAddressbook != null) + { + __pAddressbook->SetAddressbookChangeEventListener(this); + } + + + if (__pActiveCallInfo != null) + { + delete __pActiveCallInfo; + __pActiveCallInfo = null; + } + if (__pHeldCallInfo != null) + { + delete __pHeldCallInfo; + __pHeldCallInfo = null; + } + DestroyMoreOptionsMenuList(); + + switch (__formType) + { + case FORMTYPE_OUTGOINGCALL: + { + String contactNo; + contactNo.Append(*(static_cast(pArgs->GetAt(0)))); + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); + __pActiveCallInfo->SetContactNumber(contactNo); + Contact* pContact = __pCallPresentor->GetContactN(contactNo); + if (pContact != null) + { + __pActiveCallInfo->SetContactInfo(*pContact); + delete pContact; + } + ShowPersonDetails(contactNo, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo); + //make an normal outgoing call + __pCallPresentor->DialCall(contactNo, false); + if (__pCallPresentor->IsAppControlRunning() == true) + { + __pCallPresentor->AbortAppControlRequest(); + } + } + break; + + case FORMTYPE_EMERGENCYOUTGOINGCALL: + { + String* pContactNo = static_cast(pArgs->GetAt(0)); + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); + long long phNumber = 0; + LongLong::Parse(*pContactNo, phNumber); + __pActiveCallInfo->SetContactNumber(*pContactNo); + //make an emergency call + __pCallPresentor->DialCall(*pContactNo, true); + } + break; + + case FORMTYPE_ACTIVECALL: + { + //get contact number + AppCallInfo* pCall = static_cast(pArgs->GetAt(0)); + + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); + *__pActiveCallInfo = *pCall; + String activeContactNo; + if(pCall->GetContactNumber().IsEmpty() == false) + { + activeContactNo.Append(pCall->GetContactNumber()); + } + else + { + activeContactNo.Append(AppUtility::GetResourceString(IDS_NUMBER_UNKNOWN)); + } + ShowPersonDetails(activeContactNo, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo); + //show call active time using Timer + //__activeCallStartTime = pCall->GetCallConnectTime(); + __activeCallStartTime = pCall->GetDurationTime(); + ShowTimerInfo(IDC_CALLER1_TIME_LABEL, pCall->IsOnHold(), __activeCallStartTime); + } + break; + + case FORMTYPE_EMERGENCYACTIVECALL: + { + //get contact number + AppCallInfo* pCall = static_cast(pArgs->GetAt(0)); + + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); + *__pActiveCallInfo = *pCall; + + //show call active time using Timer + //__activeCallStartTime = pCall->GetCallConnectTime(); + __activeCallStartTime = pCall->GetDurationTime(); + ShowTimerInfo(IDC_CALLER1_TIME_LABEL, pCall->IsOnHold(), __activeCallStartTime); + } + break; + + case FORMTYPE_MULTIPLECALLS: + { + IListT* pCallsList = __pCallPresentor->GetCallListN(); + //update calls state + UpdateMultipleCallScreen(*pCallsList); + delete pCallsList; + pCallsList = null; + } + break; + + case FORMTYPE_ACTIVECONFCALL: + { + //get Conf call + AppCallInfo* pConfInfo = static_cast(pArgs->GetAt(0)); + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); + *__pActiveCallInfo = *pConfInfo; + + int participantsCount = __pActiveCallInfo->GetCallerListCount(); + + // show participant count on name Label + Label* pPeopleCountLbl = static_cast(GetControl(IDC_PARTICIPANTS_LABEL)); + if (pPeopleCountLbl) + { + String count; + count.Append(participantsCount); + count.Append(" "); + count.Append(AppUtility::GetResourceString(IDS_PEOPLE_STR)); + pPeopleCountLbl->SetText(count); + } + + /*if(participantsCount >= IDI_MAX_CONF_CALL_PARTICIPANTS) + { + __pCallButtonsPanel->EnableAddCallButton(false); + } + else + { + __pCallButtonsPanel->EnableAddCallButton(true); + }*/ + + __pCallButtonsPanel->EnableAddCallButton(true); + + //bring button on top + __pCallButtonsPanel->SetButtonPosition(); + + + //show call active time using Timer + //__activeCallStartTime = __pActiveCallInfo->GetCallConnectTime(); + __activeCallStartTime = __pActiveCallInfo->GetDurationTime(); + ShowTimerInfo(IDC_CALLER1_TIME_LABEL, __pActiveCallInfo->IsOnHold(),__activeCallStartTime); + } + break; + + default: + break; + } + + if(__formType == FORMTYPE_ACTIVECALL || __formType == FORMTYPE_EMERGENCYACTIVECALL || + __formType == FORMTYPE_MULTIPLECALLS || __formType == FORMTYPE_ACTIVECONFCALL) + { + //Unlock the phone if its locked + if(LockManager::GetInstance()->IsLocked()) + { + AppLogDebug("Phone Locked"); + LockManager::GetInstance()->Unlock(); + } + } + + //Hide DTMFKeypad, if visible and show caller info + HideDTMFKeypad(); + SetShowStateOnKeypad(true); + SetShowStateOnKeypadLandscape(true); + __pCallButtonsPanel->SetKeypadButtonState(IDA_OPEN_NUMKEYPAD); + + //Set the correct speaker status + if(__pCallPresentor->IsSpeakerOn() == true) + { + __pCallButtonsPanel->SetSpeakerButtonState(IDA_SPEAKER_OFF); + } + else + { + __pCallButtonsPanel->SetSpeakerButtonState(IDA_SPEAKER); + } + + //Set the correct Mute status + if (__pCallPresentor->IsCallMuted() == true) + { + __pCallButtonsPanel->SetMuteButtonState(IDA_UNMUTE); + } + else + { + __pCallButtonsPanel->SetMuteButtonState(IDA_MUTE); + } + + if (pArgs) + { + pArgs->RemoveAll(); + delete pArgs; + pArgs = null; + } + + //update position of call buttons panel + Label* pKeysBgLbl = static_cast(GetControl(IDC_KEY_BG_LABEL, true)); + __pCallButtonsPanel->SetBounds(pKeysBgLbl->GetBounds()); + + CallApp* pCallApp = static_cast(CallApp::GetInstance()); + pCallApp->SetTopMostWindow(false); + // Adding check for N_SE-55109 + if(CallAppControlRequestMgr::GetInstance()->IsAppControlRunning() == false) + { + __pCallPresentor->OnAppForeground(); + } +} + +void +ActiveCallForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId) +{ + RemoveOrientationEventListener(*this); + if (__pActiveCallTimer != null) + { + __pActiveCallTimer->Cancel(); + delete __pActiveCallTimer; + __pActiveCallTimer = null; + } + if (__pSmallPhotoLabel != null) + { + __pSmallPhotoLabel->SetShowState(false); + } + //Hide "Manage conf. Call" Context menu + if (__pMoreOptionsListAnchor != null) + { + __pMoreOptionsListAnchor->SetShowState(false); + } + if (__pMoreOptionsList != null) + { + __pMoreOptionsList->SetShowState(false); + } + __DtmfString.Clear(); + + if(__pDTMFKeypad != null) + { + __pDTMFKeypad->SetShowState(false); + } + + CallApp* pCallApp = static_cast(CallApp::GetInstance()); + pCallApp->RemoveAppStateChangeListener(*this); + if(__pAddressbook != null) + { + __pAddressbook->SetAddressbookChangeEventListener(null); + } + + Tizen::System::SettingInfo::RemoveSettingEventListener(*this); +} + +void +ActiveCallForm::HandleConfCallChanged(void) +{ + AppLog("ENTER"); + AppAssert((__formType == FORMTYPE_ACTIVECONFCALL) || (__formType == FORMTYPE_MULTIPLECALLS)); + //fetch changed conference call info + AppCallInfo* pConfCallInfo = __pCallPresentor->GetConferenceCallInfoN(); + if (pConfCallInfo == null) + { + AppLog("EXIT"); + return; + } + + //fetch participant count in conf call + int participantsCount = pConfCallInfo->GetCallerListCount(); + //update status of join and Add call + bool isEnableAddCall = false; + bool isEnableJoinCall = false; + if(participantsCount < IDI_MAX_CONF_CALL_PARTICIPANTS) + { + //available only at Active conf. call or active call screen + isEnableAddCall = true; + //join button is available only at multiple call screen + isEnableJoinCall = true; + } + + Label* pPeopleCountLbl = null; + if (__pActiveCallInfo != null && __pActiveCallInfo->IsConferenceCall() == true) + { + //Active call is conference call + delete __pActiveCallInfo; + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); + *__pActiveCallInfo = *pConfCallInfo; + + if (__formType == FORMTYPE_MULTIPLECALLS) + { + pPeopleCountLbl = static_cast(GetControl(IDC_NUMBER1_LABEL)); + } + else if (__formType == FORMTYPE_ACTIVECONFCALL) + { + pPeopleCountLbl = static_cast(GetControl(IDC_PARTICIPANTS_LABEL)); + AppLog("Active conf call...(%d)", pPeopleCountLbl); + } + } + else if(__pHeldCallInfo != null && __pHeldCallInfo->IsConferenceCall() == true) + { + //Held call is conference call - this is definitely multiple call screen. + delete __pHeldCallInfo; + __pHeldCallInfo = new (std::nothrow) AppCallInfo(); + *__pHeldCallInfo = *pConfCallInfo; + pPeopleCountLbl = static_cast(GetControl(IDC_NUMBER2_LABEL)); + } + + // update participant count on name Label + if (pPeopleCountLbl != null) + { + String count; + count.Append(participantsCount); + count.Append(" "); + count.Append(AppUtility::GetResourceString(IDS_PEOPLE_STR)); + pPeopleCountLbl->SetText(count); + pPeopleCountLbl->Invalidate(true); + } + //change AddCall Button status + //__pCallButtonsPanel->EnableAddCallButton(isEnableAddCall); + //change JoinCall Button status + __pCallButtonsPanel->EnableJoinCallButton(__pCallPresentor->IsEnableJoinCallButton()); + AppLog("EXIT"); +} + +void +ActiveCallForm::OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList) +{ + AppLog("Enter"); + switch (__formType) + { + + case FORMTYPE_OUTGOINGCALL: + case FORMTYPE_ACTIVECALL: + { + String pContactNumber; + if(__pActiveCallInfo->GetContactNumber().IsEmpty() == false) + { + pContactNumber.Append(__pActiveCallInfo->GetContactNumber()); + Contact* pContact = __pCallPresentor->GetContactN(__pActiveCallInfo->GetContactNumber()); + if(pContact == null) + { + __pActiveCallInfo->ResetContactNumber(null); + __pActiveCallInfo->ResetContactInfo(null); + + } + else + { + __pActiveCallInfo->SetContactNumber(pContactNumber); + __pActiveCallInfo->SetContactInfo(*pContact); + } + if(pContact != null) + { + delete pContact; + pContact = null; + } + ShowPersonDetails(pContactNumber, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo); + } + } + break; + + case FORMTYPE_EMERGENCYACTIVECALL: + { + } + break; + + case FORMTYPE_MULTIPLECALLS: + { + + IListT* pCallsList = __pCallPresentor->GetCallListN(); + if(pCallsList != null) + { + int listCount = pCallsList->GetCount(); + for(int index = 0; index < listCount; index++) + { + AppCallInfo callInfo; + Contact* pContact; + pCallsList->GetAt(index, callInfo); + if(__pActiveCallInfo == null) + { + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); + } + *__pActiveCallInfo = callInfo; + String contactNumber; + if(__pActiveCallInfo->GetContactNumber().IsEmpty() == false) + { + contactNumber.Append(__pActiveCallInfo->GetContactNumber()); + pContact = __pCallPresentor->GetContactN(__pActiveCallInfo->GetContactNumber()); + if(pContact == null) + { + __pActiveCallInfo->ResetContactNumber(null); + __pActiveCallInfo->ResetContactInfo(null); + + } + else + { + __pActiveCallInfo->SetContactNumber(contactNumber); + __pActiveCallInfo->SetContactInfo(*pContact); + } + if(pContact != null) + { + delete pContact; + pContact = null; + } + if(callInfo.IsConferenceCall() == true) + { + continue; + } + if(callInfo.IsOnHold() == false) + { + ShowPersonDetails(contactNumber, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo); + } + else + { + ShowPersonDetails(contactNumber, IDC_NUMBER2_LABEL, IDC_CALLER2_LABEL, true,__pActiveCallInfo); + } + } + + } + + delete pCallsList; + pCallsList = null; + } + } + break; + default: + break; + } + AppLog("Exit"); +} + +void +ActiveCallForm::OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList) +{ + //No implementation +} + +void +ActiveCallForm::OnConfCallHoldTelephonyCallback(bool isHeld) +{ + //reset hold status and "OnHold" text + SetHoldButtonStatus(!isHeld); + ShowTimerInfo(IDC_CALLER1_TIME_LABEL, isHeld); + if(__pActiveCallTimer != null) + { + __pActiveCallTimer->Cancel(); + } + SetConfCallStateInProgress(false); +} + +void +ActiveCallForm::OnConfCallActiveTelephonyCallback(bool isActive) +{ + //reset hold status and show call timer + ShowTimerInfo(IDC_CALLER1_TIME_LABEL, !isActive, __activeCallStartTime); + SetHoldButtonStatus(isActive); + SetConfCallStateInProgress(false); +} + + +void +ActiveCallForm::UpdateMultipleCallScreen(Tizen::Base::Collection::IListT& activeCallsList) +{ + AppLog("ENTER"); + if(__pActiveCallInfo != null) + { + delete __pActiveCallInfo; + __pActiveCallInfo = null; + } + if(__pHeldCallInfo != null) + { + delete __pHeldCallInfo; + __pHeldCallInfo = null; + } + + Button* pMoreBtn = static_cast(GetControl(IDC_CONF_CALL_MORE_BUTTON)); + if (pMoreBtn != null) + { + pMoreBtn->SetShowState(false); + } + + //show caller's info. + for (int index = 0; index < activeCallsList.GetCount(); index++) + { + //Fetch call info + AppCallInfo callInfo; + activeCallsList.GetAt(index, callInfo); + + String contactNo; + if(callInfo.GetContactNumber().IsEmpty() == false) + { + contactNo.Append(callInfo.GetContactNumber()); + } + else + { + contactNo.Append(AppUtility::GetResourceString(IDS_NUMBER_UNKNOWN)); + } + + if (callInfo.IsOnHold() == false) + { + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); + *__pActiveCallInfo = callInfo; + + if (__pActiveCallInfo->IsConferenceCall() == false) + { + Label* pVoiceIconLbl = static_cast(GetControl(IDC_VOICE_CALL_ICON_LABEL)); + if (pVoiceIconLbl) + { + pVoiceIconLbl->SetShowState(true); + } + if (pMoreBtn != null) + { + pMoreBtn->SetShowState(false); + } + ShowPersonDetails(contactNo, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo); + if(__pMoreOptionsListAnchor != null && __pMoreOptionsListAnchor->GetShowState() == true) + { + CreateMoreOptionsMenuList(); + } + } + else + { + // show participant count on name Label + Label* pPeopleCountLbl = static_cast(GetControl(IDC_NUMBER1_LABEL)); + if (pPeopleCountLbl) + { + String count; + count.Append(__pActiveCallInfo->GetCallerListCount()); + count.Append(" "); + count.Append(AppUtility::GetResourceString(IDS_PEOPLE_STR)); + pPeopleCountLbl->SetText(count); + } + String nameStr = AppUtility::GetResourceString(L"IDS_CONFERENCE_CALL_STRING"); + Label* pNameLbl = static_cast(GetControl(IDC_CALLER1_LABEL)); + if (pNameLbl) + { + pNameLbl->SetText(nameStr); + } + Label* pVoiceIconLbl = static_cast(GetControl(IDC_VOICE_CALL_ICON_LABEL)); + if (pVoiceIconLbl) + { + pVoiceIconLbl->SetShowState(false); + } + if (pMoreBtn != null) + { + pMoreBtn->SetShowState(true); + } + Bitmap* pPhotoBitmap = AppUtility::GetBitmapFromResourcesN(IDB_CONFERENCE_BG_ICON,W_CONFERENCE_PHOTO,H_CONFERENCE_PHOTO); + if (pPhotoBitmap != null) + { + Label* pPhotoLbl = static_cast(GetControl(IDC_CALLER1_PHOTO_LABEL)); + if (pPhotoLbl) + { + pPhotoLbl->SetBackgroundBitmap(*pPhotoBitmap); + pPhotoLbl->Invalidate(true); + } + delete pPhotoBitmap; + } + } + //show call active time using Timer + //__activeCallStartTime = __pActiveCallInfo->GetCallConnectTime(); + __activeCallStartTime = __pActiveCallInfo->GetDurationTime(); + ShowTimerInfo(IDC_CALLER1_TIME_LABEL,false,__activeCallStartTime); + } + else + { + __pHeldCallInfo = new (std::nothrow) AppCallInfo(); + *__pHeldCallInfo = callInfo; + + if (__pHeldCallInfo->IsConferenceCall() == false) + { + ShowPersonDetails(contactNo, IDC_NUMBER2_LABEL, IDC_CALLER2_LABEL, true,__pHeldCallInfo); + } + else + { + // show participant count on name Label + Label* pPeopleCountLbl = static_cast(GetControl(IDC_NUMBER2_LABEL)); + if (pPeopleCountLbl) + { + String count; + count.Append(__pHeldCallInfo->GetCallerListCount()); + count.Append(" "); + count.Append(AppUtility::GetResourceString(IDS_PEOPLE_STR)); + pPeopleCountLbl->SetText(count); + } + String nameStr = AppUtility::GetResourceString(L"IDS_CONFERENCE_CALL_STRING"); + Label* pNameLbl = static_cast(GetControl(IDC_CALLER2_LABEL)); + if (pNameLbl) + { + pNameLbl->SetText(nameStr); + } + Bitmap* pPhotoBitmap = AppUtility::GetBitmapFromResourcesN(IDB_CONFERENCE_BG_ICON,W_CONFERENCE_PHOTO,H_CONFERENCE_PHOTO); + if (pPhotoBitmap != null) + { + Label* pPhotoLbl = static_cast(GetControl(IDC_CALLER2_PHOTO_LABEL)); + if (pPhotoLbl) + { + pPhotoLbl->SetBackgroundBitmap(*pPhotoBitmap); + pPhotoLbl->Invalidate(true); + } + delete pPhotoBitmap; + } + } + //show "On Hold" + ShowTimerInfo(IDC_CALLER2_TIME_LABEL, true); + } + } + + //update JoinCall button status + __pCallButtonsPanel->EnableJoinCallButton(__pCallPresentor->IsEnableJoinCallButton()); + Invalidate(true); + AppLog("EXIT"); +} + +void +ActiveCallForm::ShowPersonDetails(const String& phoneNumber, const String& contactLblName, const String& nameLblName, bool isSecondCaller, AppCallInfo* pCallInfo) +{ + result r = E_FAILURE; + + //call individual methods to show contact number, caller name & photo + ShowPhoneNumber(phoneNumber, contactLblName); + + //fetch contact details based on phone number + String* pDisplayName = pCallInfo->FetchLatestCallerNameN(phoneNumber); + ShowCallerName(*pDisplayName, nameLblName); + + Bitmap* pPhotoBitmap = pCallInfo->FetchLatestCallerPhotoN(phoneNumber); + ShowCallerPhoto(pPhotoBitmap, isSecondCaller); + + //free resources + if (pDisplayName) + { + delete pDisplayName; + pDisplayName = null; + } + if (pPhotoBitmap) + { + delete pPhotoBitmap; + pPhotoBitmap = null; + } +} + +void +ActiveCallForm::ShowPhoneNumber(const String& phoneNumber, const String& contactLblName) +{ + String formattedNumber = phoneNumber; + + Label* pContactLbl = static_cast(GetControl(contactLblName)); + if (pContactLbl) + { + pContactLbl->SetText(formattedNumber); + pContactLbl->Invalidate(true); + } +} + +void +ActiveCallForm::ShowCallerName(const String& callerName, const String& nameLblName) +{ + // show display name on name Label + Label* pNameLbl = static_cast(GetControl(nameLblName)); + if (pNameLbl) + { + //passing an empty string to SetText fails in label, + //if previously valid text has been set + if (callerName.IsEmpty() == true && pNameLbl->GetText().IsEmpty() == false) + { + String stringToBeSet(L" "); + pNameLbl->SetText(stringToBeSet); + } + else + { + pNameLbl->SetText(callerName); + } + pNameLbl->Invalidate(true); + } +} + +void +ActiveCallForm::ShowCallerPhoto(Bitmap* pPhotoId, bool isSecondCaller) +{ + //to check if default image is to be shown + bool showDefaultPhoto = false; + bool showSmallPhoto = false; + String photoLabel(""); + + switch (__formType) + { + case FORMTYPE_OUTGOINGCALL: + case FORMTYPE_ACTIVECALL: + { + if (pPhotoId == null) + { + //show default caller image + showDefaultPhoto = true; + } + else + { + //Check the size of photo + // Now checking the condition with && but actually it should be || + //But for now keeping it as && because _pContact->GetThubNail() returns image width as + // height 270 and width = 480 . So all images set thru gallery is show as small image + if(pPhotoId->GetHeight() <= H_SMALL_PHOTO + && pPhotoId->GetWidth() <= W_SMALL_PHOTO) + { + showSmallPhoto = true; + } + + } + photoLabel.Append(IDC_CALLER1_BIGPHOTO_LABEL); + } + break; + + case FORMTYPE_MULTIPLECALLS: + { + if (isSecondCaller) + { + photoLabel.Append(IDC_CALLER2_PHOTO_LABEL); + } + else + { + photoLabel.Append(IDC_CALLER1_PHOTO_LABEL); + } + + if (pPhotoId == null) + { + showDefaultPhoto = true; + } + else + { + if (pPhotoId->GetHeight() <= H_SMALL_PHOTO + && pPhotoId->GetWidth() <= W_SMALL_PHOTO) + { + //pPhotoId->Scale(Dimension(W_CONFERENCE_PHOTO,H_CONFERENCE_PHOTO)); + showSmallPhoto = true; + } + } + } + break; + + default: + break; + } + + //Remove small photo label + if (__pSmallPhotoLabel != null) + { + RemoveControl(__pSmallPhotoLabel); + __pSmallPhotoLabel = null; + } + + //show photo - for Big Photo Id, Animated Call Image + if (!showDefaultPhoto) + { + if(showSmallPhoto == true) + { + ShowThumbnailImage(pPhotoId,photoLabel); + } + else + { + Label* pPhotoLbl = static_cast(GetControl(photoLabel)); + if (pPhotoLbl) + { + Canvas* pCanvas = new (std::nothrow) Canvas; + Rectangle canvasRect(Rectangle(0, 0, pPhotoLbl->GetBounds().width, pPhotoLbl->GetBounds().height)); + pCanvas->Construct(canvasRect); + //draw the contact bitmap + pCanvas->DrawBitmap(canvasRect,*pPhotoId); + Bitmap* pNewPhotoId = new Bitmap(); + pNewPhotoId->Construct(*pCanvas, pCanvas->GetBounds()); + delete pCanvas; + + pPhotoLbl->SetBackgroundBitmap(*pNewPhotoId); + pPhotoLbl->Invalidate(true); + delete pNewPhotoId; + } + } + } + else + { + Bitmap* pDefaultPhoto = null; + switch (__formType) + { + case FORMTYPE_OUTGOINGCALL: + case FORMTYPE_ACTIVECALL: + pDefaultPhoto = AppUtility::GetBitmapFromResourcesN(IDB_ACTIVE_CALL_DEFAULT_ICON,W_CONFERENCE_PHOTO,W_CONFERENCE_PHOTO); + break; + + case FORMTYPE_MULTIPLECALLS: + pDefaultPhoto = AppUtility::GetBitmapFromResourcesN(IDB_MULTIPLE_CALL_DEFAULT_ICON,W_CONFERENCE_PHOTO,H_CONFERENCE_PHOTO); + break; + + case FORMTYPE_ACTIVECONFCALL: + pDefaultPhoto = AppUtility::GetBitmapFromResourcesN(IDB_CONFERENCE_BIG_BG_ICON,W_CONFERENCE_PHOTO,W_CONFERENCE_PHOTO); + break; + + default: + break; + } + if (pDefaultPhoto != null) + { + Label* pPhotoLbl = static_cast(GetControl(photoLabel)); + if (pPhotoLbl) + { + pPhotoLbl->SetBackgroundBitmap(*pDefaultPhoto); + pPhotoLbl->Invalidate(true); + } + delete pDefaultPhoto; + } + } +} + +void +ActiveCallForm::ShowThumbnailImage(const Bitmap* pPhotoId,String& photoLabel) +{ + Label* pPhotoLbl = static_cast(GetControl(photoLabel)); + + if (pPhotoLbl != null && pPhotoId != null) + { + Canvas* pCanvas = new (std::nothrow) Canvas; + Bitmap* pBackground = AppUtility::GetBitmapFromResourcesN(IDB_CALL_THUMBNAIL_BACKGROUND,W_CALL_THUMBNAIL,H_CALL_THUMBNAIL); + Bitmap* pShadow = AppUtility::GetBitmapFromResourcesN(IDB_CALL_THUMBNAIL_SHADOW,W_CALL_THUMBNAIL_SHADOW,H_CALL_THUMBNAIL_SHADOW); + Rectangle canvasRect(Rectangle(0, 0, pPhotoLbl->GetBounds().width, pPhotoLbl->GetBounds().height)); + pCanvas->Construct(canvasRect); + //draw the back ground + pCanvas->DrawBitmap(canvasRect,*pBackground); + //draw shadow (to be enabled after correct shadow image is provided ) + //pCanvas->DrawBitmap(Rectangle((pPhotoLbl->GetBounds().width/2)-(W_CALL_THUMBNAIL_SHADOW/2), + // (pPhotoLbl->GetBounds().height/2)-(H_CALL_THUMBNAIL_SHADOW/2),W_CALL_THUMBNAIL_SHADOW,H_CALL_THUMBNAIL_SHADOW),*pShadow); + //draw the contact bitmap + pCanvas->DrawBitmap(Rectangle((pPhotoLbl->GetBounds().width/2)-(W_SMALL_PHOTO/2), + (pPhotoLbl->GetBounds().height/2)-(H_SMALL_PHOTO/2),W_SMALL_PHOTO,H_SMALL_PHOTO),*pPhotoId); + Bitmap* pNewPhotoId = new Bitmap(); + pNewPhotoId->Construct(*pCanvas, pCanvas->GetBounds()); + delete pCanvas; + + pPhotoLbl->SetBackgroundBitmap(*pNewPhotoId); + pPhotoLbl->Invalidate(true); + delete pNewPhotoId; + delete pBackground; + delete pShadow; + } + +} + +void +ActiveCallForm::ShowCallersPhotoThumbnail(const Bitmap& pPhotoId) +{ + if (__pSmallPhotoLabel != null) + { + RemoveControl(__pSmallPhotoLabel); + __pSmallPhotoLabel = null; + } + //Draw Small Photo and show on small photo label + __pSmallPhotoLabel = new (std::nothrow) Label();//static_cast(GetControl(IDC_SMALL_PHOTO_LABEL)); + __pSmallPhotoLabel->Construct(Rectangle(X_PHOTO_LBL, Y_PHOTO_LBL, W_PHOTO_LBL, H_PHOTO_LBL), L""); + __pSmallPhotoLabel->SetBackgroundColor(Color(0,0,0)); + __pSmallPhotoLabel->SetBackgroundBitmap(pPhotoId); + // Add a Label to the Form + AddControl(__pSmallPhotoLabel); + __pSmallPhotoLabel->Invalidate(true); +} + +void +ActiveCallForm::ShowTimerInfo(const String& timerLblName, bool isOnHold, long long startTime) +{ + Label* pTimerLbl = static_cast(GetControl(timerLblName)); + + if (__pActiveCallTimer == null) + { + __pActiveCallTimer = new (std::nothrow) Tizen::Base::Runtime::Timer(); + __pActiveCallTimer->Construct(*this); + } + + if (pTimerLbl != null) + { + if (isOnHold == true) + { + pTimerLbl->SetText(AppUtility::GetResourceString(IDS_TIMER_ON_HOLD)); + //update Hold button status + SetHoldButtonStatus(false); + } + else + { + //update Hold button status + SetHoldButtonStatus(true); + //current system time + long long currTime = 0; + //SystemTime::GetTicks(currTime); + CallApp* pPhoneApp = static_cast(CallApp::GetInstance()); + currTime = pPhoneApp->GetCallAppTicks(); + //Set call duration + TimeSpan diffSpan(abs(startTime - currTime)); + + String activeCallTime(L""); + + long long hr = diffSpan.GetHours(); + if (hr <= 9) + { + activeCallTime.Append("0"); + } + activeCallTime.Append(hr); + activeCallTime.Append(L":"); + + long long min = diffSpan.GetMinutes(); + if (min <= 9) + { + activeCallTime.Append("0"); + } + activeCallTime.Append(min); + activeCallTime.Append(L":"); + + long long sec = diffSpan.GetSeconds(); + if (sec <= 9) + { + activeCallTime.Append("0"); + } + activeCallTime.Append(sec); + + pTimerLbl->SetText(activeCallTime); + __pActiveCallTimer->StartAsRepeatable(TimeSpan::NUM_OF_TICKS_IN_SECOND); + } + pTimerLbl->Invalidate(true); + } +} + +void +ActiveCallForm::SetHoldButtonShowState(bool showState) +{ + Label* pLblControl = static_cast(GetControl(IDC_HOLD_LABEL)); + if(pLblControl != null) + { + pLblControl->SetShowState(showState); + } + Button* pButtonControl = static_cast(GetControl(IDC_HOLD_BUTTON)); + if(pButtonControl != null) + { + pButtonControl->SetShowState(showState); + } +} + +void +ActiveCallForm::SetShowStateOnKeypadLandscape(bool showState) +{ + switch (__formType) + { + case FORMTYPE_ACTIVECONFCALL: + case FORMTYPE_ACTIVECALL: + { + SetHoldButtonShowState(showState); + } + break; + + case FORMTYPE_MULTIPLECALLS: + { + Label* pLblControl = static_cast(GetControl(IDC_CALLER2_LABEL)); + pLblControl->SetShowState(showState); + pLblControl = static_cast(GetControl(IDC_NUMBER2_LABEL)); + pLblControl->SetShowState(showState); + pLblControl = static_cast(GetControl(IDC_CALLER2_TIME_LABEL)); + pLblControl->SetShowState(showState); + pLblControl = static_cast(GetControl(IDC_SWAP_LABEL)); + pLblControl->SetShowState(showState); + pLblControl = static_cast(GetControl(IDC_BACKGROUND_LABEL2)); + pLblControl->SetShowState(showState); + Button* pButtonControl = static_cast(GetControl(IDC_SWAP_BUTTON)); + pButtonControl->SetShowState(showState); + } + break; + + default: + break; + } +} + +void +ActiveCallForm::SetShowStateOnKeypad(bool showState) +{ + Label* pLblControl = static_cast(GetControl(IDC_CALLER1_LABEL)); + pLblControl->SetShowState(showState); + pLblControl = static_cast(GetControl(IDC_BACKGROUND_LABEL)); + pLblControl->SetShowState(showState); + pLblControl = static_cast(GetControl(IDC_CALLER1_TIME_LABEL)); + pLblControl->SetShowState(showState); + if (__pSmallPhotoLabel != null) + { + __pSmallPhotoLabel->SetShowState(showState); + } + + switch (__formType) + { + case FORMTYPE_ACTIVECALL: + { + pLblControl = static_cast(GetControl(IDC_NUMBER1_LABEL)); + pLblControl->SetShowState(showState); + pLblControl = static_cast(GetControl(IDC_VOICE_CALL_ICON_LABEL)); + pLblControl->SetShowState(showState); + SetHoldButtonShowState(showState); + } + break; + + case FORMTYPE_MULTIPLECALLS: + { + pLblControl = static_cast(GetControl(IDC_NUMBER1_LABEL)); + pLblControl->SetShowState(showState); + pLblControl = static_cast(GetControl(IDC_CALLER2_LABEL)); + pLblControl->SetShowState(showState); + pLblControl = static_cast(GetControl(IDC_NUMBER2_LABEL)); + pLblControl->SetShowState(showState); + pLblControl = static_cast(GetControl(IDC_CALLER2_TIME_LABEL)); + pLblControl->SetShowState(showState); + pLblControl = static_cast(GetControl(IDC_SWAP_LABEL)); + pLblControl->SetShowState(showState); + pLblControl = static_cast(GetControl(IDC_BACKGROUND_LABEL2)); + pLblControl->SetShowState(showState); + if (__pActiveCallInfo != null && __pActiveCallInfo->IsConferenceCall() == false) + { + pLblControl = static_cast(GetControl(IDC_VOICE_CALL_ICON_LABEL)); + pLblControl->SetShowState(showState); + } + else + { + Button* pButtonControl = static_cast(GetControl(IDC_CONF_CALL_MORE_BUTTON)); + pButtonControl->SetShowState(showState); + } + Button* pButtonControl = static_cast(GetControl(IDC_SWAP_BUTTON)); + pButtonControl->SetShowState(showState); + } + break; + + case FORMTYPE_ACTIVECONFCALL: + { + pLblControl = static_cast(GetControl(IDC_PARTICIPANTS_LABEL)); + pLblControl->SetShowState(showState); + SetHoldButtonShowState(showState); + Button* pButtonControl = static_cast(GetControl(IDC_CONF_CALL_MORE_BUTTON)); + pButtonControl->SetShowState(showState); + } + break; + + default: + break; + } +} + +void +ActiveCallForm::OnTimerExpired(Tizen::Base::Runtime::Timer& timer) +{ + //Call default implementation of "Object.Equals()" + //returns true, if they are pointing to same address. + if (__pActiveCallTimer->Equals(timer)) + { + Label* pTimerLbl = static_cast(GetControl(IDC_CALLER1_TIME_LABEL)); + if (pTimerLbl) + { + String activeCallTime = pTimerLbl->GetText(); + // Create a StringTokenizer instance + StringTokenizer strTokens(activeCallTime, L":"); + + int count = strTokens.GetTokenCount(); // count == 3 + String token; + int sec = 0; + int min = 0; + int hr = 0; + for (int index = 0; index < count; index++) + { + switch (index) + { + case 0: + strTokens.GetNextToken(token); + Integer::Parse(token, hr); + break; + + case 1: + strTokens.GetNextToken(token); + Integer::Parse(token, min); + break; + + case 2: + strTokens.GetNextToken(token); + Integer::Parse(token, sec); + break; + } + } + //update all values + sec = sec + 1; + if (sec == IDI_MAX_SECONDS) + { + sec = 0; + min = min + 1; + } + if (min == IDI_MAX_MINS) + { + min = 0; + hr = hr + 1; + } + + //replace string + activeCallTime.Clear(); + if (hr <= 9) + { + activeCallTime.Append("0"); + } + activeCallTime.Append(hr); + activeCallTime.Append(":"); + if (min <= 9) + { + activeCallTime.Append("0"); + } + activeCallTime.Append(min); + activeCallTime.Append(":"); + if (sec <= 9) + { + activeCallTime.Append("0"); + } + activeCallTime.Append(sec); + //update timer label + pTimerLbl->SetText(activeCallTime); + pTimerLbl->Invalidate(true); + } + } +} + +/////////////////////////////////////////////////////////// +/////////// Options Menu List Functionality ///////// +/////////////////////////////////////////////////////////// +void +ActiveCallForm::OnListViewContextItemStateChanged(ListView& listView, int index, int elementId, ListContextItemStatus state) +{ +} + +void +ActiveCallForm::OnListViewItemStateChanged(ListView& listView, int index, int elementId, ListItemStatus status) +{ + //Goto conference call list form + SceneManager* pSceneManager = SceneManager::GetInstance(); + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALLLIST, SCENE_TRANSITION_ANIMATION_TYPE_NONE, + SCENE_HISTORY_OPTION_NO_HISTORY, SCENE_DESTROY_OPTION_KEEP), null); +} + +void +ActiveCallForm::OnListViewItemSwept(ListView& listView, int index, SweepDirection direction) +{ +} + +void +ActiveCallForm::OnListViewItemLongPressed(ListView& listView, int index, int elementId, bool& invokeListViewItemCallback) +{ +} + +int +ActiveCallForm::GetItemCount(void) +{ + return IDI_MOREOPTIONS_LIST_ITEMS; +} + +ListItemBase* +ActiveCallForm::CreateItem(int index, int itemWidth) +{ + //create 1st Menu option + CustomItem* pItem = new (std::nothrow) CustomItem(); + pItem->Construct(IDI_OPTIONMENU_DIMEN, LIST_ANNEX_STYLE_NORMAL); + + //Set background 9-patch bitmap to option menu + Bitmap* pBgBmp = AppUtility::GetBitmapFromResourcesN(IDB_POPUP_BG_ICON); + if (pBgBmp != null && pBgBmp->IsNinePatchedBitmap()) + { + Canvas bgCanvas; + bgCanvas.Construct(Rectangle(IDI_OPTIONMENU_POS, IDI_OPTIONMENU_DIMEN)); + bgCanvas.DrawNinePatchedBitmap(bgCanvas.GetBounds(), *pBgBmp); + } + else + { + pItem->SetBackgroundColor(LIST_ITEM_DRAWING_STATUS_NORMAL, Color(40, 45, 48)); + } + delete pBgBmp; + pBgBmp = null; + + //Set bitmap to option menu + Bitmap* pNormalConfCallBmp = AppUtility::GetBitmapFromResourcesN(IDB_MORE_MANAGE_CONFERENCE_ICON , + W_MGR_CONFCALL_BITMAP, H_MGR_CONFCALL_BITMAP); + pItem->AddElement(Rectangle(16, 17, W_MGR_CONFCALL_BITMAP, H_MGR_CONFCALL_BITMAP), 1, *pNormalConfCallBmp, null, null); + // Deallocate bitmaps + delete pNormalConfCallBmp; + pNormalConfCallBmp = null; + + //Set text to menu option + String confCallName = AppUtility::GetResourceString(IDS_MGR_CONF_CALL_LIST_STR); + + TextElement* pTextElement = new (std::nothrow) TextElement(); + pTextElement->Construct(confCallName); + pTextElement->SetTextColor(COLOR_POPUP_TEXT); + //create font + Font font; + font.Construct(FONT_STYLE_PLAIN, IDI_POPUP_TEXT_SIZE); + pTextElement->SetFont(font); + //construct Enriched text + EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText(); + FloatDimension textDimension; + font.GetTextExtent(confCallName, confCallName.GetLength(), textDimension); + textDimension.height = textDimension.height + font.GetDescender(); + pEnrichedText->Construct(textDimension); + //add text element to enriched text + pEnrichedText->Add(*pTextElement); + + //Add Enriched text to pItem + FloatPoint textPos(((2 * IDI_OPTIONMENU_ITEM_SPACING) + W_MGR_CONFCALL_BITMAP), ((IDI_OPTIONMENU_DIMEN.height - textDimension.height) / 2)); + pItem->AddElement(FloatRectangle(textPos, textDimension), 2, *pEnrichedText); + // Cleans up + pEnrichedText->RemoveAll(true); + delete pEnrichedText; + return pItem; +} + +bool +ActiveCallForm::DeleteItem(int index, ListItemBase* pItem, int itemWidth) +{ + delete pItem; + return true; +} + +void +ActiveCallForm::OnForeground(void) +{ + AppLogDebug("Enter"); + __pCallPresentor->OnAppForeground(); +} + +void +ActiveCallForm::OnSettingChanged(Tizen::Base::String& key) +{ + if(key == L"http://tizen.org/setting/contacts.order.firstname") + { + IListT* pCallsList = __pCallPresentor->GetCallListN(); + if(pCallsList != null) + { + int listCount = pCallsList->GetCount(); + for(int index = 0; index < listCount; index++) + { + AppCallInfo callInfo; + Contact* pContact; + pCallsList->GetAt(index, callInfo); + if(__pActiveCallInfo == null) + { + __pActiveCallInfo = new (std::nothrow) AppCallInfo(); + } + *__pActiveCallInfo = callInfo; + String contactNumber; + contactNumber.Append(__pActiveCallInfo->GetContactNumber()); + pContact = __pCallPresentor->GetContactN(__pActiveCallInfo->GetContactNumber()); + if(pContact == null) + { + __pActiveCallInfo->ResetContactNumber(null); + __pActiveCallInfo->ResetContactInfo(null); + + } + else + { + __pActiveCallInfo->SetContactNumber(contactNumber); + __pActiveCallInfo->SetContactInfo(*pContact); + } + if(pContact != null) + { + delete pContact; + pContact = null; + } + if(callInfo.IsConferenceCall() == true) + { + continue; + } + if(callInfo.IsOnHold() == false) + { + ShowPersonDetails(contactNumber, IDC_NUMBER1_LABEL, IDC_CALLER1_LABEL, false,__pActiveCallInfo); + } + else + { + ShowPersonDetails(contactNumber, IDC_NUMBER2_LABEL, IDC_CALLER2_LABEL, true,__pActiveCallInfo); + } + + } + + delete pCallsList; + pCallsList = null; + } + } + +} + + +bool +ActiveCallForm::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo) +{ + AppLogDebug("Enter"); + + if(keyEventInfo.GetKeyCode() == KEY_BACKSPACE || keyEventInfo.GetKeyCode() == KEY_DELETE) + { + if(__pDTMFKeypad != null) + { + EditField* pTextBox = static_cast(__pDTMFKeypad->GetControl(IDC_TEXTBOX)); + if(source.Equals(*pTextBox)) + { + AppLogDebug("Enter"); + return true; + } + } + } + + return false; +} diff --git a/src/CallApp.cpp b/src/CallApp.cpp new file mode 100644 index 0000000..55c5126 --- /dev/null +++ b/src/CallApp.cpp @@ -0,0 +1,713 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +/** + * Name : CallApp + * Version : + * Vendor : + * Description : + */ + +#include +#include +#include "CallApp.h" +#include "CallAppFrame.h" +#include "CallPresentationModel.h" +#include "CallTypes.h" +#include "CallAppUtility.h" +#include "CallIAppStateChangeListner.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::System; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui::Scenes; +using namespace Tizen::Base::Utility; +using namespace Tizen::Base::Collection; +using namespace Tizen::Base::Utility; +using namespace Tizen::Shell; + +static const int FONT_SIZE_AUTOREJECT_POPUP_TEXT = 36; + + +CallApp::CallApp(void):__initialSceneId(L""), __pLaunchArgs(null) +{ + __listenerList.Construct(); + __pCallRejectedIonPopup = null; + __pCallAppTimer = null; + __callTicks = 0; +} + +CallApp::~CallApp(void) +{ +} + +UiApp* +CallApp::CreateInstance(void) +{ + // Create the instance through the constructor. + return new CallApp(); +} + +bool +CallApp::OnAppInitializing(AppRegistry& appRegistry) +{ + AppControlProviderManager* pProviderMgr = AppControlProviderManager::GetInstance(); + pProviderMgr->SetAppControlProviderEventListener(this); + PowerManager::AddScreenEventListener(*this); + __callRejectedIontimer.Construct(*this); + return true; +} + +bool +CallApp::OnAppInitialized(void) +{ + // TODO: + // Comment. + AppManager::GetInstance()->AddActiveAppEventListener(*this); + + + // Create a Frame + CallAppFrame* pCallAppFrame = new CallAppFrame(); + pCallAppFrame->Construct(); + pCallAppFrame->SetName(L"CallApp"); + AddFrame(*pCallAppFrame); + + //Check if there is no initial scene, then exit application. + //This case will normally come when invalid AppControl request has come, + //or incoming call is coming from unknown number and "reject unknown number" settings is enabled. + if (GetInitialScene().IsEmpty() == true) + { + return false; + } + + if (__pCallAppTimer == null) + { + __pCallAppTimer = new (std::nothrow) Tizen::Base::Runtime::Timer(); + __pCallAppTimer->Construct(*this); + long long currTime = 0; + SystemTime::GetTicks(currTime); + __callTicks = currTime; + __pCallAppTimer->StartAsRepeatable(TimeSpan::NUM_OF_TICKS_IN_SECOND); + } + + + return true; +} + +bool +CallApp::OnAppWillTerminate(void) +{ + // TODO: + // Comment. + return true; +} + +bool +CallApp::OnAppTerminating(AppRegistry& appRegistry, bool forcedTermination) +{ + // TODO: + // Deallocate resources allocated by this App for termination. + // The App's permanent data and context can be saved via appRegistry. + PowerManager::RemoveScreenEventListener(*this); + if (__pCallAppTimer != null) + { + __pCallAppTimer->Cancel(); + delete __pCallAppTimer; + } + + AppManager::GetInstance()->RemoveActiveAppEventListener(*this); + return true; +} + +void +CallApp::OnForeground(void) +{ + AppLogDebug("Enter"); +} + +void +CallApp::OnBackground(void) +{ + // TODO: + // Stop drawing when the application is moved to the background. +} + +void +CallApp::OnLowMemory(void) +{ + // TODO: + // Free unused resources or close the application. +} + +void +CallApp::OnBatteryLevelChanged(BatteryLevel batteryLevel) +{ + // TODO: + // Handle any changes in battery level here. + // Stop using multimedia features(camera, mp3 etc.) if the battery level is CRITICAL. +} + +void +CallApp::OnScreenOn(void) +{ + // TODO: + // Get the released resources or resume the operations that were paused or stopped in OnScreenOff(). +} + +void +CallApp::OnScreenOff(void) +{ + AppLogDebug("Enter"); + IEnumerator* pEnum = __listenerList.GetEnumeratorN(); + while (pEnum->MoveNext() == E_SUCCESS) + { + IAppStateChangeListener* pInterface = static_cast(pEnum->GetCurrent()); + if (pInterface == null) + { + delete pEnum; + + return; + } + pInterface->OnScreenOff(); + } + delete pEnum; + +} + +SceneId +CallApp::GetInitialScene(void) +{ + return __initialSceneId; +} + +IList* +CallApp::GetAppLaunchArguments(void) +{ + return __pLaunchArgs; +} + +void +CallApp::AddAppStateChangeListener(const IAppStateChangeListener& listener) +{ + __listenerList.Add(listener); + +} +void +CallApp::RemoveAppStateChangeListener(const IAppStateChangeListener& listener) +{ + __listenerList.Remove(listener); +} + +void +CallApp::OnAppControlRequestReceived(RequestId reqId, const String& operationId, const String* pUriData, + const String* pMimeType, const IMap* pExtraData) +{ + AppLogDebug("Enter "); + if(pUriData != null) + { + AppLogDebug("%ls ",pUriData->GetPointer()); + } + + if(pExtraData == null && pUriData != null) + { + //The request is from web app + AppLogDebug("%ls",pUriData->GetPointer()); + ProcessWebAppControlRequest(reqId, operationId, pUriData); + } + else + { + //process AppControl parameters + ProcessAppControlRequest(reqId, operationId, pExtraData,pUriData); + } + AppLogDebug("EXIT"); +} + +void +CallApp::ProcessWebAppControlRequest(RequestId reqId, const String& operationId,const String* pUriData) +{ + //Construct map from string + String delim(DELIMITER); + StringTokenizer st(*pUriData,delim); + String token; + HashMap extraData; + extraData.Construct(); + while(st.HasMoreTokens()) + { + String key=L""; + String value=L""; + st.GetNextToken(token); + token.Trim(); + key.Append(token); + if(st.HasMoreTokens()) + { + token.Clear(); + st.GetNextToken(token); + token.Trim(); + value.Append(token); + } + extraData.Add(new (std::nothrow) String(key), new (std::nothrow) String(value)); + } + + //Adding this explicitly as there no other way to invoke call from webapp + extraData.Add(new (std::nothrow) String(PARAM_CALL_TYPE), new (std::nothrow) String(PARAM_CALL_VALUE_VOICE)); + + ProcessAppControlRequest(reqId,operationId,&extraData); + + extraData.RemoveAll(true); +} + +void +CallApp::ProcessAppControlRequest(RequestId reqId, const String& operationId,const IMap* pArgsMap,const String* pUriData) +{ + AppLogDebug("Enter %ls",operationId.GetPointer()); + __pLaunchArgs = null; + if(operationId.Equals(OPERATION_ID_CALL,true) == true) + { + AppLogDebug("OPERATION_ID_CALL"); + if(pArgsMap != null) + { + bool isIncomingCallRequest = false; + String* pKey = new (std::nothrow) String(LAUNCHTYPE); + if (pArgsMap->ContainsKey(*pKey) == true) + { + const String* pValue = static_cast(pArgsMap->GetValue(*pKey)); + if ((pValue != null) && (pValue->Equals(PARAM_ORIGIN_MT, true) == true)) + { + isIncomingCallRequest = true; + } + } + //Check if incoming call request or outgoing call request + if(isIncomingCallRequest == true) + { + HandleIncomingCallAppControlRequest(reqId, pArgsMap); + } + else + { + HandleDialCallAppControlRequest(reqId, pArgsMap,pUriData); + } + } + else + { + AppLogDebug("pArgsMap == null"); + } + } +} + +void +CallApp::HandleIncomingCallAppControlRequest(RequestId reqId,const IMap* pArgsMap) +{ + AppLogDebug("Enter"); + SceneManager* pSceneManager = SceneManager::GetInstance(); + //response message + AppCtrlResult appControlResult = APP_CTRL_RESULT_FAILED; + + //call handle + String callHandle(L""); + String* pKey = new (std::nothrow) String(CALL_HANDLE); + if (pArgsMap->ContainsKey(*pKey) == true) + { + const String* pValue = static_cast(pArgsMap->GetValue(*pKey)); + if (pValue != null) + { + callHandle.Append(*pValue); + } + } + delete pKey; + //contact number + String contactNumber(L""); + pKey = new (std::nothrow) String(CONTACT_NUMBER); + if (pArgsMap->ContainsKey(*pKey) == true) + { + const String* pContactValue = static_cast(pArgsMap->GetValue(*pKey)); + if (pContactValue != null) + { + contactNumber.Append(*pContactValue); + AppLogDebug("%ls",contactNumber.GetPointer()); + } + } + delete pKey; + pKey = null; + + //Fetch incoming call details + CallPresentationModel* pCallPresentor = CallPresentationModel::GetInstance(); + //Check if there is already a dial call present .This can happen in some + //race conditions N_SE-39531 + // removing this as per N_SE-49099 + if(pCallPresentor->IsIncomingorDialingCallPresent()) + { + int incomingHandle; + Integer::Parse(callHandle,incomingHandle); + pCallPresentor->RejectCall(incomingHandle,false,contactNumber); + AppLog("Cancelled already an incoming call present"); + appControlResult = APP_CTRL_RESULT_CANCELED; + AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, appControlResult, null); + return; + } + + AppCallInfo* pIncomingCall = pCallPresentor->FetchIncomingCallDetailsN(callHandle, contactNumber); + if(pIncomingCall != null) + { + bool isCallRejected = pCallPresentor->CheckIncomingCallToBeRejected(pIncomingCall); + if(isCallRejected == false) + { + //save app launch argument list + __pLaunchArgs = new (std::nothrow) ArrayList(SingleObjectDeleter); + __pLaunchArgs->Construct(1); + __pLaunchArgs->Add(pIncomingCall); + if(__initialSceneId.IsEmpty() == true) + { + __initialSceneId = IDSCN_SCENE_INCOMINGCALL; + } + else + { + //App already initialized, goto incoming call form + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_INCOMINGCALL, SCENE_TRANSITION_ANIMATION_TYPE_NONE, + SCENE_HISTORY_OPTION_NO_HISTORY, SCENE_DESTROY_OPTION_DESTROY), __pLaunchArgs); + __pLaunchArgs = null; + } + + + } + else + { + //Show messageBox showing automatic call rejection + /*MessageBox callRejectedInoMsgBox; + String msg(L"Call From "); + msg.Append(contactNumber); + msg.Append(L" Rejected."); + callRejectedInoMsgBox.Construct(L"Call Rejected", msg, MSGBOX_STYLE_NONE,1000); + int modalResult = 0; + // Calls ShowAndWait() : Draws and Shows itself and processes events + callRejectedInoMsgBox.ShowAndWait(modalResult);*/ + //go back to previous scene if App was already running, else exit application. + if(__initialSceneId.IsEmpty() == true) + { + //KEEP "__initialSceneId" as empty and return false from "OnAppInitialized()" + AppLog("Terminate Phone Application"); + Terminate(); + } + else + { + + ShowAutoRejectPopup(contactNumber); + + } + } + //set success message + appControlResult = APP_CTRL_RESULT_SUCCEEDED; + } + else + { + appControlResult = APP_CTRL_RESULT_FAILED; + } + AppLogDebug("Exiting %d",appControlResult); + AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, appControlResult, null); +} + +void +CallApp::ShowAutoRejectPopup(Tizen::Base::String contactNumber) +{ + String msg(AppUtility::GetResourceString(IDS_CALL_REJECT_FROM_STRING)); + msg.Append(L" "); + msg.Append(contactNumber); + if(__pCallRejectedIonPopup != null) + { + delete __pCallRejectedIonPopup; + __pCallRejectedIonPopup = null; + } + __pCallRejectedIonPopup = new (std::nothrow) Popup(); + Tizen::Graphics::Dimension dim(600,200); + __pCallRejectedIonPopup->Construct(true, dim); + __pCallRejectedIonPopup->SetTitleText(AppUtility::GetResourceString(IDS_CALL_REJECTED_TITLE_STRING)); + Label* pLabelText = new (std::nothrow) Label(); + pLabelText->Construct(Tizen::Graphics::Rectangle(0, 0, dim.width, dim.height-100), msg); + pLabelText->SetTextConfig(FONT_SIZE_AUTOREJECT_POPUP_TEXT, LABEL_TEXT_STYLE_NORMAL); + pLabelText->SetTextHorizontalAlignment(ALIGNMENT_LEFT); + pLabelText->SetTextVerticalAlignment(ALIGNMENT_MIDDLE); + __pCallRejectedIonPopup->AddControl(pLabelText); + __pCallRejectedIonPopup->Show(); + __pCallRejectedIonPopup->SetShowState(true); + __callRejectedIontimer.Start(3000); +} + +void +CallApp::OnTimerExpired(Tizen::Base::Runtime::Timer &timer) +{ + if (__callRejectedIontimer.Equals(timer)) + { + if(__pCallRejectedIonPopup != null) + { + delete __pCallRejectedIonPopup; + __pCallRejectedIonPopup = null; + } + } + + if(__pCallAppTimer->Equals(timer)) + { + __callTicks += 1000; + } +} + +void +CallApp::HandleDialCallAppControlRequest(RequestId reqId,const IMap* pArgsMap,const String* pUriData) +{ + //response message + AppCtrlResult appControlResult = APP_CTRL_RESULT_FAILED; + + if (pArgsMap != null) + { + String callType(L""); + String phoneNumber(L""); + //phone number + String* pKey = new (std::nothrow) String(PARAM_PHONE_NUMBER); + if(pArgsMap->ContainsKey(*pKey) == true) + { + const String* pPhoneValue = static_cast(pArgsMap->GetValue(*pKey)); + if(pPhoneValue != null) + { + AppLogDebug("%ls",pPhoneValue->GetPointer()); + phoneNumber.Append(*pPhoneValue); + } + } + else + { + AppLogDebug("PARAM_PHONE_NUMBER not present"); + //Now check if tel uri is present + if(pUriData != null) + { + AppLogDebug("pUriData is present %ls",pUriData->GetPointer()); + phoneNumber.Append(*pUriData); + if(phoneNumber.Contains(PARAM_PHONE_NUMBER)) + { + phoneNumber.Replace(PARAM_PHONE_NUMBER,L""); + if(phoneNumber.Contains(DELIMITER)) + { + phoneNumber.Replace(DELIMITER,L""); + AppLogDebug("%ls",phoneNumber.GetPointer()); + } + } + AppLogDebug("%ls",phoneNumber.GetPointer()); + } + } + delete pKey; + //Check if its a valid number + /* if(CheckNumberIsValid(phoneNumber) == false) + { + //go back to previous scene if App was already running, else exit application. + if(__initialSceneId.IsEmpty() == true) + { + //KEEP "__initialSceneId" as empty and return false from "OnAppInitialized()" + AppLog("Terminate Phone Application"); + AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, appControlResult, null); + Terminate(); + return; + } + else + { + //invalid phone number.always return, but App will come to foreground + //and show current screen, if any calls is present. + return; + } + }*/ + //call type + pKey = new (std::nothrow) String(PARAM_CALL_TYPE); + if(pArgsMap->ContainsKey(*pKey) == true) + { + const String* pCallTypeValue = static_cast(pArgsMap->GetValue(*pKey)); + if(pCallTypeValue != null) + { + callType.Append(*pCallTypeValue); + } + } + delete pKey; + pKey = null; + + //Fetch currently active call count + if (callType.IsEmpty() == false + && callType.Equals(PARAM_CALL_VALUE_VOICE, false) == true + && phoneNumber.IsEmpty() == false) + { + SceneManager* pSceneManager = SceneManager::GetInstance(); + //check if there is already a call in dialing mode, then dont accept any other dialing request. + if (pSceneManager->GetCurrentSceneId() == IDSCN_SCENE_OUTCALL + || pSceneManager->GetCurrentSceneId() + == IDSCN_SCENE_OUT_EMERGENCYCALL) + { + AppLog("Cancelled"); + appControlResult = APP_CTRL_RESULT_CANCELED; + AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, appControlResult, null); + return; + } + + CallPresentationModel* pCallPresentor = CallPresentationModel::GetInstance(); + //Check if there is already an incoming call + //this can happen in some race conditions N_SE-39531 + if(pCallPresentor->IsIncomingorDialingCallPresent() == true) + { + AppLog("Cancelled already an incoming call present"); + appControlResult = APP_CTRL_RESULT_CANCELED; + AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, appControlResult, null); + return; + } + int currentActiveCallCount = pCallPresentor->GetCurrentCallCount(); + if(currentActiveCallCount <= 1) + { + //Abort any AppControl Request running already to show incoming call screen + /* if (pCallPresentor->IsAppControlRunning() == true) + { + pCallPresentor->AbortAppControlRequest(); + }*/ + //make an outgoing call with given number + String* contactTxt = new (std::nothrow) String(phoneNumber); + __pLaunchArgs = new (std::nothrow) ArrayList(SingleObjectDeleter); + __pLaunchArgs->Construct(); + __pLaunchArgs->Add(contactTxt); + bool isEmergencyCall = pCallPresentor->IsEmergencyNumber(*contactTxt, true); + + SceneId nextScene = IDSCN_SCENE_OUTCALL; + if (isEmergencyCall) + { + nextScene = IDSCN_SCENE_OUT_EMERGENCYCALL; + } + //Check if app was already running + if(__initialSceneId.IsEmpty() == true) + { + //phone App is not already launched + __initialSceneId = nextScene; + } + else + { + AppLog("Outgoing call"); + pSceneManager->GoForward( ForwardSceneTransition( nextScene, SCENE_TRANSITION_ANIMATION_TYPE_NONE, + SCENE_HISTORY_OPTION_NO_HISTORY, SCENE_DESTROY_OPTION_KEEP), __pLaunchArgs); + } + appControlResult = APP_CTRL_RESULT_SUCCEEDED; + } + else + { + //already 2 active calls, 3rd call not allowed + appControlResult = APP_CTRL_RESULT_CANCELED; + } + } + else + { + appControlResult = APP_CTRL_RESULT_FAILED; + } + } + //send response message + AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, appControlResult, null); +} + +bool +CallApp::CheckNumberIsValid(String phoneNumber) +{ + //Pattern to compare all characters except 0-9 * # P ; , + + String phoneNumberPattern(L"[^0-9*#P,p+;]"); + RegularExpression checkPhoneNumber; + checkPhoneNumber.Construct(phoneNumberPattern); + //If there is any character other than these listed above then display invalid number + bool resultMatch = checkPhoneNumber.Match(phoneNumber,false); + //return false for patterns other than 0-9 * # P ; , + + if(resultMatch == true) + { + //return phone number is invalid + return false; + } + + return true; + +} + +void +CallApp::SetTopMostWindow(bool bTopMost) +{ + AppLogDebug("bTopMost = %d",bTopMost); + result res = E_FAILURE; + //ToDO: Need to see if there is better way to handle + //this case + + if(bTopMost == true) + { + GetAppFrame()->GetFrame()->SetZOrderGroup(WINDOW_Z_ORDER_GROUP_HIGHEST); + // AppManager::GetInstance()->AddActiveAppEventListener(*this); + if(PowerManager::IsScreenOn() == false) + { + AppLogDebug("TurnScreenOn"); + res = PowerManager::TurnScreenOn(); + AppLogDebug("TurnScreenOn %d",res); + } + result res = PowerManager::KeepScreenOnState(true,false); + AppLogDebug("KeepScreenOnState %d",res); + + + } + else + { + GetAppFrame()->GetFrame()->SetZOrderGroup(WINDOW_Z_ORDER_GROUP_NORMAL); + PowerManager::KeepScreenOnState(false); + // AppManager::GetInstance()->RemoveActiveAppEventListener(*this); + } + + if(LockManager::GetInstance()->IsLocked()) + { + AppLogDebug("Phone Locked"); + LockManager::GetInstance()->Unlock(); + } + +} +void +CallApp::OnActiveAppChanged(const String& appId) +{ + AppLogDebug("Enter %ls",appId.GetPointer()); + if(GetAppId().Equals(appId) == true) + { + + CallPresentationModel* pCallPresentor = CallPresentationModel::GetInstance(); + if(pCallPresentor->IsIncomingCallPresent() == true) + { + result res = PowerManager::KeepScreenOnState(true,false); + AppLogDebug("KeepScreenOnState %d",res); + } + + // We should not treat foreground when autorejected pop-up as actually foreground + //when appcontrol is running as appcontrol is still not completed + if(__pCallRejectedIonPopup != null && CallPresentationModel::GetInstance()->IsAppControlRunning() == true) + { + return; + } + IEnumerator* pEnum = __listenerList.GetEnumeratorN(); + while (pEnum->MoveNext() == E_SUCCESS) + { + IAppStateChangeListener* pInterface = static_cast(pEnum->GetCurrent()); + if (pInterface == null) + { + delete pEnum; + + return; + } + pInterface->OnForeground(); + } + delete pEnum; + } + +} + +long long +CallApp::GetCallAppTicks(void) +{ + return __callTicks; +} diff --git a/src/CallAppControlRequestMgr.cpp b/src/CallAppControlRequestMgr.cpp new file mode 100644 index 0000000..8707920 --- /dev/null +++ b/src/CallAppControlRequestMgr.cpp @@ -0,0 +1,309 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallAppControlRequestMgr.cpp + * @brief Manages AppControl Request to other apps. + */ +#include +#include "CallAppControlRequestMgr.h" +#include "CallTypes.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; + +CallAppControlRequestMgr* CallAppControlRequestMgr::__pInstance = null; + +CallAppControlRequestMgr::CallAppControlRequestMgr(void) +{ + __pOpenedAppControl = null; +} + +CallAppControlRequestMgr::~CallAppControlRequestMgr(void) +{ + if (__pOpenedAppControl != null) + { + delete __pOpenedAppControl; + __pOpenedAppControl = null; + } +} + +void +CallAppControlRequestMgr::CreateInstance(void) +{ + __pInstance = new (std::nothrow) CallAppControlRequestMgr(); + result r = __pInstance->Construct(); + if(IsFailed(r)) + { + delete __pInstance; + __pInstance = null; + return; + } + + std::atexit(DestroyInstance); +} + +CallAppControlRequestMgr* +CallAppControlRequestMgr::GetInstance(void) +{ + if (__pInstance == null) + { + CreateInstance(); + } + return __pInstance; +} + +void +CallAppControlRequestMgr::DestroyInstance(void) +{ + if (__pInstance != null) + { + delete __pInstance; + __pInstance = null; + } +} + +result +CallAppControlRequestMgr::Construct(void) +{ + return E_SUCCESS; +} + +bool +CallAppControlRequestMgr::IsAppControlRunning(void) +{ + AppLog("ENTER %x",__pOpenedAppControl); + return (__pOpenedAppControl != null); +} + +void +CallAppControlRequestMgr::AbortAppControlRequest(void) +{ + AppLog("ENTER"); + if (__pOpenedAppControl != null) + { + result r = __pOpenedAppControl->Stop(); + AppLog("Abort failed with r=%d", r); + delete __pOpenedAppControl; + __pOpenedAppControl = null; + } + AppLog("ENTER"); +} + +void +CallAppControlRequestMgr::AppControlRequestCompleted(void) +{ + AppLog("ENTER"); + if (__pOpenedAppControl != null) + { + delete __pOpenedAppControl; + __pOpenedAppControl = null; + } +} + +bool +CallAppControlRequestMgr::LaunchComposeMessageAppControl(String& contactNumber, IAppControlResponseListener* pListener) +{ + String tempContactNumber; + int commaIndex = 0; + int semiColonIndex = 0; + int index = 0; + contactNumber.IndexOf(",", 0, commaIndex); + contactNumber.IndexOf(";", 0, semiColonIndex); + + if(commaIndex != -1 && semiColonIndex != -1) + { + index = commaIndex < semiColonIndex ? commaIndex : semiColonIndex; + } + else if(commaIndex != -1 || semiColonIndex != -1) + { + index = commaIndex > semiColonIndex ? commaIndex : semiColonIndex; + } + else + { + index = contactNumber.GetLength(); + } + contactNumber.SubString(0, index, tempContactNumber); + + if (__pOpenedAppControl != null) + { + //An AppControl is already running. + String provider = __pOpenedAppControl->GetAppControlProviderId(); + String operation = __pOpenedAppControl->GetOperationId(); + AppLog( "Error:- AppControl is already running for provider id = %ls, operation id = %ls", + provider.GetPointer(), operation.GetPointer()); + return false; + } + + result r = E_FAILURE; + //request parameters + HashMap extraData; + extraData.Construct(); + extraData.Add(new (std::nothrow) String(MESSAGE_TYPE), new (std::nothrow) String(MESSAGE_SMS_TYPE)); + extraData.Add(new (std::nothrow) String(MESSAGE_TO), new (std::nothrow) String(tempContactNumber)); + + __pOpenedAppControl = AppManager::FindAppControlN(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE); + if (__pOpenedAppControl != null) + { + + r = __pOpenedAppControl->Start(null, null, &extraData, pListener); + } + extraData.RemoveAll(true); + + if(r != E_SUCCESS) + { + //AppControl request failed, delete AppControl. + delete __pOpenedAppControl; + __pOpenedAppControl = null; + return false; + } + else + { + //AppControl request was successful. + return true; + } +} + +bool +CallAppControlRequestMgr::LaunchViewContactAppControl(String& contactId, IAppControlResponseListener* pListener) +{ + AppLogDebug("ENTER"); + if (__pOpenedAppControl != null) + { + //An AppControl is already running. + String provider = __pOpenedAppControl->GetAppControlProviderId(); + String operation = __pOpenedAppControl->GetOperationId(); + AppLog( "Error:- AppControl is already running for provider id = %ls, operation id = %ls", + provider.GetPointer(), operation.GetPointer()); + return false; + } + + result r = E_FAILURE; + //request parameters + HashMap extraData; + extraData.Construct(); + extraData.Add(new (std::nothrow) String(CONTACTS_VIEW_TYPE), new (std::nothrow) String(CONTACTS_VIEW_TYPE_CONTACT)); + extraData.Add(new (std::nothrow) String(CONTACTS_VIEW_TYPE_CONTACT), new (std::nothrow) String(CONTACTS_VIEW_TYPE_CONTACT)); + extraData.Add(new (std::nothrow) String(CONTACT_KEY_ITEM_ID), new (std::nothrow) String(contactId)); + extraData.Add(new (std::nothrow) String(CONTACTS_ID_KEY), new (std::nothrow) String(contactId)); + extraData.Add(new (std::nothrow) String(CONTACT_KEY_ITEM_TYPE), new (std::nothrow) String(ITEM_TYPE_PERSON)); + + __pOpenedAppControl = AppManager::FindAppControlN(PROVIDER_ID_CONTACTS, OPERATION_ID_VIEW); + if (__pOpenedAppControl != null) + { + r = __pOpenedAppControl->Start(null, null, &extraData, pListener); + } + extraData.RemoveAll(true); + + if(r != E_SUCCESS) + { + //AppControl request failed, delete AppControl. + delete __pOpenedAppControl; + __pOpenedAppControl = null; + return false; + } + else + { + //AppControl request was successful. + return true; + } +} + +bool +CallAppControlRequestMgr::LaunchAddContactAppControl(String& contactNumber, IAppControlResponseListener* pListener) +{ + AppLogDebug("ENTER"); + if (__pOpenedAppControl != null) + { + //An AppControl is already running. + String provider = __pOpenedAppControl->GetAppControlProviderId(); + String operation = __pOpenedAppControl->GetOperationId(); + AppLog( "Error:- AppControl is already running for provider id = %ls, operation id = %ls", + provider.GetPointer(), operation.GetPointer()); + return false; + } + + result r = E_FAILURE; + //request parameters + HashMap extraData; + extraData.Construct(); + extraData.Add(new (std::nothrow) String(INPUT_TYPE_PHONE), new (std::nothrow) String(contactNumber)); + extraData.Add(new (std::nothrow) String(CONTACT_KEY_ITEM_TYPE), new (std::nothrow) String(ITEM_TYPE_CONTACT)); + + __pOpenedAppControl = AppManager::FindAppControlN(PROVIDER_ID_CONTACTS, OPERATION_ID_ADD); + if (__pOpenedAppControl != null) + { + r = __pOpenedAppControl->Start(null, null, &extraData, pListener); + } + extraData.RemoveAll(true); + + if(r != E_SUCCESS) + { + //AppControl request failed, delete AppControl. + delete __pOpenedAppControl; + __pOpenedAppControl = null; + return false; + } + else + { + //AppControl request was successful. + return true; + } +} + +bool +CallAppControlRequestMgr::LaunchDialerAppControl(IAppControlResponseListener* pListener) +{ + AppLogDebug("ENTER"); + if (__pOpenedAppControl != null) + { + //An AppControl is already running. + String provider = __pOpenedAppControl->GetAppControlProviderId(); + String operation = __pOpenedAppControl->GetOperationId(); + AppLog( "Error:- AppControl is already running for provider id = %ls, operation id = %ls", + provider.GetPointer(), operation.GetPointer()); + return false; + } + + result r = E_FAILURE; + HashMap extraData; + extraData.Construct(); + extraData.Add(new (std::nothrow) String(PARAM_PHONE_NUMBER), new (std::nothrow) String(L"")); + + //Using OPERATION_ID_CONFIGURE instead of OPERATION_ID_DIAL because using OPERATION_ID_DIAL + //makes Phone to run in mainmode which creates lots of issue, so working around using + //OPERATION_ID_CONFIGURE to make it run in submode + __pOpenedAppControl = AppManager::FindAppControlN(PROVIDER_ID_PHONE, OPERATION_ID_CONFIGURE); + if (__pOpenedAppControl != null) + { + r = __pOpenedAppControl->Start(null, null, &extraData, pListener); + } + extraData.RemoveAll(true); + + if(r != E_SUCCESS) + { + //AppControl request failed, delete AppControl. + delete __pOpenedAppControl; + __pOpenedAppControl = null; + return false; + } + else + { + //AppControl request was successful. + return true; + } +} diff --git a/src/CallAppEntry.cpp b/src/CallAppEntry.cpp new file mode 100644 index 0000000..0ceaf4b --- /dev/null +++ b/src/CallAppEntry.cpp @@ -0,0 +1,52 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +// This file contains the Tizen application entry point. +// +#include "CallApp.h" + +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; + +#ifdef __cplusplus +extern "C" +{ +#endif // __cplusplus + + +// +// The entry function of Tizen application called by the operating system. +// +_EXPORT_ int +OspMain(int argc, char* pArgv[]) +{ + AppLog("Application started."); + ArrayList args(SingleObjectDeleter); + args.Construct(); + for (int i = 0; i < argc; i++) + { + args.Add(new (std::nothrow) String(pArgv[i])); + } + + result r = Tizen::App::UiApp::Execute(CallApp::CreateInstance, &args); + TryLog(r == E_SUCCESS, "[%s] Application execution failed", GetErrorMessage(r)); + AppLog("Application finished."); + + return static_cast(r); +} +#ifdef __cplusplus +} +#endif // __cplusplus diff --git a/src/CallAppFrame.cpp b/src/CallAppFrame.cpp new file mode 100644 index 0000000..078724a --- /dev/null +++ b/src/CallAppFrame.cpp @@ -0,0 +1,69 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "CallApp.h" +#include "CallAppFrame.h" +#include "CallPhoneFormFactory.h" +#include "CallPanelFactory.h" +#include "CallSceneRegister.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui::Scenes; + + +CallAppFrame::CallAppFrame(void) +{ +} + +CallAppFrame::~CallAppFrame(void) +{ +} + +result +CallAppFrame::OnInitializing(void) +{ + result r = E_FAILURE; + CallApp* pPhoneApp = static_cast(UiApp::GetInstance()); + AppLogDebug("Enter"); + + //Initialize factory methods and register all scenes. + r = SceneRegister::RegisterAllScenes(); + TryReturn(r == E_SUCCESS, r , "Scene registration failed"); + + //start initial Form + if (pPhoneApp->GetInitialScene().IsEmpty() == false) + { + //goto next scene + SceneManager* pSceneManager = SceneManager::GetInstance(); + r = pSceneManager->GoForward( ForwardSceneTransition(pPhoneApp->GetInitialScene(), + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_KEEP), + pPhoneApp->GetAppLaunchArguments()); + } + AppLogDebug("Exit %d",r); + return r; +} + +result +CallAppFrame::OnTerminating(void) +{ + result r = E_SUCCESS; + + // TODO: + // Add your termination code here + return r; +} diff --git a/src/CallAppUtility.cpp b/src/CallAppUtility.cpp new file mode 100644 index 0000000..63824b9 --- /dev/null +++ b/src/CallAppUtility.cpp @@ -0,0 +1,84 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file PhnAppUtility.cpp + * @brief Utility Class for Phone Application + */ +#include +#include +#include "CallAppUtility.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::System; + +AppUtility::AppUtility(void) +{ +} + +AppUtility::~AppUtility(void) +{ +} + +String +AppUtility::GetResourceString(const String& stringId) +{ + String resourceString(L""); + AppResource* pAppResource = AppResource::GetInstance(); + if (pAppResource) + { + pAppResource->GetString(stringId, resourceString); + } + + return resourceString; +} + +Bitmap* +AppUtility::GetBitmapFromResourcesN(const String& imagePath, int imgWidth, int imgHeight) +{ + Bitmap* pBitmap = null; + AppResource* pAppResource = AppResource::GetInstance(); + if (pAppResource) + { + pBitmap = pAppResource->GetBitmapN(imagePath); + if (pBitmap && imgWidth > 0 && imgHeight > 0) + { + //scale bitmap to predefined size + pBitmap->SetScalingQuality(BITMAP_SCALING_QUALITY_MID); + pBitmap->Scale(Dimension(imgWidth, imgHeight)); + } + } + return pBitmap; +} + +long long +AppUtility::GetAvailableMemory(void) +{ + result r = E_SUCCESS; + + String key(L"http://tizen.org/runtime/storage.available.internal"); + long long allocatedMemory = 0; + + r = RuntimeInfo::GetValue(key, allocatedMemory); + TryCatch(r == E_SUCCESS, , "MyRuntimeInfo: Failed to get value"); + + return allocatedMemory; + + CATCH: + return 0; +} diff --git a/src/CallBaseForm.cpp b/src/CallBaseForm.cpp new file mode 100644 index 0000000..f01febf --- /dev/null +++ b/src/CallBaseForm.cpp @@ -0,0 +1,590 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallBaseForm.cpp + * @brief Base class for all Call forms + */ +#include "CallActiveCallForm.h" +#include "CallIncomingCallForm.h" +#include "CallBaseForm.h" +#include "CallInfo.h" +#include "CallPresentationModel.h" +#include "CallConfCallerListForm.h" +#include "CallPhoneFormFactory.h" +#include "CallSceneRegister.h" +#include "CallApp.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Ui; +using namespace Tizen::Base::Collection; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Scenes; +using namespace Tizen::Ui::Controls; + +BaseForm::BaseForm(FormType formType) + : __formType(formType) +{ + __pCallPresentor = null; + __pErrorMsgPopup = null; +} + +BaseForm::~BaseForm(void) +{ + AppLogDebug("Enter"); + if(__pErrorMsgPopup != null) + { + delete __pErrorMsgPopup; + __pErrorMsgPopup = null; + } +} + +result +BaseForm::OnInitializing(void) +{ + //To be implemented in sub classes + return E_SUCCESS; +} + +void +BaseForm::OnActionPerformed(const Control& source, int actionId) +{ +} + +///////////////////////////////////////////////////////////////// +///// Event Listener methods from ITelephonyEventListener ///// +///////////////////////////////////////////////////////////////// + +void +BaseForm::HandleCallConnected(IListT& pCallList) +{ + if(__pCallPresentor->IsIncomingorDialingCallPresent() == true) + { + //This scenario will come, if 1 call is disconnected from conf. call having 2 participants. + //In this case, if there is any dialing call exists, then ignore. + //Else, if there is any incoming call exists, then update call option popup. + switch (__formType) + { + case FORMTYPE_INCOMINGCALL: + { + IncomingCallForm* pIncomingCallForm = dynamic_cast(this); + if (pIncomingCallForm != null) + { + pIncomingCallForm->CallDisconnected(); + } + } + break; + + default: + break; + } + return; + } + + SceneManager* pSceneManager = SceneManager::GetInstance(); + + switch (__formType) + { + case FORMTYPE_OUTGOINGCALL: + case FORMTYPE_INCOMINGCALL: + case FORMTYPE_CONFCALLLIST: + case FORMTYPE_ACTIVECALL: + case FORMTYPE_ACTIVECONFCALL: + { + int noOfCalls = pCallList.GetCount(); + //Ownership - To be deleted in 'OnSceneActivatedN' of next form + ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter); + pCallInfoList->Construct(noOfCalls); + + for (int index = 0; index < noOfCalls; index++) + { + //fetch call info and add to list + AppCallInfo callInfo; + result r = pCallList.GetAt(index, callInfo); + if (r == E_SUCCESS) + { + //copy call information to new instance + AppCallInfo* pCaller = new (std::nothrow) AppCallInfo(); + *pCaller = callInfo; + pCallInfoList->Add(pCaller); + } + } + + if (noOfCalls == 1) + { + //Check if active call is conference call + AppCallInfo* pActiveCallInfo = static_cast(pCallInfoList->GetAt(0)); + if(pActiveCallInfo->IsConferenceCall() == true) + { + //single Conference call - goto active Conf. call form + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList); + } + else + { + //single active call - goto active call form + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ACTIVECALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList); + } + } + else if(noOfCalls == 2) + { + //goto multiple active call form + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList); + } + } + break; + + case FORMTYPE_MULTIPLECALLS: + { + //This case can come on Multiple Calls screen, when one of the calls is conference call with 2 participants + //and one of the participants exits himself from ConfCall. + int noOfCalls = pCallList.GetCount(); + AppLogDebug("Active Call Count = %d", noOfCalls); + //this is just a safety check, call count will aleays be 2 here. + ActiveCallForm* pActiveCallForm = dynamic_cast(this); + if(noOfCalls == IDI_MAX_ACTIVE_CALLS && pActiveCallForm != null) + { + //update calls state + pActiveCallForm->UpdateMultipleCallScreen(pCallList); + } + } + break; + + case FORMTYPE_EMERGENCYOUTGOINGCALL: + { + //Ownership - To be deleted in 'OnSceneActivatedN' of next form + ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter); + pCallInfoList->Construct(1); + + //fetch call info and add to list + AppCallInfo callInfo; + result r = pCallList.GetAt(0, callInfo); + if (r == E_SUCCESS) + { + //copy call information to new instance + AppCallInfo* pCaller = new (std::nothrow) AppCallInfo(); + *pCaller = callInfo; + pCallInfoList->Add(pCaller); + //single active call - goto active call form + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ACTIVE_EMERGENCYCALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList); + } + } + break; + + default: + break; + } +} + +void +BaseForm::HandleCallActive(bool isActive) +{ + AppLogDebug("Enter"); + ActiveCallForm* pActiveCallForm = dynamic_cast(this); + if(pActiveCallForm != null) + { + pActiveCallForm->OnActiveTelephonyCallback(isActive); + } +} + +void +BaseForm::HandleCallHeld(bool isHeld) +{ + AppLogDebug("Enter"); + ActiveCallForm* pActiveCallForm = dynamic_cast(this); + switch (__formType) + { + case(FORMTYPE_ACTIVECALL): + case(FORMTYPE_ACTIVECONFCALL): + case(FORMTYPE_MULTIPLECALLS): + { + if(pActiveCallForm != null) + { + pActiveCallForm->OnHoldTelephonyCallback(isHeld); + } + } + break; + + default: + break; + } +} + +void +BaseForm::HandleCallDisconnected(bool isLastCall, IListT& pCurrentActiveCallList) +{ + AppLogDebug("Enter"); + if(__pCallPresentor->IsIncomingorDialingCallPresent() == true) + { + //This scenario will come, if this disconnected call is neither incoming nor dialing call. + //In this case, if there is any dialing call exists, then ignore. + //Else, if there is any incoming call exists, then update call option popup. + AppLogDebug("IsIncomingorDialingCallPresent %d",__formType); + switch (__formType) + { + case FORMTYPE_INCOMINGCALL: + { + IncomingCallForm* pIncomingCallForm = dynamic_cast(this); + if (pIncomingCallForm != null) + { + pIncomingCallForm->CallDisconnected(); + } + } + break; + + default: + break; + } + return; + } + + SceneManager* pSceneManager = SceneManager::GetInstance(); + CallApp* pPhoneApp = static_cast(UiApp::GetInstance()); + + int callCount = pCurrentActiveCallList.GetCount(); + if (callCount > 0) + { + //Ownership - To be deleted in 'OnSceneActivatedN' of next form + ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter); + pCallInfoList->Construct(callCount); + for (int index = 0; index < callCount; index++) + { + //fetch call info and add to list + AppCallInfo callInfo; + result r = pCurrentActiveCallList.GetAt(index, callInfo); + if (r == E_SUCCESS) + { + //copy call information to new instance + AppCallInfo* pCaller = new (std::nothrow) AppCallInfo(); + *pCaller = callInfo; + pCallInfoList->Add(pCaller); + } + } + + if (callCount == 1) + { + //fetch call info and add to list + AppCallInfo callInfo; + result r = pCurrentActiveCallList.GetAt(0, callInfo); + if (r == E_SUCCESS) + { + //copy call information to new instance + AppCallInfo* pCaller = new (std::nothrow) AppCallInfo(); + *pCaller = callInfo; + pCallInfoList->Add(pCaller); + } + + if (isLastCall == true) + { + //list contains 1 last ended call to show EndCall screen. + //goto End Call form if single call was ended else terminate + // if (callInfo.IsConferenceCall() == false) + if (1) + { + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ENDCALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList); + } + else + { + pPhoneApp->Terminate(); + } + } + else + { + //list contains 1 active call + if (pCurrentActiveCallList.GetCount() == 1) + { + if (callInfo.IsConferenceCall() == true) + { + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList); + } + else + { + //goto Single Active Call form + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ACTIVECALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList); + } + } + } + } + else + { + //multiple active calls are present. + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList); + } + } + else + { + //This is done to show end call form in missed call case also + //this was done on request received from HQ to solve a bug in + //camera application. In which if a call comes when camera is + //running and user disconnects before the ui is shown the camera + //application hangs + ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter); + pCallInfoList->Construct(1); + AppCallInfo callInfo; + result r = pCurrentActiveCallList.GetAt(0, callInfo); + if (r == E_SUCCESS) + { + //copy call information to new instance + AppCallInfo* pCaller = new (std::nothrow) AppCallInfo(); + *pCaller = callInfo; + pCallInfoList->Add(pCaller); + //multiple active calls are present. + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_ENDCALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList); + + } + else + { + pPhoneApp->Terminate(); + } + + } +} + + +void +BaseForm::HandleConferenceCall(AppCallInfo& pCallInfo) +{ + SceneManager* pSceneManager = SceneManager::GetInstance(); + + //Ownership - To be deleted in 'OnSceneActivatedN' of next form + ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter); + pCallInfoList->Construct(1); + + //update list to be passed + AppCallInfo* pConfInfo = new (std::nothrow) AppCallInfo(); + *pConfInfo = pCallInfo; + pCallInfoList->Add(pConfInfo); + + //Todo: create screens for single conf call and conf call with another held call + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_KEEP), pCallInfoList); +} + +void +BaseForm::HandleIncomingCall(AppCallInfo& pCallInfo) +{ + SceneManager* pSceneManager = SceneManager::GetInstance(); + + //Ownership - To be deleted in 'OnSceneActivatedN' of next form + ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter); + pCallInfoList->Construct(1); + + //update list to be passed + AppCallInfo* pIncomingCall = new (std::nothrow) AppCallInfo(); + *pIncomingCall = pCallInfo; + pCallInfoList->Add(pIncomingCall); + + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_INCOMINGCALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_KEEP), pCallInfoList); +} + +void +BaseForm::HandleConfCallHoldOccured(bool success) +{ + + switch (__formType) + { + case FORMTYPE_CONFCALLLIST: + { + ConfCallerListForm* pConfCallerListForm = dynamic_cast(this); + if(pConfCallerListForm != null) + { + pConfCallerListForm->OnConfCallHoldTelephoneCallBackOccured(success); + } + } + break; + case FORMTYPE_ACTIVECONFCALL: + { + ActiveCallForm* pActiveCallForm = dynamic_cast(this); + if(pActiveCallForm != null) + { + pActiveCallForm->OnConfCallHoldTelephonyCallback(success); + } + } + break; + default: + break; + } +} + +void +BaseForm::HandleConfCallActiveOccured(bool success) +{ + switch (__formType) + { + case FORMTYPE_CONFCALLLIST: + { + ConfCallerListForm* pConfCallerListForm = dynamic_cast(this); + if(pConfCallerListForm != null) + { + pConfCallerListForm->OnConfCallActiveTelephoneCallBackOccured(success); + } + } + break; + case FORMTYPE_ACTIVECONFCALL: + { + ActiveCallForm* pActiveCallForm = dynamic_cast(this); + if(pActiveCallForm != null) + { + pActiveCallForm->OnConfCallActiveTelephonyCallback(success); + } + } + break; + default: + break; + } +} + +void +BaseForm::HandleCallSwapOccured(IListT& pCallList) +{ + int noOfCalls = pCallList.GetCount(); + if(noOfCalls != IDI_MAX_ACTIVE_CALLS && __formType != FORMTYPE_MULTIPLECALLS) + { + return; + } + ActiveCallForm* pActiveCallForm = dynamic_cast(this); + if(pActiveCallForm != null) + { + //update calls state + pActiveCallForm->UpdateMultipleCallScreen(pCallList); + pActiveCallForm->SetSwapInProgress(false); + + } +} + +void +BaseForm::HandleConferenceChange(void) +{ + if(__pCallPresentor->IsIncomingorDialingCallPresent() == true) + { + //This scenario will come, if 1 call is disconnected from conf. call having more than 2 participants. + //In this case, if there is any dialing call exists, then ignore. + //Else, if there is any incoming call exists, then update call option popup. + switch (__formType) + { + case FORMTYPE_INCOMINGCALL: + { + IncomingCallForm* pIncomingCallForm = dynamic_cast(this); + if (pIncomingCallForm != null) + { + pIncomingCallForm->CallDisconnected(); + } + } + break; + + default: + break; + } + return; + } + + switch (__formType) + { + case FORMTYPE_CONFCALLLIST: + { + ConfCallerListForm* pConfCallerListForm = dynamic_cast(this); + if(pConfCallerListForm != null) + { + pConfCallerListForm->HandleParticipantsChanged(); + } + } + break; + + case FORMTYPE_ACTIVECONFCALL: + case FORMTYPE_MULTIPLECALLS: + { + ActiveCallForm* pActiveCallForm = dynamic_cast(this); + if(pActiveCallForm != null) + { + pActiveCallForm->HandleConfCallChanged(); + } + } + break; + default: + break; + } +} + +void +BaseForm::HandleTelephonyError(int errorCode) +{ + //show error msg Popup + if (__pErrorMsgPopup == null) + { + __pErrorMsgPopup = new (std::nothrow) ErrorMsgPopup(this); + __pErrorMsgPopup->ShowErrorMsgPopupN(errorCode); + } +} + +void +BaseForm::HandlePopupClosed(void) +{ + Draw(); + delete __pErrorMsgPopup; + __pErrorMsgPopup = null; + + switch(__formType) + { + case FORMTYPE_OUTGOINGCALL: + { + //fetch no of calls from telephony + CallPresentationModel* pPresentor = CallPresentationModel::GetInstance(); + if(pPresentor != null) + { + //check if any call is present + if(pPresentor->GetCurrentCallCount() > 0) + { + //fetch current call list + IListT* pCurrentCallList = pPresentor->GetCallListN(); + HandleCallDisconnected(false,*pCurrentCallList); + delete pCurrentCallList; + pCurrentCallList = null; + } + else + { + //No more calls are active + CallApp* pPhoneApp = static_cast(UiApp::GetInstance()); + pPhoneApp->Terminate(); + + } + } + } + break; + + case FORMTYPE_ENDCALL: + { + //It comes here, only when we make voice call for Last call from EndCallForm + //and some TAPI error is encountered. + CallApp* pPhoneApp = static_cast(UiApp::GetInstance()); + pPhoneApp->Terminate(); + } + break; + + default: + break; + } +} + diff --git a/src/CallButtonsPanel.cpp b/src/CallButtonsPanel.cpp new file mode 100644 index 0000000..83f53cd --- /dev/null +++ b/src/CallButtonsPanel.cpp @@ -0,0 +1,721 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallButtonsPanel.cpp + * @brief Base class for all Call forms + */ +#include "CallButtonsPanel.h" +#include "CallAppUtility.h" +#include "CallTypes.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Graphics; + +//Constants - Scene name +const wchar_t* IDC_ADDJOINCALL_BUTTON = L"IDC_ADDJOINCALL_BUTTON"; +const wchar_t* IDC_KEYPAD_BUTTON = L"IDC_KEYPAD_BUTTON"; +const wchar_t* IDC_MUTE_BUTTON = L"IDC_MUTE_BUTTON"; +const wchar_t* IDC_CONTACT_BUTTON = L"IDC_CONTACT_BUTTON"; +const wchar_t* IDC_SPEAKER_BUTTON = L"IDC_SPEAKER_BUTTON"; +const wchar_t* IDC_VOICECALL_BUTTON = L"IDC_VOICECALL_BUTTON"; +const wchar_t* IDC_VIDEOCALL_BUTTON = L"IDC_VIDEOCALL_BUTTON"; +const wchar_t* IDC_MSG_BUTTON = L"IDC_MSG_BUTTON"; +const wchar_t* IDC_ENDCALL_BUTTON = L"IDC_ENDCALL_BUTTON"; +const wchar_t* IDC_ADD_TO_CONTACT_BUTTON = L"IDC_ADD_TO_CONTACT_BUTTON"; + +//Button Dimensions +const int W_BG_BITMAP = 80; +const int H_BG_BITMAP = 80; +const int Y_BG_BITMAP_POS = 56; +const int IDI_TEXT_SIZE = 38; +const int IDI_VERTICAL_SPACE = 6; +const int W_VIEW_CONTACT_BITMAP = 50; +const int H__VIEW_CONTACT_BITMAP = 50; +const int Y_VIEW_CONTACT_BITMAP_POS = 14; +const int W_KEYPAD_BTN = 240; +const int H_KEYPAD_BTN = 250; + +CallButtonsPanel::CallButtonsPanel(void) +{ +} + +CallButtonsPanel::~CallButtonsPanel(void) +{ + //Empty Implementation +} + +bool +CallButtonsPanel::ConstructPanel(IActionEventListener* pEventListener, FormType parentFormType) +{ + if (pEventListener == null) + { + return false; + } + + result r = E_SUCCESS; + + //set action listener & save form state + __pActionListener = pEventListener; + __parentFormType = parentFormType; + + switch (__parentFormType) + { + case FORMTYPE_ENDCALL: + r = Construct(IDL_END_CALL_PANEL); + break; + + default: + r = Construct(IDL_CALL_PANEL); + break; + } + TryCatch(r == E_SUCCESS, , "CallButtonsPanel::Initialise() resource not found"); + + return true; +CATCH: + return false; +} + +result +CallButtonsPanel::OnInitializing(void) +{ + result r = E_FAILURE; + + RelativeLayout* pRelativeLayout = dynamic_cast(GetParent()->GetLandscapeLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->Update(); + delete pRelativeLayout; + } + + pRelativeLayout = dynamic_cast(GetParent()->GetPortraitLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->Update(); + delete pRelativeLayout; + } + + //set buttons as child controls + switch (__parentFormType) + { + case FORMTYPE_ENDCALL: + r = ConstructEndCallPanel(); + break; + + default: + r = ConstructActiveCallPanel(); + break; + } + + if (IsFailed(r)) + { + return r; + } + SetButtonPosition(); + Draw(); + Show(); + return r; +} + +result +CallButtonsPanel::OnTerminating(void) +{ + //remove all child controls... +// RemoveAllControls(); + return E_SUCCESS; +} + +void +CallButtonsPanel::SetSpeakerButtonState(CommandIds cmdId) +{ + //Speaker + String speakerButtonId(IDC_SPEAKER_BUTTON); + Button* pButton = static_cast(GetControl(speakerButtonId)); + //Check if Button exist and needs to change state. + if(pButton == null || pButton->GetActionId() == cmdId) + { + return; + } + + String btnName = AppUtility::GetResourceString(IDS_SPEAKER_BTN_NAME); + AddKeyPadActionListener(speakerButtonId, cmdId); + switch (cmdId) + { + case IDA_SPEAKER: + { + SetBitmapsToButton(speakerButtonId, btnName, IDB_SPEAKER_OFF_ICON, BTN_NORMAL); + SetBitmapsToButton(speakerButtonId, btnName, IDB_SPEAKER_OFF_PRESS_ICON, BTN_PRESS); + SetBitmapsToButton(speakerButtonId, btnName, IDB_SPEAKER_OFF_DIM_ICON, BTN_DIM); + } + break; + + case IDA_SPEAKER_OFF: + { + SetBitmapsToButton(speakerButtonId, btnName, IDB_SPEAKER_ON_ICON, BTN_NORMAL); + SetBitmapsToButton(speakerButtonId, btnName, IDB_SPEAKER_ON_PRESS_ICON, BTN_PRESS); + SetBitmapsToButton(speakerButtonId, btnName, IDB_SPEAKER_ON_DIM_ICON, BTN_DIM); + } + break; + + default: + break; + } +} + +void +CallButtonsPanel::SetMuteButtonState(CommandIds cmdId) +{ + String muteButtonId(IDC_MUTE_BUTTON); + Button* pButton = static_cast(GetControl(muteButtonId)); + //Check if Button exist and needs to change state. + if(pButton == null || pButton->GetActionId() == cmdId) + { + return; + } + + String btnName = AppUtility::GetResourceString(IDS_MUTE_BTN_NAME); + AddKeyPadActionListener(muteButtonId, cmdId); + switch(cmdId) + { + case IDA_UNMUTE: + { + SetBitmapsToButton(muteButtonId, btnName, IDB_MUTE_ON_ICON, BTN_NORMAL); + SetBitmapsToButton(muteButtonId, btnName, IDB_MUTE_ON_PRESS_ICON, BTN_PRESS); + SetBitmapsToButton(muteButtonId, btnName, IDB_MUTE_ON_DIM_ICON, BTN_DIM); + } + break; + + case IDA_MUTE: + { + SetBitmapsToButton(muteButtonId, btnName, IDB_MUTE_OFF_ICON, BTN_NORMAL); + SetBitmapsToButton(muteButtonId, btnName, IDB_MUTE_OFF_PRESS_ICON, BTN_PRESS); + SetBitmapsToButton(muteButtonId, btnName, IDB_MUTE_OFF_DIM_ICON, BTN_DIM); + } + break; + + default: + break; + } +} + +void +CallButtonsPanel::SetKeypadButtonState(CommandIds cmdId) +{ + String keypadButtonId(IDC_KEYPAD_BUTTON); + Button* pButton = static_cast(GetControl(keypadButtonId)); + //Check if Button exist and needs to change state. + if(pButton == null || pButton->GetActionId() == cmdId) + { + return; + } + + String btnName = AppUtility::GetResourceString(IDS_KEYPAD_BTN_NAME); + AddKeyPadActionListener(keypadButtonId, cmdId); + switch (cmdId) + { + case IDA_CLOSE_NUMKEYPAD: + { + SetBitmapsToButton(keypadButtonId, btnName, IDB_CLOSE_KEYPAD_ICON, BTN_NORMAL); + SetBitmapsToButton(keypadButtonId, btnName, IDB_CLOSE_KEYPAD_PRESS_ICON, BTN_PRESS); + SetBitmapsToButton(keypadButtonId, btnName, IDB_CLOSE_KEYPAD_DIM_ICON, BTN_DIM); + } + break; + + case IDA_OPEN_NUMKEYPAD: + { + SetBitmapsToButton(keypadButtonId, btnName, IDB_CLOSE_KEYPAD_ICON, BTN_NORMAL); + SetBitmapsToButton(keypadButtonId, btnName, IDB_CLOSE_KEYPAD_PRESS_ICON, BTN_PRESS); + SetBitmapsToButton(keypadButtonId, btnName, IDB_CLOSE_KEYPAD_DIM_ICON, BTN_DIM); + } + break; + + default: + break; + } +} + +result +CallButtonsPanel::AddBackgroundBitmap(void) +{ + result r = E_FAILURE; + + Rectangle panelRect = GetBounds(); + //Set BackGround bitmap + Bitmap* pBgBitmap = null; + AppResource* pAppResource = AppResource::GetInstance(); + if (pAppResource) + { + pBgBitmap = pAppResource->GetBitmapN(IDB_BACKGROUND_BITMAP); + if (pBgBitmap) + { + Label* pBackgroundLabel = new (std::nothrow) Label(); + pBackgroundLabel->Construct(Rectangle(0, 1, panelRect.width, panelRect.height), L""); + pBackgroundLabel->SetBackgroundBitmap(*pBgBitmap); + r = AddControl(pBackgroundLabel); + + //always display in background + SetControlAlwaysAtBottom(*pBackgroundLabel, true); + + delete pBgBitmap; + pBgBitmap = null; + } + } + return r; +} + +result +CallButtonsPanel::ConstructEndCallPanel(void) +{ + result r = E_SUCCESS; + Rectangle relativeCtrlRect = GetBounds(); + + //Voice Call + String voiceButtonId(IDC_VOICECALL_BUTTON); + String btnName = AppUtility::GetResourceString(IDS_VOICE_CALL_BTN_NAME); + SetBitmapsToButton(voiceButtonId, btnName, IDB_VOICE_CALL_ICON, BTN_NORMAL); + SetBitmapsToButton(voiceButtonId, btnName, IDB_VOICE_CALL_PRESS_ICON, BTN_PRESS); + SetBitmapsToButton(voiceButtonId, btnName, IDB_VOICE_CALL_DIM_ICON, BTN_DIM); + AddKeyPadActionListener(voiceButtonId, IDA_VOICE_CALL); + + //Video Call + String videoButtonId(IDC_VIDEOCALL_BUTTON); + btnName = AppUtility::GetResourceString(IDS_VIDEO_CALL_BTN_NAME); + SetBitmapsToButton(videoButtonId, btnName, IDB_VIDEO_CALL_ICON, BTN_NORMAL); + SetBitmapsToButton(videoButtonId, btnName, IDB_VIDEO_CALL_PRESS_ICON, BTN_PRESS); + SetBitmapsToButton(videoButtonId, btnName, IDB_VIDEO_CALL_DIM_ICON, BTN_DIM); + AddKeyPadActionListener(videoButtonId, IDA_VIDEO_CALL); + + //Message + String msgButtonId(IDC_MSG_BUTTON); + btnName = AppUtility::GetResourceString(IDS_MSG_BTN_NAME); + SetBitmapsToButton(msgButtonId, btnName, IDB_MESSAGE_ICON, BTN_NORMAL); + SetBitmapsToButton(msgButtonId, btnName, IDB_MESSAGE_PRESS_ICON, BTN_PRESS); + SetBitmapsToButton(msgButtonId, btnName, IDB_MESSAGE_DIM_ICON, BTN_DIM); + AddKeyPadActionListener(msgButtonId, IDA_MESSAGE); + + Button* pButton = static_cast(GetControl(IDC_ADD_TO_CONTACT_BUTTON)); + if (pButton != null) + { + AddKeyPadActionListener(IDC_ADD_TO_CONTACT_BUTTON,IDA_ADD_TO_CONTACTS); + } + //set initial show state to false. Correct state set on OnSceneActivatedN + SetEndCallPanelState(false); + + return r; +} + +void +CallButtonsPanel::ShowViewContactButton(void) +{ + //Present show View Contact else show Add to contact + SetViewContacBitmapToButton(IDC_ADD_TO_CONTACT_BUTTON,AppUtility::GetResourceString(IDS_VIEW_CONTACT), + IDB_VIEW_CONTACT_BG_ICON,IDB_VIEW_CONTACT_ICON,BTN_NORMAL); + + SetViewContacBitmapToButton(IDC_ADD_TO_CONTACT_BUTTON,AppUtility::GetResourceString(IDS_VIEW_CONTACT), + IDB_VIEW_CONTACT_BG_PRESS_ICON,IDB_VIEW_CONTACT_PRESS_ICON,BTN_PRESS); +} + +void +CallButtonsPanel::ShowAddContactButton(void) +{ + //Present show View Contact else show Add to contact + SetViewContacBitmapToButton(IDC_ADD_TO_CONTACT_BUTTON, AppUtility::GetResourceString(IDS_ADD_TO_CONTACTS), + IDB_VIEW_CONTACT_BG_ICON, IDB_VIEW_CONTACT_ICON, BTN_NORMAL); + + SetViewContacBitmapToButton(IDC_ADD_TO_CONTACT_BUTTON, AppUtility::GetResourceString(IDS_ADD_TO_CONTACTS), + IDB_VIEW_CONTACT_BG_PRESS_ICON, IDB_VIEW_CONTACT_PRESS_ICON, BTN_PRESS); +} + +result +CallButtonsPanel::ConstructActiveCallPanel(void) +{ + result r = E_SUCCESS; + + //End Call + String endButtonId(IDC_ENDCALL_BUTTON); + String btnName = AppUtility::GetResourceString(IDS_ENDCALL_BTN_NAME); + SetBitmapsToButton(endButtonId, btnName, IDB_END_CALL_ICON, BTN_NORMAL); + SetBitmapsToButton(endButtonId, btnName, IDB_END_CALL_PRESS_ICON, BTN_PRESS); + SetBitmapsToButton(endButtonId, btnName, IDB_END_CALL_DIM_ICON, BTN_DIM); + + //Add or Join call based on form state + String addJoinButtonId(IDC_ADDJOINCALL_BUTTON); + switch (__parentFormType) + { + case FORMTYPE_OUTGOINGCALL: + case FORMTYPE_ACTIVECALL: + case FORMTYPE_EMERGENCYOUTGOINGCALL: + case FORMTYPE_EMERGENCYACTIVECALL: + { + //End call listener + AddKeyPadActionListener(endButtonId, IDA_END_CALL); + //Add Call + btnName = AppUtility::GetResourceString(IDS_ADDCALL_BTN_NAME); + SetBitmapsToButton(addJoinButtonId, btnName, IDB_ADD_CALL_ICON, BTN_NORMAL); + SetBitmapsToButton(addJoinButtonId, btnName, IDB_ADD_CALL_PRESS_ICON, BTN_PRESS); + SetBitmapsToButton(addJoinButtonId, btnName, IDB_ADD_CALL_DIM_ICON, BTN_DIM); + AddKeyPadActionListener(addJoinButtonId, IDA_ADD_CALL); + } + break; + + case FORMTYPE_ACTIVECONFCALL: + { + //End call listener + AddKeyPadActionListener(endButtonId, IDA_END_CONF_CALL); + //Add Call + btnName = AppUtility::GetResourceString(IDS_ADDCALL_BTN_NAME); + SetBitmapsToButton(addJoinButtonId, btnName, IDB_ADD_CALL_ICON, BTN_NORMAL); + SetBitmapsToButton(addJoinButtonId, btnName, IDB_ADD_CALL_PRESS_ICON, BTN_PRESS); + SetBitmapsToButton(addJoinButtonId, btnName, IDB_ADD_CALL_DIM_ICON, BTN_DIM); + AddKeyPadActionListener(addJoinButtonId, IDA_ADD_CALL); + } + break; + + case FORMTYPE_MULTIPLECALLS: + { + //End call listener + AddKeyPadActionListener(endButtonId, IDA_END_CALL); + //Join Call + btnName = AppUtility::GetResourceString(IDS_JOINCALL_BTN_NAME); + SetBitmapsToButton(addJoinButtonId, btnName, IDB_JOIN_CALL_ICON, BTN_NORMAL); + SetBitmapsToButton(addJoinButtonId, btnName, IDB_JOIN_CALL_PRESS_ICON, BTN_PRESS); + SetBitmapsToButton(addJoinButtonId, btnName, IDB_JOIN_CALL_DIM_ICON, BTN_DIM); + AddKeyPadActionListener(addJoinButtonId, IDA_JOIN_CALL); + } + break; + + default: + break; + } + + //Keypad is closed, by default + SetKeypadButtonState(IDA_OPEN_NUMKEYPAD); + //Speaker is off, by default + SetSpeakerButtonState(IDA_SPEAKER); + //Mute is off, by default + SetMuteButtonState(IDA_MUTE); + //Contact + String contactButtonId(IDC_CONTACT_BUTTON); + btnName = AppUtility::GetResourceString(IDS_CONTACT_BTN_NAME); + SetBitmapsToButton(contactButtonId, btnName, IDB_CONTACT_ICON, BTN_NORMAL); + SetBitmapsToButton(contactButtonId, btnName, IDB_CONTACT_PRESS_ICON, BTN_PRESS); + SetBitmapsToButton(contactButtonId, btnName, IDB_CONTACT_DIM_ICON, BTN_DIM); + AddKeyPadActionListener(contactButtonId, IDA_OPEN_CONTACTS); + + //disable all keys except 'Speaker' keys while dialing outgoing call + if (__parentFormType == FORMTYPE_OUTGOINGCALL || __parentFormType == FORMTYPE_EMERGENCYOUTGOINGCALL + || __parentFormType == FORMTYPE_EMERGENCYACTIVECALL) + { + DisableKeysForOutgoingCall(); + } + + return r; +} + +void +CallButtonsPanel::SetBitmapsToButton(const String& buttonId, const String& buttonName, const String& imgPath, ButtonState state) +{ + Button* pButton = static_cast(GetControl(buttonId)); + if (pButton != null) + { + //Fetch Bitmap from resource + Bitmap* pBitmap = AppUtility::GetBitmapFromResourcesN(imgPath, + W_BG_BITMAP, H_BG_BITMAP); + + //Create a new canvas + Canvas* pCanvas = new (std::nothrow) Canvas; + pCanvas->Construct(Rectangle(0, 0, pButton->GetWidth(), pButton->GetHeight())); + + //Set Text to Canvas + Point bitmapPos(0, 0); + bitmapPos.SetPosition(((pCanvas->GetBounds().width - pBitmap->GetWidth()) / 2), Y_BG_BITMAP_POS); + SetEnrichedTextToButton(buttonName, pCanvas, state, (bitmapPos.y + pBitmap->GetHeight() + IDI_VERTICAL_SPACE)); + + //set normal bitmap to canvas + pCanvas->DrawBitmap(Rectangle(bitmapPos, Dimension(pBitmap->GetWidth(), pBitmap->GetHeight())), *pBitmap); + + //Set the final Bitmap to Button + Bitmap* pActualBgBmp = new (std::nothrow) Bitmap(); + pActualBgBmp->Construct(*pCanvas, pCanvas->GetBounds()); + //scale to button size + pActualBgBmp->SetScalingQuality(BITMAP_SCALING_QUALITY_MID); + pActualBgBmp->Scale(pButton->GetSize()); + + switch (state) + { + case BTN_NORMAL: + { + pButton->SetNormalBackgroundBitmap(*pActualBgBmp); + } + break; + + case BTN_PRESS: + { + pButton->SetPressedBackgroundBitmap(*pActualBgBmp); + } + break; + + case BTN_DIM: + { + pButton->SetDisabledBackgroundBitmap(*pActualBgBmp); + } + break; + } + pButton->Invalidate(true); + + delete pBitmap; + delete pActualBgBmp; + delete pCanvas; + } +} + +void +CallButtonsPanel::SetViewContacBitmapToButton(const String& buttonId, const String& buttonName, const String& imgBackgroundPath,const String& imgPath, ButtonState state) +{ + Button* pButton = static_cast(GetControl(buttonId)); + if (pButton != null) + { + + //Fetch Bitmap from resource + Bitmap* pBitmap = AppUtility::GetBitmapFromResourcesN(imgPath, + W_VIEW_CONTACT_BITMAP, W_VIEW_CONTACT_BITMAP); + + //Create a new canvas + Canvas* pCanvas = new (std::nothrow) Canvas; + pCanvas->Construct(Rectangle(0, 0, pButton->GetBounds().width, pButton->GetBounds().height)); + + // Draw background bitmap + AppResource* pAppResource = AppResource::GetInstance(); + Bitmap* pBackGroundBitmap = pAppResource->GetBitmapN(imgBackgroundPath); + if (pBackGroundBitmap->IsNinePatchedBitmap()) + { + pCanvas->DrawNinePatchedBitmap(pCanvas->GetBounds(), *pBackGroundBitmap); + } + else + { + pCanvas->DrawBitmap(pCanvas->GetBounds(), *pBackGroundBitmap); + } + delete pBackGroundBitmap; + //Set Text to Canvas + Point bitmapPos(0, 0); + bitmapPos.SetPosition(((pCanvas->GetBounds().width - pBitmap->GetWidth()) / 2), Y_VIEW_CONTACT_BITMAP_POS); + SetEnrichedTextToButton(buttonName, pCanvas, state, (bitmapPos.y + pBitmap->GetHeight() + IDI_VERTICAL_SPACE)); + + + //set normal bitmap to canvas + pCanvas->DrawBitmap(Rectangle(bitmapPos, Dimension(pBitmap->GetWidth(), pBitmap->GetHeight())), *pBitmap); + + //Set the final Bitmap to Button + Bitmap* pActualBgBmp = new (std::nothrow) Bitmap(); + pActualBgBmp->Construct(*pCanvas, pCanvas->GetBounds()); + + switch (state) + { + case BTN_NORMAL: + { + pButton->SetNormalBackgroundBitmap(*pActualBgBmp); + } + break; + + case BTN_PRESS: + { + pButton->SetPressedBackgroundBitmap(*pActualBgBmp); + } + break; + + } + pButton->Invalidate(true); + + delete pBitmap; + delete pActualBgBmp; + delete pCanvas; + } +} + +void +CallButtonsPanel::SetEnrichedTextToButton(const String& buttonName, Canvas* pCanvas, ButtonState state, int verticalPos) +{ + //find text color + Color textColor(255, 255, 255); + switch (state) + { + case BTN_NORMAL: + textColor.SetAlpha(255); + break; + + case BTN_PRESS: + textColor.SetAlpha(127); + break; + + case BTN_DIM: + textColor.SetAlpha(77); + break; + } + + Font font; + font.Construct(FONT_STYLE_PLAIN, IDI_TEXT_SIZE); + FloatDimension textDimension; + font.GetTextExtent(buttonName, buttonName.GetLength(), textDimension); + textDimension.height = textDimension.height + font.GetDescender(); + TextElement* pTextElement = new (std::nothrow) TextElement(); + pTextElement->Construct(buttonName); + pTextElement->SetTextColor(textColor); + pTextElement->SetFont(font); + + EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText(); + pEnrichedText->Construct(textDimension); + pEnrichedText->Add(*pTextElement); + + //Draw text + Point textPos(((pCanvas->GetBounds().width - pEnrichedText->GetWidth()) / 2), verticalPos); + pCanvas->DrawText(textPos, *pEnrichedText); + + // Cleans up + pEnrichedText->RemoveAll(true); + delete pEnrichedText; +} + +void +CallButtonsPanel::AddKeyPadActionListener(const String& buttonId, CommandIds cmdId) +{ + Button* pButton = static_cast(GetControl(buttonId)); + if (pButton != null) + { + pButton->SetActionId(cmdId); + pButton->AddActionEventListener(*__pActionListener); + } +} + +void +CallButtonsPanel::DisableKeysForOutgoingCall(void) +{ + //add call + EnableAddCallButton(false); + + //keypad + Button* pButton = static_cast(GetControl(IDC_KEYPAD_BUTTON)); + pButton->SetEnabled(false); + + //mute + pButton = static_cast(GetControl(IDC_MUTE_BUTTON)); + pButton->SetEnabled(false); + + //contact + pButton = static_cast(GetControl(IDC_CONTACT_BUTTON)); + pButton->SetEnabled(false); +} + +void +CallButtonsPanel::ShowOrHideAddtoContactsButton(bool isEnabled) +{ + Button* pButton = static_cast(GetControl(IDC_ADD_TO_CONTACT_BUTTON)); + pButton->SetShowState(isEnabled); +} + +void +CallButtonsPanel::SetEndCallPanelState(bool isEnabled) +{ + //Voice Call + Button* pButton = static_cast(GetControl(IDC_VOICECALL_BUTTON)); + pButton->SetEnabled(isEnabled); + + //Video Call + pButton = static_cast(GetControl(IDC_VIDEOCALL_BUTTON)); + pButton->SetEnabled(false); + + //Message + pButton = static_cast(GetControl(IDC_MSG_BUTTON)); + pButton->SetEnabled(isEnabled); + + //AddToContact or Viewcontact button + pButton = static_cast(GetControl(IDC_ADD_TO_CONTACT_BUTTON)); + pButton->SetShowState(isEnabled); + pButton->SetEnabled(isEnabled); + /*pButton->Invalidate(true);*/ +} + +void +CallButtonsPanel::EnableAddCallButton(bool enable) +{ + //add call + Button* pButton = static_cast(GetControl(IDC_ADDJOINCALL_BUTTON)); + if(pButton != null && pButton->GetActionId() == IDA_ADD_CALL) + { + pButton->SetEnabled(enable); + pButton->Invalidate(true); + } +} + +void +CallButtonsPanel::EnableJoinCallButton(bool enable) +{ + //join call + Button* pButton = static_cast(GetControl(IDC_ADDJOINCALL_BUTTON)); + if(pButton != null && pButton->GetActionId() == IDA_JOIN_CALL) + { + pButton->SetEnabled(enable); + pButton->Invalidate(true); + } +} + +void +CallButtonsPanel::SetButtonPosition(void) +{ + switch (__parentFormType) + { + case FORMTYPE_ENDCALL: + { + //Voice Call + Button* pButton = static_cast(GetControl(IDC_VOICECALL_BUTTON)); + SetControlAlwaysOnTop(*pButton,true); + + //Video Call + pButton = static_cast(GetControl(IDC_VIDEOCALL_BUTTON)); + SetControlAlwaysOnTop(*pButton,true); + + //Message + pButton = static_cast(GetControl(IDC_MSG_BUTTON)); + SetControlAlwaysOnTop(*pButton,true); + } + break; + + default: + { + //keypad + Button* pButton = static_cast(GetControl(IDC_KEYPAD_BUTTON)); + SetControlAlwaysOnTop(*pButton,true); + //mute + pButton = static_cast(GetControl(IDC_MUTE_BUTTON)); + SetControlAlwaysOnTop(*pButton,true); + //contact + pButton = static_cast(GetControl(IDC_CONTACT_BUTTON)); + SetControlAlwaysOnTop(*pButton,true); + //Add or Join call based on form state + pButton = static_cast(GetControl(IDC_ADDJOINCALL_BUTTON)); + SetControlAlwaysOnTop(*pButton,true); + //End call + pButton = static_cast(GetControl(IDC_ENDCALL_BUTTON)); + SetControlAlwaysOnTop(*pButton,true); + //Speaker + pButton = static_cast(GetControl(IDC_SPEAKER_BUTTON)); + SetControlAlwaysOnTop(*pButton,true); + } + break; + } +} diff --git a/src/CallCommonUtils.cpp b/src/CallCommonUtils.cpp new file mode 100644 index 0000000..a5f4a03 --- /dev/null +++ b/src/CallCommonUtils.cpp @@ -0,0 +1,647 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallCommonUtils.cpp + * @brief commonly used functions + */ + +#include +#include +#include +#include "CallAppUtility.h" +#include "CallCommonUtils.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Base::Collection; + +const int ID_NAME_STRING = 100; +const int ID_NUMBER_STRING = 101; +const int ID_TIME_STRING = 102; +const int ID_CONTACT_BITMAP = 103; +const int ID_CALLTYPE_BITMAP = 104; + + +const int X_TEXT_LINE1_ITEM = 16; +const int Y_TEXT_LINE1_ITEM = 10; +const int H_TEXT_LINE1_ITEM = 60; +const int W_TEXT_LINE1_ITEM = 560; + +const int X_TEXT_LINE2_ITEM = 64; +const int Y_TEXT_LINE2_ITEM = 70; +const int H_TEXT_LINE2_ITEM = 48; +const int W_TEXT_LINE2_ITEM = 256; + +const int X_TEXT_TIME_ITEM = 320; +const int Y_TEXT_TIME_ITEM = 70; +const int H_TEXT_TIME_ITEM = 48; +const int W_TEXT_TIME_ITEM = 256; + +const int X_CONTACT_BITMAP_ITEM = 592; +const int Y_CONTACT_BITMAP_ITEM = 0; +const int H_CONTACT_BITMAP_ITEM = 128; +const int W_CONTACT_BITMAP_ITEM = 128; + +const int X_CALLTYPE_BITMAP_ITEM = 16; +const int Y_CALLTYPE_BITMAP_ITEM = 70 + 8; +const int H_CALLTYPE_BITMAP_ITEM = 32; +const int W_CALLTYPE_BITMAP_ITEM = 32; + +const int X_DIALER_BTN_TXT = 13; +const int W_DIALER_BTN_NUM_TXT = 77; +const int W_DIALER_BTN_ALPHA_TXT = 121; + +const int W_ENRICHED_TEXT = 190; +const int X_ENRICHED_TEXT = 143; + +Font* +DialUtil::GetTextFontN(int textFontStyle) +{ + Font* font = new (std::nothrow) Font(); + + switch (textFontStyle) + { + case FONT_CALLING_TEXT: + { + font->Construct(FONT_STYLE_PLAIN, 94); + } + break; + + case FONT_KEYPAD_NUMBER: + { + font->Construct(FONT_STYLE_PLAIN, 116); + } + break; + + case FONT_KEYPAD_TEXT: + { + font->Construct(FONT_STYLE_BOLD, 40); + } + break; + + case FONT_KEYPAD_P: + { + font->Construct(FONT_STYLE_BOLD, 56); + } + break; + + case FONT_KEYPAD_PLUS: + { + font->Construct(FONT_STYLE_BOLD, 64); + } + break; + + case FONT_KEYPAD_CANCEL: + { + font->Construct(FONT_STYLE_PLAIN, 34); + } + break; + + case FONT_SUGGESTION_NAME: + { + font->Construct(FONT_STYLE_PLAIN, 40); + } + break; + + case FONT_SUGGESTION_MOBILE: + { + font->Construct(FONT_STYLE_PLAIN, 35); + } + break; + + case FONT_SUGGESTION_NUMBER: + { + font->Construct(FONT_STYLE_PLAIN, 35); + } + break; + + case FONT_SUGGESTION_LIST_NUMBER: + { + font->Construct(FONT_STYLE_PLAIN, 40); + } + break; + } + return font; +} + +Color* +DialUtil::GetTextColorN(int textColor, int buttonStatus) +{ + Color* color = new (std::nothrow) Color(); + + if (buttonStatus == BUTTON_STATUS_PRESSED) + { + color->SetColorComponents(249, 249, 249); + return color; + } + + switch (textColor) + { + case FONT_CALLING_TEXT: + { + color->SetColorComponents(0, 0, 0); + } + break; + + case FONT_KEYPAD_NUMBER: + { + color->SetColorComponents(255, 255, 255); + } + break; + + case FONT_KEYPAD_TEXT: + case FONT_KEYPAD_P: + case FONT_KEYPAD_PLUS: + { + color->SetColorComponents(148, 177, 200); + } + break; + + case FONT_KEYPAD_CANCEL: + { + color->SetColorComponents(255, 255, 255); + } + break; + + case FONT_SUGGESTION_NAME: + { + color->SetColorComponents(255, 255, 255); + } + break; + + case FONT_SUGGESTION_MOBILE: + { + color->SetColorComponents(148, 177, 200); + } + break; + + case FONT_HIGHLIGHT_SEARCH_KEYWORD: + case FONT_SUGGESTION_NUMBER: + { + color->SetColorComponents(26, 214, 227); + } + break; + + case FONT_SUGGESTION_LIST_NUMBER: + { + color->SetColorComponents(124, 189, 224); + } + break; + } + return color; +} + +bool +DialUtil::IsNumericString(Tizen::Base::String& keyWord) +{ + bool isDigit = false; + String digitStr(L""); + if(keyWord.SubString(0,1,digitStr) == E_SUCCESS) + { + int digit; + if(Integer::Parse(digitStr,digit) == E_SUCCESS) + { + isDigit = true; + } + } + return isDigit; +} + +void +DialUtil::Draw9PatchToCanvas(Canvas& pCanvas, const String& bgImg) +{ + AppResource* pAppResource = AppResource::GetInstance(); + Bitmap* pBitmap = pAppResource->GetBitmapN(bgImg); + + if (pBitmap->IsNinePatchedBitmap()) + { + pCanvas.DrawNinePatchedBitmap(pCanvas.GetBounds(), *pBitmap); + } + delete pBitmap; + + return; +} + +void +DialUtil::DrawImageToCanvas(const String& image, Dimension imageDimention, Canvas& pCanvas, int pos) +{ + //create and scale bitmap + Bitmap* pBitmap = AppUtility::GetBitmapFromResourcesN(image, imageDimention.width, imageDimention.height); + + //Find position to draw bitmap + Point bitmapPos(0, 0); + switch (pos) + { + case POSITION_LEFT: + { + bitmapPos.SetPosition(X_DIALER_BTN_TXT + (W_DIALER_BTN_NUM_TXT - pBitmap->GetWidth()) / 2, (pCanvas.GetBounds().height - pBitmap->GetHeight()) / 2); + } + break; + + case POSITION_RIGHT: + { + bitmapPos.SetPosition(X_DIALER_BTN_TXT + W_DIALER_BTN_NUM_TXT + ((W_DIALER_BTN_ALPHA_TXT - pBitmap->GetWidth()) / 2), (pCanvas.GetBounds().height - pBitmap->GetHeight()) / 2); + } + break; + + case POSITION_CENTER: + { + bitmapPos.SetPosition((pCanvas.GetBounds().width - pBitmap->GetWidth()) / 2, (pCanvas.GetBounds().height - pBitmap->GetHeight()) / 2); + } + break; + + case POSITION_BOTTOM_CENTER: + { + bitmapPos.SetPosition((pCanvas.GetBounds().width - pBitmap->GetWidth()) / 2, pCanvas.GetBounds().height / 2 + (pCanvas.GetBounds().height / 2 - pBitmap->GetHeight()) / 2); + } + break; + } + + //draw bitmap + pCanvas.DrawBitmap(Rectangle(bitmapPos, Dimension(pBitmap->GetWidth(), pBitmap->GetHeight())), *pBitmap); + delete pBitmap; + pBitmap = null; + + return; +} + +void +DialUtil::DrawTextToCanvas(const String& buttonText, int textFontStyle, Canvas& pCanvas, int pos, int buttonStatus) +{ + AppLogDebug("ENTER"); + if (buttonText == null) + { + return; + } + + //get text font + Font* font = GetTextFontN(textFontStyle); + + //get text color + Color* textColor = GetTextColorN(textFontStyle, buttonStatus); + + //create text element + TextElement* pTextElement = new (std::nothrow) TextElement(); + pTextElement->Construct(buttonText); + pTextElement->SetTextColor(*textColor); + pTextElement->SetFont(*font); + delete textColor; + + //get dimensions of the text + FloatDimension textDimension; + font->GetTextExtent(buttonText, buttonText.GetLength(), textDimension); + if(textFontStyle != FONT_KEYPAD_NUMBER) + { + textDimension.height += font->GetDescender(); + } + + //create enriched text + EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText(); + pEnrichedText->Construct(textDimension); + pEnrichedText->Add(*pTextElement); + + //set the position of the text in canvas + Point textPos(0, 0); + switch (pos) + { + case POSITION_LEFT: + { + //Margin 13, rectangle for left text (13,0,77, height of canvas), center aligned + textPos.SetPosition(X_DIALER_BTN_TXT + ((W_DIALER_BTN_NUM_TXT - pEnrichedText->GetWidth()) / 2), (pCanvas.GetBounds().height - pEnrichedText->GetHeight()) / 2); + } + break; + + case POSITION_RIGHT: + { + //rectangle for right text (13+77,0, 121, height of canvas), center aligned + textPos.SetPosition(X_DIALER_BTN_TXT + W_DIALER_BTN_NUM_TXT + ((121 - pEnrichedText->GetWidth()) / 2), (pCanvas.GetBounds().height - pEnrichedText->GetHeight()) / 2); + } + break; + + case POSITION_CENTER: + { + //rectangle for image : entire canvas, center aligned + textPos.SetPosition((pCanvas.GetBounds().width - pEnrichedText->GetWidth()) / 2, (pCanvas.GetBounds().height - pEnrichedText->GetHeight()) / 2); + } + break; + + case POSITION_TOP_LEFT: + { + textPos.SetPosition(10, (pCanvas.GetBounds().height / 2 - pEnrichedText->GetHeight()) / 2); + } + break; + + case POSITION_TOP_CENTER: + { + textPos.SetPosition((pCanvas.GetBounds().width - pEnrichedText->GetWidth()) / 2, (pCanvas.GetBounds().height / 2 - pEnrichedText->GetHeight()) / 2); + } + break; + + case POSITION_BOTTOM_LEFT: + { + textPos.SetPosition(10, pCanvas.GetBounds().height / 2 + ((pCanvas.GetBounds().height / 2 - pEnrichedText->GetHeight()) / 2)); + } + break; + + case POSITION_BOTTOM_CENTER: + { + int width = pEnrichedText->GetWidth(); + if(width > W_ENRICHED_TEXT) + { + textPos.SetPosition(X_ENRICHED_TEXT, pCanvas.GetBounds().height / 2 + ((pCanvas.GetBounds().height / 2 - pEnrichedText->GetHeight()) / 2)); + } + else + { + textPos.SetPosition(10 + ((pCanvas.GetBounds().width - pEnrichedText->GetWidth()) / 2), pCanvas.GetBounds().height / 2 + ((pCanvas.GetBounds().height / 2 - pEnrichedText->GetHeight()) / 2)); + } + + } + break; + } + + //Draw EnrichedText to canvas + pCanvas.DrawText(textPos, *pEnrichedText); + + // Cleans up + pEnrichedText->RemoveAll(true); + delete pEnrichedText; + delete font; + + AppLogDebug("EXIT"); + return; +} + +void +DialUtil::DrawCanvasToButton(Canvas* pCanvasNormal, Canvas* pCanvasPressed, Button* pButton) +{ + Bitmap* pNormalBgBmp = new (std::nothrow) Bitmap(); + pNormalBgBmp->Construct(*pCanvasNormal, pCanvasNormal->GetBounds()); + //scale bitmap to button size + pNormalBgBmp->SetScalingQuality(BITMAP_SCALING_QUALITY_MID); + pNormalBgBmp->Scale(pButton->GetSize()); + + pButton->SetNormalBackgroundBitmap(*pNormalBgBmp); + + if (pCanvasPressed != null) + { + Bitmap* pPressedBgBmp = new (std::nothrow) Bitmap(); + pPressedBgBmp->Construct(*pCanvasPressed, pCanvasPressed->GetBounds()); + //scale bitmap to button size + pPressedBgBmp->SetScalingQuality(BITMAP_SCALING_QUALITY_MID); + pPressedBgBmp->Scale(pButton->GetSize()); + pButton->SetPressedBackgroundBitmap(*pPressedBgBmp); + delete pPressedBgBmp; + pPressedBgBmp = null; + } + else + { + pButton->SetPressedBackgroundBitmap(*pNormalBgBmp); + } + + pButton->SetDisabledBitmap(Point(0, 0), *pNormalBgBmp); + pButton->Invalidate(true); + delete pNormalBgBmp; + pNormalBgBmp = null; + + return; +} + +String +DialUtil::ConvertDialedNumberToString(int dialNumber) +{ + switch (dialNumber) + { + case NUM_KEY1: + { + return L"1"; + } + case NUM_KEY2: + { + return L"2"; + } + case NUM_KEY3: + { + return L"3"; + } + case NUM_KEY4: + { + return L"4"; + } + case NUM_KEY5: + { + return L"5"; + } + case NUM_KEY6: + { + return L"6"; + } + case NUM_KEY7: + { + return L"7"; + } + case NUM_KEY8: + { + return L"8"; + } + case NUM_KEY9: + { + return L"9"; + } + break; + case NUM_KEY0: + { + return L"0"; + } + break; + } + return null; +} + +IList* +DialUtil::FetchPossibleNamesListN(const String& prevSearchStr, int nextDigit) +{ + //Fetch matching names for mapping char for digit, e.g. 2->ABC, 3->DEF. + ArrayList* pNamesList = new (std::nothrow) ArrayList(SingleObjectDeleter); + pNamesList->Construct(8); + + if(nextDigit >=2 && nextDigit <= 9) + { + switch(nextDigit) + { + case 2: + { + pNamesList->Add((new String(prevSearchStr+L"a"))); + pNamesList->Add((new String(prevSearchStr+L"b"))); + pNamesList->Add((new String(prevSearchStr+L"c"))); + pNamesList->Add((new String(prevSearchStr+L"A"))); + pNamesList->Add((new String(prevSearchStr+L"B"))); + pNamesList->Add((new String(prevSearchStr+L"C"))); + } + break; + + case 3: + { + pNamesList->Add((new String(prevSearchStr+L"d"))); + pNamesList->Add((new String(prevSearchStr+L"e"))); + pNamesList->Add((new String(prevSearchStr+L"f"))); + pNamesList->Add((new String(prevSearchStr+L"D"))); + pNamesList->Add((new String(prevSearchStr+L"E"))); + pNamesList->Add((new String(prevSearchStr+L"F"))); + } + break; + + case 4: + { + pNamesList->Add((new String(prevSearchStr+L"g"))); + pNamesList->Add((new String(prevSearchStr+L"h"))); + pNamesList->Add((new String(prevSearchStr+L"i"))); + pNamesList->Add((new String(prevSearchStr+L"G"))); + pNamesList->Add((new String(prevSearchStr+L"H"))); + pNamesList->Add((new String(prevSearchStr+L"I"))); + } + break; + + case 5: + { + pNamesList->Add((new String(prevSearchStr+L"j"))); + pNamesList->Add((new String(prevSearchStr+L"k"))); + pNamesList->Add((new String(prevSearchStr+L"l"))); + pNamesList->Add((new String(prevSearchStr+L"J"))); + pNamesList->Add((new String(prevSearchStr+L"K"))); + pNamesList->Add((new String(prevSearchStr+L"L"))); + } + break; + + case 6: + { + pNamesList->Add((new String(prevSearchStr+L"m"))); + pNamesList->Add((new String(prevSearchStr+L"n"))); + pNamesList->Add((new String(prevSearchStr+L"o"))); + pNamesList->Add((new String(prevSearchStr+L"M"))); + pNamesList->Add((new String(prevSearchStr+L"N"))); + pNamesList->Add((new String(prevSearchStr+L"O"))); + } + break; + + case 7: + { + pNamesList->Add((new String(prevSearchStr+L"p"))); + pNamesList->Add((new String(prevSearchStr+L"q"))); + pNamesList->Add((new String(prevSearchStr+L"r"))); + pNamesList->Add((new String(prevSearchStr+L"s"))); + pNamesList->Add((new String(prevSearchStr+L"P"))); + pNamesList->Add((new String(prevSearchStr+L"Q"))); + pNamesList->Add((new String(prevSearchStr+L"R"))); + pNamesList->Add((new String(prevSearchStr+L"S"))); + } + break; + + case 8: + { + pNamesList->Add((new String(prevSearchStr+L"t"))); + pNamesList->Add((new String(prevSearchStr+L"u"))); + pNamesList->Add((new String(prevSearchStr+L"v"))); + pNamesList->Add((new String(prevSearchStr+L"T"))); + pNamesList->Add((new String(prevSearchStr+L"U"))); + pNamesList->Add((new String(prevSearchStr+L"V"))); + } + break; + + case 9: + { + pNamesList->Add((new String(prevSearchStr+L"w"))); + pNamesList->Add((new String(prevSearchStr+L"x"))); + pNamesList->Add((new String(prevSearchStr+L"y"))); + pNamesList->Add((new String(prevSearchStr+L"z"))); + pNamesList->Add((new String(prevSearchStr+L"W"))); + pNamesList->Add((new String(prevSearchStr+L"X"))); + pNamesList->Add((new String(prevSearchStr+L"Y"))); + pNamesList->Add((new String(prevSearchStr+L"Z"))); + } + break; + + } + } + return pNamesList; +} + +void +DialUtil::ConvertNameToNumericKeys(String& subContactName, String& possibleKeysTyped) +{ + for(int charPos=0;charPos < subContactName.GetLength();charPos++) + { + wchar_t nextChar; + subContactName.GetCharAt(charPos,nextChar); + switch(nextChar) + { + case 'a':case 'A': + case 'b':case 'B': + case 'c':case 'C': + possibleKeysTyped.Append(2); + break; + + case 'd':case 'D': + case 'e':case 'E': + case 'f':case 'F': + possibleKeysTyped.Append(3); + break; + + case 'g':case 'G': + case 'h':case 'H': + case 'i':case 'I': + possibleKeysTyped.Append(4); + break; + + case 'j':case 'J': + case 'k':case 'K': + case 'l':case 'L': + possibleKeysTyped.Append(5); + break; + + case 'm':case 'M': + case 'n':case 'N': + case 'o':case 'O': + possibleKeysTyped.Append(6); + break; + + case 'p':case 'P': + case 'q':case 'Q': + case 'r':case 'R': + case 's':case 'S': + possibleKeysTyped.Append(7); + break; + + case 't':case 'T': + case 'u':case 'U': + case 'v':case 'V': + possibleKeysTyped.Append(8); + break; + + case 'w':case 'W': + case 'x':case 'X': + case 'y':case 'Y': + case 'z':case 'Z': + possibleKeysTyped.Append(9); + break; + + default: + break; + } + } +} diff --git a/src/CallConfCallerListForm.cpp b/src/CallConfCallerListForm.cpp new file mode 100644 index 0000000..3dac607 --- /dev/null +++ b/src/CallConfCallerListForm.cpp @@ -0,0 +1,912 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallConfCallerListForm.cpp + * @brief Conference caller list form + */ +#include +#include "CallApp.h" +#include "CallConfCallerListForm.h" +#include "CallAppUtility.h" +#include "CallPresentationModel.h" +#include "CallSceneRegister.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; +using namespace Tizen::Base::Runtime; +using namespace Tizen::Base::Utility; +using namespace Tizen::Graphics; +using namespace Tizen::System; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui::Scenes; + +//Constants +const int W_HOLD_BITMAP = 78; +const int H_HOLD_BITMAP = 78; +const int W_BACK_BITMAP = 56; +const int H_BACK_BITMAP = 56; +const int X_BACK_BITMAP = 8; +const int Y_BACK_BITMAP = 8; +const int W_SPLIT_BITMAP = 74; +const int H_SPLIT_BITMAP = 74; +const int W_END_BITMAP = 80; +const int H_END_BITMAP = 74; +const int IDI_MAX_SECONDS = 60; +const int IDI_MAX_MINS = 60; +const int LIST_ITEM_HEIGHT = 112; +const int X_SPLIT_BUTTON_MARGIN = 26; +const int Y_SPLIT_BUTTON_MARGIN = 19; +const int X_END_BUTTON_PADDING = 26; +const int X_CALLER_LABEL = 116; +const int Y_CALLER_LABEL = 0; +const int W_CALLER_LABEL = 488; +const int H_CALLER_LABEL = 112; + + +static const wchar_t* IDL_CONFCALL_LIST_FORM = L"IDL_CONFCALL_LIST_FORM"; +static const wchar_t* IDC_CALL_TIME_LABEL = L"IDC_CALL_TIME_LABEL"; +static const wchar_t* IDB_SPLIT_NORMAL_BUTTON_ICON = L"C01-1_conference_split.png"; +static const wchar_t* IDB_SPLIT_PRESS_BUTTON_ICON = L"C01-1_conference_split_press.png"; +static const wchar_t* IDB_END_NORMAL_BUTTON_ICON = L"C01-1_conference_end.png"; +static const wchar_t* IDB_END_PRESS_BUTTON_ICON = L"C01-1_conference_end_press.png"; +static const wchar_t* IDC_END_CONFCALL_BUTTON = L"IDC_END_CONFCALL_BUTTON"; +static const wchar_t* IDC_HOLD_CONFCALL_BUTTON = L"IDC_HOLD_CONFCALL_BUTTON"; +static const wchar_t* IDC_CALLER1_PANEL = L"IDC_CALLER1_PANEL"; +static const wchar_t* IDC__LINE_LABEL1 = L"IDC__LINE_LABEL1"; +static const wchar_t* IDC_CALLER2_PANEL = L"IDC_CALLER2_PANEL"; +static const wchar_t* IDC__LINE_LABEL2 = L"IDC__LINE_LABEL2"; +static const wchar_t* IDC_CALLER3_PANEL = L"IDC_CALLER3_PANEL"; +static const wchar_t* IDC__LINE_LABEL3 = L"IDC__LINE_LABEL3"; +static const wchar_t* IDC_CALLER4_PANEL = L"IDC_CALLER4_PANEL"; +static const wchar_t* IDC__LINE_LABEL4 = L"IDC__LINE_LABEL4"; +static const wchar_t* IDC_CALLER5_PANEL = L"IDC_CALLER5_PANEL"; +static const wchar_t* IDC__LINE_LABEL5 = L"IDC__LINE_LABEL5"; +static const wchar_t* IDC_CONF_CALL_LIST_TABLEVIEW = L"IDC_CONF_CALL_LIST_TABLEVIEW"; + +//color +const unsigned int COLOR_END_CALL_BG = Color32<180, 60, 60>::Value; +const unsigned int COLOR_END_CALL_BG_PRESS = Color32<61, 153, 208>::Value; +const unsigned int COLOR_SPLIT_CALL_BG = Color32<129, 140, 148>::Value; +const unsigned int COLOR_SPLIT_CALL_BG_PRESS = Color32<63, 155, 210>::Value; +ConfCallerListForm::ConfCallerListForm(void) +: BaseForm(FORMTYPE_CONFCALLLIST) +{ + __pConfCallInfo = null; + __pConfCallTimer = null; + __isCallSplit = false; + __isConfCallStateInProgress = false; + __pAddressbook = null; +} + +ConfCallerListForm::~ConfCallerListForm(void) +{ + if (__pConfCallTimer != null) + { + __pConfCallTimer->Cancel(); + delete __pConfCallTimer; + } +} + +void +ConfCallerListForm::Initialize(void) +{ + Construct(IDL_CONFCALL_LIST_FORM); +} + +result +ConfCallerListForm::OnInitializing(void) +{ + result r = E_SUCCESS; + //Add action listener to buttons + AddActionListener(IDC_END_CONFCALL_BUTTON, IDA_END_CONF_CALL); + AddActionListener(IDC_HOLD_CONFCALL_BUTTON, IDA_HOLD_CONF_CALL); + SetFormBackEventListener(this); + Label* pTimerLbl = static_cast(GetControl(IDC_CALL_TIME_LABEL)); + SetControlAlwaysOnTop(*pTimerLbl,true); + + CreateTableView(); + __pCallPresentor = CallPresentationModel::GetInstance(); + return r; +} + +void +ConfCallerListForm::CreateTableView(void) +{ + __pList = static_cast (GetControl(IDC_CONF_CALL_LIST_TABLEVIEW)); + __pList->SetItemProvider(this); + AddControl(__pList); +} + +void +ConfCallerListForm::AddActionListener(const String& keyName, CommandIds cmdId) +{ + Button* pButtonKeypad = static_cast(GetControl(keyName)); + if (pButtonKeypad != null) + { + pButtonKeypad->SetActionId(cmdId); + pButtonKeypad->AddActionEventListener(*this); + } +} + +result +ConfCallerListForm::OnTerminating(void) +{ + result r = E_SUCCESS; + + if (__pCallPresentor != null) + { + __pCallPresentor = null; + } + + if (__pConfCallInfo != null) + { + delete __pConfCallInfo; + __pConfCallInfo = null; + } + + //RemoveAllControls(); + return r; +} + +void +ConfCallerListForm::OnActionPerformed(const Control& source, int actionId) +{ + SceneManager* pSceneManager = SceneManager::GetInstance(); + AppAssert(pSceneManager); + + switch (actionId) + { + case IDA_END_CONF_CALL: + { + bool success = __pCallPresentor->EndConferenceCall(); + if (success == true) + { + delete __pConfCallInfo; + __pConfCallInfo = null; + } + } + break; + + case IDA_HOLD_CONF_CALL: + { + // User has pressed end conference call and we are waiting for TAPI response + if(__pConfCallInfo == null) + { + return; + } + bool success = true; + bool isCallOnHold = __pConfCallInfo->IsOnHold(); + if(IsConfCallStateInProgress() == false) + { + if (isCallOnHold == false) + { + success = __pCallPresentor->HoldConferenceCall(); + SetConfCallStateInProgress(true); + } + else + { + success = __pCallPresentor->ActivateConferenceCall(); + SetConfCallStateInProgress(true); + } + } + } + break; + + case IDA_BACK_EVENT: + { + ArrayListT* pCallList = static_cast*>(__pCallPresentor->GetCallListN()); + int noOfCalls = pCallList->GetCount(); + + //Ownership - To be deleted in 'OnSceneActivatedN' of next form + ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter); + pCallInfoList->Construct(noOfCalls); + + for (int index = 0; index < noOfCalls; index++) + { + //fetch call info and add to list + AppCallInfo callInfo; + result r = pCallList->GetAt(index, callInfo); + if (r == E_SUCCESS) + { + //copy call information to new instance + AppCallInfo* pCaller = new (std::nothrow) AppCallInfo(); + *pCaller = callInfo; + pCallInfoList->Add(pCaller); + } + } + + if (noOfCalls == 1) + { + //single active call - goto active call form + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList); + } + else + { + //goto multiple active call form + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList); + } + pCallList->RemoveAll(); + delete pCallList; + } + break; + + case IDA_SPLIT_CALLER1: + case IDA_SPLIT_CALLER2: + case IDA_SPLIT_CALLER3: + case IDA_SPLIT_CALLER4: + case IDA_SPLIT_CALLER5: + { + // User has pressed end conference call and we are waiting for TAPI response + if(__pConfCallInfo == null) + { + break; + } + __isCallSplit = __pCallPresentor->SplitFromConference(SplitConfCallerCmdIds(actionId),__pConfCallInfo->GetCallerList()); + if(__isCallSplit == true) + { + __pList->UpdateTableView(); + } + } + break; + + case IDA_END_CALLER1: + case IDA_END_CALLER2: + case IDA_END_CALLER3: + case IDA_END_CALLER4: + case IDA_END_CALLER5: + { + __pList->SetEnabled(false); + // User has pressed end conference call and we are waiting for TAPI response + if(__pConfCallInfo == null) + { + break; + } + __pCallPresentor->EndCallFromConference(EndConfCallerCmdIds(actionId),__pConfCallInfo->GetCallerList()); + } + break; + + default: + break; + } +} + +void +ConfCallerListForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs) +{ + //set itself as listener + __pCallPresentor->SetTelEventListener(this); + __isCallSplit = false; + Tizen::System::SettingInfo::AddSettingEventListener(*this); + AppLogDebug("Enter"); + + //DisableAllControls(); + if (__pConfCallInfo != null) + { + delete __pConfCallInfo; + __pConfCallInfo = null; + } + //show 1st caller's info. + //Fetch Conference call info from telephony manager + __pConfCallInfo = __pCallPresentor->GetConferenceCallInfoN(); + AppLogDebug("Enter %x",__pConfCallInfo); + + AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance(); + __pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID); + if(__pAddressbook != null) + { + __pAddressbook->SetAddressbookChangeEventListener(this); + } + + //show active call timer +// ShowTimerInfo(IDC_CALL_TIME_LABEL, __pConfCallInfo->GetCallConnectTime()); + ShowTimerInfo(IDC_CALL_TIME_LABEL, __pConfCallInfo->GetDurationTime()); + + //Set the correct bitmap to the "hold" button based on the current state of the call + SetHoldButtonStatus(__pConfCallInfo->IsOnHold()); + //disable Hold Button, if 2 active calls are present,Else enable it. + Button* pButtonHold = static_cast(GetControl(IDC_HOLD_CONFCALL_BUTTON)); + if(pButtonHold != null) + { + if (__pCallPresentor->GetCurrentCallCount() == IDI_MAX_ACTIVE_CALLS) + { + pButtonHold->SetShowState(false); + } + else + { + pButtonHold->SetShowState(true); + } + pButtonHold->Invalidate(true); + } + + __pList->UpdateTableView(); + __pList->SetEnabled(true); + AddOrientationEventListener(*this); +} + +void +ConfCallerListForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId) +{ + RemoveOrientationEventListener(*this); + if (__pConfCallTimer != null) + { + __pConfCallTimer->Cancel(); + delete __pConfCallTimer; + __pConfCallTimer = null; + } + if(__pAddressbook != null) + { + __pAddressbook->SetAddressbookChangeEventListener(null); + } + + Tizen::System::SettingInfo::RemoveSettingEventListener(*this); +} + +result +ConfCallerListForm::OnDraw(void) +{ + return E_SUCCESS; +} + +void +ConfCallerListForm::SetHoldButtonStatus(bool isCallOnHold) +{ + Button* pButtonHold = static_cast(GetControl(IDC_HOLD_CONFCALL_BUTTON)); + if(pButtonHold != null) + { + Bitmap* pNormalBitmapToBeDrawn = null; + Bitmap* pPressBitmapToBeDrawn = null; + + if (isCallOnHold == true) + { + pNormalBitmapToBeDrawn = AppUtility::GetBitmapFromResourcesN(IDB_UNHOLD_NORMAL_BUTTON_ICON, + W_HOLD_BITMAP, W_HOLD_BITMAP); + pPressBitmapToBeDrawn = AppUtility::GetBitmapFromResourcesN(IDB_UNHOLD_PRESS_BUTTON_ICON, + W_HOLD_BITMAP, W_HOLD_BITMAP); + } + else + { + pNormalBitmapToBeDrawn = AppUtility::GetBitmapFromResourcesN(IDB_HOLD_NORMAL_BUTTON_ICON, + W_HOLD_BITMAP, W_HOLD_BITMAP); + pPressBitmapToBeDrawn = AppUtility::GetBitmapFromResourcesN(IDB_HOLD_PRESS_BUTTON_ICON, + W_HOLD_BITMAP, W_HOLD_BITMAP); + } + + if (pNormalBitmapToBeDrawn) + { + pButtonHold->SetNormalBitmap(Point(0, 0), *pNormalBitmapToBeDrawn); + } + if (pPressBitmapToBeDrawn) + { + pButtonHold->SetPressedBitmap(Point(0, 0), *pPressBitmapToBeDrawn); + } + + pButtonHold->Invalidate(true); + delete pNormalBitmapToBeDrawn; + pNormalBitmapToBeDrawn = null; + delete pPressBitmapToBeDrawn; + pPressBitmapToBeDrawn = null; + } +} + +void +ConfCallerListForm::HandleParticipantsChanged(void) +{ + AppLogDebug("Enter"); + AppCallInfo* pCallInfo = __pCallPresentor->GetConferenceCallInfoN(); + if (pCallInfo == null) + { + return; + } + if (__pConfCallInfo != null) + { + delete __pConfCallInfo; + __pConfCallInfo = null; + } + __pConfCallInfo = new (std::nothrow) AppCallInfo(); + *__pConfCallInfo = *pCallInfo; + __pList->UpdateTableView(); + __pList->SetEnabled(true); +} + + +void +ConfCallerListForm::OnConfCallHoldTelephoneCallBackOccured(bool success) +{ + bool isCallOnHold = __pConfCallInfo->IsOnHold(); + isCallOnHold = !(isCallOnHold); + __pConfCallInfo->SetOnHold(isCallOnHold); + __pList->UpdateTableView(); + SetHoldButtonStatus(isCallOnHold); + SetConfCallStateInProgress(false); + +} + +bool +ConfCallerListForm::IsConfCallStateInProgress(void) +{ + return __isConfCallStateInProgress; +} + +void +ConfCallerListForm::SetConfCallStateInProgress(bool progress) +{ + __isConfCallStateInProgress = progress; +} + + +void +ConfCallerListForm::OnConfCallActiveTelephoneCallBackOccured(bool success) +{ + bool isCallOnHold = __pConfCallInfo->IsOnHold(); + isCallOnHold = !(isCallOnHold); + __pConfCallInfo->SetOnHold(!success); + __pList->UpdateTableView(); + SetHoldButtonStatus(!success); + SetConfCallStateInProgress(false); + +} + +/*void +ConfCallerListForm::HandleHoldConferenceCallback(bool success) +{ + if(success == true) + { + __pList->UpdateTableView(); + SetHoldButtonStatus(success); + } +}*/ + +void +ConfCallerListForm::DisableAllControls(void) +{ + Panel* pKeysPanel = static_cast(GetControl(IDC_CALLER1_PANEL)); + if (pKeysPanel != null) + { + pKeysPanel->SetShowState(false); + Label* pLineLabel1 = static_cast(GetControl(IDC__LINE_LABEL1)); + pLineLabel1->SetShowState(false); + pKeysPanel = null; + } + pKeysPanel = static_cast(GetControl(IDC_CALLER2_PANEL)); + if (pKeysPanel != null) + { + pKeysPanel->SetShowState(false); + Label* pLineLabel1 = static_cast(GetControl(IDC__LINE_LABEL2)); + pLineLabel1->SetShowState(false); + pKeysPanel = null; + } + pKeysPanel = static_cast(GetControl(IDC_CALLER3_PANEL)); + if (pKeysPanel != null) + { + pKeysPanel->SetShowState(false); + Label* pLineLabel1 = static_cast(GetControl(IDC__LINE_LABEL3)); + pLineLabel1->SetShowState(false); + pKeysPanel = null; + } + pKeysPanel = static_cast(GetControl(IDC_CALLER4_PANEL)); + if (pKeysPanel != null) + { + pKeysPanel->SetShowState(false); + Label* pLineLabel1 = static_cast(GetControl(IDC__LINE_LABEL4)); + pLineLabel1->SetShowState(false); + pKeysPanel = null; + } + pKeysPanel = static_cast(GetControl(IDC_CALLER5_PANEL)); + if (pKeysPanel != null) + { + pKeysPanel->SetShowState(false); + Label* pLineLabel1 = static_cast(GetControl(IDC__LINE_LABEL5)); + pLineLabel1->SetShowState(false); + pKeysPanel = null; + } +} + +void +ConfCallerListForm::ShowTimerInfo(const String& timerLblName, long long startTime) +{ + Label* pTimerLbl = static_cast(GetControl(timerLblName)); + + if (__pConfCallTimer == null) + { + __pConfCallTimer = new (std::nothrow) Timer(); + __pConfCallTimer->Construct(*this); + } + + if (pTimerLbl != null) + { + //current system time + long long currTime = 0; + //SystemTime::GetTicks(currTime); + CallApp* pPhoneApp = static_cast(CallApp::GetInstance()); + currTime = pPhoneApp->GetCallAppTicks(); + //Set call duration + TimeSpan diffSpan(abs(startTime - currTime)); + + String activeCallTime(L""); + + long long hr = diffSpan.GetHours(); + if (hr <= 9) { + activeCallTime.Append("0"); + } + activeCallTime.Append(hr); + activeCallTime.Append(L":"); + + long long min = diffSpan.GetMinutes(); + if (min <= 9) { + activeCallTime.Append("0"); + } + activeCallTime.Append(min); + activeCallTime.Append(L":"); + + long long sec = diffSpan.GetSeconds(); + if (sec <= 9) { + activeCallTime.Append("0"); + } + activeCallTime.Append(sec); + + pTimerLbl->SetText(activeCallTime); + __pConfCallTimer->StartAsRepeatable(TimeSpan::NUM_OF_TICKS_IN_SECOND); + + } +} + +void +ConfCallerListForm::OnTimerExpired(Tizen::Base::Runtime::Timer& timer) +{ + //Call default implementation of "Object.Equals()" + //returns true, if they are pointing to same address. + if (__pConfCallTimer->Equals(timer)) + { + Label* pTimerLbl = static_cast(GetControl(IDC_CALL_TIME_LABEL)); + if (pTimerLbl) + { + String activeCallTime = pTimerLbl->GetText(); + // Create a StringTokenizer instance + StringTokenizer strTokens(activeCallTime, L":"); + + int count = strTokens.GetTokenCount(); // count == 3 + String token; + int sec = 0; + int min = 0; + int hr = 0; + for (int index = 0; index < count; index++) + { + switch (index) + { + case 0: + strTokens.GetNextToken(token); + Integer::Parse(token, hr); + break; + + case 1: + strTokens.GetNextToken(token); + Integer::Parse(token, min); + break; + + case 2: + strTokens.GetNextToken(token); + Integer::Parse(token, sec); + break; + } + } + //update all values + sec = sec + 1; + if (sec == IDI_MAX_SECONDS) + { + sec = 0; + min = min + 1; + } + if (min == IDI_MAX_MINS) + { + min = 0; + hr = hr + 1; + } + + //replace string + activeCallTime.Clear(); + if (hr <= 9) + { + activeCallTime.Append("0"); + } + activeCallTime.Append(hr); + activeCallTime.Append(":"); + if (min <= 9) + { + activeCallTime.Append("0"); + } + activeCallTime.Append(min); + activeCallTime.Append(":"); + if (sec <= 9) + { + activeCallTime.Append("0"); + } + activeCallTime.Append(sec); + //update timer label + pTimerLbl->SetText(activeCallTime); + pTimerLbl->Invalidate(true); + } + } +} + +void +ConfCallerListForm::OnFormBackRequested(Form& source) +{ + //If the call is split then wait for it to automatically go back once it split is success + if(__isCallSplit == true) + { + return; + } + SceneManager* pSceneManager = SceneManager::GetInstance(); + AppAssert(pSceneManager); + + + ArrayListT* pCallList = static_cast*>(__pCallPresentor->GetCallListN()); + int noOfCalls = pCallList->GetCount(); + + //Ownership - To be deleted in 'OnSceneActivatedN' of next form + ArrayList* pCallInfoList = new (std::nothrow) ArrayList(SingleObjectDeleter); + pCallInfoList->Construct(noOfCalls); + + for (int index = 0; index < noOfCalls; index++) + { + //fetch call info and add to list + AppCallInfo callInfo; + result r = pCallList->GetAt(index, callInfo); + if (r == E_SUCCESS) + { + //copy call information to new instance + AppCallInfo* pCaller = new (std::nothrow) AppCallInfo(); + *pCaller = callInfo; + pCallInfoList->Add(pCaller); + } + } + + if (noOfCalls == 1) + { + //single active call - goto active call form + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_CONFCALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList); + } + else + { + //goto multiple active call form + pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SCENE_MULTIPLEACTIVECALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pCallInfoList); + } + pCallList->RemoveAll(); + delete pCallList; + +} + +void +ConfCallerListForm::OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList) +{ + __pList->UpdateTableView(); +} + +void +ConfCallerListForm::OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList) +{ + //No implementation +} + +void +ConfCallerListForm::CreateItemAndAddActionListener( Button& splitButton, + Button& endButton, Label& callerLabel, SplitConfCallerCmdIds splitCmdId, + EndConfCallerCmdIds EndCmdId, const String& displayName) +{ + Bitmap* pNormalSplitBitmap = null; + Bitmap* pPressSplitBitmap = null; + Bitmap* pNormalEndBitmap = null; + Bitmap* pPressEndBitmap = null; + + pNormalSplitBitmap = AppUtility::GetBitmapFromResourcesN(IDB_SPLIT_NORMAL_BUTTON_ICON, + W_SPLIT_BITMAP, H_SPLIT_BITMAP); + pPressSplitBitmap = AppUtility::GetBitmapFromResourcesN(IDB_SPLIT_PRESS_BUTTON_ICON, + W_SPLIT_BITMAP, H_SPLIT_BITMAP); + pNormalEndBitmap = AppUtility::GetBitmapFromResourcesN(IDB_END_NORMAL_BUTTON_ICON, + W_END_BITMAP, H_END_BITMAP); + pPressEndBitmap = AppUtility::GetBitmapFromResourcesN(IDB_END_PRESS_BUTTON_ICON, + W_END_BITMAP, H_END_BITMAP); + + bool isSplitAllowed = true; + if ((__pCallPresentor->IsSplitAllowed() == false) || (__pConfCallInfo->IsOnHold() == true) || (__isCallSplit == true)) + { + isSplitAllowed = false; + } + + splitButton.SetActionId(splitCmdId); + splitButton.AddActionEventListener(*this); + splitButton.SetColor(BUTTON_STATUS_NORMAL,COLOR_SPLIT_CALL_BG); + splitButton.SetColor(BUTTON_STATUS_PRESSED,COLOR_SPLIT_CALL_BG_PRESS); + splitButton.SetNormalBitmap(Point(0, 0), *pNormalSplitBitmap); + splitButton.SetPressedBitmap(Point(0, 0), *pPressSplitBitmap); + + + bool isEnableEndButton = (__isCallSplit == false); + endButton.SetEnabled(isEnableEndButton); + endButton.SetActionId(EndCmdId); + endButton.AddActionEventListener(*this); + endButton.SetNormalBitmap(Point(0, 0), *pNormalEndBitmap); + endButton.SetColor(BUTTON_STATUS_NORMAL,COLOR_END_CALL_BG); + endButton.SetColor(BUTTON_STATUS_PRESSED,COLOR_END_CALL_BG_PRESS); + endButton.SetPressedBitmap(Point(0, 0), *pPressEndBitmap); + + + if (isSplitAllowed == false) + { + splitButton.SetShowState(false); + callerLabel.SetBounds(splitButton.GetBounds().x, callerLabel.GetBounds().y, + callerLabel.GetBounds().width, callerLabel.GetBounds().height); + } + else + { + splitButton.SetShowState(true); + callerLabel.SetBounds((splitButton.GetBounds().x + splitButton.GetBounds().width), callerLabel.GetBounds().y, + callerLabel.GetBounds().width, callerLabel.GetBounds().height); + } + + + callerLabel.SetTextHorizontalAlignment(ALIGNMENT_LEFT); + callerLabel.SetText(displayName); + delete pNormalEndBitmap; + pNormalEndBitmap = null; + delete pPressEndBitmap; + pPressEndBitmap = null; + delete pNormalSplitBitmap; + pNormalSplitBitmap = null; + delete pPressSplitBitmap; + pPressSplitBitmap = null; +} + +int +ConfCallerListForm::GetItemCount(void) +{ + IListT* pCallList = __pConfCallInfo->GetCallerList(); + return pCallList->GetCount(); +} + +TableViewItem* +ConfCallerListForm::CreateItem(int itemIndex, int itemWidth) +{ + AppLogDebug("%d %x",itemWidth,__pConfCallInfo); + IListT* pCallList = __pConfCallInfo->GetCallerList(); + + TableViewAnnexStyle style = TABLE_VIEW_ANNEX_STYLE_NORMAL; + TableViewItem* pItem = new (std::nothrow) TableViewItem(); + + pItem->Construct(Tizen::Graphics::Dimension(GetBounds().width, LIST_ITEM_HEIGHT), style); + + Button *pSplitCallButton = new (std::nothrow) Button(); + pSplitCallButton->Construct(Rectangle(X_SPLIT_BUTTON_MARGIN,Y_SPLIT_BUTTON_MARGIN,W_SPLIT_BITMAP,W_SPLIT_BITMAP)); + + Label *pCallLabel = new (std::nothrow)Label(); + pCallLabel->Construct(Rectangle(X_CALLER_LABEL,Y_CALLER_LABEL,W_CALLER_LABEL,H_CALLER_LABEL),L""); + + Button *pEndCallButton = new (std::nothrow)Button(); + pEndCallButton->Construct(Rectangle(GetBounds().width-X_END_BUTTON_PADDING-W_SPLIT_BITMAP,Y_SPLIT_BUTTON_MARGIN,W_SPLIT_BITMAP,W_SPLIT_BITMAP)); + + + AppCallInfo callInfo; + String pContactNo; + result r = pCallList->GetAt(itemIndex, callInfo); + + if(callInfo.GetContactNumber().IsEmpty() == false) + { + pContactNo.Append(callInfo.GetContactNumber()); + } + else + { + pContactNo.Append(AppUtility::GetResourceString(IDS_NUMBER_UNKNOWN)); + } + //fetch contact details based on phone number + String* pDisplayName = callInfo.FetchLatestCallerNameN(pContactNo); + + if(pDisplayName != null) + { + if ((pDisplayName->IsEmpty()) || r != E_SUCCESS) + { + pDisplayName->Append(pContactNo); + } + switch (itemIndex) + { + case 0: + { + CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel, + IDA_SPLIT_CALLER1,IDA_END_CALLER1,*pDisplayName); + } + break; + case 1: + { + CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel, + IDA_SPLIT_CALLER2,IDA_END_CALLER2,*pDisplayName); + } + break; + case 2: + { + CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel, + IDA_SPLIT_CALLER3,IDA_END_CALLER3,*pDisplayName); + } + break; + case 3: + { + CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel, + IDA_SPLIT_CALLER4,IDA_END_CALLER4,*pDisplayName); + } + break; + case 4: + { + CreateItemAndAddActionListener(*pSplitCallButton,*pEndCallButton,*pCallLabel, + IDA_SPLIT_CALLER5,IDA_END_CALLER5,*pDisplayName); + } + break; + default: + break; + } + } + pItem->AddControl(pSplitCallButton); + pItem->AddControl(pCallLabel); + pItem->AddControl(pEndCallButton); + if(pDisplayName != null) + { + delete pDisplayName; + pDisplayName = null; + } + return pItem; + + +} + +bool +ConfCallerListForm::DeleteItem(int itemIndex, TableViewItem* pItem) +{ + delete pItem; + pItem = null; + return true; +} + +void +ConfCallerListForm::UpdateItem(int itemIndex, TableViewItem* pItem) +{ + return ; +} + +void +ConfCallerListForm::OnSettingChanged(Tizen::Base::String& key) +{ + if(key == L"http://tizen.org/setting/contacts.order.firstname") + { + __pList->UpdateTableView(); + } +} + +int +ConfCallerListForm::GetDefaultItemHeight(void) +{ + return LIST_ITEM_HEIGHT; +} + +void +ConfCallerListForm::OnOrientationChanged(const Control& source, OrientationStatus orientationStatus) +{ + AppLogDebug("Enter"); + __pList->UpdateTableView(); +} diff --git a/src/CallDtmfKeypadPanel.cpp b/src/CallDtmfKeypadPanel.cpp new file mode 100644 index 0000000..dddef9f --- /dev/null +++ b/src/CallDtmfKeypadPanel.cpp @@ -0,0 +1,545 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallDtmfKeypadPanel.cpp + * @brief Dtmf keypad implementation class + */ +#include +#include +#include "CallAppUtility.h" +#include "CallCommonUtils.h" +#include "CallDtmfKeypadPanel.h" +#include "CallTypes.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::Media; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui::Scenes; + +const int W_VOICE_CALL_ICON = 70; +const int H_VOICE_CALL_ICON = 36; +const int INITIAL_X_OFFSET = 13; +const int LEFT_X_OFFSET = 77; +const int RIGHT_X_OFFSET = 121; +const int INITIAL_TEXT_X_OFFSET = 24; +const int LEFT_TEXT_X_OFFSET = 64; +const int LEFT_TEXT_X_MARGIN = 18; +const int RIGHT_TEXT_X_OFFSET = 94; +const int W_DTMF_BTN = 212; +const int H_DTMF_BTN = 134; +const Color COLOR_KEYPAD_BG(0, 0, 0, 100); +const wchar_t* IDC_TEXTBOX = L"IDC_NUM_EDITFIELD"; +const wchar_t* IDC_BUTTON = L"IDC_BUTTON"; +const wchar_t* IDC_DTMF_KEY_BG_LABEL = L"IDC_DTMF_KEY_BG_LABEL"; + +DtmfKeyPadPanel::DtmfKeyPadPanel(void) +{ + __pActionListener = null; +} + +DtmfKeyPadPanel::~DtmfKeyPadPanel(void) +{ +} + +bool +DtmfKeyPadPanel::Initialize(IActionEventListener* pEventListener, Rectangle& boundsRect) +{ + result r = Construct(IDL_DTMF_PANEL); + if (IsFailed(r)) + { + return false; + } + + r = SetBounds(boundsRect); + if (IsFailed(r)) + { + return false; + } + + //disable auto link detection + EditField* pTextBox = static_cast(GetControl(IDC_TEXTBOX)); + if (pTextBox != null) + { + pTextBox->SetAutoLinkMask(0); + pTextBox->SetFocus(); + } + __pActionListener = pEventListener; + return true; +} + +void +DtmfKeyPadPanel::setKeysPanelBounds(void) +{ + Label* pKeyBgLbl = static_cast(GetControl(IDC_DTMF_KEY_BG_LABEL, true)); + Panel* pKeysPanel = static_cast(GetControl(IDL_DTMF_KEYS_PANEL, true)); + if(pKeyBgLbl != null && pKeysPanel != null) + { + pKeysPanel->SetBounds(pKeyBgLbl->GetBounds()); + pKeysPanel->InvalidateBounds(pKeyBgLbl->GetBounds()); + } + +} + +result +DtmfKeyPadPanel::OnInitializing(void) +{ + RelativeLayout* pRelativeLayout = dynamic_cast(GetParent()->GetPortraitLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->Update(); + delete pRelativeLayout; + } + + pRelativeLayout = dynamic_cast(GetParent()->GetLandscapeLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->Update(); + delete pRelativeLayout; + } + + //Set background bitmap + Label* pKeyBgLbl = static_cast(GetControl(IDC_DTMF_KEY_BG_LABEL, true)); + /*Bitmap* pKeyBgBitmap = AppUtility::GetBitmapFromResourcesN(IDB_KEYPAD_BG, pKeyBgLbl->GetWidth(), pKeyBgLbl->GetHeight()); + if (pKeyBgBitmap != null) + { + pKeyBgLbl->SetBackgroundBitmap(*pKeyBgBitmap); + delete pKeyBgBitmap; + pKeyBgBitmap = null; + }*/ + + //DTMF Keys panel + Panel* pKeysPanel = new (std::nothrow) Panel(); + pKeysPanel->Construct(IDL_DTMF_KEYS_PANEL); + pKeysPanel->SetBounds(pKeyBgLbl->GetBounds()); + AddControl(pKeysPanel); + + //Add action listener and bg to buttons. + AddListenersToButtons(); + result r = SetBackgroundtoButton(); + return r; +} + +void +DtmfKeyPadPanel::AddListenersToButtons() +{ + for (int i = NUM_KEY1; i <= HASH_KEY; ++i) + { + String buttonName(IDC_BUTTON); + buttonName.Append(i); + Button* pButton = static_cast(GetControl(buttonName, true)); + if(pButton == null) + { + continue; + } + pButton->SetActionId(i); + SetControlAlwaysOnTop(*pButton,true); + //Add Listeners + if(__pActionListener != null) + { + pButton->AddActionEventListener(*__pActionListener); + } + } +} + +result +DtmfKeyPadPanel::SetBackgroundtoButton() +{ + AppLogDebug("ENTER"); + result r = E_FAILURE; + for (int i = 1; i <= 12; i++) + { + String buttonName(IDC_BUTTON); + buttonName.Append(i); + Button* pButton = static_cast(GetControl(buttonName,true)); + if(pButton == null) + { + continue; + } + pButton->SetEffectSoundEnabled(false); + //normal bg bitmap + Rectangle canvasRect(0, 0, W_DTMF_BTN, H_DTMF_BTN); + Canvas canvasNormal; + canvasNormal.Construct(canvasRect); + canvasNormal.SetBackgroundColor(Color(255,255,255,0)); + canvasNormal.Clear(); + //pressed bg bitmap + Canvas canvasPressed; + canvasPressed.Construct(canvasRect); + + String number(DialUtil::ConvertDialedNumberToString(pButton->GetActionId())); + switch (pButton->GetActionId()) + { + case NUM_KEY1: + { + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL); + DrawImageToCanvas(IDB_KEYPAD_NUM1_ICON, Dimension(W_VOICE_CALL_ICON, H_VOICE_CALL_ICON), canvasNormal, POSITION_RIGHT); + + //Set canvas for pressed state of the button + r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS); + TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed"); + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED); + DrawImageToCanvas(IDB_KEYPAD_NUM1_ICON, Dimension(W_VOICE_CALL_ICON, H_VOICE_CALL_ICON), canvasPressed, POSITION_RIGHT); + } + break; + + case NUM_KEY2: + { + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL); + DrawTextToCanvas(IDI_KEY2_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL); + + //Set canvas for pressed state of the button + r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS); + TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed"); + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED); + DrawTextToCanvas(IDI_KEY2_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED); + } + break; + + case NUM_KEY3: + { + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL); + DrawTextToCanvas(IDI_KEY3_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL); + + r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS); + TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed"); + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED); + DrawTextToCanvas(IDI_KEY3_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED); + } + break; + + case NUM_KEY4: + { + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL); + DrawTextToCanvas(IDI_KEY4_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL); + + r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS); + TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed"); + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED); + DrawTextToCanvas(IDI_KEY4_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED); + } + break; + + case NUM_KEY5: + { + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL); + DrawTextToCanvas(IDI_KEY5_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL); + + r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS); + TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed"); + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED); + DrawTextToCanvas(IDI_KEY5_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED); + } + break; + + case NUM_KEY6: + { + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL); + DrawTextToCanvas(IDI_KEY6_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL); + + r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS); + TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed"); + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED); + DrawTextToCanvas(IDI_KEY6_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED); + } + break; + + case NUM_KEY7: + { + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL); + DrawTextToCanvas(IDI_KEY7_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL); + + r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS); + TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed"); + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED); + DrawTextToCanvas(IDI_KEY7_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED); + } + break; + + case NUM_KEY8: + { + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL); + DrawTextToCanvas(IDI_KEY8_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL); + + r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS); + TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed"); + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED); + DrawTextToCanvas(IDI_KEY8_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED); + } + break; + + case NUM_KEY9: + { + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL); + DrawTextToCanvas(IDI_KEY9_TXT, FONT_KEYPAD_TEXT, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL); + + r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS); + TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed"); + DrawTextToCanvas(number, FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED); + DrawTextToCanvas(IDI_KEY9_TXT, FONT_KEYPAD_TEXT, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED); + } + break; + + case PAUSE_KEY: + { + DrawTextToCanvas(L"*", FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL); + DrawTextToCanvas(L"P", FONT_KEYPAD_P, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL); + r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS); + TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed"); + DrawTextToCanvas(L"*", FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED); + DrawTextToCanvas(L"P", FONT_KEYPAD_P, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED); + } + break; + + case NUM_KEY0: + { + DrawTextToCanvas(L"0", FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL); + DrawTextToCanvas(L"+", FONT_KEYPAD_PLUS, canvasNormal, POSITION_RIGHT, BUTTON_STATUS_NORMAL); + + r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS); + TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed"); + DrawTextToCanvas(L"0", FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED); + DrawTextToCanvas(L"+", FONT_KEYPAD_PLUS, canvasPressed, POSITION_RIGHT, BUTTON_STATUS_PRESSED); + } + break; + + case HASH_KEY: + { + DrawTextToCanvas(L"#", FONT_KEYPAD_NUMBER, canvasNormal, POSITION_LEFT, BUTTON_STATUS_NORMAL); + + r = SetPressedBgToCanvas(canvasPressed, IDB_KEYPAD_BUTTON_PRESS); + TryCatch(r == E_SUCCESS,,"DtmfKeyPadPanel::AddButtonsToKeypad() SetPressedBgToCanvas failed"); + DrawTextToCanvas(L"#", FONT_KEYPAD_NUMBER, canvasPressed, POSITION_LEFT, BUTTON_STATUS_PRESSED); + } + + break; + } + //Set the final Bitmap to Button + DialUtil::DrawCanvasToButton(&canvasNormal, &canvasPressed, pButton); + } + + AppLogDebug("EXIT"); + return E_SUCCESS; + +CATCH: + //RemoveAllControls(); + return r; +} + +result +DtmfKeyPadPanel::SetPressedBgToCanvas(Canvas& canvas, const String& bgImg) +{ + //Construct a canvas + AppResource* pAppResource = AppResource::GetInstance(); + Bitmap* pBitmap = pAppResource->GetBitmapN(bgImg); + if (pBitmap == null) + { + return E_FAILURE; + } + + if (pBitmap->IsNinePatchedBitmap()) + { + canvas.DrawNinePatchedBitmap(canvas.GetBounds(), *pBitmap); + } + else + { + pBitmap->SetScalingQuality(BITMAP_SCALING_QUALITY_MID); + pBitmap->Scale(Dimension(canvas.GetBounds().width, canvas.GetBounds().height)); + canvas.DrawBitmap(Point(0,0), *pBitmap); + } + delete pBitmap; + return E_SUCCESS; +} + +void +DtmfKeyPadPanel::DrawImageToCanvas(const String& image, Dimension imageDimention, Canvas& canvas, int pos) +{ + //create and scale bitmap + AppResource* pAppResource = AppResource::GetInstance(); + Bitmap* pBitmap = pAppResource->GetBitmapN(image); + pBitmap->SetScalingQuality(BITMAP_SCALING_QUALITY_MID); + pBitmap->Scale(imageDimention); + + //Find position to draw bitmap + Point bitmapPos(0, 0); + switch (pos) + { + case POSITION_LEFT: + { + bitmapPos.SetPosition(INITIAL_X_OFFSET + (LEFT_X_OFFSET - pBitmap->GetWidth()) / 2, (canvas.GetBounds().height - pBitmap->GetHeight()) / 2); + } + break; + + case POSITION_RIGHT: + { + bitmapPos.SetPosition(INITIAL_X_OFFSET + LEFT_X_OFFSET + ((RIGHT_X_OFFSET - pBitmap->GetWidth()) / 2), (canvas.GetBounds().height - pBitmap->GetHeight()) / 2); + } + break; + + case POSITION_CENTER: + { + bitmapPos.SetPosition((canvas.GetBounds().width - pBitmap->GetWidth()) / 2, (canvas.GetBounds().height - pBitmap->GetHeight()) / 2); + } + break; + } + + //draw bitmap + canvas.DrawBitmap(Rectangle(bitmapPos, Dimension(pBitmap->GetWidth(), pBitmap->GetHeight())), *pBitmap); + delete pBitmap; + pBitmap = null; +} + +void +DtmfKeyPadPanel::DrawTextToCanvas(const String& buttonText, int textFontStyle, Canvas& canvas, int pos, int buttonStatus) +{ + if (buttonText == null) + { + return; + } + + //get text font + Font* font = GetTextFontN(textFontStyle); + + //get text color + Color* textColor = GetTextColorN(textFontStyle, buttonStatus); + + //create text element + TextElement* pTextElement = new (std::nothrow) TextElement(); + pTextElement->Construct(buttonText); + pTextElement->SetTextColor(*textColor); + pTextElement->SetFont(*font); + + //get dimensions of the text + FloatDimension textDimension; + font->GetTextExtent(buttonText, buttonText.GetLength(), textDimension); + textDimension.height = textDimension.height + font->GetDescender(); + //create enriched text + EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText(); + pEnrichedText->Construct(textDimension); + pEnrichedText->Add(*pTextElement); + + //set the position of the text in canvas + Point textPos(0, 0); + switch (pos) + { + case POSITION_LEFT: + { + textPos.SetPosition(INITIAL_TEXT_X_OFFSET + ((LEFT_TEXT_X_OFFSET - pEnrichedText->GetWidth()) / 2), (canvas.GetBounds().height - pEnrichedText->GetHeight()) / 2); + } + break; + + case POSITION_RIGHT: + { + textPos.SetPosition(INITIAL_TEXT_X_OFFSET + LEFT_TEXT_X_OFFSET + LEFT_TEXT_X_MARGIN + ((RIGHT_TEXT_X_OFFSET - pEnrichedText->GetWidth()) / 2), (canvas.GetBounds().height - pEnrichedText->GetHeight()) / 2); + } + break; + + case POSITION_CENTER: + { + textPos.SetPosition((canvas.GetBounds().width - pEnrichedText->GetWidth()) / 2, (canvas.GetBounds().height - pEnrichedText->GetHeight()) / 2); + } + break; + } + + //Draw EnrichedText to canvas + canvas.DrawText(textPos, *pEnrichedText); + + // Cleans up + pEnrichedText->RemoveAll(true); + delete pEnrichedText; + delete textColor; + delete font; +} + +Font* +DtmfKeyPadPanel::GetTextFontN(int textFontStyle) +{ + Font* font = new (std::nothrow) Font(); + + switch (textFontStyle) + { + case FONT_KEYPAD_NUMBER: + { + font->Construct(FONT_STYLE_PLAIN, 112); + } + break; + + case FONT_KEYPAD_TEXT: + { + font->Construct(FONT_STYLE_PLAIN, 30); + } + break; + + case FONT_KEYPAD_P: + { + font->Construct(FONT_STYLE_PLAIN, 60); + } + break; + + case FONT_KEYPAD_PLUS: + { + font->Construct(FONT_STYLE_PLAIN, 64); + } + break; + } + return font; +} + +Color* +DtmfKeyPadPanel::GetTextColorN(int textColor, int buttonStatus) +{ + Color* color = new (std::nothrow) Color(); + + if (buttonStatus == BUTTON_STATUS_PRESSED) + { + color->SetColorComponents(255, 255, 255); + return color; + } + + switch (textColor) + { + case FONT_KEYPAD_NUMBER: + { + color->SetColorComponents(242, 242, 242); + } + break; + + case FONT_KEYPAD_TEXT: + { + color->SetColorComponents(197, 197, 197); + } + break; + + case FONT_KEYPAD_P: + case FONT_KEYPAD_PLUS: + { + color->SetColorComponents(218, 218, 218); + } + break; + } + return color; +} + +result +DtmfKeyPadPanel::OnTerminating(void) +{ + result r = E_SUCCESS; + //RemoveAllControls(); + return r; +} diff --git a/src/CallEndCallForm.cpp b/src/CallEndCallForm.cpp new file mode 100644 index 0000000..96dc7d2 --- /dev/null +++ b/src/CallEndCallForm.cpp @@ -0,0 +1,853 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallEndCallForm.cpp + * @brief End Call form implementation + */ +#include +#include +#include +#include +#include "CallApp.h" +#include "CallAppUtility.h" +#include "CallEndCallForm.h" +#include "CallButtonsPanel.h" +#include "CallPresentationModel.h" +#include "CallSceneRegister.h" +#include "CallTypes.h" +#include "CallAppControlRequestMgr.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; +using namespace Tizen::Graphics; +using namespace Tizen::Media; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui::Scenes; +using namespace Tizen::Social; +using namespace Tizen::System; +using namespace Tizen::Shell; + + +//constants +const int IDI_APP_END_TIMER = 3000; +const int W_PHOTO_LABEL = 720; +const int H_PHOTO_LABEL = 720; +const int X_PHOTO_LBL = 166; +const int Y_PHOTO_LBL = 232; +const int W_PHOTO_LBL = 388; +const int H_PHOTO_LBL = 388; +const int END_CALL_TIMER_VAL = 2000; +const int END_CALL_WAIT_TIMER_VAL = 500; +static const wchar_t* IDL_END_CALL_FORM = L"IDL_END_CALL_FORM"; +static const wchar_t* IDC_NUMBER1_LABEL = L"IDC_NUMBER1_LABEL"; +static const wchar_t* IDC_CALLER1_LABEL = L"IDC_CALLER1_LABEL"; +static const wchar_t* IDC_KEY_BG_LABEL = L"IDC_KEY_BG_LABEL"; +static const wchar_t* IDC_CALLER1_BIGPHOTO_LABEL = L"IDC_CALLER1_BIGPHOTO_LABEL"; +static const wchar_t* IDB_END_CALL_DEFAULT_ICON = L"C01-1_call_default_caller ID_720x720.png"; +static const wchar_t* IDC_VOICECALL_BUTTON = L"IDC_VOICECALL_BUTTON"; +static const wchar_t* IDC_VIDEOCALL_BUTTON = L"IDC_VIDEOCALL_BUTTON"; +static const wchar_t* IDC_ADD_TO_CONTACT_BUTTON = L"IDC_ADD_TO_CONTACT_BUTTON"; +static const wchar_t* IDC_MSG_BUTTON = L"IDC_MSG_BUTTON"; + + + +EndCallForm::EndCallForm(void) +: BaseForm(FORMTYPE_ENDCALL) +{ + __pCallButtonsPanel = null; + __pContactNumber = null; + __pEndCallEventTimer = null; + __pSmallPhotoLabel = null; + __isMsgAppControlLaunched = false; + __isContactAppControlLaunched = false; + __pAddressBook = null; +} + +EndCallForm::~EndCallForm(void) +{ + AppControl::StopAppControlResponseListener(this); + if (__pEndCallEventTimer != null) + { + __pEndCallEventTimer->Cancel(); + delete __pEndCallEventTimer; + __pEndCallEventTimer = null; + } + if (__pSmallPhotoLabel != null) + { + __pSmallPhotoLabel = null; + } + if (__pAddressBook != null) + { + delete __pAddressBook; + __pAddressBook = null; + } +} + +void +EndCallForm::Initialize(void) +{ + Construct(IDL_END_CALL_FORM); +} + +result +EndCallForm::OnInitializing(void) +{ + result r = E_SUCCESS; + + //initialize keypad and buttons + InitializeCallButtonsPanel(); + + __pEndCallEventTimer = new (std::nothrow) Tizen::Base::Runtime::Timer(); + r = __pEndCallEventTimer->Construct(*this); + + __pCallPresentor = CallPresentationModel::GetInstance(); + return r; +} + +void +EndCallForm::InitializeCallButtonsPanel(void) +{ + Label* pKeysBgLbl = static_cast(GetControl(IDC_KEY_BG_LABEL, true)); + Bitmap* pBgBitmap = AppUtility::GetBitmapFromResourcesN(IDB_BACKGROUND_BITMAP, pKeysBgLbl->GetWidth(), pKeysBgLbl->GetHeight()); + if (pBgBitmap != null) + { + pKeysBgLbl->SetBackgroundBitmap(*pBgBitmap); + } + if (__pCallButtonsPanel == null) + { + __pCallButtonsPanel = new (std::nothrow) CallButtonsPanel(); + __pCallButtonsPanel->ConstructPanel(this, FORMTYPE_ENDCALL); + __pCallButtonsPanel->SetBounds(pKeysBgLbl->GetBounds()); + AddControl(__pCallButtonsPanel); + } + + RelativeLayout* pRelativeLayout = dynamic_cast(GetPortraitLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM); + } + pRelativeLayout = dynamic_cast(GetLandscapeLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_LEFT_TO_LEFT); + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_RIGHT_TO_RIGHT); + } +} + +void +EndCallForm::AddKeyPadActionListener(const String& keyName, CommandIds cmdId) +{ + Button* pButton = static_cast(GetControl(keyName)); + if (pButton != null) + { + pButton->SetActionId(cmdId); + pButton->AddActionEventListener(*this); + } +} + +result +EndCallForm::OnTerminating(void) +{ + result r = E_SUCCESS; + + if (__pCallPresentor) + { + //Abort any AppControl Request running already to show incoming call screen + if (__pCallPresentor->IsAppControlRunning() == true) + { + __pCallPresentor->AbortAppControlRequest(); + } + __pCallPresentor = null; + } + return r; +} + +void +EndCallForm::OnActionPerformed(const Control& source, int actionId) +{ + SceneManager* pSceneManager = SceneManager::GetInstance(); + AppAssert(pSceneManager); + + switch (actionId) + { + case IDA_VOICE_CALL: + { + if(CallAppControlRequestMgr::GetInstance()->IsAppControlRunning() == true) + { + return; + } + if (__isMsgAppControlLaunched == true) + { + //AppControl already launched. + return; + } + //check if EndCallTimer is running, then cancel it + if(__pEndCallEventTimer != null) + { + __pEndCallEventTimer->Cancel(); + } + //make an outgoing call with given number + String* contactTxt = new (std::nothrow) String(*__pContactNumber); + //switch to dialing outgoing call form + ArrayList* pContact = new (std::nothrow) ArrayList(SingleObjectDeleter); + pContact->Construct(); + pContact->Add(contactTxt); + + //Check if dialing a call is possible + bool isSimInitialized = __pCallPresentor->CheckSimInitializationIsCompleted(); + if (isSimInitialized) + { + //Disable all buttons + Button* pButton = static_cast(GetControl(IDC_VIDEOCALL_BUTTON,true)); + pButton->SetEnabled(false); + pButton->Invalidate(true); + pButton = static_cast(GetControl(IDC_VOICECALL_BUTTON,true)); + pButton->SetEnabled(false); + pButton->Invalidate(true); + pButton = static_cast(GetControl(IDC_ADD_TO_CONTACT_BUTTON,true)); + if(pButton->GetShowState() == true) + { + pButton->SetEnabled(false); + pButton->Invalidate(true); + } + pButton = static_cast(GetControl(IDC_MSG_BUTTON,true)); + pButton->SetEnabled(false); + pButton->Invalidate(true); + //Check if dialing an emergency call + bool isEmergencyCall = __pCallPresentor->IsEmergencyNumber(*contactTxt, true); + if (isEmergencyCall) + { + pSceneManager->GoForward( ForwardSceneTransition( IDSCN_SCENE_OUT_EMERGENCYCALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pContact); + } + else + { + pSceneManager->GoForward( ForwardSceneTransition(IDSCN_SCENE_OUTCALL, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_DESTROY), pContact); + } + } + else + { + //Show error message Popup + HandleTelephonyError(ERROR_CODE_SIM_INITIALIZATION_FAILED); + } + } + break; + + case IDA_VIDEO_CALL: + //Make Video Call + break; + + case IDA_MESSAGE: + { + if (__isMsgAppControlLaunched == true) + { + //AppControl already launched. + return; + } + //launch message AppControl + __isMsgAppControlLaunched = __pCallPresentor->LaunchComposeMessageAppControl(*__pContactNumber, this); + if (__isMsgAppControlLaunched == true && __pEndCallEventTimer != null) + { + //cancel EndCallTimer, if AppControl request was successful. + __pEndCallEventTimer->Cancel(); + //Disable the call buttons + Button* pButton = static_cast(GetControl(IDC_VIDEOCALL_BUTTON,true)); + pButton->SetEnabled(false); + pButton->Invalidate(true); + pButton = static_cast(GetControl(IDC_VOICECALL_BUTTON,true)); + pButton->SetEnabled(false); + pButton->Invalidate(true); + pButton = static_cast(GetControl(IDC_ADD_TO_CONTACT_BUTTON,true)); + if(pButton->GetShowState() == true) + { + pButton->SetEnabled(false); + pButton->Invalidate(true); + } + } + } + break; + + case IDA_ADD_TO_CONTACTS: + { + if(__isContactAppControlLaunched == true) + { + //AppControl already launched. + AppLogDebug("__isContactAppControlLaunched == true"); + return; + } + HandleAddToContacts(); + Button* pButton = static_cast(GetControl(IDC_VIDEOCALL_BUTTON,true)); + pButton->SetEnabled(false); + pButton->Invalidate(true); + pButton = static_cast(GetControl(IDC_VOICECALL_BUTTON,true)); + pButton->SetEnabled(false); + pButton->Invalidate(true); + pButton = static_cast(GetControl(IDC_ADD_TO_CONTACT_BUTTON,true)); + if(pButton->GetShowState() == true) + { + pButton->SetEnabled(false); + pButton->Invalidate(true); + } + pButton = static_cast(GetControl(IDC_MSG_BUTTON,true)); + pButton->SetEnabled(false); + pButton->Invalidate(true); + } + break; + + default: + break; + } +} + +void +EndCallForm::HandleAddToContacts(void) +{ + AppLogDebug("Enter"); + + Contact* pContact = __pCallPresentor->GetContactN(*__pContactNumber); + //Launch Contact AppControl + String requestParameter; + if (pContact != null) + { + //View Contact + requestParameter.Append(pContact->GetRecordId()); + __isContactAppControlLaunched = __pCallPresentor->LaunchViewContactAppControl(requestParameter, this); + delete pContact; + pContact = null; + } + else + { + //Add To Contact + requestParameter.Append(*__pContactNumber); + __isContactAppControlLaunched = __pCallPresentor->LaunchAddContactAppControl(requestParameter, this); + } + + if (__isContactAppControlLaunched == true && __pEndCallEventTimer != null) + { + //cancel EndCallTimer, if AppControl request was success. + __pEndCallEventTimer->Cancel(); + } +} + +void +EndCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs) +{ + //set itself as listener + __pCallPresentor->SetTelEventListener(this); + //listen to Foreground events + CallApp* pPhoneApp = static_cast(CallApp::GetInstance()); + pPhoneApp->AddAppStateChangeListener(*this); + __isMsgAppControlLaunched = false; + __isContactAppControlLaunched = false; + + if(PowerManager::IsScreenOn() == false) + { + result res = E_FAILURE; + AppLogDebug("TurnScreenOn"); + res = PowerManager::TurnScreenOn(); + AppLogDebug("TurnScreenOn %d",res); + } + + if(LockManager::GetInstance()->IsLocked()) + { + AppLogDebug("Phone Locked"); + LockManager::GetInstance()->Unlock(); + } + + switch (__formType) + { + case FORMTYPE_ENDCALL: + { + //fetch ended call details + AppCallInfo* pEndCall = static_cast(pArgs->GetAt(0)); + + //contact number + __pContactNumber = new (std::nothrow) String(); + if(pEndCall->IsConferenceCall() == false) + { + if(pEndCall->GetContactNumber().IsEmpty() == false) + { + __pContactNumber->Append(pEndCall->GetContactNumber()); + } + else + { + __pContactNumber->Append(AppUtility::GetResourceString(IDS_NUMBER_UNKNOWN)); + } + } + else + { + String count; + count.Append(pEndCall->GetCallerListCount()); + count.Append(" "); + count.Append(AppUtility::GetResourceString(IDS_PEOPLE_STR)); + __pContactNumber->Append(count); + } + + //Fetch & show contact person details + ShowPersonDetails(*__pContactNumber, IDC_CALLER1_LABEL, IDC_CALLER1_BIGPHOTO_LABEL,pEndCall); + //If call is hidden means contact number is empty, + //or if call is from known number(i.e present in contacts db), Then do NOT show "Add to Contact" button. + if (pEndCall->GetContactNumber().IsEmpty() == false) + { + //Check if contact is deleted in mean time. + Contact* pContact = __pCallPresentor->GetContactN(pEndCall->GetContactNumber()); + //before setting check if the contact is deleted + if(pContact != null) + { + ShowViewContactButton(); + delete pContact; + pContact = null; + } + else + { + ShowAddContactButton(); + } + } + else + { + //Show AddToContact + ShowAddContactButton(); + } + + //Check if call is Emergency call or Hidden call, + //then disable all button in Call button panel. + if(pEndCall->IsConferenceCall() == false) + { + if (pEndCall->IsEmergency() == true || pEndCall->GetContactNumber().IsEmpty() == true) + { + __pCallButtonsPanel->SetEndCallPanelState(false); + } + else + { + __pCallButtonsPanel->SetEndCallPanelState(true); + } + } + else + { + __pCallButtonsPanel->SetEndCallPanelState(false); + } + + //check if we reached the end call form of an outgoing call then don't show add to contacts + if(pEndCall->GetCalllogType() == CALL_LOG_TYPE_VOICE_OUTGOING) + { + __pCallButtonsPanel->ShowOrHideAddtoContactsButton(false); + } + else if(pEndCall->GetCalllogType() == CALL_LOG_TYPE_VOICE_INCOMING) + { + if(pEndCall->GetContactNumber().IsEmpty() == false) + { + __pCallButtonsPanel->ShowOrHideAddtoContactsButton(true); + } + } + + } + break; + + default: + break; + } + + //Before starting end call timer check if messaging appcontrol was launched during incoming call + if (__pEndCallEventTimer && __pCallPresentor->IsAppControlRunning() == false) + { + __pEndCallEventTimer->Start(IDI_APP_END_TIMER); + } + + if (pArgs) + { + pArgs->RemoveAll(); + delete pArgs; + pArgs = null; + } + CallApp* pCallApp = static_cast(CallApp::GetInstance()); + pCallApp->SetTopMostWindow(false); + AddOrientationEventListener(*this); + __pAddressBook = AddressbookManager::GetInstance()->GetAddressbookN(); + //Add address book listener to listen to contacts changed events + if(__pAddressBook != null) + { + __pAddressBook->SetAddressbookChangeEventListener(this); + } +} + +void +EndCallForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId) +{ + if (__pEndCallEventTimer != null) + { + __pEndCallEventTimer->Cancel(); + } + if (__pContactNumber) + { + delete __pContactNumber; + __pContactNumber = null; + } + if (__pSmallPhotoLabel != null) + { + __pSmallPhotoLabel->SetShowState(false); + } + //remove contact change event listener + if(__pAddressBook != null) + { + __pAddressBook->SetAddressbookChangeEventListener(null); + } + //remove itself as listener + CallApp* pPhoneApp = static_cast(CallApp::GetInstance()); + pPhoneApp->RemoveAppStateChangeListener(*this); + RemoveOrientationEventListener(*this); +} + +result +EndCallForm::OnDraw(void) +{ + return E_SUCCESS; +} + +void +EndCallForm::ShowViewContactButton(void) +{ + __pCallButtonsPanel->ShowViewContactButton(); +} + +void +EndCallForm::ShowAddContactButton(void) +{ + __pCallButtonsPanel->ShowAddContactButton(); +} + +void +EndCallForm::ShowPhoneNumber(const String& phoneNumber, const String& lblName) +{ + String formattedNumber = phoneNumber; + Label* pContactLbl = static_cast(GetControl(lblName)); + pContactLbl->SetText(formattedNumber); +} + +void +EndCallForm::ShowPersonDetails(const String& phoneNumber, const String& nameLblName, const String& photoLblName, AppCallInfo* pCallInfo) +{ + //show phone number + ShowPhoneNumber(phoneNumber, IDC_NUMBER1_LABEL); + + Label* pNameLbl = static_cast(GetControl(nameLblName)); + Label* pPhotoLbl = static_cast(GetControl(photoLblName)); + + String* pDisplayName; + if(pCallInfo->IsConferenceCall() == false) + { + //fetch contact details based on phone number + pDisplayName = pCallInfo->FetchLatestCallerNameN(phoneNumber); + } + else + { + pDisplayName = new (std::nothrow) String(AppUtility::GetResourceString(IDS_CONFERENCE_CALL_STRING)); + } + Bitmap* pPhotoBitmap = null; + if(pCallInfo->IsConferenceCall() == false) + { + pPhotoBitmap = pCallInfo->FetchLatestCallerPhotoN(phoneNumber); + } + + //passing an empty string to SetText fails in label, + //if previously valid text has been set + if (pDisplayName != null && pDisplayName->IsEmpty() == true && pNameLbl->GetText().IsEmpty() == false) + { + pDisplayName->Append(L" "); + } + + // show display name on name Label + if (pDisplayName != null) + { + pNameLbl->SetText(*pDisplayName); + } + + // If record not found or no photo id present for user, + //fetch default bitmap. + if (pPhotoBitmap != null) + { + if(pPhotoBitmap->GetHeight() <= H_SMALL_PHOTO + && pPhotoBitmap->GetWidth() <= W_SMALL_PHOTO) + { + ShowThumbnailImage(pPhotoBitmap,photoLblName); + } + else + { + Canvas* pCanvas = new (std::nothrow) Canvas; + Rectangle canvasRect(Rectangle(0, 0, pPhotoLbl->GetBounds().width, pPhotoLbl->GetBounds().height)); + pCanvas->Construct(canvasRect); + //draw the contact bitmap + pCanvas->DrawBitmap(canvasRect,*pPhotoBitmap); + Bitmap* pNewPhotoId = new Bitmap(); + pNewPhotoId->Construct(*pCanvas, pCanvas->GetBounds()); + delete pCanvas; + + pPhotoLbl->SetBackgroundBitmap(*pNewPhotoId); + pPhotoLbl->Invalidate(true); + delete pNewPhotoId; + } + } + else + { + //Set Default Photo + Bitmap* pDefaultPhoto = null; + if(pCallInfo->IsConferenceCall() == false) + { + pDefaultPhoto = AppUtility::GetBitmapFromResourcesN(IDB_END_CALL_DEFAULT_ICON,W_PHOTO_LABEL,H_PHOTO_LABEL); + } + else + { + pDefaultPhoto = AppUtility::GetBitmapFromResourcesN(IDB_CONFERENCE_BG_ICON,W_CONFERENCE_PHOTO,H_CONFERENCE_PHOTO); + } + if (pDefaultPhoto != null) + { + pPhotoLbl->SetBackgroundBitmap(*pDefaultPhoto); + pPhotoLbl->Invalidate(true); + delete pDefaultPhoto; + } + } + RequestRedraw(true); + //free resources + if (pDisplayName) + { + delete pDisplayName; + pDisplayName = null; + } + if (pPhotoBitmap) + { + delete pPhotoBitmap; + pPhotoBitmap = null; + } +} + +void +EndCallForm::ShowThumbnailImage(const Bitmap* pPhotoId,const String& photoLabel) +{ + Label* pPhotoLbl = static_cast(GetControl(photoLabel)); + + if (pPhotoLbl != null && pPhotoId != null) + { + Canvas* pCanvas = new (std::nothrow) Canvas; + Bitmap* pBackground = AppUtility::GetBitmapFromResourcesN(IDB_CALL_THUMBNAIL_BACKGROUND,W_CALL_THUMBNAIL,H_CALL_THUMBNAIL); + Bitmap* pShadow = AppUtility::GetBitmapFromResourcesN(IDB_CALL_THUMBNAIL_SHADOW,W_CALL_THUMBNAIL_SHADOW,H_CALL_THUMBNAIL_SHADOW); + Rectangle canvasRect(Rectangle(0, 0, pPhotoLbl->GetBounds().width, pPhotoLbl->GetBounds().height)); + pCanvas->Construct(canvasRect); + //draw the back ground + pCanvas->DrawBitmap(canvasRect,*pBackground); + //draw shadow (to be enabled after correct shadow image is provided ) + //pCanvas->DrawBitmap(Rectangle((pPhotoLbl->GetBounds().width/2)-(W_CALL_THUMBNAIL_SHADOW/2), + // (pPhotoLbl->GetBounds().height/2)-(H_CALL_THUMBNAIL_SHADOW/2),W_CALL_THUMBNAIL_SHADOW,H_CALL_THUMBNAIL_SHADOW),*pShadow); + //draw the contact bitmap + pCanvas->DrawBitmap(Rectangle((pPhotoLbl->GetBounds().width/2)-(W_SMALL_PHOTO/2), + (pPhotoLbl->GetBounds().height/2)-(H_SMALL_PHOTO/2),W_SMALL_PHOTO,H_SMALL_PHOTO),*pPhotoId); + Bitmap* pNewPhotoId = new Bitmap(); + pNewPhotoId->Construct(*pCanvas, pCanvas->GetBounds()); + delete pCanvas; + + pPhotoLbl->SetBackgroundBitmap(*pNewPhotoId); + pPhotoLbl->Invalidate(true); + delete pNewPhotoId; + delete pBackground; + delete pShadow; + } +} + +void +EndCallForm::ShowCallersPhotoThumbnail(const Bitmap& pPhotoId) +{ + if (__pSmallPhotoLabel != null) + { + RemoveControl(__pSmallPhotoLabel); + __pSmallPhotoLabel = null; + } + //Draw Small Photo and show on small photo label + __pSmallPhotoLabel = new (std::nothrow) Label();//static_cast(GetControl(IDC_SMALL_PHOTO_LABEL)); + __pSmallPhotoLabel->Construct(Rectangle(X_PHOTO_LBL, Y_PHOTO_LBL, W_PHOTO_LBL, H_PHOTO_LBL), L""); + __pSmallPhotoLabel->SetBackgroundColor(Color(0,0,0)); + __pSmallPhotoLabel->SetBackgroundBitmap(pPhotoId); + // Add a Label to the Form + AddControl(__pSmallPhotoLabel); + __pSmallPhotoLabel->Invalidate(true); +} + +void +EndCallForm::OnTimerExpired(Tizen::Base::Runtime::Timer& timer) +{ + //goto initial scene or close application, since this was last active call. + HandleLastCallCompletion(); +} + +void +EndCallForm::OnAppControlCompleteResponseReceived(const AppId& appId, const String& operationId, AppCtrlResult appControlResult, const IMap* pExtraData) +{ + AppLogDebug("Enter"); + if (__isMsgAppControlLaunched == true) + { + //Message AppControl request completed. + __isMsgAppControlLaunched = false; + __pCallPresentor->AppControlRequestCompleted(); + } + if(__isContactAppControlLaunched == true) + { + //notify app control completed + __isContactAppControlLaunched = false; + __pCallPresentor->AppControlRequestCompleted(); + } + //AppControl completed, goto initial scene if present + //else exit. + HandleLastCallCompletion(); +} + +void +EndCallForm::HandleLastCallCompletion(void) +{ + //Check if message sending is in progress if yes + //wait for it to complete by restarting the timer + AppLogDebug("Enter"); + if(__pCallPresentor->IsMessageSendingInProgress() == true) + { + __pEndCallEventTimer->Start(END_CALL_WAIT_TIMER_VAL); + } + else + { + CallApp* pPhoneApp = (static_cast(UiApp::GetInstance())); + pPhoneApp->Terminate(); + } +} + +void +EndCallForm::OnForeground(void) +{ + AppLogDebug("Enter"); + //If Contact app control was launched + //as we do not know if it success or failed. + if(__isContactAppControlLaunched == true) + { + if(__pEndCallEventTimer != null) + { + __pEndCallEventTimer->Start(END_CALL_TIMER_VAL); + } + UpdatePersonDetail(); + //notify app control completed + __isContactAppControlLaunched = false; + __pCallPresentor->AppControlRequestCompleted(); + } + else if (__isMsgAppControlLaunched == true) + { + //Message AppControl request completed. + if(__pEndCallEventTimer != null) + { + __pEndCallEventTimer->Start(2000); + } + __isMsgAppControlLaunched = false; + __pCallPresentor->AppControlRequestCompleted(); + } + else if(__pCallPresentor->IsAppControlRunning() == true) + { + if(__pEndCallEventTimer != null) + { + __pEndCallEventTimer->Start(2000); + } + __pCallPresentor->AppControlRequestCompleted(); + } + //Enable all buttons + Button* pButton = static_cast(GetControl(IDC_VIDEOCALL_BUTTON,true)); + pButton->SetEnabled(false); + pButton->Invalidate(true); + pButton = static_cast(GetControl(IDC_VOICECALL_BUTTON,true)); + pButton->SetEnabled(true); + pButton->Invalidate(true); + pButton = static_cast(GetControl(IDC_ADD_TO_CONTACT_BUTTON,true)); + if(pButton->GetShowState() == true) + { + pButton->SetEnabled(true); + pButton->Invalidate(true); + } + pButton = static_cast(GetControl(IDC_MSG_BUTTON,true)); + pButton->SetEnabled(true); + pButton->Invalidate(true); + AppLogDebug("Exit"); +} + +void +EndCallForm::OnBackground(void) +{ + AppLogDebug("Enter"); +} + +void +EndCallForm::OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus) +{ + AppLogDebug("Enter"); + if (__pCallButtonsPanel != null) + { + //update position of call buttons panel + Label* pKeysBgLbl = static_cast(GetControl(IDC_KEY_BG_LABEL, true)); + __pCallButtonsPanel->SetBounds(pKeysBgLbl->GetBounds()); + //bring button on top + __pCallButtonsPanel->SetButtonPosition(); + RelativeLayout* pRelativeLayout = dynamic_cast(GetPortraitLayoutN()); + if (pRelativeLayout != null) + { + //pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_TOP_TO_TOP); + } + pRelativeLayout = dynamic_cast(GetLandscapeLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *pKeysBgLbl, RECT_EDGE_RELATION_LEFT_TO_LEFT); + pRelativeLayout->SetRelation(*__pCallButtonsPanel, *this, RECT_EDGE_RELATION_RIGHT_TO_RIGHT); + } + } +} + +void +EndCallForm::OnContactsChanged(const IList& contactChangeInfoList) +{ + UpdatePersonDetail(); +} + +void +EndCallForm::UpdatePersonDetail() +{ + AppLog("Enter"); + if (__pContactNumber != null && __pContactNumber->IsEmpty() == false) + { + AppCallInfo* ActiveCallInfo = new (std::nothrow) AppCallInfo(); + ActiveCallInfo->SetContactNumber(*__pContactNumber); + Contact* pContact = __pCallPresentor->GetContactN(*__pContactNumber); + if (pContact != null) + { + ActiveCallInfo->SetContactInfo(*pContact); + } + //before setting check if the contact is deleted + if(pContact != null) + { + ShowViewContactButton(); + delete pContact; + pContact = null; + } + else + { + ShowAddContactButton(); + } + ShowPersonDetails(*__pContactNumber, IDC_CALLER1_LABEL, IDC_CALLER1_BIGPHOTO_LABEL,ActiveCallInfo); + delete ActiveCallInfo; + } + AppLog("Exit"); +} diff --git a/src/CallErrorMsgPopup.cpp b/src/CallErrorMsgPopup.cpp new file mode 100644 index 0000000..e5c0257 --- /dev/null +++ b/src/CallErrorMsgPopup.cpp @@ -0,0 +1,267 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallErrorMsgPopup.cpp + * @brief Error message pop class + */ +#include +#include "CallAppUtility.h" +#include "CallErrorMsgPopup.h" +#include "CallTypes.h" + +using namespace Tizen::Base; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Graphics; +using namespace Tizen::Base::Utility; +using namespace Tizen::Base::Runtime; + +const int IDI_VERTICAL_LINE_SPACING = 20; +const int W_ERROR_MSG_POPUP = 720; +const int IDI_VERTICAL_MARGIN = 39; +static const wchar_t* IDL_ERROR_MSG_POPUP = L"IDL_ERROR_MSG_POPUP"; +static const wchar_t* IDC_MSG_TEXTBOX = L"IDC_MSG_TEXTBOX"; +static const wchar_t* IDS_DIAL_ERROR_MSG = L"IDS_DIAL_ERROR_MSG"; +static const wchar_t* IDS_JOIN_FAILED_ERROR_MSG = L"IDS_JOIN_FAILED_ERROR_MSG"; +static const wchar_t* IDS_REJECT_FAILED_ERROR_MSG = L"IDS_REJECT_FAILED_ERROR_MSG"; +static const wchar_t* IDS_CALL_SWAP_ERROR_MSG = L"IDS_CALL_SWAP_ERROR_MSG"; +static const wchar_t* IDS_END_PARTICIPANT_ERROR_MSG = L"IDS_END_PARTICIPANT_ERROR_MSG"; +static const wchar_t* IDS_SPLIT_PARTICIPANT_ERROR_MSG = L"IDS_SPLIT_PARTICIPANT_ERROR_MSG"; +static const wchar_t* IDS_SIM_INIT_ERROR_MSG = L"IDS_SIM_INIT_ERROR_MSG"; +static const wchar_t* IDS_EMERGENCY_CALLS_ONLY_ERROR_MSG = L"IDS_EMERGENCY_CALLS_ONLY_ERROR_MSG"; +static const wchar_t* IDS_INVALID_ARGS_ERROR_MSG = L"IDS_INVALID_ARGS_ERROR_MSG"; +static const wchar_t* IDS_TAPI_INIT_ERROR_MSG = L"IDS_TAPI_INIT_ERROR_MSG"; +static const wchar_t* IDS_GENERAL_TAPI_ERROR_MSG = L"IDS_GENERAL_TAPI_ERROR_MSG"; +static const wchar_t* IDS_LONG_BARRING_PWD_ERROR_MSG = L"IDS_LONG_BARRING_PWD_ERROR_MSG"; +static const wchar_t* IDS_INVALID_NUMBER_ERROR_MSG = L"IDS_INVALID_NUMBER_ERROR_MSG"; +static const wchar_t* IDS_GENERAL_ERROR_MSG = L"IDS_GENERAL_ERROR_MSG"; + +ErrorMsgPopup::ErrorMsgPopup(IPopupClosedEventListener* pEventListener) +: __pEventListener(pEventListener) +{ + __pTimer = null; +} + +ErrorMsgPopup::~ErrorMsgPopup(void) +{ + if (__pTimer) + { + __pTimer->Cancel(); + delete __pTimer; + __pTimer = null; + } +} + +void +ErrorMsgPopup::ConstructPopup(int errorCode) +{ + Construct(IDL_ERROR_MSG_POPUP); + //Fetch error message + String msg = FetchErrorMessage(errorCode); + + //Set text to Message box + TextBox* pMsgTxtBox = static_cast(GetControl(IDC_MSG_TEXTBOX)); + pMsgTxtBox->SetLineSpacing(1,1); + pMsgTxtBox->SetText(msg); + pMsgTxtBox->SetEnabled(false); + pMsgTxtBox->SetTextAlignment(ALIGNMENT_CENTER); + + Rectangle msgTxtBoxRect = pMsgTxtBox->GetBounds(); + //get no. of lines to show message + int noOfLines = pMsgTxtBox->GetLineCount(); + pMsgTxtBox->SetSize(msgTxtBoxRect.width,((noOfLines * msgTxtBoxRect.height) + IDI_VERTICAL_LINE_SPACING)); + + Dimension popUpDimen = pMsgTxtBox->GetSize(); + popUpDimen.width = W_ERROR_MSG_POPUP; + popUpDimen.height += (2 * IDI_VERTICAL_MARGIN); + SetSize(popUpDimen); + + SetControlAlwaysOnTop(*pMsgTxtBox,true); + RelativeLayout* relPopUpLayout = static_cast(GetLandscapeLayoutN()); + if(relPopUpLayout != null) + { + // Set Relations between msgtextbox and Popup + relPopUpLayout->SetCenterAligned(*pMsgTxtBox, CENTER_ALIGN_HORIZONTAL); + relPopUpLayout->SetCenterAligned(*pMsgTxtBox, CENTER_ALIGN_VERTICAL); + } + relPopUpLayout = static_cast(GetPortraitLayoutN()); + if(relPopUpLayout != null) + { + // Set Relations between msgtextbox and Popup + relPopUpLayout->SetCenterAligned(*pMsgTxtBox, CENTER_ALIGN_HORIZONTAL); + relPopUpLayout->SetCenterAligned(*pMsgTxtBox, CENTER_ALIGN_VERTICAL); + } + //construct timer + __pTimer = new (std::nothrow) Timer(); + __pTimer->Construct(*this); +} + +void +ErrorMsgPopup::ShowErrorMsgPopupN(int errorCode) +{ + //Construct the message popup + ConstructPopup(errorCode); + //Show popup message + ShowPopup(); +} + +void +ErrorMsgPopup::ShowPopup(void) +{ + __popupModalResult = 0; + //start timer to show popup + __pTimer->Start(2000); + SetShowState(true); + Show(); +} + +void +ErrorMsgPopup::OnTimerExpired(Tizen::Base::Runtime::Timer& timer) +{ + //Call default implementation of "Object.Equals()" + //returns true, if they are pointing to same address. + if (__pTimer->Equals(timer)) + { + SetShowState(false); + //notify the listener + __pEventListener->HandlePopupClosed(); + } +} + +String +ErrorMsgPopup::FetchErrorMessage(int errorCode) +{ + String msg(L""); + switch (errorCode) + { + case ERROR_NONE: + break; + + case ERROR_DIAL_FAILED: + { + msg.Append(AppUtility::GetResourceString(IDS_DIAL_ERROR_MSG)); + } + break; + + case ERROR_JOIN_FAILED: + { + msg.Append(AppUtility::GetResourceString(IDS_JOIN_FAILED_ERROR_MSG)); + } + break; + + case ERROR_REJECT_FAILED: + { + msg.Append(AppUtility::GetResourceString(IDS_REJECT_FAILED_ERROR_MSG)); + } + break; + + case ERROR_SWAP_FAILED: + { + msg.Append(AppUtility::GetResourceString(IDS_CALL_SWAP_ERROR_MSG)); + } + break; + + case ERROR_END_FROM_CONFERENCE_FAILED: + { + msg.Append(AppUtility::GetResourceString(IDS_END_PARTICIPANT_ERROR_MSG)); + } + break; + + case ERROR_SPLIT_FROM_CONFERENCE_FAILED: + { + msg.Append(AppUtility::GetResourceString(IDS_SPLIT_PARTICIPANT_ERROR_MSG)); + } + break; + + case ERROR_CODE_SIM_INITIALIZATION_FAILED: + { + msg.Append(AppUtility::GetResourceString(IDS_SIM_INIT_ERROR_MSG)); + } + break; + + case ERROR_NOT_EMERGENCY_NUM: + { + msg.Append(AppUtility::GetResourceString(IDS_EMERGENCY_CALLS_ONLY_ERROR_MSG)); + } + break; + + case ERROR_INVALID_INPUT: + { + msg.Append(AppUtility::GetResourceString(IDS_INVALID_ARGS_ERROR_MSG)); + } + break; + + case ERROR_TAPI_INIT_FAILED: + { + msg.Append(AppUtility::GetResourceString(IDS_TAPI_INIT_ERROR_MSG)); + } + break; + + case ERROR_TAPI_ERROR: + { + msg.Append(AppUtility::GetResourceString(IDS_GENERAL_TAPI_ERROR_MSG)); + } + break; + + case ERROR_BARRING_PWD_TOO_LONG: + { + msg.Append(AppUtility::GetResourceString(IDS_LONG_BARRING_PWD_ERROR_MSG)); + } + break; + + case ERROR_INVALID_NUMBER: + { + msg.Append(AppUtility::GetResourceString(IDS_INVALID_NUMBER_ERROR_MSG)); + } + break; + + case ERROR_FLIGHT_MODE_SET: + { + msg.Append(AppUtility::GetResourceString(IDS_FLIGHT_MODE_ON)); + } + break; + + case ERROR_USSD_NUMBER: + { + msg.Append(AppUtility::GetResourceString(IDS_USSD_NUMBER)); + } + break; + + case ERROR_SERVICE_UNAVAILABLE: + { + msg.Append(AppUtility::GetResourceString(IDS_SERVICE_UNAVAILABLE)); + } + break; + + case ERROR_CALL_BARRED: + { + msg.Append(AppUtility::GetResourceString(IDS_SERVICE_UNAVAILABLE)); + } + break; + + case ERROR_GENERAL: + default: + { + msg.Append(AppUtility::GetResourceString(IDS_GENERAL_ERROR_MSG)); + } + break; + } + + return msg; +} + + diff --git a/src/CallFormFactory.cpp b/src/CallFormFactory.cpp new file mode 100644 index 0000000..c3fc6ed --- /dev/null +++ b/src/CallFormFactory.cpp @@ -0,0 +1,129 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file FormFactory.cpp + * @brief Form factory class + */ +#include "CallPhoneFormFactory.h" +#include "CallSceneRegister.h" +//Call forms +#include "CallIncomingCallForm.h" +#include "CallActiveCallForm.h" +#include "CallConfCallerListForm.h" +#include "CallEndCallForm.h" + +using namespace Tizen::Base; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui::Scenes; + + + +FormFactory::FormFactory(void) +{ +} + +FormFactory::~FormFactory(void) +{ +} + +Form* +FormFactory::CreateFormN(const String& formId, const SceneId& sceneId) +{ + Form* pNewForm = null; + + SceneManager* pSceneManager = SceneManager::GetInstance(); + AppAssert(pSceneManager != null); + pNewForm = CreateVoiceCallForm(formId, sceneId); + return pNewForm; +} + +Form* +FormFactory::CreateVoiceCallForm(const String& formId, const SceneId& sceneId) +{ + SceneManager* pSceneManager = SceneManager::GetInstance(); + AppAssert(pSceneManager != null); + + BaseForm* pNewForm = null; + + if (formId == IDL_FORM_OUTCALL) + { + ActiveCallForm* pForm = new (std::nothrow) ActiveCallForm(FORMTYPE_OUTGOINGCALL); + pForm->Initialize(); + pSceneManager->AddSceneEventListener(sceneId, *pForm); + pNewForm = pForm; + } + else if (formId == IDL_FORM_OUT_EMERGENCYCALL) + { + ActiveCallForm* pForm = new (std::nothrow) ActiveCallForm(FORMTYPE_EMERGENCYOUTGOINGCALL); + pForm->Initialize(); + pSceneManager->AddSceneEventListener(sceneId, *pForm); + pNewForm = pForm; + } + else if (formId == IDL_FORM_ACTIVECALL) + { + ActiveCallForm* pForm = new (std::nothrow) ActiveCallForm(FORMTYPE_ACTIVECALL); + pForm->Initialize(); + pSceneManager->AddSceneEventListener(sceneId, *pForm); + pNewForm = pForm; + } + else if (formId == IDL_FORM_ACTIVE_EMERGENCYCALL) + { + ActiveCallForm* pForm = new (std::nothrow) ActiveCallForm(FORMTYPE_EMERGENCYACTIVECALL); + pForm->Initialize(); + pSceneManager->AddSceneEventListener(sceneId, *pForm); + pNewForm = pForm; + } + else if (formId == IDL_FORM_INCOMINGCALL) + { + IncomingCallForm* pForm = new (std::nothrow) IncomingCallForm(); + pForm->Initialize(); + pSceneManager->AddSceneEventListener(sceneId, *pForm); + pNewForm = pForm; + } + else if (formId == IDL_FORM_ENDCALL) + { + EndCallForm* pForm = new (std::nothrow) EndCallForm(); + pForm->Initialize(); + pSceneManager->AddSceneEventListener(sceneId, *pForm); + pNewForm = pForm; + } + else if (formId == IDL_FORM_CONFCALLLIST) + { + ConfCallerListForm* pForm = new (std::nothrow) ConfCallerListForm(); + pForm->Initialize(); + pSceneManager->AddSceneEventListener(sceneId, *pForm); + pNewForm = pForm; + } + else if (formId == IDL_FORM_MULTIPLEACTIVECALL) + { + ActiveCallForm* pForm = new (std::nothrow) ActiveCallForm(FORMTYPE_MULTIPLECALLS); + pForm->Initialize(); + pSceneManager->AddSceneEventListener(sceneId, *pForm); + pNewForm = pForm; + } + else if (formId == IDL_FORM_CONFCALL) + { + ActiveCallForm* pForm = new (std::nothrow) ActiveCallForm(FORMTYPE_ACTIVECONFCALL); + pForm->Initialize(); + pSceneManager->AddSceneEventListener(sceneId, *pForm); + pNewForm = pForm; + } + + return pNewForm; +} + + diff --git a/src/CallIncomingCallForm.cpp b/src/CallIncomingCallForm.cpp new file mode 100644 index 0000000..c3025c4 --- /dev/null +++ b/src/CallIncomingCallForm.cpp @@ -0,0 +1,1707 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallIncomingCallForm.cpp + * @brief Incoming Call form implementation + */ +#include +#include "CallIncomingCallForm.h" +#include "CallAppUtility.h" +#include "CallSettingsManager.h" +#include "CallPresentationModel.h" +#include "CallSceneRegister.h" +#include "CallTypes.h" +#include "CallApp.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Animations; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui::Scenes; + +//Constants +const int W_DIAL_BITMAP = 100; +const int H_DIAL_BITMAP = 100; +const int W_CREATE_BITMAP = 56; +const int H_CREATE_BITMAP = 56; +const int X_CREATE_BITMAP = 8; +const int Y_CREATE_BITMAP = 8; +const int W_MESSAGE_BG_BITMAP = 720; +const int H_MESSAGE_BG_BITMAP = 110; +const int W_ARROW_BITMAP = 28; +const int H_ARROW_BITMAP = 36; +const int W_MESSAGE_BITMAP = 50; +const int H_MESSAGE_BITMAP = 50; +const int X_MESSAGE_BITMAP = 185; +const int Y_MESSAGE_BITMAP = 50; +const int MESSAGE_TEXT_X_MARGIN = 20; +const int MESSAGE_TEXT_Y_MARGIN = 10; +const int SEND_TEXT_X_MARGIN = 78; +const int SEND_TEXT_Y_MARGIN = 20; +const int SEND_BUTTON_ROUND_DIMENSION = 5; +const int W_DIAL_LABEL = 188; +const int H_DIAL_LABEL = 188; +const int DIAL_ICON_X_OFFSET = 44; +const int DIAL_ICON_Y_OFFSET = 44; +const int REJECT_LABEL_X_OFFSET = 492; +const int X_CALL_PANEL = 20; +const int Y_CALL_PANEL = 110; +const int H_CALL_PANEL = 188; +const int Y_ARROW_LABEL = 79; +const int W_ARROW_LABEL = 20; +const int H_ARROW_LABEL = 32; +const int VALID_TOUCH_X_OFFSET = 158; +const int VALID_TOUCH_Y_OFFSET = 158; +const int X_ARROW_LABEL_STARTPOS = 206; // 188 circle wodth , 18 GUI spec +const int X_ARROW_REJECT_LABEL_STARTPOS = 454; // 700 width of panel - 20 offset - 188 circle width - 18 GUI spec - 20 width of image +const int ARROW_LABEL_X_MARGIN = 48; //20 width of arrow and 28 GUI spec +const int ACCEPT_LABEL_RELATIVE_POS = -384; //relative pos of accept labels right to reject labels left +const int MAX_LIST_HEIGHT = 448;//678; +const int H_REJECT_VIEW_FOOTER = 98; +const int X_LIST_TEXT_ITEM = 16; +const int W_LIST_TEXT_ITEM = 452; +const int H_LIST_TEXT_ITEM = 111; +const int X_SEND_TEXT_ITEM = 484; +const int Y_SEND_TEXT_ITEM = 20; +const int W_SEND_TEXT_ITEM = 220; +const int W_SEND_BUTTON_MARGIN = 14; +const int H_SEND_TEXT_ITEM = 72; +const int X_PHOTO_LBL = 166; +const int Y_PHOTO_LBL = 232; +const int W_PHOTO_LBL = 388; +const int H_PHOTO_LBL = 388; +const int W_PHOTO_LABEL = 720; +const int H_PHOTO_LABEL = 720; +const int COUNT_ARROW_ELEMENTS = 3; + +const unsigned int COLOR_SEND_BUTTON_PRESSED = Color32<130, 142, 150>::Value; +const unsigned int COLOR_SEND_BUTTON_NORMAL = Color32<64, 156, 211>::Value; +const unsigned int COLOR_SWIPE_PANEL = Color32<0, 0, 0, 255>::Value; +const unsigned int COLOR_LIST_TEXT_NORMAL = Color32<0, 0, 0>::Value; +const unsigned int COLOR_LIST_TEXT_PRESSED = Color32<249, 249, 249>::Value; + +const int FONT_SIZE_MSG_TXT = 44; + +static const wchar_t* IDL_INCOMING_CALL_FORM = L"IDL_INCOMING_CALL_FORM"; +static const wchar_t* IDB_REJECT_MESSAGE_BG = L"C01-1_Reject_message_bg.png"; +static const wchar_t* IDB_REJECT_MESSAGE_UP_ARROW = L"C01-1_Reject_message_arrow_01.png"; +static const wchar_t* IDB_REJECT_MESSAGE_DOWN_ARROW = L"C01-1_Reject_message_arrow_02.png"; +static const wchar_t* IDB_REJECT_MESSAGE_ICON = L"C01-1_icon_Reject_with_Message.png"; +static const wchar_t* IDB_ACCEPT_CIRCLE_ICON = L"C01-1_accept_left.png"; +static const wchar_t* IDB_REJECT_CIRCLE_ICON = L"C01-1_reject_right.png"; +static const wchar_t* IDB_CALL_ACCEPT_ICON = L"C01-1_accept_left_dial_answer.png"; +static const wchar_t* IDB_CALL_REJECT_ICON = L"C01-1_reject_right_dial_decline.png"; +static const wchar_t* IDB_ACCEPT_ARROW_ICON = L"C01-1_arrow_g.png"; +static const wchar_t* IDB_REJECT_ARROW_ICON = L"C01-1_arrow_r.png"; +static const wchar_t* IDB_CALL_BG = L"C01-1_calling_BG_01.png"; +static const wchar_t* IDC_REJECT_MESSAGE_BUTTON = L"IDC_REJECT_MESSAGE_BUTTON"; +static const wchar_t* IDC_REJECT_PANEL = L"IDC_REJECT_PANEL"; +static const wchar_t* IDC_REJECT_MESSAGE_CANCEL_BUTTON = L"IDC_REJECT_MESSAGE_CANCEL_BUTTON"; +static const wchar_t* IDC_MSG_TABLEVIEW = L"IDC_MSG_TABLEVIEW"; +static const wchar_t* IDC_CALLER_LABEL = L"IDC_CALLER_LABEL"; +static const wchar_t* IDC_NUMBER_LABEL = L"IDC_NUMBER_LABEL"; +static const wchar_t* IDC_BIG_PHOTO_LABEL = L"IDC_BIG_PHOTO_LABEL"; +static const wchar_t* IDC_CALLHANDEL_PANEL = L"IDC_CALLHANDEL_PANEL"; +static const wchar_t* IDC_ACCEPT_LABEL = L"IDC_ACCEPT_LABEL"; +static const wchar_t* IDC_REJECT_LEBEL = L"IDC_REJECT_LEBEL"; +static const wchar_t* IDC_ACCEPT_ARROW = L"IDC_ACCEPT_ARROW_"; +static const wchar_t* IDC_REJECT_ARROW = L"IDC_REJECT_ARROW_"; +const wchar_t* IDS_REJECT_MESSAGE_BTN = L"IDS_REJECT_MESSAGE_BTN"; +const wchar_t* IDS_LIST_SEND_BUTTON = L"IDS_LIST_SEND_BUTTON"; +const wchar_t* IDS_NO_MESSAGE_STR = L"IDS_NO_MESSAGE_STR"; + +const wchar_t* IDI_FORM_VISUAL_ELE_NAME = L"FormVisEle"; +const wchar_t* IDI_PANEL_VISUAL_ELE_NAME = L"PanelVisEle"; +const wchar_t* IDI_ACCEPT_VISUAL_ELE_NAME = L"AcceptVisEle"; +const wchar_t* IDI_REJECT_VISUAL_ELE_NAME = L"RejectVisEle"; +const wchar_t* IDI_ACCEPT_ARROW_VISUAL_ELE_NAME = L"AcceptArrowVisEle"; +const wchar_t* IDI_REJECT_ARROW_VISUAL_ELE_NAME = L"RejectArrowVisEle"; +const wchar_t* IDI_REJECT_FINAL_VISUAL_ELE_NAME = L"RejectFinalVisEle"; +const wchar_t* IDI_ACCEPT_FINAL_VISUAL_ELE_NAME = L"AcceptFinalVisEle"; + +IncomingCallForm::IncomingCallForm(void) + : BaseForm(FORMTYPE_INCOMINGCALL) +{ + __pActiveContactNo = null; + __pRejectMessageList = null; + __incomingCallHandle = -1; + __isAnswerCallStarted = false; + __isRejectCallStarted = false; + __pAcceptArrowLabelsList = null; + __pRejectArrowLabelsList = null; + __pRejectCircle = null; + __pAcceptCircle = null; + __pAcceptDial = null; + __pRejectDial = null; + __pAcceptArrow = null; + __pRejectArrow = null; + __pAcceptLabel = null; + __pRejectLabel = null; + __pAcceptArrowLabel = null; + __pRejectArrowLabel = null; + __pCallHandlePanel = null; + __pAcceptVisElem = null; + __pRejectVisElem = null; + __pRejectFinalVisElem = null; + __pAcceptFinalVisElem = null; + __pAcceptArrowVisElem = null; + __pRejectArrowVisElem = null; + __pCallPresentor = null; + __pOptionPopup = null; + __pSmallPhotoLabel = null; +} + +IncomingCallForm::~IncomingCallForm(void) +{ +} + +void +IncomingCallForm::Initialize(void) +{ + Construct(IDL_INCOMING_CALL_FORM); +} + +result +IncomingCallForm::OnInitializing(void) +{ + result r = E_SUCCESS; + Canvas* pCanvas = null; + + InitializeFooter(); + + + VisualElement* pFormVisElem = new (std::nothrow) VisualElement(); + r = pFormVisElem->Construct(); + pFormVisElem->SetBounds(FloatRectangle(GetBounds().x, GetBounds().y, GetBounds().width, GetBounds().height)); + pFormVisElem->SetShowState(true); + pFormVisElem->SetOpacity(1.0f); + pFormVisElem->SetName(IDI_FORM_VISUAL_ELE_NAME); + GetVisualElement()->AttachChild(*pFormVisElem); + pCanvas = pFormVisElem->GetCanvasN(); + if(pCanvas != null) + { + pCanvas->Clear(); + pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL); + pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL); + pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(GetBounds().x, GetBounds().y, GetBounds().width, GetBounds().height)); + delete pCanvas; + pCanvas = null; + } + HideRejectPanel(); + + + InitializeTableView(); + + __pAcceptCircle = AppUtility::GetBitmapFromResourcesN(IDB_ACCEPT_CIRCLE_ICON, W_DIAL_LABEL, H_DIAL_LABEL); + __pRejectCircle = AppUtility::GetBitmapFromResourcesN(IDB_REJECT_CIRCLE_ICON, W_DIAL_LABEL, H_DIAL_LABEL); + __pAcceptDial = AppUtility::GetBitmapFromResourcesN(IDB_CALL_ACCEPT_ICON, W_DIAL_BITMAP, H_DIAL_BITMAP); + __pRejectDial = AppUtility::GetBitmapFromResourcesN(IDB_CALL_REJECT_ICON, W_DIAL_BITMAP, H_DIAL_BITMAP); + __pAcceptArrow = AppUtility::GetBitmapFromResourcesN(IDB_ACCEPT_ARROW_ICON, W_ARROW_LABEL, H_ARROW_LABEL); + __pRejectArrow = AppUtility::GetBitmapFromResourcesN(IDB_REJECT_ARROW_ICON, W_ARROW_LABEL, H_ARROW_LABEL); + + + if(__pRejectDial == null) + { + AppLogDebug("Null"); + } + //Panel for showing accept and reject call buttons. + Label* pPhotoLbl = static_cast(GetControl(IDC_BIG_PHOTO_LABEL, true)); + int yPos = pPhotoLbl->GetX()+pPhotoLbl->GetHeight()+ Y_CALL_PANEL; + + __pCallHandlePanel = static_cast(GetControl(IDC_CALLHANDEL_PANEL, true)); + __pCallHandlePanel->AddTouchEventListener(*this); + __pCallHandlePanel->SetBackgroundColor(COLOR_SWIPE_PANEL); + VisualElement* pCallPanelVisElem = new (std::nothrow) VisualElement(); + r = pCallPanelVisElem->Construct(); + pCallPanelVisElem->SetBounds(FloatRectangle(__pCallHandlePanel->GetBoundsF())); + pCallPanelVisElem->SetShowState(true); + pCallPanelVisElem->SetOpacity(1.0f); + pCallPanelVisElem->SetName(IDI_PANEL_VISUAL_ELE_NAME); + __pCallHandlePanel->GetVisualElement()->AttachChild(*pCallPanelVisElem); + pCanvas = pCallPanelVisElem->GetCanvasN(); + if(pCanvas != null) + { + pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL); + pCanvas->Clear(); + pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL); + pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL); + pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(X_CALL_PANEL, yPos, GetClientAreaBounds().width, H_CALL_PANEL)); + delete pCanvas; + pCanvas = null; + } + //Lock Label for animation + __pAcceptLabel = static_cast(GetControl(IDC_ACCEPT_LABEL, true)); + __pAcceptLabel->SetBackgroundColor(COLOR_SWIPE_PANEL); + __pAcceptLabel->AddTouchEventListener(*this); + //left dial icon + __pAcceptVisElem = new (std::nothrow) VisualElement(); + r = __pAcceptVisElem->Construct(); + __pAcceptVisElem->SetBounds(FloatRectangle(0, 0, __pAcceptLabel->GetWidth(), __pAcceptLabel->GetHeight())); + __pAcceptVisElem->SetShowState(true); + __pAcceptVisElem->SetOpacity(1.0f); + __pAcceptVisElem->SetName(IDI_ACCEPT_VISUAL_ELE_NAME); + __pAcceptLabel->GetVisualElement()->AttachChild(*__pAcceptVisElem); + pCanvas = __pAcceptVisElem->GetCanvasN(); + if(pCanvas != null) + { + pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL); + pCanvas->Clear(); + pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL); + pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL); + pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL)); + pCanvas->DrawBitmap(Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL), *__pAcceptCircle); + pCanvas->DrawBitmap(Rectangle(DIAL_ICON_X_OFFSET, DIAL_ICON_Y_OFFSET, W_DIAL_BITMAP, H_DIAL_BITMAP), *__pAcceptDial); + delete pCanvas; + pCanvas = null; + } + //UnLock Label for animation + __pRejectLabel = static_cast(GetControl(IDC_REJECT_LEBEL, true)); + __pRejectLabel->AddTouchEventListener(*this); + __pRejectLabel->SetBackgroundColor(COLOR_SWIPE_PANEL); + SetControlAlwaysAtBottom(*__pCallHandlePanel, true); + + //Right reject icon + __pRejectVisElem = new (std::nothrow) VisualElement(); + r = __pRejectVisElem->Construct(); + __pRejectVisElem->SetBounds(FloatRectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL)); + __pRejectVisElem->SetShowState(true); + __pRejectVisElem->SetOpacity(1.00f); + __pRejectVisElem->SetName(IDI_REJECT_VISUAL_ELE_NAME); + __pRejectLabel->GetVisualElement()->AttachChild(*__pRejectVisElem); + pCanvas = __pRejectVisElem->GetCanvasN(); + if(pCanvas != null) + { + pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL); + pCanvas->Clear(); + pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL); + pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL); + pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL)); + pCanvas->DrawBitmap(Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL), *__pRejectCircle); + pCanvas->DrawBitmap(Rectangle(DIAL_ICON_X_OFFSET, DIAL_ICON_Y_OFFSET, W_DIAL_BITMAP, H_DIAL_BITMAP), *__pRejectDial); + delete pCanvas; + pCanvas = null; + } + + //! Constructs an array list to store the unlock labels + __pAcceptArrowLabelsList = new (std::nothrow) ArrayList(); + r = __pAcceptArrowLabelsList->Construct(); + + //! Constructs the Unlock Labels with the bitmap as background, adds the touch event Listener and adds them to the panel. + int x = X_ARROW_LABEL_STARTPOS; + for (int index = 0; index < COUNT_ARROW_ELEMENTS; index++) + { + String LabelName(IDC_ACCEPT_ARROW); + LabelName.Append(index+1); + __pAcceptArrowLabel = static_cast(GetControl(LabelName, true)); + __pAcceptArrowLabel->AddTouchEventListener(*this); + __pAcceptArrowLabelsList->Add(*__pAcceptArrowLabel); + __pAcceptArrowVisElem = new (std::nothrow) VisualElement(); + r = __pAcceptArrowVisElem->Construct(); + __pAcceptArrowVisElem->SetBounds(FloatRectangle(0, 0, W_ARROW_LABEL, H_ARROW_LABEL)); + __pAcceptArrowVisElem->SetShowState(true); + __pAcceptArrowVisElem->SetOpacity(0.0f); + String VisualEleName(IDI_ACCEPT_ARROW_VISUAL_ELE_NAME); + VisualEleName.Append(index); + __pAcceptArrowVisElem->SetName(VisualEleName); + __pAcceptArrowLabel->GetVisualElement()->AttachChild(*__pAcceptArrowVisElem); + pCanvas = __pAcceptArrowVisElem->GetCanvasN(); + if(pCanvas != null) + { + pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL); + pCanvas->Clear(); + pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL); + pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL); + pCanvas->DrawRectangle(Rectangle(0, 0, W_ARROW_LABEL, H_ARROW_LABEL)); + pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(0, 0, W_ARROW_LABEL, H_ARROW_LABEL)); + pCanvas->DrawBitmap(Rectangle(0, 0, W_ARROW_LABEL, H_ARROW_LABEL), *__pAcceptArrow); + delete pCanvas; + pCanvas = null; + } + x += ARROW_LABEL_X_MARGIN; + } + //! Constructs an array list to store the unlock labels + __pRejectArrowLabelsList = new (std::nothrow) ArrayList(); + r = __pRejectArrowLabelsList->Construct(); + + x = X_ARROW_REJECT_LABEL_STARTPOS; + for (int index = 0; index < COUNT_ARROW_ELEMENTS; index++) + { + String LabelName(IDC_REJECT_ARROW); + LabelName.Append(index+1); + __pRejectArrowLabel = static_cast(GetControl(LabelName, true)); + __pRejectArrowLabel->AddTouchEventListener(*this); + __pRejectArrowLabelsList->Add(*__pRejectArrowLabel); + __pRejectArrowVisElem = new (std::nothrow) VisualElement(); + r = __pRejectArrowVisElem->Construct(); + __pRejectArrowVisElem->SetBounds(FloatRectangle(0, 0, W_ARROW_LABEL, H_ARROW_LABEL)); + __pRejectArrowVisElem->SetShowState(true); + __pRejectArrowVisElem->SetOpacity(0.0f); + String VisualEleName(IDI_REJECT_ARROW_VISUAL_ELE_NAME); + VisualEleName.Append(index); + __pRejectArrowVisElem->SetName(VisualEleName); + __pRejectArrowLabel->GetVisualElement()->AttachChild(*__pRejectArrowVisElem); + pCanvas = __pRejectArrowVisElem->GetCanvasN(); + if(pCanvas != null) + { + pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL); + pCanvas->Clear(); + pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL); + pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL); + pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(0, 0, W_ARROW_LABEL, H_ARROW_LABEL)); + pCanvas->DrawBitmap(Rectangle(0, 0, W_ARROW_LABEL, H_ARROW_LABEL), *__pRejectArrow); + delete pCanvas; + pCanvas = null; + } + x -= ARROW_LABEL_X_MARGIN; + } + + + return r; +} + +void +IncomingCallForm::InitializeFooter(void) +{ + Footer* pFooter = GetFooter(); + FooterItem footerItemCreate; + + SetFormBackEventListener(this); + if(pFooter != null) + { + pFooter->SetStyle(FOOTER_STYLE_BUTTON_TEXT); + pFooter->AddActionEventListener(*this); + + footerItemCreate.Construct(IDA_CREATE_REJECT_CALL_MESSAGE); + footerItemCreate.SetText(AppUtility::GetResourceString(IDS_REJECT_MESSAGE_CREATE)); + pFooter->AddItem(footerItemCreate); + pFooter->SetShowState(false); + } +} + +void +IncomingCallForm::ShowRejectMessageFooter(void) +{ + Footer* pFooter = GetFooter(); + if(pFooter != null) + { + AppLogDebug("SetShowState"); + pFooter->SetShowState(true); + + } +} + +void +IncomingCallForm::HideRejectMessageFooter(void) +{ + Footer* pFooter = GetFooter(); + if(pFooter != null) + { + pFooter->SetShowState(false); + } +} + +result +IncomingCallForm::OnTerminating(void) +{ + result r = E_SUCCESS; + + if (__pRejectMessageList != null) + { + delete __pRejectMessageList; + __pRejectMessageList = null; + } + if (__pActiveContactNo != null) + { + delete __pActiveContactNo; + __pActiveContactNo = null; + } + __incomingCallHandle = -1; + __pCallPresentor = null; + + /* Deleting fails in A4RC* SDK. Remove if not necessary + if (__pAcceptVisElem != null) + { + __pAcceptVisElem->Destroy(); + __pAcceptVisElem = null; + } + + if (__pRejectVisElem != null) + { + __pRejectVisElem->Destroy(); + __pRejectVisElem = null; + } + + if (__pRejectFinalVisElem != null) + { + __pRejectFinalVisElem->Destroy(); + __pRejectFinalVisElem = null; + } + + if (__pAcceptFinalVisElem != null) + { + __pAcceptFinalVisElem->Destroy(); + __pAcceptFinalVisElem = null; + } + + for (int i = 0; i < 7; i++) + { + __pRejectArrowLabel = static_cast(__pRejectArrowLabelsList->GetAt(i)); + __pRejectArrowVisElem = __pRejectArrowLabel->GetVisualElement(); + if (__pRejectArrowVisElem != null) + { + __pRejectArrowVisElem->Destroy(); + __pRejectArrowVisElem = null; + } + + __pAcceptArrowLabel = static_cast(__pAcceptArrowLabelsList->GetAt(i)); + __pAcceptArrowVisElem = __pAcceptArrowLabel->GetVisualElement(); + if (__pAcceptArrowVisElem != null) + { + __pAcceptArrowVisElem->Destroy(); + __pAcceptArrowVisElem = null; + } + } + + if (__pAcceptArrowVisElem != null) + { + __pAcceptArrowVisElem = null; + } + + if (__pRejectArrowVisElem != null) + { + __pRejectArrowVisElem = null; + } +*/ + if (__pAcceptArrowLabelsList != null) + { + __pAcceptArrowLabelsList->RemoveAll(false); + delete __pAcceptArrowLabelsList; + __pAcceptArrowLabelsList = null; + } + + if (__pRejectArrowLabelsList != null) + { + __pRejectArrowLabelsList->RemoveAll(false); + delete __pRejectArrowLabelsList; + __pRejectArrowLabelsList = null; + } + + if (__pRejectCircle != null) + { + delete __pRejectCircle; + __pRejectCircle = null; + } + + if (__pAcceptCircle != null) + { + delete __pAcceptCircle; + __pAcceptCircle = null; + } + + if (__pAcceptDial != null) + { + delete __pAcceptDial; + __pAcceptDial = null; + } + + if (__pRejectDial != null) + { + delete __pRejectDial; + __pRejectDial = null; + } + + if (__pAcceptArrow != null) + { + delete __pAcceptArrow; + __pAcceptArrow = null; + } + + if (__pRejectArrow != null) + { + delete __pRejectArrow; + __pRejectArrow = null; + } + __pCallHandlePanel->RemoveTouchEventListener(*this); + __pAcceptLabel->RemoveTouchEventListener(*this); + __pRejectLabel->RemoveTouchEventListener(*this); + __pAcceptArrowLabel->RemoveTouchEventListener(*this); + __pRejectArrowLabel->RemoveTouchEventListener(*this); + __pAcceptLabel = null; + __pRejectLabel = null; + __pAcceptArrowLabel = null; + __pRejectArrowLabel = null; + __pCallHandlePanel = null; + return r; +} + +void +IncomingCallForm::ShowRejectMessagePanel(void) + { + Panel* pKeysPanel = static_cast(GetControl(IDC_REJECT_PANEL)); + if (pKeysPanel) + { + pKeysPanel->SetShowState(true); + SetRejectMessagePanelBounds(); + + Button* pButtonReject = static_cast(pKeysPanel->GetControl(IDC_REJECT_MESSAGE_CANCEL_BUTTON)); + pButtonReject->SetActionId(IDA_CANCEL_REJECT_CALL_MESSAGE_PANEL); + pButtonReject->AddActionEventListener(*this); + pButtonReject->SetEnabled(true); + //pButtonReject->SetFocus(); + FloatRectangle originalrect = pButtonReject->GetBoundsF(); + FloatRectangle allignedrect = CoordinateSystem::AlignToDevice(pButtonReject->GetBoundsF()); + pButtonReject->SetBounds(allignedrect); + pButtonReject->Invalidate(true); + + ShowRejectMessageFooter(); + + + //pKeysPanel->SetFocus(); + pKeysPanel->Draw(); + } + Button* pButtonRejectMessage = static_cast(GetControl(IDC_REJECT_MESSAGE_BUTTON)); + if (pButtonRejectMessage) + { + pButtonRejectMessage->SetShowState(false); + pButtonRejectMessage->Invalidate(true); + pButtonRejectMessage->Draw(); + } + } +void +IncomingCallForm::HideRejectMessagePanel(void) +{ + HideRejectPanel(); + Button* pButtonRejectMessage = static_cast(GetControl(IDC_REJECT_MESSAGE_BUTTON)); + if (pButtonRejectMessage) + { + pButtonRejectMessage->SetShowState(true); + FloatRectangle originalrect = pButtonRejectMessage->GetBoundsF(); + FloatRectangle allignedrect = CoordinateSystem::AlignToDevice(pButtonRejectMessage->GetBoundsF()); + pButtonRejectMessage->SetBounds(allignedrect); + pButtonRejectMessage->Invalidate(true); + RelativeLayout* pRelativeLayout = dynamic_cast(GetLandscapeLayoutN()); + if (pRelativeLayout != null) + { + pRelativeLayout->SetRelation(*pButtonRejectMessage,*this,RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM); + pRelativeLayout->Update(); + delete pRelativeLayout; + } + } +} + +void +IncomingCallForm::SetRejectMessagePanelBounds(void) +{ + Panel* pKeysPanel = static_cast(GetControl(IDC_REJECT_PANEL)); + if(pKeysPanel) + { + TableView* pMessageList = static_cast(pKeysPanel->GetControl(IDC_MSG_TABLEVIEW)); + Rectangle tmpRect = pMessageList->GetBounds(); + SetControlAlwaysOnTop(*pKeysPanel,true); + //Set Height to Reject Message Panel + int listHeight = H_LIST_NORMAL_MENU_ITEM; //If no messages + if(__pRejectMessageList != null && __pRejectMessageList->GetCount() > 0) + { + listHeight = H_LIST_NORMAL_MENU_ITEM * (__pRejectMessageList->GetCount()); //multiply by number of items + } + if (listHeight > MAX_LIST_HEIGHT) + { + listHeight = MAX_LIST_HEIGHT; + } + + pMessageList->SetBounds(tmpRect.x, tmpRect.y, tmpRect.width, listHeight); + pMessageList->RefreshAllItems(); + tmpRect = pKeysPanel->GetBounds(); + pKeysPanel->SetBounds(tmpRect.x, tmpRect.y, tmpRect.width, H_MESSAGE_BG_BITMAP /*+ H_REJECT_VIEW_FOOTER*/ + listHeight); + } +} + +void +IncomingCallForm::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case IDA_SHOW_REJECT_CALL_MESSAGE_PANEL: // applicable in all form states + { + ShowRejectMessagePanel(); + } + break; + + case IDA_CREATE_REJECT_CALL_MESSAGE: + { + if(__pCallPresentor->IsAppControlRunning() == false) + { + __pCallPresentor->RejectCall(__incomingCallHandle, true,*__pActiveContactNo); + /*ArrayListT* pCallList = static_cast*>(__pCallPresentor->GetCallListN()); + if(pCallList != null && pCallList->GetCount() > 0) + { + __pCallPresentor->HandleCallConnected(*pCallList); + } + pCallList = null;*/ + } + } + break; + + case IDA_CANCEL_REJECT_CALL_MESSAGE_PANEL: + { + HideRejectMessagePanel(); + } + break; + + case IDA_SEND_REJECT_MSG1: + case IDA_SEND_REJECT_MSG2: + case IDA_SEND_REJECT_MSG3: + case IDA_SEND_REJECT_MSG4: + case IDA_SEND_REJECT_MSG5: + case IDA_SEND_REJECT_MSG6: + { + __pCallPresentor->RejectCall(__incomingCallHandle, false,*__pActiveContactNo); + String textToBeSent; + //calculate msgIndex + int msgIndex = IDA_SEND_REJECT_MSG1; + msgIndex = actionId - msgIndex; + __pRejectMessageList->GetAt(msgIndex, textToBeSent); + __pCallPresentor->SendMessage(textToBeSent,*__pActiveContactNo); + } + break; + + default: + break; + } +} + +void +IncomingCallForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs) +{ + AppLogDebug("Enter"); + AddOrientationEventListener(*this); + //Get Reject list from Settings Manager + IMapT* pMsgMap = SettingsManager::GetInstance()->GetRejectMessageListN(); + if(pMsgMap != null) + { + if (__pRejectMessageList != null) + { + delete __pRejectMessageList; + __pRejectMessageList = null; + } + __pRejectMessageList = pMsgMap->GetValuesN(); + delete pMsgMap; + pMsgMap = null; + } + //No reject messages + else + { + if (__pRejectMessageList != null) + { + delete __pRejectMessageList; + __pRejectMessageList = null; + } + } + //listen to Foreground events + CallApp* pPhoneApp = static_cast(CallApp::GetInstance()); + pPhoneApp->AddAppStateChangeListener(*this); + if(__pCallPresentor == null) + { + __pCallPresentor = CallPresentationModel::GetInstance(); + } + __pCallPresentor->SetTelEventListener(this); + //Abort any AppControl Request running already to show incoming call screen + if (__pCallPresentor->IsAppControlRunning() == true) + { + __pCallPresentor->AbortAppControlRequest(); + } + + HideRejectPanel(); + + if(__pAcceptLabel->GetVisualElement()->GetChild(IDI_ACCEPT_VISUAL_ELE_NAME,true) == null) + { + __pAcceptLabel->GetVisualElement()->AttachChild(*__pAcceptVisElem); + } + if(__pRejectLabel->GetVisualElement()->GetChild(IDI_REJECT_VISUAL_ELE_NAME,true) == null) + { + __pRejectLabel->GetVisualElement()->AttachChild(*__pRejectVisElem); + } + + __pAcceptVisElem->SetOpacity(1.0f); + __pRejectVisElem->SetOpacity(1.00f); + for (int i = 0; i < COUNT_ARROW_ELEMENTS; i++) + { + __pRejectArrowLabel = static_cast(__pRejectArrowLabelsList->GetAt(i)); + String RejectVisualEleName(IDI_REJECT_ARROW_VISUAL_ELE_NAME); + RejectVisualEleName.Append(i); + __pRejectArrowVisElem = __pRejectArrowLabel->GetVisualElement()->GetChild(RejectVisualEleName,true); + __pAcceptArrowLabel = static_cast(__pAcceptArrowLabelsList->GetAt(i)); + String AcceptVisualEleName(IDI_ACCEPT_ARROW_VISUAL_ELE_NAME); + AcceptVisualEleName.Append(i); + __pAcceptArrowVisElem = __pAcceptArrowLabel->GetVisualElement()->GetChild(AcceptVisualEleName,true); + switch(i) + { + case 0: + __pAcceptArrowVisElem->SetOpacity(0.6f); + __pRejectArrowVisElem->SetOpacity(0.6f); + break; + case 1: + __pAcceptArrowVisElem->SetOpacity(0.8f); + __pRejectArrowVisElem->SetOpacity(0.8f); + break; + case 2: + __pAcceptArrowVisElem->SetOpacity(1.0f); + __pRejectArrowVisElem->SetOpacity(1.0f); + break; + } + + } + + + if (pArgs != null) + { + //get Call Info + AppCallInfo* pIncomingCall = static_cast(pArgs->GetAt(0)); + if (pIncomingCall != null) + { + //start alert with contact's custom ringtone + __pCallPresentor->StartAlert(*pIncomingCall); + //show contact number + String contactNo; + contactNo.Append(pIncomingCall->GetContactNumber()); + if (__pActiveContactNo) + { + delete __pActiveContactNo; + __pActiveContactNo = null; + } + __incomingCallHandle = pIncomingCall->GetCallHandle()->ToLong(); + __pActiveContactNo = new (std::nothrow) String(); + + if(contactNo.IsEmpty()) + { + AppLogDebug("Number empty"); + contactNo.Append(AppUtility::GetResourceString(IDS_NUMBER_UNKNOWN)); + AppLogDebug("%ls",contactNo.GetPointer()); + } + __pActiveContactNo->Append(contactNo); + //Show person details + ShowPersonDetails(*__pActiveContactNo, IDC_NUMBER_LABEL, IDC_CALLER_LABEL, pIncomingCall); + //Check if incoming call is hidden call, then do not show "Reject with Message" button + Button* pButtonRejectMessage = static_cast(GetControl(IDC_REJECT_MESSAGE_BUTTON)); + if (pButtonRejectMessage) + { + //for hidden call, contact number is not present + bool showRejectMsgButton = (pIncomingCall->GetContactNumber().IsEmpty() == false); + pButtonRejectMessage->SetShowState(showRejectMsgButton); + pButtonRejectMessage->Invalidate(true); + } + } + pArgs->RemoveAll(); + delete pArgs; + pArgs = null; + } + CallApp* pCallApp = static_cast(CallApp::GetInstance()); + pCallApp->SetTopMostWindow(true); + Button* pButtonRejectMessage = static_cast(GetControl(IDC_REJECT_MESSAGE_BUTTON)); + if (pButtonRejectMessage) + { + SetBitmapToRejectMessageButton(IDS_REJECT_MESSAGE_BTN,IDB_REJECT_MESSAGE_BG, + IDB_REJECT_MESSAGE_UP_ARROW, IDB_REJECT_MESSAGE_ICON, false, false); + SetBitmapToRejectMessageButton(IDS_REJECT_MESSAGE_BTN,IDB_REJECT_MESSAGE_BG, + IDB_REJECT_MESSAGE_UP_ARROW, IDB_REJECT_MESSAGE_ICON, false, true); + pButtonRejectMessage->SetActionId(IDA_SHOW_REJECT_CALL_MESSAGE_PANEL); + pButtonRejectMessage->AddActionEventListener(*this); + } + + //This called here to handle the case when incoming call comes when + // add call is in foreground. + //Uncommenting for N_SE-50029 + __pCallPresentor->OnAppForeground(); + +} + +void +IncomingCallForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId) +{ + RemoveOrientationEventListener(*this); + if (__pSmallPhotoLabel != null) + { + RemoveControl(*__pSmallPhotoLabel); + __pSmallPhotoLabel = null; + } + for (int i = 0; i < COUNT_ARROW_ELEMENTS; i++) + { + __pRejectArrowLabel = static_cast(__pRejectArrowLabelsList->GetAt(i)); + String RejectVisualEleName(IDI_REJECT_ARROW_VISUAL_ELE_NAME); + RejectVisualEleName.Append(i); + __pRejectArrowVisElem = __pRejectArrowLabel->GetVisualElement()->GetChild(RejectVisualEleName,true); + __pRejectArrowVisElem->SetOpacity(0.0f); + __pAcceptArrowLabel = static_cast(__pAcceptArrowLabelsList->GetAt(i)); + String AcceptVisualEleName(IDI_ACCEPT_ARROW_VISUAL_ELE_NAME); + AcceptVisualEleName.Append(i); + __pAcceptArrowVisElem = __pAcceptArrowLabel->GetVisualElement()->GetChild(AcceptVisualEleName,true); + __pAcceptArrowVisElem->SetOpacity(0.0f); + } + if(__pAcceptLabel != null) + { + if(__pAcceptLabel->GetVisualElement()->GetChild(IDI_ACCEPT_FINAL_VISUAL_ELE_NAME,true) != null) + { + AppLogDebug("__pAcceptLabel Detatach child"); + __pAcceptLabel->GetVisualElement()->DetachChild(*__pAcceptFinalVisElem); + } + } + if(__pRejectLabel != null) + { + if(__pRejectLabel->GetVisualElement()->GetChild(IDI_REJECT_FINAL_VISUAL_ELE_NAME,true) != null) + { + AppLogDebug("__pRejectLabel Detatach child"); + __pRejectLabel->GetVisualElement()->DetachChild(*__pRejectFinalVisElem); + } + + } + CallApp* pCallApp = static_cast(CallApp::GetInstance()); + pCallApp->RemoveAppStateChangeListener(*this); +} + +result +IncomingCallForm::OnDraw(void) +{ + Bitmap* pBackgroundWp = null; + // get a Canvas instance + Canvas* pCanvas = GetCanvasN(); + + pBackgroundWp = AppResource::GetInstance()->GetBitmapN(IDB_CALL_BG); + + if (pCanvas) + { + + if (pBackgroundWp) + { + pCanvas->DrawBitmap(pCanvas->GetBounds(), *pBackgroundWp); + } + } + + delete pBackgroundWp; + pBackgroundWp = null; + + delete pCanvas; + pCanvas = null; + + return E_SUCCESS; +} + +void +IncomingCallForm::HideRejectPanel(void) +{ + Panel* pKeysPanel = static_cast(GetControl(IDC_REJECT_PANEL)); + if (pKeysPanel) + { + pKeysPanel->SetShowState(false); + Button* pButtonReject = static_cast(pKeysPanel->GetControl(IDC_REJECT_MESSAGE_CANCEL_BUTTON)); + pButtonReject->SetActionId(IDA_CANCEL_REJECT_CALL_MESSAGE_PANEL); + pButtonReject->AddActionEventListener(*this); + SetBitmapToRejectMessageButton(IDS_REJECT_MESSAGE_BTN,IDB_REJECT_MESSAGE_BG, + IDB_REJECT_MESSAGE_DOWN_ARROW, IDB_REJECT_MESSAGE_ICON, true, false); + SetBitmapToRejectMessageButton(IDS_REJECT_MESSAGE_BTN,IDB_REJECT_MESSAGE_BG, + IDB_REJECT_MESSAGE_DOWN_ARROW, IDB_REJECT_MESSAGE_ICON, true, true); + + HideRejectMessageFooter(); + pKeysPanel->Invalidate(true); + } +} + +void +IncomingCallForm::InitializeTableView(void) +{ + Panel* pKeysPanel = static_cast(GetControl(IDC_REJECT_PANEL)); + TableView* pMessageList = static_cast(pKeysPanel->GetControl(IDC_MSG_TABLEVIEW)); + pMessageList->SetItemProvider(this); + pMessageList->AddTableViewItemEventListener(*this); +} + +/////////////////////////////////////////////////////////////////////////////// +///// Table View Functionality supporting functions ///// +////////////////////////////////////////////////////////////////////////////// +int +IncomingCallForm::GetItemCount(void) +{ + if(__pRejectMessageList != null && __pRejectMessageList->GetCount() > 0) + { + return (__pRejectMessageList->GetCount()); + } + return 1; +} + +TableViewItem* +IncomingCallForm::CreateItem(int itemIndex, int itemWidth) +{ + //create a new item + TableViewItem* pItem = new (std::nothrow) TableViewItem(); + pItem->Construct(Dimension(itemWidth, H_LIST_NORMAL_MENU_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL); + + //Message text item rectangle + //Rectangle itemRect(X_LIST_TEXT_ITEM, 0, W_LIST_TEXT_ITEM, H_LIST_NORMAL_MENU_ITEM); + Rectangle itemRect(X_LIST_TEXT_ITEM, 0, itemWidth - W_SEND_BUTTON_MARGIN - W_SEND_TEXT_ITEM, H_LIST_NORMAL_MENU_ITEM); + + //Message + String itemName(L""); + bool isShowSendButton = true; + if(__pRejectMessageList != null && __pRejectMessageList->GetCount() > 0) + { + __pRejectMessageList->GetAt(itemIndex, itemName); + } + else + { + itemName.Append(AppUtility::GetResourceString(IDS_NO_MESSAGE_STR)); + isShowSendButton = false; + } + + Label* pMsgLbl = new (std::nothrow) Label(); + pMsgLbl->Construct(itemRect, itemName); + pMsgLbl->SetTextHorizontalAlignment(ALIGNMENT_LEFT); + pMsgLbl->SetTextVerticalAlignment(ALIGNMENT_MIDDLE); + pMsgLbl->SetTextConfig(FONT_SIZE_MSG_TXT, LABEL_TEXT_STYLE_NORMAL); + pMsgLbl->SetTextColor(COLOR_LIST_TEXT_NORMAL); + pItem->AddControl(pMsgLbl); + + //Send Button + if(isShowSendButton == true) + { + String sendText = AppUtility::GetResourceString(IDS_LIST_SEND_BUTTON); + Button* pSendButton = new (std::nothrow) Button(); + pSendButton->Construct(Rectangle(GetClientAreaBounds().width - W_SEND_BUTTON_MARGIN -W_SEND_TEXT_ITEM, Y_SEND_TEXT_ITEM, W_SEND_TEXT_ITEM, H_SEND_TEXT_ITEM), sendText); + //set action id and listener + int actionId = IDA_SEND_REJECT_MSG1; + switch(itemIndex) + { + case 0: + actionId = IDA_SEND_REJECT_MSG1; + break; + case 1: + actionId = IDA_SEND_REJECT_MSG2; + break; + case 2: + actionId = IDA_SEND_REJECT_MSG3; + break; + case 3: + actionId = IDA_SEND_REJECT_MSG4; + break; + case 4: + actionId = IDA_SEND_REJECT_MSG5; + break; + case 5: + actionId = IDA_SEND_REJECT_MSG6; + break; + } + pSendButton->SetActionId(actionId); + pSendButton->AddActionEventListener(*this); + pItem->AddControl(*pSendButton); + pItem->SetIndividualSelectionEnabled(pSendButton, true); + } + else + { + pItem->SetEnabled(false); + } + + return pItem; +} + +void +IncomingCallForm::UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem) +{ + Rectangle itemRect(X_LIST_TEXT_ITEM, 0, pItem->GetWidth()- W_SEND_BUTTON_MARGIN - W_SEND_TEXT_ITEM, H_LIST_NORMAL_MENU_ITEM); + Label* pItemLbl = static_cast(pItem->GetControl(0)); + if(pItemLbl != null) + { + pItemLbl->SetBounds(itemRect); + } + Button* pSendButton = static_cast(pItem->GetControl(1)); + if(pSendButton != null) + { + pSendButton->SetBounds(Rectangle(GetClientAreaBounds().width - W_SEND_BUTTON_MARGIN -W_SEND_TEXT_ITEM, Y_SEND_TEXT_ITEM, W_SEND_TEXT_ITEM, H_SEND_TEXT_ITEM)); + } + pItem->Invalidate(true); +} + +bool +IncomingCallForm::DeleteItem(int itemIndex, TableViewItem* pItem) +{ + delete pItem; + pItem = null; + return true; +} + +int +IncomingCallForm::GetDefaultItemHeight(void) +{ + return H_LIST_NORMAL_MENU_ITEM; +} + +void +IncomingCallForm::ShowPersonDetails(const String& phoneNumber, const String& contactLblName, const String& nameLblName, AppCallInfo* pCallInfo) +{ + //call individual methods to show contact number, caller name & photo + SetTextToLabel(phoneNumber, contactLblName); + + //fetch contact details based on phone number + String* pDisplayName = pCallInfo->FetchLatestCallerNameN(phoneNumber); + Bitmap* pPhotoBitmap = pCallInfo->FetchLatestCallerPhotoN(phoneNumber); + ShowCallerPhoto(pPhotoBitmap); + + //free resources + if (pDisplayName) + { + SetTextToLabel(*pDisplayName, nameLblName); + delete pDisplayName; + pDisplayName = null; + } + + if (pPhotoBitmap) + { + delete pPhotoBitmap; + pPhotoBitmap = null; + } +} + +void +IncomingCallForm::SetTextToLabel(const String& textToBeSet, const String& lblName) +{ + Label* pContactLbl = static_cast(GetControl(lblName)); + //passing an empty string to SetText fails in label, + //if previously valid text has been set + if (textToBeSet.IsEmpty() == true && pContactLbl->GetText().IsEmpty() == false) + { + String stringToBeSet(L""); + pContactLbl->SetText(stringToBeSet); + } + + else + { + pContactLbl->SetText(textToBeSet); + } +} + +void +IncomingCallForm::ShowCallerPhoto(const Bitmap* pPhotoId) +{ + bool showSmallPhoto = false; + //show photo - for Big Photo Id, Animated Call Image + if (pPhotoId == null) + { + pPhotoId = AppUtility::GetBitmapFromResourcesN(IDB_ACTIVE_CALL_DEFAULT_ICON,W_CONFERENCE_PHOTO,W_CONFERENCE_PHOTO); + } + else + { + //Check the size of photo + // Now checking the condition with && but actually it should be || + //But for now keeping it as && because _pContact->GetThubNail() returns image width as + // height 270 and width = 480 . So all images set thru gallery is show as small image + if(pPhotoId->GetHeight() <= H_SMALL_PHOTO + && pPhotoId->GetWidth() <= W_SMALL_PHOTO) + { + showSmallPhoto = true; + } + } + + Label* pPhotoLbl = static_cast(GetControl(IDC_BIG_PHOTO_LABEL)); + if(showSmallPhoto == true) + { + ShowThumbnailImage(pPhotoId); + } + else + { + if (pPhotoLbl != null && pPhotoId != null) + { + Canvas* pCanvas = new (std::nothrow) Canvas; + Rectangle canvasRect(Rectangle(0, 0, pPhotoLbl->GetBounds().width, pPhotoLbl->GetBounds().height)); + pCanvas->Construct(canvasRect); + //draw the contact bitmap + pCanvas->DrawBitmap(canvasRect,*pPhotoId); + Bitmap* pNewPhotoId = new Bitmap(); + pNewPhotoId->Construct(*pCanvas, pCanvas->GetBounds()); + delete pCanvas; + + pPhotoLbl->SetBackgroundBitmap(*pNewPhotoId); + pPhotoLbl->Invalidate(true); + delete pNewPhotoId; + } + } +} + +void +IncomingCallForm::ShowThumbnailImage(const Bitmap* pPhotoId) +{ + Label* pPhotoLbl = static_cast(GetControl(IDC_BIG_PHOTO_LABEL)); + + if (pPhotoLbl != null && pPhotoId != null) + { + Canvas* pCanvas = new (std::nothrow) Canvas; + Bitmap* pBackground = AppUtility::GetBitmapFromResourcesN(IDB_CALL_THUMBNAIL_BACKGROUND,W_CALL_THUMBNAIL,H_CALL_THUMBNAIL); + Bitmap* pShadow = AppUtility::GetBitmapFromResourcesN(IDB_CALL_THUMBNAIL_SHADOW,W_CALL_THUMBNAIL_SHADOW,H_CALL_THUMBNAIL_SHADOW); + Rectangle canvasRect(Rectangle(0, 0, pPhotoLbl->GetBounds().width, pPhotoLbl->GetBounds().height)); + pCanvas->Construct(canvasRect); + //draw the back ground + pCanvas->DrawBitmap(canvasRect,*pBackground); + //draw shadow (to be enabled after correct shadow image is provided ) + //pCanvas->DrawBitmap(Rectangle((pPhotoLbl->GetBounds().width/2)-(W_CALL_THUMBNAIL_SHADOW/2), + // (pPhotoLbl->GetBounds().height/2)-(H_CALL_THUMBNAIL_SHADOW/2),W_CALL_THUMBNAIL_SHADOW,H_CALL_THUMBNAIL_SHADOW),*pShadow); + //draw the contact bitmap + pCanvas->DrawBitmap(Rectangle((pPhotoLbl->GetBounds().width/2)-(W_SMALL_PHOTO/2), + (pPhotoLbl->GetBounds().height/2)-(H_SMALL_PHOTO/2),W_SMALL_PHOTO,H_SMALL_PHOTO),*pPhotoId); + Bitmap* pNewPhotoId = new Bitmap(); + pNewPhotoId->Construct(*pCanvas, pCanvas->GetBounds()); + delete pCanvas; + + pPhotoLbl->SetBackgroundBitmap(*pNewPhotoId); + pPhotoLbl->Invalidate(true); + delete pNewPhotoId; + delete pBackground; + delete pShadow; + } + +} + +void +IncomingCallForm::ShowCallersPhotoThumbnail(const Bitmap& pPhotoId) +{ + //Draw Small Photo and show on small photo label + __pSmallPhotoLabel = new (std::nothrow) Label();//static_cast(GetControl(IDC_SMALL_PHOTO_LABEL)); + __pSmallPhotoLabel->Construct(Rectangle(X_PHOTO_LBL, Y_PHOTO_LBL, W_PHOTO_LBL, H_PHOTO_LBL), L""); + __pSmallPhotoLabel->SetBackgroundColor(Color(0,0,0)); + __pSmallPhotoLabel->SetBackgroundBitmap(pPhotoId); + // Add a Label to the Form + AddControl(*__pSmallPhotoLabel); + __pSmallPhotoLabel->Invalidate(true); +} + +void +IncomingCallForm::ShowTimerInfo(const String& timerLblName, const String& textToBeDisplayed) +{ + Label* pTimerLbl = static_cast(GetControl(timerLblName)); + if (pTimerLbl != null) + { + pTimerLbl->SetText(textToBeDisplayed); + } +} + +void +IncomingCallForm::SetBitmapToRejectMessageButton(const String& btnName, const String& bgBitmap + , const String& arrowBitmap, const String& messageIconBitmap, bool isButtonInPanel, bool setButtonPressBitmap) +{ + + Button* pButton = null; + if (isButtonInPanel == false) + { + pButton = static_cast(GetControl(IDC_REJECT_MESSAGE_BUTTON)); + } + else + { + Panel* pKeysPanel = static_cast(GetControl(IDC_REJECT_PANEL)); + pButton = static_cast(pKeysPanel->GetControl(IDC_REJECT_MESSAGE_CANCEL_BUTTON)); + } + Bitmap* pHoldBmp = null; + Canvas* pCanvas = null; + pCanvas = new (std::nothrow) Canvas(); + pCanvas->Construct(Rectangle(0,0,pButton->GetBounds().width,pButton->GetBounds().height)); + //set bitmap to button + pHoldBmp = AppUtility::GetBitmapFromResourcesN(bgBitmap); + if (pHoldBmp) + { + //scale bitmap to predefined size + pHoldBmp->SetScalingQuality(BITMAP_SCALING_QUALITY_MID); + pHoldBmp->Scale(Dimension(pButton->GetBounds().width, H_MESSAGE_BG_BITMAP)); + pCanvas->DrawBitmap(Rectangle(Point(0, 0), Dimension(pHoldBmp->GetWidth(), pHoldBmp->GetHeight())), *pHoldBmp); + } + delete pHoldBmp; + pHoldBmp = null; + pHoldBmp = AppUtility::GetBitmapFromResourcesN(arrowBitmap); + if (pHoldBmp) + { + //scale bitmap to predefined size + pHoldBmp->SetScalingQuality(BITMAP_SCALING_QUALITY_MID); + pHoldBmp->Scale(Dimension(W_ARROW_BITMAP, H_ARROW_BITMAP)); + pCanvas->DrawBitmap(Rectangle(Point((pButton->GetBounds().width / 2 - 17/*Width of arrow / 2*/), 0), Dimension(pHoldBmp->GetWidth(), pHoldBmp->GetHeight())), *pHoldBmp); + } + delete pHoldBmp; + pHoldBmp = null; + + + + //set button name + String holdBtnName = AppUtility::GetResourceString(btnName); + FloatDimension textDimension; + if (!holdBtnName.IsEmpty()) + { + Font font; + font.Construct(FONT_STYLE_PLAIN, pButton->GetTextSize()); + font.GetTextExtent(holdBtnName, holdBtnName.GetLength(), textDimension); + textDimension.height = textDimension.height + font.GetDescender(); + TextElement* pTextElement = new (std::nothrow) TextElement(); + pTextElement->Construct(holdBtnName); + Color textColor(249, 249, 249); + if (setButtonPressBitmap) + { + textColor.SetAlpha(255); + } + else + { + textColor.SetAlpha(127); + } + + pTextElement->SetTextColor(textColor); + pTextElement->SetFont(font); + + EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText(); + pEnrichedText->Construct(textDimension); + pEnrichedText->Add(*pTextElement); + //Point textPos((X_MESSAGE_BITMAP + pHoldBmp->GetWidth() + MESSAGE_TEXT_X_MARGIN), Y_MESSAGE_BITMAP + MESSAGE_TEXT_Y_MARGIN); + Point textPos((pButton->GetWidth()/2)-(textDimension.width/2) + MESSAGE_TEXT_X_MARGIN,Y_MESSAGE_BITMAP + MESSAGE_TEXT_Y_MARGIN); + pCanvas->DrawText(textPos, *pEnrichedText); + // Cleans up + pEnrichedText->RemoveAll(true); + delete pEnrichedText; + } + + + pHoldBmp = AppUtility::GetBitmapFromResourcesN(messageIconBitmap); + if (pHoldBmp) + { + //scale bitmap to predefined size + pHoldBmp->SetScalingQuality(BITMAP_SCALING_QUALITY_MID); + pHoldBmp->Scale(Dimension(W_MESSAGE_BITMAP, H_MESSAGE_BITMAP)); + //pCanvas->DrawBitmap(Rectangle(Point(X_MESSAGE_BITMAP, Y_MESSAGE_BITMAP), Dimension(pHoldBmp->GetWidth(), pHoldBmp->GetHeight())), *pHoldBmp); + pCanvas->DrawBitmap(Rectangle(Point((pButton->GetWidth()/2)-(textDimension.width/2) -pHoldBmp->GetWidth(), Y_MESSAGE_BITMAP), Dimension(pHoldBmp->GetWidth(), pHoldBmp->GetHeight())), *pHoldBmp); + } + + //set background bitmpa to button + Bitmap* pActualBgBmp = new (std::nothrow) Bitmap(); + pActualBgBmp->Construct(*pCanvas, pCanvas->GetBounds()); + if (setButtonPressBitmap) + { + pButton->SetPressedBackgroundBitmap(*pActualBgBmp); + } + else + { + pButton->SetNormalBackgroundBitmap(*pActualBgBmp); + } + delete pActualBgBmp; + delete pHoldBmp; + delete pCanvas; +} + +/*!In OnTouchPressed, It creates the three visual elements and starts the animation of opacity and rotation variation + */ +void +IncomingCallForm::OnTouchPressed(const Control& source, const Point& currentPosition, const TouchEventInfo& touchInfo) +{ + //__pCallPresentor->StopAlert(); + if (currentPosition.x < VALID_TOUCH_X_OFFSET && currentPosition.y < VALID_TOUCH_Y_OFFSET) + { + Rectangle rect = source.GetBounds(); + if (source.Equals(*__pAcceptLabel)) + { + __isAnswerCallStarted = true; + __isRejectCallStarted = false; + } + else if (source.Equals(*__pRejectLabel)) + { + __isAnswerCallStarted = false; + __isRejectCallStarted = true; + } + else + { + // touch event between the 2 labels. So Do nothing + return; + } + + } +} + +// On Touch released, the animation and the visual elements disappear +void +IncomingCallForm::OnTouchReleased(const Control& source, const Point& currentPosition, const TouchEventInfo& touchInfo) +{ + AppLogDebug("%d",currentPosition.x); + if (__isAnswerCallStarted == true) + { + if (currentPosition.x > __pRejectLabel->GetBounds().x) + { + //Right reject icon + if(__pRejectFinalVisElem == null) + { + __pRejectFinalVisElem = new (std::nothrow) VisualElement(); + __pRejectFinalVisElem->Construct(); + __pRejectFinalVisElem->SetName(IDI_REJECT_FINAL_VISUAL_ELE_NAME); + } + __pRejectFinalVisElem->SetBounds(FloatRectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL)); + __pRejectFinalVisElem->SetShowState(true); + __pRejectFinalVisElem->SetOpacity(1.00f); + if(__pRejectLabel->GetVisualElement()->GetChild(IDI_REJECT_FINAL_VISUAL_ELE_NAME,true) == null) + { + AppLogDebug("AttachChild __pRejectFinalVisElem"); + __pRejectLabel->GetVisualElement()->AttachChild(*__pRejectFinalVisElem); + } + Canvas* pCanvas = __pRejectFinalVisElem->GetCanvasN(); + if(pCanvas != null) + { + pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL); + pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL)); + pCanvas->DrawBitmap(Rectangle(0, 0, W_DIAL_LABEL, W_DIAL_LABEL), *__pAcceptCircle); + pCanvas->DrawBitmap(Rectangle(DIAL_ICON_X_OFFSET, DIAL_ICON_Y_OFFSET, W_DIAL_BITMAP, H_DIAL_BITMAP), *__pAcceptDial); + delete pCanvas; + } + + __pAcceptVisElem->SetOpacity(0.0f); + //fetch already active call list + ArrayListT* pCallList = static_cast*>(__pCallPresentor->GetCallListN()); + if (pCallList != null && pCallList->GetCount() > 0) + { + //then atleast 1 active call exist. + AppCallInfo phnCallInfo; + pCallList->GetAt(0,phnCallInfo); + //Check if only 1 call exist and it is on Hold + if(pCallList->GetCount() == 1 && phnCallInfo.IsOnHold()) + { + //directly accept call + __pCallPresentor->AcceptIncomingCall(ANSERWING_OPTION_ACCEPT_CALL,__incomingCallHandle); + } + else + { + //Either 1 call exist and not "on Hold". + //Or 2 calls exist. + if(__pOptionPopup != null) + { + delete __pOptionPopup; + __pOptionPopup = null; + } + __pOptionPopup = new (std::nothrow) CallOptionPopup(*this,*(__pCallPresentor)); + __pOptionPopup->Initialize(); + __pOptionPopup->SetShowState(true); + __pOptionPopup->Draw(); + __pOptionPopup->Show(); + } + pCallList->RemoveAll(); + } + else + { + //no active call - Accept the incoming call + __pCallPresentor->AcceptIncomingCall(ANSERWING_OPTION_ACCEPT_CALL,__incomingCallHandle); + } + delete pCallList; + pCallList = null; + } + else + { + __pAcceptVisElem->SetOpacity(1.0f); + __pRejectVisElem->SetOpacity(1.00f); + + } + } + else if (__isRejectCallStarted == true) + { + if (currentPosition.x < ((__pAcceptLabel->GetBounds().x + __pAcceptLabel->GetWidth())- __pRejectLabel->GetBounds().x)) + { + //left dial icon + if(__pAcceptFinalVisElem == null) + { + __pAcceptFinalVisElem = new (std::nothrow) VisualElement(); + __pAcceptFinalVisElem->Construct(); + __pAcceptFinalVisElem->SetName(IDI_ACCEPT_FINAL_VISUAL_ELE_NAME); + } + __pAcceptFinalVisElem->SetBounds(FloatRectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL)); + __pAcceptFinalVisElem->SetOpacity(1.0f); + + + if(__pAcceptLabel->GetVisualElement()->GetChild(IDI_ACCEPT_FINAL_VISUAL_ELE_NAME,true) == null) + { + AppLogDebug("AttachChild __pAcceptFinalVisElem"); + __pAcceptLabel->GetVisualElement()->AttachChild(*__pAcceptFinalVisElem); + } + Canvas* pCanvas = __pAcceptFinalVisElem->GetCanvasN(); + if(pCanvas != null) + { + AppLogDebug("__pAcceptFinalVisElem drawing"); + pCanvas->SetBackgroundColor(COLOR_SWIPE_PANEL); + pCanvas->SetForegroundColor(COLOR_SWIPE_PANEL); + pCanvas->FillRectangle(COLOR_SWIPE_PANEL, Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL)); + pCanvas->DrawBitmap(Rectangle(0, 0, W_DIAL_LABEL, H_DIAL_LABEL), *__pRejectCircle); + pCanvas->DrawBitmap(Rectangle(DIAL_ICON_X_OFFSET, DIAL_ICON_Y_OFFSET, W_DIAL_BITMAP, H_DIAL_BITMAP), *__pRejectDial); + delete pCanvas; + } + __pRejectVisElem->SetOpacity(0.0f); + //Reject the call + __pCallPresentor->RejectCall(__incomingCallHandle, false,*__pActiveContactNo); + } + else + { + __pAcceptVisElem->SetOpacity(1.0f); + __pRejectVisElem->SetOpacity(1.00f); + + } + } + __isAnswerCallStarted = false; + __isRejectCallStarted = false; +} + +void +IncomingCallForm::OnTouchMoved(const Control& source, const Point& currentPosition, const TouchEventInfo& touchInfo) +{ + if (__isAnswerCallStarted == true) + { + if (currentPosition.x > 170 && currentPosition.x < 578) + { + if (currentPosition.x > REJECT_LABEL_X_OFFSET) + { + __pRejectVisElem->SetOpacity(0.60f); + __pAcceptVisElem->SetOpacity(0.60f); + } + else + { + __pRejectVisElem->SetOpacity(1.0f); + __pAcceptVisElem->SetOpacity(1.0f); + } + + } + } + if (__isRejectCallStarted == true) + { + if (currentPosition.x < 0 && currentPosition.x > -522) + { + if (currentPosition.x < ACCEPT_LABEL_RELATIVE_POS) + { + __pRejectVisElem->SetOpacity(0.60f); + __pAcceptVisElem->SetOpacity(0.60f); + } + else + { + __pRejectVisElem->SetOpacity(1.0f); + __pAcceptVisElem->SetOpacity(1.0f); + } + } + } +} + +void +IncomingCallForm::OnItemSelected(int itemIndex) +{ + ArrayList* pArgs = new (std::nothrow) ArrayList(SingleObjectDeleter); + pArgs->Construct(); + + //display name, mobile number + Integer* argIndex = new (std::nothrow) Integer(itemIndex); + pArgs->Add(argIndex); + SendUserEvent(REQUEST_ITEM_SELECTED,pArgs); +} + +void +IncomingCallForm::HandleMultipleCallSelection(int itemIndex) +{ + if(__pAcceptLabel->GetVisualElement()->GetChild(IDI_ACCEPT_VISUAL_ELE_NAME,true) == null) + { + __pAcceptLabel->GetVisualElement()->AttachChild(*__pAcceptVisElem); + } + if(__pRejectLabel->GetVisualElement()->GetChild(IDI_REJECT_VISUAL_ELE_NAME,true) == null) + { + __pRejectLabel->GetVisualElement()->AttachChild(*__pRejectVisElem); + } + + __pAcceptVisElem->SetOpacity(1.0f); + __pRejectVisElem->SetOpacity(1.00f); + + if (__pRejectFinalVisElem != null) + { + __pRejectFinalVisElem->Destroy(); + __pRejectFinalVisElem = null; + } + if (__pAcceptFinalVisElem != null) + { + __pAcceptFinalVisElem->Destroy(); + __pAcceptFinalVisElem = null; + } + + if (__pOptionPopup) + { + delete __pOptionPopup; + __pOptionPopup = null; + } + //accept call + if(itemIndex != IDA_BUTTON_CANCEL_OPTIONS_POPUP) + { + __pCallPresentor->AcceptIncomingCall(CallAnsweringOptions(itemIndex),__incomingCallHandle); + } +} + +void +IncomingCallForm::OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs) +{ + switch(requestId) + { + case REQUEST_ITEM_SELECTED: + { + if(pArgs != null) + { + Integer *index = static_cast(pArgs->GetAt(0)); + if(index != null) + { + HandleMultipleCallSelection(index->ToInt()); + } + } + } + break; + } +} + +void +IncomingCallForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source) +{ + AppLogDebug("Enter"); + HideRejectPanel(); + //SetFocus(); + Button* pButtonRejectMessage = static_cast(GetControl(IDC_REJECT_MESSAGE_BUTTON)); + if (pButtonRejectMessage) + { + pButtonRejectMessage->SetShowState(true); + pButtonRejectMessage->Invalidate(true); + pButtonRejectMessage->Draw(); + } + RequestRedraw(true); + +} + +void +IncomingCallForm::OnOrientationChanged(const Control& source, OrientationStatus orientationStatus) +{ + + Layout* pLayout = GetLayoutN(); + if (pLayout != null) + { + pLayout->Update(); + } + + Panel* pKeysPanel = static_cast(GetControl(IDC_REJECT_PANEL)); + if(pKeysPanel->GetShowState() == true) + { + //HideRejectMessagePanel(); + //ShowRejectMessagePanel(); + SetRejectMessagePanelBounds(); + } + + Button* pButtonRejectMessage = static_cast(GetControl(IDC_REJECT_MESSAGE_BUTTON)); + if (pButtonRejectMessage != null) + { + SetBitmapToRejectMessageButton(IDS_REJECT_MESSAGE_BTN,IDB_REJECT_MESSAGE_BG, + IDB_REJECT_MESSAGE_UP_ARROW, IDB_REJECT_MESSAGE_ICON, false, false); + SetBitmapToRejectMessageButton(IDS_REJECT_MESSAGE_BTN,IDB_REJECT_MESSAGE_BG, + IDB_REJECT_MESSAGE_UP_ARROW, IDB_REJECT_MESSAGE_ICON, false, true); + pButtonRejectMessage->Invalidate(true); + } + + Button* pButtonReject = static_cast(pKeysPanel->GetControl(IDC_REJECT_MESSAGE_CANCEL_BUTTON)); + if (pButtonReject != null) + { + SetBitmapToRejectMessageButton(IDS_REJECT_MESSAGE_BTN,IDB_REJECT_MESSAGE_BG, + IDB_REJECT_MESSAGE_DOWN_ARROW, IDB_REJECT_MESSAGE_ICON, true, false); + SetBitmapToRejectMessageButton(IDS_REJECT_MESSAGE_BTN,IDB_REJECT_MESSAGE_BG, + IDB_REJECT_MESSAGE_DOWN_ARROW, IDB_REJECT_MESSAGE_ICON, true, true); + FloatRectangle allignedrect = CoordinateSystem::AlignToDevice(pButtonReject->GetBoundsF()); + pButtonReject->SetBounds(allignedrect); + pButtonReject->Invalidate(true); + + } +} + +void +IncomingCallForm::OnForeground(void) +{ + AppLogDebug("Enter"); + //This is done so that when in IncomingCallForm and calloptionpopup is shown , now if + // focus goes away from popup by pressing cancel key from the host keyboard the focus shouldnt get lost + // but should focus the Reject message button immediately. +// Button* pButtonRejectMessage = static_cast(GetControl(IDC_REJECT_MESSAGE_BUTTON)); +//Commented for bug N_SE-52277 + //pButtonRejectMessage->SetFocus(); + //pButtonRejectMessage->Invalidate(true); + __pCallPresentor->OnAppForeground(); +} + +void +IncomingCallForm::OnScreenOff(void) +{ + __pCallPresentor->StopAlert(); +} + +void +IncomingCallForm::CallDisconnected(void) +{ + + //check if no call option popup is shown, then remain on incoming call screen. + //As user has neither accepted nor rejected incoming call. + if ((__pOptionPopup == null) || (__pOptionPopup->GetShowState() == false)) + { + //Resume the alert when there is an incoming call and the already active call is disconnected + //Here we start playing the ringtone again + AppCallInfo* pIncomingCall = __pCallPresentor->GetIncomingCallHandle(); + if(pIncomingCall != null) + { + __pCallPresentor->ResumeAlert(*pIncomingCall); + } + return; + } + + //fetch already active call list and show updated option popup + ArrayListT* pCallList = static_cast*>(__pCallPresentor->GetCallListN()); + if (pCallList != null && pCallList->GetCount() > 0) + { + //then atleast 1 active call exist. + AppCallInfo phnCallInfo; + pCallList->GetAt(0,phnCallInfo); + //Check if only 1 call exist and it is on Hold + if(pCallList->GetCount() == 1 && phnCallInfo.IsOnHold()) + { + //directly accept call + __pCallPresentor->AcceptIncomingCall(ANSERWING_OPTION_ACCEPT_CALL,__incomingCallHandle); + } + else + { + //Either 1 call exist and not "on Hold". + //Or 2 calls exist. + if(__pOptionPopup != null) + { + delete __pOptionPopup; + __pOptionPopup = null; + } + __pOptionPopup = new (std::nothrow) CallOptionPopup(*this,*(__pCallPresentor)); + __pOptionPopup->Initialize(); + __pOptionPopup->SetShowState(true); + __pOptionPopup->Draw(); + __pOptionPopup->Show(); + AppCallInfo* pIncomingCall = __pCallPresentor->GetIncomingCallHandle(); + if(pIncomingCall != null) + { + //Resume the alert when there is an incoming call and the already active call is disconnected + //Here we start playing the ringtone again + __pCallPresentor->ResumeAlert(*pIncomingCall); + } + } + pCallList->RemoveAll(); + } + else + { + //no active call - Accept the incoming call + __pCallPresentor->AcceptIncomingCall(ANSERWING_OPTION_ACCEPT_CALL,__incomingCallHandle); + } + delete pCallList; + pCallList = null; +} diff --git a/src/CallInfo.cpp b/src/CallInfo.cpp new file mode 100644 index 0000000..6e34d38 --- /dev/null +++ b/src/CallInfo.cpp @@ -0,0 +1,549 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallCallInfo.cpp + * @brief Call Information class + */ +#include "CallAppUtility.h" +#include "CallInfo.h" +#include + +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; +using namespace Tizen::Graphics; +using namespace Tizen::Media; +using namespace Tizen::Social; +using namespace Tizen::Telephony; + +AppCallInfo::AppCallInfo(void) +{ + //by Default, neither a conference call nor emergency call + __isConfCall = false; + __isEmergency = false; + __callType = VOICE_CALL; + __isOnHold = false; + __callConnectTime = 0; + __durationTime = 0; + __callNotificationTime = 0; + __pCallHandle = null; + __pEndCallCause = null; + __pParticipantCallHandles = null; + __pContact = null; + __pAddressBook = null; +} + +AppCallInfo::~AppCallInfo(void) +{ + if (__pCallHandle) + { + delete __pCallHandle; + } + + if (__pEndCallCause) + { + delete __pEndCallCause; + } + + if (__pParticipantCallHandles) + { + delete __pParticipantCallHandles; + __pParticipantCallHandles = null; + } + if (__pContact != null) + { + delete __pContact; + } + if(__pAddressBook != null) + { + delete __pAddressBook; + } +} + +Long* +AppCallInfo::GetCallHandle(void) +{ + return __pCallHandle; +} + +void +AppCallInfo::SetCallHandle(unsigned int handle) +{ + if (__pCallHandle != null) + { + delete __pCallHandle; + } + __pCallHandle = new (std::nothrow) Long(handle); +} + +bool +AppCallInfo::IsConferenceCall(void) +{ + return __isConfCall; +} + +void +AppCallInfo::SetConference(bool isConferenceCall) +{ + __isConfCall = isConferenceCall; +} + +bool +AppCallInfo::IsEmergency(void) +{ + return __isEmergency; +} + +void +AppCallInfo::SetEmergency(bool isEmergency) +{ + __isEmergency = isEmergency; +} + +String& +AppCallInfo::GetContactNumber(void) +{ + return __contactNumber; +} + +void +AppCallInfo::ResetContactNumber(String* contactNumber) +{ + if(contactNumber == null) + { + if (__isConfCall == false) + { + __contactNumber = null; + } + } + +} + +void +AppCallInfo::ResetContactInfo(const Contact* contact) +{ + if(contact == null) + { + if (__pContact != null) + { + delete __pContact; + __pContact = null; + } + } +} +void +AppCallInfo::SetContactNumber(String& contactNumber) +{ + if (__isConfCall == false) + { + __contactNumber = contactNumber; + } +} + +void +AppCallInfo::SetContactInfo(const Contact& contact) +{ + if (__pContact != null) + { + delete __pContact; + __pContact = null; + } + __pContact = new (std::nothrow) Contact(contact); +} + +bool +AppCallInfo::IsOnHold(void) +{ + return __isOnHold; +} + +void +AppCallInfo::SetOnHold(bool onHold) +{ + __isOnHold = onHold; +} + +long long +AppCallInfo::GetCallConnectTime(void) +{ + return __callConnectTime; +} + +void +AppCallInfo::SetCallConnectTime(long long connectTime) +{ + __callConnectTime = connectTime; +} + +void +AppCallInfo::SetDurationTime(long long durationTime) +{ + __durationTime = durationTime; +} + +long long +AppCallInfo::GetCallNotificationTime(void) +{ + return __callNotificationTime; +} + +long long +AppCallInfo::GetDurationTime(void) +{ + return __durationTime; +} + +void +AppCallInfo::SetCallNotificationTime(long long callNotificationTime) +{ + __callNotificationTime = callNotificationTime; +} + +String& +AppCallInfo::GetEndCallCause(void) +{ + return *(__pEndCallCause); +} + +void +AppCallInfo::SetEndCallCause(String& pEndCause) +{ + if (__pEndCallCause != null) + { + delete __pEndCallCause; + } + __pEndCallCause = new (std::nothrow) String(pEndCause); +} + +IListT* +AppCallInfo::GetCallerList(void) +{ + return __pParticipantCallHandles; +} + +int +AppCallInfo::GetCallerListCount(void) +{ + if (__pParticipantCallHandles != null) + { + return __pParticipantCallHandles->GetCount(); + } + return -1; +} + +result +AppCallInfo::AddCallToCallerList(AppCallInfo& callInfo) +{ + if (__pParticipantCallHandles == NULL) + { + __pParticipantCallHandles = new (std::nothrow) ArrayListT(); + } + result r = E_FAILURE; + AppCallInfo* pNewCallInfo = new (std::nothrow) AppCallInfo(); + *pNewCallInfo = callInfo; + r = __pParticipantCallHandles->Add(*pNewCallInfo); + pNewCallInfo = NULL; + return r; +} + +result +AppCallInfo::RemoveCallFromCallerList(int index) +{ + result r = E_FAILURE; + if (__pParticipantCallHandles == NULL) + { + return r; + } + r = __pParticipantCallHandles->RemoveAt(index); + return r; +} + +void +AppCallInfo::SetCalllogType(CallLogType callLogType) +{ + __calllogType = callLogType; +} + +CallLogType +AppCallInfo::GetCalllogType(void) +{ + return __calllogType; +} + +bool +AppCallInfo::operator ==(const AppCallInfo& rhs) const +{ + return (this->__pCallHandle->Equals(*(rhs.__pCallHandle))); +} + +bool +AppCallInfo::operator !=(const AppCallInfo& rhs) const +{ + return (!(this->__pCallHandle->Equals(*(rhs.__pCallHandle)))); +} + +AppCallInfo& +AppCallInfo::operator =(const AppCallInfo& rhs) +{ + if (this != null) + { + this->__isConfCall = rhs.__isConfCall; + this->__callType = rhs.__callType; + this->__isEmergency = rhs.__isEmergency; + this->__contactNumber = rhs.__contactNumber; + this->__isOnHold = rhs.__isOnHold; + //call connected time + this->__callConnectTime = rhs.__callConnectTime; + this->__durationTime = rhs.__durationTime; + //call notification time + this->__callNotificationTime = rhs.__callNotificationTime; + this->__calllogType = rhs.__calllogType; + //copy call handle, if exist + if (this->__pCallHandle != null) + { + delete this->__pCallHandle; + this->__pCallHandle = null; + } + if (rhs.__pCallHandle != null) + { + this->__pCallHandle = new (std::nothrow) Long(*(rhs.__pCallHandle)); + } + + //copy end call cause, if any exist + if (this->__pEndCallCause != null) + { + delete this->__pEndCallCause; + this->__pEndCallCause = null; + } + if (rhs.__pEndCallCause) + { + this->__pEndCallCause = new (std::nothrow) String(*(rhs.__pEndCallCause)); + } + + //Add participant call list + if (this->__pParticipantCallHandles != null) + { + delete this->__pParticipantCallHandles; + this->__pParticipantCallHandles = null; + } + if (rhs.__pParticipantCallHandles != null) + { + this->__pParticipantCallHandles = new (std::nothrow) ArrayListT(); + this->__pParticipantCallHandles->Construct(*(rhs.__pParticipantCallHandles)); + } + if (this->__pContact != null) + { + delete this->__pContact; + this->__pContact = null; + } + if (rhs.__pContact != null) + { + this->__pContact = new (std::nothrow) Contact(*(rhs.__pContact)); + } + } + + return *this; +} + +String* +AppCallInfo::FetchCallerNameN(void) +{ + String displayName(L""); + //get caller name from already fetched contact info + if (__pContact != null) + { + //fetch name to be displayed + String firstName(L""); + String lastName(L""); + String middlename(L""); + __pContact->GetValue(CONTACT_PROPERTY_ID_FIRST_NAME, firstName); + __pContact->GetValue(CONTACT_PROPERTY_ID_LAST_NAME, lastName); + __pContact->GetValue(CONTACT_PROPERTY_ID_MIDDLE_NAME, middlename); + displayName.Append(firstName + middlename + lastName); + + if (displayName.IsEmpty() == false) + { + __pContact->GetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME, displayName); + } + } + + return new (std::nothrow) String(displayName); +} + +Contact* +AppCallInfo::FetchContactN(const Tizen::Base::String& phoneNumber) +{ + Tizen::Social::Contact* pFoundContact = null; + if(__pAddressBook == null) + { + __pAddressBook = AddressbookManager::GetInstance()->GetAddressbookN(); + } + IList* pContactList = __pAddressBook->SearchContactsByPhoneNumberN(phoneNumber); + if (pContactList == null || IsFailed(GetLastResult())) + { + return null; + } + + //Fetch the contact's info to be displayed + IEnumerator* pContactEnum = pContactList->GetEnumeratorN(); + while (E_SUCCESS == pContactEnum->MoveNext()) + { + Contact* pContact = static_cast(pContactEnum->GetCurrent()); + + IList* pPhoneNumberList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS); + if (pPhoneNumberList != null) + { + IEnumerator* pPhoneEnum = pPhoneNumberList->GetEnumeratorN(); + while (E_SUCCESS == pPhoneEnum->MoveNext()) + { + PhoneNumber* pPhoneNumber = (PhoneNumber*) pPhoneEnum->GetCurrent(); + //Check if this is the correct contact + if (pPhoneNumber->GetPhoneNumber().Equals(phoneNumber)) + { + //save newly fetched contact info. + pFoundContact = new (std::nothrow) Contact(*pContact); + break; + } + } + delete pPhoneEnum; + pPhoneNumberList->RemoveAll(true); + delete pPhoneNumberList; + } + if(pFoundContact != null) + { + break; + } + } + delete pContactEnum; + pContactList->RemoveAll(true); + delete pContactList; + + if(pFoundContact == null) + { + return null; + } + + return pFoundContact; + +} + + +String* +AppCallInfo::FetchLatestCallerNameN(const Tizen::Base::String& phoneNumber) +{ + String displayName(L""); + Tizen::Social::Contact* pContact = null; + //Fetch the contact for a number from address book + pContact = FetchContactN(phoneNumber); + if(pContact != null) + { + String firstName(L""); + String lastName(L""); + String middlename(L""); + pContact->GetValue(CONTACT_PROPERTY_ID_FIRST_NAME, firstName); + pContact->GetValue(CONTACT_PROPERTY_ID_LAST_NAME, lastName); + pContact->GetValue(CONTACT_PROPERTY_ID_MIDDLE_NAME, middlename); + displayName.Append(firstName + middlename + lastName); + + if (displayName.IsEmpty() == false) + { + pContact->GetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME, displayName); + } + delete pContact; + } + + return new (std::nothrow) String(displayName); + + +} +Bitmap* +AppCallInfo::FetchLatestCallerPhotoN(const Tizen::Base::String& phoneNumber) +{ + result r = E_FAILURE; + Tizen::Social::Contact* pContact = null; + String thumbnailPath; + Bitmap* pThumbnail = null; + pContact = FetchContactN(phoneNumber); + if(pContact != null) + { + pContact->GetValue(CONTACT_PROPERTY_ID_THUMBNAIL,thumbnailPath); + if(thumbnailPath.IsEmpty() == true) + { + IList* pCategoryList = __pAddressBook->GetCategoriesByContactN(pContact->GetRecordId()); + if(pCategoryList != null && pCategoryList->GetCount() > 0) + { + AppLogDebug("Changes to get thumbnail group photo"); + Category* pCategory = static_cast(pCategoryList->GetAt(0)); + thumbnailPath = pCategory->GetThumbnailPath(); + } + } + delete pContact; + ImageBuffer thumbnailImageBuffer; + r = thumbnailImageBuffer.Construct(thumbnailPath); + if (r == E_SUCCESS) + { + pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_ARGB8888, BUFFER_SCALING_NONE); + } + + if(pThumbnail != null) + { + return pThumbnail; + } + } + + return null; + +} + +Bitmap* +AppCallInfo::FetchCallerPhotoN(void) +{ + + if (__pContact != null) + { + String thumbnailPath; + Bitmap* pThumbnail = null; + __pAddressBook = AddressbookManager::GetInstance()->GetAddressbookN(); + + result r = __pContact->GetValue(CONTACT_PROPERTY_ID_THUMBNAIL, thumbnailPath); + //Now check if there is a group ring tone + if(thumbnailPath.IsEmpty() == true) + { + IList* pCategoryList = __pAddressBook->GetCategoriesByContactN(__pContact->GetRecordId()); + if(pCategoryList != null && pCategoryList->GetCount() > 0) + { + AppLogDebug("Changes to get thumbnail group photo"); + Category* pCategory = static_cast(pCategoryList->GetAt(0)); + thumbnailPath = pCategory->GetThumbnailPath(); + } + } + //thumbnailPath = __pContact->GetThumbnailPath(); + ImageBuffer thumbnailImageBuffer; + r = thumbnailImageBuffer.Construct(thumbnailPath); + if (r == E_SUCCESS) + { + pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_ARGB8888, BUFFER_SCALING_NONE); + } + return pThumbnail; + } + return null; +} + +const Contact* +AppCallInfo::GetContactInfo(void) +{ + return __pContact; +} diff --git a/src/CallOptionPopup.cpp b/src/CallOptionPopup.cpp new file mode 100644 index 0000000..c58099e --- /dev/null +++ b/src/CallOptionPopup.cpp @@ -0,0 +1,359 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallCallOptionPopup.cpp + * @brief Call Options Popup class + */ +#include +#include +#include +#include +#include +#include + +#include "CallOptionPopup.h" +#include "CallAppUtility.h" + +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; +using namespace Tizen::Base::Utility; +using namespace Tizen::App; +using namespace Tizen::Graphics; +using namespace Tizen::Social; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui::Scenes; + +const int W_POPUP = 620; +const int H_POPUP = 712; +const int W_CANCEL_BUTTON = 400; +const int H_CANCEL_BUTTON = 72; +const int CANCEL_BUTTON_PADDING = 20; +const int H_LIST_ITEM = 112; +const int W_LIST_ITEM = 112; +const int HORIZONTAL_PADDING = 16; +const int VERTICAL_PADDING = 110; +const int IDA_BUTTON_CANCEL_OPTIONS_POPUP = 502; +static const wchar_t* IDL_CALL_OPTION_POPUP = L"IDL_CALL_OPTION_POPUP"; + +CallOptionPopup::CallOptionPopup(IPopupItemSelectListener& listener, CallPresentationModel& callPresenter) + : __pOptionsList(null) + , __popupListener(listener) + , __callPresenter(callPresenter) +{ +} + +CallOptionPopup::~CallOptionPopup(void) +{ + if (__pOptionsList != null) + { + delete __pOptionsList; + __pOptionsList = null; + } +} + +result +CallOptionPopup::Initialize(void) +{ + result r = E_SUCCESS; + r = Construct(IDL_CALL_OPTION_POPUP); + TryReturn(r == E_SUCCESS, r, "CallOptionPopup construction failed"); + + r = ConstructListData(); + TryReturn(r == E_SUCCESS, r, "List data not available"); + + int listHeight = H_LIST_ITEM * __pOptionsList->GetCount(); + int popupHeight = H_CANCEL_BUTTON + listHeight + CANCEL_BUTTON_PADDING + VERTICAL_PADDING; + r = SetSize(Dimension(W_POPUP + HORIZONTAL_PADDING, popupHeight)); + TryReturn(r == E_SUCCESS, r, "CallOptionPopup::SetSize() failed"); + SetMinimumSize(Dimension(W_POPUP + HORIZONTAL_PADDING, popupHeight)); + TryReturn(r == E_SUCCESS, r, "CallOptionPopup::SetMinSize() failed"); + + String strText; + Application::GetInstance()->GetAppResource()->GetString(L"IDS_CANCEL", strText); + Button* pCancelButton = new (std::nothrow) Button(); + r = pCancelButton->Construct(Rectangle(VERTICAL_PADDING, listHeight + CANCEL_BUTTON_PADDING , W_CANCEL_BUTTON, H_CANCEL_BUTTON), strText); + pCancelButton->SetActionId(IDA_BUTTON_CANCEL_OPTIONS_POPUP); + pCancelButton->AddActionEventListener(*this); + SetPropagatedKeyEventListener(this); + r = AddControl(pCancelButton); + TryReturn(r == E_SUCCESS, r, "CallOptionPopup::AddControl() failed"); + + ListView* pListView = new (std::nothrow) ListView(); + pListView->Construct(Rectangle(0, 0, W_POPUP + HORIZONTAL_PADDING, listHeight), true, SCROLL_STYLE_FADE_OUT); + pListView->AddListViewItemEventListener(*this); + pListView->SetItemProvider(*this); + r = AddControl(pListView); + + + + return r; +} + +result +CallOptionPopup::ConstructListData(void) +{ + result r = E_FAILURE; + + //fetch active call list + ArrayListT* pCallList = static_cast*>(__callPresenter.GetCallListN()); + if (pCallList != null && pCallList->GetCount() > 0) + { + String optionStr(L""); + String* pFirstOption = new (std::nothrow) String(); + String* pSecondOption = new (std::nothrow) String(); + String* pThirdOption = null; + if (pCallList->GetCount() == IDI_MAX_ACTIVE_CALLS) + { + //2 calls(Active+Held) present - 3 options are shown + for (int index = 0;index < pCallList->GetCount(); index++) + { + AppCallInfo callInfo; + pCallList->GetAt(index,callInfo); + + optionStr.Clear(); + if (callInfo.IsConferenceCall() == true) + { + String option = AppUtility::GetResourceString(L"IDS_CALL_OPTION4");; + if (callInfo.IsOnHold() == true) + { + option = AppUtility::GetResourceString(L"IDS_CALL_OPTION3"); + } + optionStr.Format(option.GetLength(), option.GetPointer(), callInfo.GetCallerListCount()); + } + else + { + //show display name, if available, Else show contact number + String* pDisplayName = null; + if(callInfo.GetContactNumber().IsEmpty() == false) + { + pDisplayName = callInfo.FetchLatestCallerNameN(callInfo.GetContactNumber()); + } + else + { + pDisplayName = new (std::nothrow) String(L""); + } + if (pDisplayName->IsEmpty() == true) + { + //If contact number is also not present show unknown + if(callInfo.GetContactNumber().IsEmpty() == false) + { + pDisplayName->Append(callInfo.GetContactNumber()); + } + else + { + pDisplayName->Append(AppUtility::GetResourceString(IDS_NUMBER_UNKNOWN)); + } + } + optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION5"); + optionStr.Append(*pDisplayName); + delete pDisplayName; + } + + //Check whether to show as 1st or 2nd option + if (callInfo.IsOnHold() == false) + { + pFirstOption->Append(optionStr); + } + else + { + pSecondOption->Append(optionStr); + } + } + //3rd Option + pThirdOption = new (std::nothrow) String(); + pThirdOption->Append(AppUtility::GetResourceString(L"IDS_CALL_OPTION6")); + } + else + { + //only one call - 2 options are shown. + AppCallInfo firstCallInfo; + pCallList->GetAt(0,firstCallInfo); + if (firstCallInfo.IsConferenceCall() == false) + { + //show display name if available, else show contact number + String* pDisplayName = null; + if(firstCallInfo.GetContactNumber().IsEmpty() == false) + { + pDisplayName = firstCallInfo.FetchLatestCallerNameN(firstCallInfo.GetContactNumber()); + } + else + { + pDisplayName = new (std::nothrow) String(L""); + } + if (pDisplayName->IsEmpty() == true) + { + if(firstCallInfo.GetContactNumber().IsEmpty() == false) + { + pDisplayName->Append(firstCallInfo.GetContactNumber()); + } + else + { + pDisplayName->Append(AppUtility::GetResourceString(IDS_NUMBER_UNKNOWN)); + } + } + optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION1"); + pFirstOption->Format((optionStr.GetLength() + pDisplayName->GetLength()),optionStr.GetPointer(),pDisplayName->GetPointer()); + //2nd option + optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION2"); + pSecondOption->Append(optionStr + *pDisplayName); + delete pDisplayName; + } + else + { + String optionStr2(L""); + if (firstCallInfo.IsOnHold() == true) + { + optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION8"); + optionStr2 = AppUtility::GetResourceString(L"IDS_CALL_OPTION3"); + } + else + { + optionStr = AppUtility::GetResourceString(L"IDS_CALL_OPTION7"); + optionStr2 = AppUtility::GetResourceString(L"IDS_CALL_OPTION4"); + } + pFirstOption->Format(optionStr.GetLength(), optionStr.GetPointer(), firstCallInfo.GetCallerListCount()); + pSecondOption->Format(optionStr2.GetLength(), optionStr2.GetPointer(), firstCallInfo.GetCallerListCount()); + } + } + //show options + __pOptionsList = new (std::nothrow) ArrayList(SingleObjectDeleter); + __pOptionsList->Construct(); + __pOptionsList->Add(pFirstOption); + __pOptionsList->Add(pSecondOption); + if (pThirdOption != null) + { + __pOptionsList->Add(pThirdOption); + } + r = E_SUCCESS; + pCallList->RemoveAll(); + } + delete pCallList; + return r; +} + +void +CallOptionPopup::OnListViewItemStateChanged(ListView& listView, int index, + int elementId, ListItemStatus status) +{ + Popup::SetShowState(false); + if(elementId == -1) + { + elementId = ANSERWING_OPTION_HOLD_SINGLE_CALL; + if (__pOptionsList->GetCount() == 2) + { + if(index == 1) + { + elementId = ANSERWING_OPTION_END_SINGLE_CALL; + } + } + else + { + elementId = ANSERWING_OPTION_REPLACE_ACTIVE_CALL; + if(index == 1) + { + elementId = ANSERWING_OPTION_REPLACE_HELD_CALL; + } + else if(index == 2) + { + elementId = ANSERWING_OPTION_END_ALL_CALLS; + } + } + } + __popupListener.OnItemSelected(elementId); + return; +} + +int +CallOptionPopup::GetItemCount(void) +{ + if (__pOptionsList != null) + { + return __pOptionsList->GetCount(); + } + return 0; +} + +ListItemBase* +CallOptionPopup::CreateItem(int index, int itemWidth) +{ + int elementId = ANSERWING_OPTION_HOLD_SINGLE_CALL; + String* strText = static_cast(__pOptionsList->GetAt(index)); + ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL; + CustomItem* pItem = new CustomItem(); + pItem->Construct(Dimension(itemWidth, W_LIST_ITEM), style); + if (__pOptionsList->GetCount() == 2) + { + if(index == 1) + { + elementId = ANSERWING_OPTION_END_SINGLE_CALL; + } + } + else + { + elementId = ANSERWING_OPTION_REPLACE_ACTIVE_CALL; + if(index == 1) + { + elementId = ANSERWING_OPTION_REPLACE_HELD_CALL; + } + else if(index == 2) + { + elementId = ANSERWING_OPTION_END_ALL_CALLS; + } + } + pItem->AddElement(Rectangle(HORIZONTAL_PADDING, 0, W_POPUP - HORIZONTAL_PADDING, H_LIST_ITEM), elementId, *strText); + return pItem; +} + +bool +CallOptionPopup::DeleteItem(int index, ListItemBase* pItem, int itemWidth) +{ + delete pItem; + pItem = null; + return true; +} + +void +CallOptionPopup::OnActionPerformed(const Control& source, int actionId) +{ + switch (actionId) + { + case IDA_BUTTON_CANCEL_OPTIONS_POPUP: + { + Popup::SetShowState(false); + __popupListener.OnItemSelected(IDA_BUTTON_CANCEL_OPTIONS_POPUP); + } + break; + + default: + break; + } +} + +bool +CallOptionPopup::OnKeyReleased(Control& source, const KeyEventInfo& keyEventInfo) +{ + AppLogDebug("Enter"); + if(keyEventInfo.GetKeyCode() == KEY_BACK || keyEventInfo.GetKeyCode() == KEY_ESC) + { + Popup::SetShowState(false); + __popupListener.OnItemSelected(IDA_BUTTON_CANCEL_OPTIONS_POPUP); + return true; + + } + return false; +} diff --git a/src/CallPanelFactory.cpp b/src/CallPanelFactory.cpp new file mode 100644 index 0000000..75b92d5 --- /dev/null +++ b/src/CallPanelFactory.cpp @@ -0,0 +1,45 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallPanelFactory.cpp + * @brief The Panel factory for Dial application + */ + +#include "CallPanelFactory.h" + +using namespace Tizen::Base; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui::Scenes; + + + +PanelFactory::PanelFactory(void) +{ +} + +PanelFactory::~PanelFactory(void) +{ +} + +Panel* +PanelFactory::CreatePanelN(const String& panelId, const SceneId& sceneId) +{ + SceneManager* pSceneManager = SceneManager::GetInstance(); + AppAssert(pSceneManager); + Panel* pNewPanel = null; + return pNewPanel; +} diff --git a/src/CallPresentationModel.cpp b/src/CallPresentationModel.cpp new file mode 100644 index 0000000..6796dde --- /dev/null +++ b/src/CallPresentationModel.cpp @@ -0,0 +1,1109 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallCallPresentationModel.cpp + * @brief Call Presentation model class + */ +#include +#include +#include +#include +#include "CallApp.h" +#include "CallAppControlRequestMgr.h" +#include "CallActiveCallForm.h" +#include "CallAppUtility.h" +#include "CallInfo.h" +#include "CallPresentationModel.h" +#include "CallSettingsPresentationModel.h" +#include "CallConfCallerListForm.h" +#include "CallTelephonyManager.h" +#include "CallSceneRegister.h" +#include "CallTypes.h" + +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; +using namespace Tizen::App; +using namespace Tizen::Graphics; +using namespace Tizen::Media; +using namespace Tizen::Social; +using namespace Tizen::Ui::Scenes; +using namespace Tizen::Telephony; +using namespace Tizen::Base::Utility; +using namespace Tizen::Messaging; +using namespace Tizen::Shell; + +CallPresentationModel* CallPresentationModel::__pInstance = null; + +CallPresentationModel::CallPresentationModel(void) +{ + __pTelephonyMgr = null; + __pTelEventListener = null; + __pSettingsPresentor = null; + __isMessageAppControlRunning = false; + __isDialAppControlRunning = false; + __pAppControlMgr = null; + __pNetworkManager = null; + __psimStateManager = null; + __psimInfo = null; + __pSmsManager = null; + __isMessageSendInProgress = false; + __pNotificationManager = null; +} + +CallPresentationModel::~CallPresentationModel(void) +{ + AppControl::StopAppControlResponseListener(this); + __pTelephonyMgr = null; + __pSettingsPresentor = null; + __pAppControlMgr =null; + if(__pNetworkManager != null) + { + delete __pNetworkManager; + __pNetworkManager = null; + } + if(__psimStateManager != null) + { + delete __psimStateManager; + __psimStateManager = null; + } + if(__psimInfo != null) + { + delete __psimInfo; + __psimInfo = null; + } + if(__pSmsManager != null) + { + delete __pSmsManager; + __pSmsManager = null; + } + if(__pNotificationManager != null) + { + __pNotificationManager->Notify(0); + __pNotificationManager->RemoveNotification(); + delete __pNotificationManager; + __pNotificationManager = null; + } +} + +void +CallPresentationModel::CreateInstance(void) +{ + __pInstance = new (std::nothrow) CallPresentationModel(); + result r = __pInstance->Construct(); + if(IsFailed(r)) + { + delete __pInstance; + __pInstance = null; + return; + } + + std::atexit(DestroyInstance); +} + +CallPresentationModel* +CallPresentationModel::GetInstance(void) +{ + if (__pInstance == null) + { + CreateInstance(); + } + return __pInstance; +} + +void +CallPresentationModel::DestroyInstance(void) +{ + if (__pInstance != null) + { + delete __pInstance; + __pInstance = null; + } +} + +result +CallPresentationModel::Construct(void) +{ + //Fetch Telephony Manager + __pTelephonyMgr = TelephonyManager::GetInstance(this); + __pSettingsPresentor = SettingsPresentationModel::GetInstance(); + __pAppControlMgr = CallAppControlRequestMgr::GetInstance(); + __pNetworkManager = new (std::nothrow)NetworkManager(); + __pNetworkManager->Construct(null); + __pNotificationManager = new (std::nothrow) Tizen::Shell::NotificationManager; + __pNotificationManager->Construct(); + GetSimInfo(); + return E_SUCCESS; +} + +void +CallPresentationModel::SetTelEventListener(ITelephonyEventListener* pTelEventListener) +{ + //set form as telephony event listener + __pTelEventListener = pTelEventListener; +} + +bool +CallPresentationModel::IfNumberEndsWithHash(Tizen::Base::String& phoneNumber) +{ + String phoneNumberEndingWithHash(L"#$"); + RegularExpression checkHash; + checkHash.Construct(phoneNumberEndingWithHash); + bool endsWithHash = checkHash.Match(phoneNumber,false); + if(endsWithHash == true) + { + return true; + } + return false; +} + +void +CallPresentationModel::DialCall(String& contactNumber, bool isEmergency) +{ + int errorCode = ERROR_NONE; + bool isCallServiceAvailable = false; + bool numberEndsWithHash = false; + NetworkStatus networkStatus; + result r; + //Check if Telephony Manager is initialized + TryCatch(__pTelephonyMgr != null, (errorCode = ERROR_TAPI_INIT_FAILED), "TAPI initialization failed"); + + //check if phone is in flight mode + if(__pSettingsPresentor != null && __pSettingsPresentor->GetFlightModeStatus() == true) + { + __pTelEventListener->HandleTelephonyError(ERROR_FLIGHT_MODE_SET); + return; + } + //Check if dialing a call is possible - Check if sim is available + if (IsSimAvailable() == false) + { + __pTelEventListener->HandleTelephonyError(ERROR_CODE_SIM_INITIALIZATION_FAILED); + return ; + } + + //fetch call service status + if(__pNetworkManager != null) + { + r = __pNetworkManager->GetNetworkStatus(networkStatus); + if (r == E_SUCCESS) + { + isCallServiceAvailable = networkStatus.IsCallServiceAvailable(); + } + } + + + if (isCallServiceAvailable == false) + { + __pTelEventListener->HandleTelephonyError(ERROR_SERVICE_UNAVAILABLE); + return ; + } + // check if GPRS number + numberEndsWithHash = IfNumberEndsWithHash(contactNumber); + if(numberEndsWithHash == true) + { + __pTelEventListener->HandleTelephonyError(ERROR_USSD_NUMBER); + return ; + } + + //setup outgoing call + errorCode = __pTelephonyMgr->SetupMoCall(contactNumber, isEmergency); + TryCatch(errorCode == ERROR_NONE,,"Error occurred while setup MO call"); + if(__pSettingsPresentor != null) + { + __pSettingsPresentor->SetCallState(CALL_STATE_CALL_VOICE_CONNECTING); + } + return; + +CATCH: + __pTelEventListener->HandleTelephonyError(errorCode); +} + +void +CallPresentationModel::EndActiveCall(Long callHandle) +{ + if(__pTelephonyMgr != null) + { + __pTelephonyMgr->EndActiveCall(callHandle); + } +} + +void +CallPresentationModel::EndDialingCall(String& contactNumber) +{ + if(__pTelephonyMgr != null) + { + __pTelephonyMgr->EndDialingCall(contactNumber); + } +} + +bool +CallPresentationModel::EndConferenceCall(void) +{ + result r = __pTelephonyMgr->EndConferenceCall(); + if (IsFailed(r)) + { + //TODO: send proper error code + __pTelEventListener->HandleTelephonyError(ERROR_GENERAL); + return false; + } + return true; +} + +void +CallPresentationModel::EndAllCall(void) +{ + if(__pTelephonyMgr != null) + { + __pTelephonyMgr->EndAllCalls(); + } +} +bool +CallPresentationModel::HoldCall(Tizen::Base::Long callHandle) +{ + result r = __pTelephonyMgr->HoldCall(callHandle, true); + return (!IsFailed(r)); +} + +bool +CallPresentationModel::UnHoldCall(Tizen::Base::Long callHandle) +{ + result r = __pTelephonyMgr->HoldCall(callHandle, false); + return (!IsFailed(r)); +} + +bool +CallPresentationModel::HoldConferenceCall(void) +{ + result r = __pTelephonyMgr->HoldConferenceCall(true); + return (!IsFailed(r)); +} + +bool +CallPresentationModel::ActivateConferenceCall(void) +{ + result r = __pTelephonyMgr->HoldConferenceCall(false); + return (!IsFailed(r)); +} + +void +CallPresentationModel::JoinCall(void) +{ + result r = __pTelephonyMgr->JoinCall(); + if (IsFailed(r)) + { + __pTelEventListener->HandleTelephonyError(ERROR_JOIN_FAILED); + } +} + +void +CallPresentationModel::SwapCalls(void) +{ + result r = __pTelephonyMgr->SwapCalls(); + if (IsFailed(r)) + { + __pTelEventListener->HandleTelephonyError(ERROR_SWAP_FAILED); + } +} + +bool +CallPresentationModel::SetMuteStatus(bool setMute) +{ + result r = __pTelephonyMgr->SetMuteStatus(setMute); + return (!IsFailed(r)); +} + +bool +CallPresentationModel::IsCallMuted(void) +{ + return __pTelephonyMgr->IsCallMuted(); +} + +bool +CallPresentationModel::SetSpeakerStatus(bool setSpeaker) +{ + result r = __pTelephonyMgr->SetSpeakerStatus(setSpeaker); + return (!IsFailed(r)); +} + +bool +CallPresentationModel::IsSpeakerOn(void) +{ + return __pTelephonyMgr->IsSpeakerOn(); +} +void +CallPresentationModel::SendDTMFSignal(String& textToBeSent) +{ + __pTelephonyMgr->SendCallDTMF(textToBeSent); +} + +AppCallInfo* +CallPresentationModel::GetConferenceCallInfoN(void) +{ + return __pTelephonyMgr->GetConferenceCallInfoN(); +} + +bool +CallPresentationModel::SplitFromConference(SplitConfCallerCmdIds splitCallerCmdId, IListT* pConfCallList) +{ + int callIndex = -1; + AppCallInfo callToBeSpli; + switch (splitCallerCmdId) + { + case IDA_SPLIT_CALLER1: + callIndex = 0; + break; + + case IDA_SPLIT_CALLER2: + callIndex = 1; + break; + + case IDA_SPLIT_CALLER3: + callIndex = 2; + break; + + case IDA_SPLIT_CALLER4: + callIndex = 3; + break; + + case IDA_SPLIT_CALLER5: + callIndex = 4; + break; + + default: + break; + } + + result r = pConfCallList->GetAt(callIndex, callToBeSpli); + TryCatch(r == E_SUCCESS,,"conf. call list corrupted"); + //split single call from conference + r = __pTelephonyMgr->SplitFromConference(callToBeSpli.GetCallHandle()->ToLong()); + TryCatch(r == E_SUCCESS,,"Split from conf. call failed"); + return true; + +CATCH: + __pTelEventListener->HandleTelephonyError(ERROR_SPLIT_FROM_CONFERENCE_FAILED); + return false; +} + +void +CallPresentationModel::EndCallFromConference(EndConfCallerCmdIds endCallerCmdId, IListT* pConfCallList) +{ + int callIndex = -1; + AppCallInfo callToBeEnded; + switch (endCallerCmdId) + { + case IDA_END_CALLER1: + callIndex = 0; + break; + + case IDA_END_CALLER2: + callIndex = 1; + break; + + case IDA_END_CALLER3: + callIndex = 2; + break; + + case IDA_END_CALLER4: + callIndex = 3; + break; + + case IDA_END_CALLER5: + callIndex = 4; + break; + + default: + break; + } + + result r = pConfCallList->GetAt(callIndex, callToBeEnded); + TryCatch(r == E_SUCCESS,,"conference call list corrupted"); + //end single call + r = __pTelephonyMgr->EndFromConference(callToBeEnded.GetCallHandle()->ToLong()); + TryCatch(r == E_SUCCESS,,"End single call from conference call failed"); + + return; + +CATCH: + __pTelEventListener->HandleTelephonyError(ERROR_END_CALL_FAILED); + return; +} + +bool +CallPresentationModel::IsSplitAllowed(void) +{ + return __pTelephonyMgr->IsSplitAllowed(); +} + +void +CallPresentationModel::AcceptIncomingCall(CallAnsweringOptions answerOptions,int callHandle) +{ + result r = E_FAILURE; + if (answerOptions == ANSERWING_OPTION_ACCEPT_CALL) + { + r = __pTelephonyMgr->AnswerCall(callHandle, true); + } + else + { + r = __pTelephonyMgr->AcceptCall(answerOptions,callHandle); + } + if (IsFailed(r)) + { + __pTelEventListener->HandleTelephonyError(ERROR_GENERAL); + } +} + +IListT* +CallPresentationModel::GetCallListN(void) +{ + return __pTelephonyMgr->GetCallListN(); +} + + +bool +CallPresentationModel::RejectCall(int callHandle, bool sendMsg, const String& contactNumber) +{ + AppLogDebug("Enter %d",callHandle); + if (sendMsg == true && __pAppControlMgr != null) + { + //launch compose message AppControl + __isMessageAppControlRunning = __pAppControlMgr->LaunchComposeMessageAppControl(*(const_cast(&contactNumber)), this); + } + result r = __pTelephonyMgr->AnswerCall(callHandle, false); + if (IsFailed(r)) + { + __pTelEventListener->HandleTelephonyError(ERROR_GENERAL); + return false; + } + + + AppLogDebug("Exit"); + return true; +} + +void CallPresentationModel::OnAppForeground(void) +{ + AppLogDebug("Enter %d %d",__isDialAppControlRunning ,__isMessageAppControlRunning); + if (__isDialAppControlRunning == true) + { + //This comes here, when Dialer AppControl is finished working. + __isDialAppControlRunning = false; + __pAppControlMgr->AppControlRequestCompleted(); + } + if (__isMessageAppControlRunning == true) + { + //This comes here, when Message AppControl is finished working. + __isMessageAppControlRunning = false; + __pAppControlMgr->AppControlRequestCompleted(); + //Check if this was the last call, then terminate application. + //And if any calls are active, then those cases are already handled from Other places. + if( GetCurrentCallCount() == 0 && IsIncomingorDialingCallPresent() == false) + { + CallApp* pCallApp = static_cast(UiApp::GetInstance()); + pCallApp->Terminate(); + } + } +} + +void +CallPresentationModel::OnAppControlCompleteResponseReceived(const AppId& appId, const String& operationId, AppCtrlResult appControlResult, const IMap* pExtraData) +{ + AppLogDebug("Enter"); + if (__isMessageAppControlRunning == true) + { + //This comes here, when Message AppControl is finished working. + __isMessageAppControlRunning = false; + __pAppControlMgr->AppControlRequestCompleted(); + //Check if this was the last call, then terminate application. + //And if any calls are active, then those cases are already handled from Other places. + if( GetCurrentCallCount() == 0) + { + CallApp* pPhoneApp = static_cast(UiApp::GetInstance()); + pPhoneApp->Terminate(); + } + } + if(appId.Equals(PROVIDER_ID_PHONE,false) == true && operationId.Equals(OPERATION_ID_DIAL,false) == true) + { + __isDialAppControlRunning = false; + + __pAppControlMgr->AppControlRequestCompleted(); + if(appControlResult == APP_CTRL_RESULT_SUCCEEDED) + { + String* pKey = new (std::nothrow) String(PARAM_PHONE_NUMBER); + if (pExtraData->ContainsKey(*pKey) == true) + { + const String* pPhoneNumber = static_cast(pExtraData->GetValue(*pKey)); + if(pPhoneNumber != null && pPhoneNumber->IsEmpty() == false) + { + AddCall(*pPhoneNumber); + } + + } + + } + + } +} + +void +CallPresentationModel::AddCall(const String& phoneNumber) +{ + ArrayList* pLaunchArgs = null; + SceneManager* pSceneManager = SceneManager::GetInstance(); + int currentActiveCallCount = GetCurrentCallCount(); + if(currentActiveCallCount <= 1 && IsIncomingorDialingCallPresent() == false) + { + //make an outgoing call with given number + String* contactTxt = new (std::nothrow) String(phoneNumber); + pLaunchArgs = new (std::nothrow) ArrayList(SingleObjectDeleter); + pLaunchArgs->Construct(); + pLaunchArgs->Add(contactTxt); + bool isEmergencyCall = IsEmergencyNumber(*contactTxt, true); + + SceneId nextScene = IDSCN_SCENE_OUTCALL; + if (isEmergencyCall) + { + nextScene = IDSCN_SCENE_OUT_EMERGENCYCALL; + } + pSceneManager->GoForward( ForwardSceneTransition( nextScene, + SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_HISTORY_OPTION_NO_HISTORY,SCENE_DESTROY_OPTION_KEEP), pLaunchArgs); + + } +} + +int +CallPresentationModel::GetCurrentCallCount(void) +{ + return __pTelephonyMgr->GetCurrentCallCount(); +} + +bool +CallPresentationModel::CheckSimInitializationIsCompleted() +{ + result r = E_FAILURE; + if(__pTelephonyMgr != null) + { + r = __pTelephonyMgr->CheckIfMOCallIsPossible(); + } + return (!IsFailed(r)); +} + +bool +CallPresentationModel::IsEmergencyNumber(const Tizen::Base::String& phoneNumber, bool isSimInitialized) +{ + return __pTelephonyMgr->CheckIfMOCallIsEmergency(phoneNumber, isSimInitialized); +} + +void +CallPresentationModel::ResumeAlert(AppCallInfo& incomingCallInfo) +{ + //Adding incoming call sate setting here + if(__pSettingsPresentor != null) + { + __pSettingsPresentor->SetCallState(CALL_STATE_CALL_VOICE_CONNECTING); + } + __pTelephonyMgr->ResumeAlert(incomingCallInfo); +} + +void +CallPresentationModel::StartAlert(AppCallInfo& incomingCallInfo) +{ + //Adding incoming call sate setting here + if(__pSettingsPresentor != null) + { + __pSettingsPresentor->SetCallState(CALL_STATE_CALL_VOICE_CONNECTING); + } + __pTelephonyMgr->StartAlert(incomingCallInfo); +} + +AppCallInfo* +CallPresentationModel::GetIncomingCallHandle() +{ + return __pTelephonyMgr->GetIncomingCallHandle(); +} + +void +CallPresentationModel::StopAlert(void) +{ + __pTelephonyMgr->StopAlert(); +} + +Contact* +CallPresentationModel::GetContactN(const String& phoneNumber) +{ + return __pTelephonyMgr->GetContactN(phoneNumber); +} + +AppCallInfo* +CallPresentationModel::FetchIncomingCallDetailsN(const String& callHandle, const String& contactNumber) +{ + + return __pTelephonyMgr->FetchIncomingCallHandleN(callHandle, contactNumber); +} + +bool +CallPresentationModel::CheckIncomingCallToBeRejected(AppCallInfo* pIncomingCallInfo) +{ + return __pTelephonyMgr->CheckIncomingCallToBeRejected(pIncomingCallInfo); +} + +///////////////////////////////////////////////////////////////// +///// Event Listener methods from ITelephonyEventListener ///// +///////////////////////////////////////////////////////////////// +void +CallPresentationModel::HandleCallConnected(Tizen::Base::Collection::IListT& pCallList) +{ + if (__pTelEventListener != null) + { + __pTelEventListener->HandleCallConnected(pCallList); + } + if(__pSettingsPresentor != null) + { + if(IsIncomingorDialingCallPresent() == false) + { + __pSettingsPresentor->SetCallState(CALL_STATE_CALL_VOICE_ACTIVE); + } + } +} + +void +CallPresentationModel::HandleCallActive(bool isActive) +{ + if (__pTelEventListener != null) + { + __pTelEventListener->HandleCallActive(isActive); + } +} + +void +CallPresentationModel::HandleCallHeld(bool isHeld) +{ + if (__pTelEventListener != null) + { + __pTelEventListener->HandleCallHeld(isHeld); + } +} + +void +CallPresentationModel::HandleCallDisconnected(bool isLastCall, Tizen::Base::Collection::IListT& pCallList) +{ + AppLogDebug("Enter"); + if (isLastCall == true) + { + SetSpeakerStatus(false); + SetMuteStatus(false); + if(__pSettingsPresentor != null) + { + //Check if there is a incoming call or dialing call present before setting the status + if(IsIncomingorDialingCallPresent() == false) + { + __pSettingsPresentor->SetCallState(CALL_STATE_CALL_OFF); + } + } + } + else + { + if(__pSettingsPresentor != null) + { + if(IsIncomingorDialingCallPresent() == false) + { + __pSettingsPresentor->SetCallState(CALL_STATE_CALL_VOICE_ACTIVE); + } + } + } + //1) Defer from sending call disconnected event to form, in case Msg AppControl is running, + //to avoid PhoneApp from going to EndCall form, where it shows for 3 sec. and automatically closes. + //2) Do not send call disconnected event to any form, in case an incoming call or dialing call is present. + if (__pTelEventListener != null /*&& __isMessageAppControlRunning == false*/ ) + { + __pTelEventListener->HandleCallDisconnected(isLastCall, pCallList); + } +} + +void +CallPresentationModel::HandleConferenceCall(AppCallInfo& pCallInfo) +{ + if (__pTelEventListener != null) + { + __pTelEventListener->HandleConferenceCall(pCallInfo); + } +} + +void +CallPresentationModel::HandleIncomingCall(AppCallInfo& pCallInfo) +{ + AppLogDebug("Error - This will never come here. Since, now we are getting incoming call event through AppControl!!"); +} + +void +CallPresentationModel::HandleConfCallHoldOccured(bool success) +{ + if (__pTelEventListener != null) + { + __pTelEventListener->HandleConfCallHoldOccured(success); + } +} + +void +CallPresentationModel::HandleConfCallActiveOccured(bool success) +{ + if (__pTelEventListener != null) + { + __pTelEventListener->HandleConfCallActiveOccured(success); + } +} + +void +CallPresentationModel::HandleCallSwapOccured(Tizen::Base::Collection::IListT& pCallList) +{ + if (__pTelEventListener != null) + { + __pTelEventListener->HandleCallSwapOccured(pCallList); + } +} + +void +CallPresentationModel::HandleConferenceChange(void) +{ + //1) Do not send conf. call changed event to any form, in case an incoming call or dialing call is present. + if (__pTelEventListener != null) + { + __pTelEventListener->HandleConferenceChange(); + } +} + +void +CallPresentationModel::HandleTelephonyError(int errorCode) +{ + if (__pTelEventListener != null) + { + __pTelEventListener->HandleTelephonyError(errorCode); + } +} + +void +CallPresentationModel::LaunchDialAppControl() +{ + + if(__isDialAppControlRunning == true) + { + AppLogDebug("__isDialAppControlRunning == true"); + //Do not allow another app control if already running + return; + } + + //Launch dialer AppControl + if (__pAppControlMgr != null) + { + __isDialAppControlRunning = __pAppControlMgr->LaunchDialerAppControl(this); + } + +} + +bool +CallPresentationModel::IsEnableJoinCallButton(void) +{ + //Check if conf. call has maximum participants + AppCallInfo* pConfCallInfo = GetConferenceCallInfoN(); + if(pConfCallInfo != null && pConfCallInfo->GetCallerListCount() >= IDI_MAX_CONF_CALL_PARTICIPANTS) + { + return false; + } + + //check if either of the caller is same or present in conf call. + IListT* pActiveCallList = GetCallListN(); + if ( pActiveCallList != null && pActiveCallList->GetCount() == IDI_MAX_ACTIVE_CALLS) + { + AppCallInfo firstCall; + AppCallInfo secondCall; + pActiveCallList->GetAt(0, firstCall); + pActiveCallList->GetAt(1, secondCall); + + if (firstCall.IsConferenceCall() == true) + { + IListT* pConfMemberList = firstCall.GetCallerList(); + for (int index = 0; index < pConfMemberList->GetCount(); index++) + { + AppCallInfo singleConfMember; + pConfMemberList->GetAt(index, singleConfMember); + if (secondCall.GetContactNumber().IsEmpty() == false && secondCall.GetContactNumber().Equals(singleConfMember.GetContactNumber()) == true) + { + return false; + } + } + } + else if (secondCall.IsConferenceCall() == true) + { + IListT* pConfMemberList = secondCall.GetCallerList(); + for (int index = 0; index < pConfMemberList->GetCount(); index++) + { + AppCallInfo singleConfMember; + pConfMemberList->GetAt(index, singleConfMember); + if (firstCall.GetContactNumber().IsEmpty() == false && firstCall.GetContactNumber().Equals(singleConfMember.GetContactNumber()) == true) + { + return false; + } + } + } + else + { + //Now, we definitely know that both are single active calls. + if (firstCall.GetContactNumber().IsEmpty() == false && firstCall.GetContactNumber().Equals(secondCall.GetContactNumber()) == true) + { + return false; + } + } + } + delete pConfCallInfo; + pConfCallInfo = null; + return true; +} + +bool +CallPresentationModel::IsIncomingCallPresent(void) +{ + return __pTelephonyMgr->IsIncomingCallPresent(); +} + +bool +CallPresentationModel::IsIncomingorDialingCallPresent(void) +{ + //returns false, if incoming call or dialed call is present. + return __pTelephonyMgr->IsIncomingorDialingCallPresent(); +} + +bool +CallPresentationModel::LaunchComposeMessageAppControl(String& contactNumber, IAppControlResponseListener* pListener) +{ + if (__pAppControlMgr != null) + { + return __pAppControlMgr->LaunchComposeMessageAppControl(contactNumber, pListener); + } + return false; +} + +bool +CallPresentationModel::LaunchViewContactAppControl(String& contactId, IAppControlResponseListener* pListener) +{ + if (__pAppControlMgr != null) + { + return __pAppControlMgr->LaunchViewContactAppControl(contactId, pListener); + } + return false; +} + +bool +CallPresentationModel::LaunchAddContactAppControl(Tizen::Base::String& contactNumber, Tizen::App::IAppControlResponseListener* pListener) +{ + if (__pAppControlMgr != null) + { + return __pAppControlMgr->LaunchAddContactAppControl(contactNumber, pListener); + } + return false; +} + +bool +CallPresentationModel::IsAppControlRunning(void) +{ + if (__pAppControlMgr != null) + { + return __pAppControlMgr->IsAppControlRunning(); + } + return false; +} + +void +CallPresentationModel::AbortAppControlRequest(void) +{ + if (__pAppControlMgr != null) + { + __pAppControlMgr->AbortAppControlRequest(); + } +} + +void +CallPresentationModel::AppControlRequestCompleted(void) +{ + if (__pAppControlMgr != null) + { + __pAppControlMgr->AppControlRequestCompleted(); + } +} + +result +CallPresentationModel::GetSimInfo(void) +{ + __psimStateManager = new (std::nothrow)SimStateManager(); + result r = __psimStateManager->Construct(); + if (IsFailed(r)) + { + delete __psimStateManager; + __psimStateManager = null; + return E_FAILURE; + } + __psimStateManager->SetSimEventListener(this); + + __psimInfo = new (std::nothrow)SimInfo(); + r = __psimStateManager->GetSimInfo(*__psimInfo); + if (IsFailed(r)) + { + delete __psimStateManager; + __psimStateManager = null; + delete __psimInfo; + __psimInfo = null; + return E_FAILURE; + } + return E_SUCCESS; +} + +void +CallPresentationModel::OnTelephonyNetworkStatusChanged(const NetworkStatus& networkStatus) +{ + +} + +void +CallPresentationModel::OnTelephonySimStateChanged(Tizen::Telephony::SimState state) +{ + if(__psimStateManager != null) + { + delete __psimStateManager; + __psimStateManager =null; + } + if(__psimInfo != null) + { + delete __psimInfo; + __psimInfo = null; + } + + __psimStateManager = new SimStateManager(); + result r = __psimStateManager->Construct(); + if (IsFailed(r)) + { + delete __psimStateManager; + __psimStateManager = null; + return ; + } + + __psimInfo = new SimInfo(); + r = __psimStateManager->GetSimInfo(*__psimInfo); + if (IsFailed(r)) + { + delete __psimStateManager; + __psimStateManager = null; + delete __psimInfo; + __psimInfo = null; + return ; + } + +} + +bool +CallPresentationModel::IsSimAvailable(void) +{ + if(__psimInfo != null) + { + return __psimInfo->IsAvailable(); + } + else + { + return false; + } + + +} + +void +CallPresentationModel::SendMessage(String& strMsg,String& recpientNum) +{ + AppLogDebug("Enter"); + result r; + if(__pSmsManager == null) + { + __pSmsManager = new (std::nothrow) SmsManager(); + result r = __pSmsManager->Construct(*this); + if (IsFailed(r) == true) + { + delete __pSmsManager; + __pSmsManager = null; + return; + } + + } + RecipientList recipient; + recipient.Add(RECIPIENT_TYPE_TO,recpientNum); + SmsMessage smsMessage; + r = smsMessage.SetText(strMsg); + if (IsFailed(r) == false) + { + r = __pSmsManager->Send(smsMessage,recipient,true); + if (IsFailed(r) == false) + { + __isMessageSendInProgress = true; + } + else + { + AppLogDebug("%s",GetErrorMessage(r)); + ShowSMSErrorNotification(); + } + + } + +} + +void +CallPresentationModel::ShowSMSErrorNotification(void) +{ + AppLogDebug("Enter"); + NotificationRequest request; + String alertString = L"\n"; + alertString.Append(AppUtility::GetResourceString(IDS_MESSAGE_SENDING_FAILED)); + request.SetAlertText(L" "); + request.SetTitleText(alertString); + request.SetNotificationStyle(NOTIFICATION_STYLE_NORMAL); + + String resourcePath = App::GetInstance()->GetAppSharedPath() + L"res/"; + + String iconPath = resourcePath + L"messages.png"; + request.SetIconFilePath(iconPath); + + int badgeNumber = __pNotificationManager->GetBadgeNumber(); + ++badgeNumber; + if (badgeNumber <= 0) + { + badgeNumber = 1; + } + request.SetBadgeNumber(badgeNumber); + + AppLogDebug("Calling Notify"); + __pNotificationManager->Notify(request); + __pNotificationManager->RemoveNotification(); +} + +bool +CallPresentationModel::IsMessageSendingInProgress(void) +{ + AppLogDebug("Enter %d",__isMessageSendInProgress); + return __isMessageSendInProgress; +} + +void +CallPresentationModel::OnSmsMessageSent(result r) +{ + AppLogDebug("Enter"); + __isMessageSendInProgress = false; + +} diff --git a/src/CallRejectInfo.cpp b/src/CallRejectInfo.cpp new file mode 100644 index 0000000..1ddedc2 --- /dev/null +++ b/src/CallRejectInfo.cpp @@ -0,0 +1,69 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallCallRejectInfo.cpp + * @brief Call Reject info class + */ +#include "CallRejectInfo.h" + +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; + +CallRejectInfo::CallRejectInfo(void) +{ +} + +CallRejectInfo::~CallRejectInfo(void) +{ +} + +bool +CallRejectInfo::operator ==(const CallRejectInfo& rhs) const +{ + /*return (this->rowId == rhs.rowId);*/ + if ((this->phoneNumber == rhs.phoneNumber) + && (this->rejectCondition == rhs.rejectCondition)) + { + return true; + } + return false; +} + +bool +CallRejectInfo::operator !=(const CallRejectInfo& rhs) const +{ + /*return (!(this->rowId == rhs.rowId));*/ + if ((this->phoneNumber == rhs.phoneNumber) + && (this->rejectCondition == rhs.rejectCondition)) + { + return false; + } + return true; +} + +CallRejectInfo& +CallRejectInfo::operator =(const CallRejectInfo& rhs) +{ + if (this != null) + { + this->rowId = rhs.rowId; + this->phoneNumber.Append(rhs.phoneNumber); + this->rejectCondition = rhs.rejectCondition; + this->isActivated = rhs.isActivated; + } + return *this; +} diff --git a/src/CallSceneRegister.cpp b/src/CallSceneRegister.cpp new file mode 100644 index 0000000..006ba8f --- /dev/null +++ b/src/CallSceneRegister.cpp @@ -0,0 +1,74 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallSceneRegister.cpp + * @brief Scene register file + */ +#include +#include "CallSceneRegister.h" +#include "CallPhoneFormFactory.h" +#include "CallPanelFactory.h" +#include "CallTypes.h" + +using namespace Tizen::Base; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui::Scenes; + + +SceneRegister::SceneRegister(void) +{ +} + +SceneRegister::~SceneRegister(void) +{ +} + +result +SceneRegister::RegisterAllScenes(void) +{ + result r = E_SUCCESS; + SceneManager* pSceneManager = SceneManager::GetInstance(); + AppAssert(pSceneManager != null); + + //Register factory methods for form & panel creation + static FormFactory formFactory; + static PanelFactory panelFactory; + r |= pSceneManager->RegisterFormFactory(formFactory); + r |= pSceneManager->RegisterPanelFactory(panelFactory); + + //Voice Call Scenes + r |= pSceneManager->RegisterScene(IDSCN_SCENE_OUTCALL, IDL_FORM_OUTCALL, L""); + AppLogDebug("%d",r); + r |= pSceneManager->RegisterScene(IDSCN_SCENE_OUT_EMERGENCYCALL, IDL_FORM_OUT_EMERGENCYCALL, L""); + AppLogDebug("%d",r); + r |= pSceneManager->RegisterScene(IDSCN_SCENE_ACTIVECALL, IDL_FORM_ACTIVECALL, L""); + AppLogDebug("%d",r); + r |= pSceneManager->RegisterScene(IDSCN_SCENE_ACTIVE_EMERGENCYCALL, IDL_FORM_ACTIVE_EMERGENCYCALL, L""); + AppLogDebug("%d",r); + r |= pSceneManager->RegisterScene(IDSCN_SCENE_MULTIPLEACTIVECALL, IDL_FORM_MULTIPLEACTIVECALL, L""); + AppLogDebug("%d",r); + r |= pSceneManager->RegisterScene(IDSCN_SCENE_INCOMINGCALL, IDL_FORM_INCOMINGCALL, L""); + AppLogDebug("%d",r); + r |= pSceneManager->RegisterScene(IDSCN_SCENE_CONFCALL, IDL_FORM_CONFCALL, L""); + AppLogDebug("%d",r); + r |= pSceneManager->RegisterScene(IDSCN_SCENE_CONFCALLLIST, IDL_FORM_CONFCALLLIST, L""); + AppLogDebug("%d",r); + r |= pSceneManager->RegisterScene(IDSCN_SCENE_ENDCALL, IDL_FORM_ENDCALL, L""); + + return r; +} diff --git a/src/CallSettingDataService.cpp b/src/CallSettingDataService.cpp new file mode 100644 index 0000000..a80abb7 --- /dev/null +++ b/src/CallSettingDataService.cpp @@ -0,0 +1,255 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallCallSettingDataService.cpp + * @brief Call Database class + */ + +#include +#include +#include +#include "CallSettingDataService.h" + +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; +using namespace Tizen::Io; +using namespace Tizen::App; +using namespace Tizen::Social; + +static const wchar_t* REJECT_DATABASE_PATH = L"/opt/apps/zktdpemtmw/shared/"; + +CallSettingDataService* CallSettingDataService::__pCallSettingDataService = null; +Database* CallSettingDataService::__pDatabase = null; + +CallSettingDataService::CallSettingDataService(void) +: __strDbName(String(REJECT_DATABASE_PATH) + L"trusted/CallRejectInfoListDataBase") +{ + __pStmt = null; + __pEnum = null; + + return; +} + +CallSettingDataService::~CallSettingDataService(void) +{ + if (__pDatabase != null) + { + delete __pDatabase; + __pDatabase = null; + } + __pCallSettingDataService = null; + return; +} + +CallSettingDataService* +CallSettingDataService::CreateInstance(void) +{ + if (__pCallSettingDataService == null) + { + __pCallSettingDataService = new (std::nothrow) CallSettingDataService(); + } + return __pCallSettingDataService; +} +result +CallSettingDataService::OpenDatabase(void) +{ + result r = E_SUCCESS; + + // create the database if it doesn't exist + if (__pDatabase != null) + { + return E_OBJ_ALREADY_EXIST; + } + __pDatabase = new (std::nothrow) Database(); + r = __pDatabase->Construct(__strDbName, "r"); + TryCatch(r == E_SUCCESS, , "CallSettingDataService::OpenDatabase() database construct failed"); + + r = CreateCallRejectTableDatabase(); + // TryCatch(r == E_SUCCESS, , "CallSettingDataService::OpenDatabase() call reject Create Table failed"); + r = CreateSpeedDialTableDatabase(); + // TryCatch(r == E_SUCCESS, , "CallSettingDataService::OpenDatabase() speed dial Create Table failed"); + + return r; + + CATCH: + delete __pDatabase; + __pDatabase = null; + return r; +} + +result +CallSettingDataService::CreateCallRejectTableDatabase(void) +{ + String sqlQuery; + result r = E_SUCCESS; + + sqlQuery.Append(L"CREATE TABLE IF NOT EXISTS CallRejectInfoTable(id INTEGER PRIMARY KEY AUTOINCREMENT,phonenumber TEXT,rejectcondition INT,activated INT)"); + + r = __pDatabase->ExecuteSql(sqlQuery, true); + TryCatch(r == E_SUCCESS, , "CallSettingDataService::CreateCallRejectInfoTableDatabase() Create Table failed"); + + return r; + + CATCH: + return r; +} + +result +CallSettingDataService::CreateSpeedDialTableDatabase(void) +{ + String sqlQuery; + result r = E_SUCCESS; + + sqlQuery.Append(L"CREATE TABLE IF NOT EXISTS SpeedDialTable(id INTEGER PRIMARY KEY AUTOINCREMENT,contactInfo TEXT,keyMappedTo INT)"); + + r = __pDatabase->ExecuteSql(sqlQuery, true); + TryCatch(r == E_SUCCESS, , "CallSettingDataService::CreateCallRejectInfoTableDatabase() Create Table failed"); + + return r; + + CATCH: + return r; +} + +result +CallSettingDataService::CloseDatabase(void) +{ + if (__pEnum != null) + { + delete __pEnum; + __pEnum = null; + } + if (__pStmt != null) + { + delete __pStmt; + __pStmt = null; + } + if (__pDatabase != null) + { + delete __pDatabase; + __pDatabase = null; + } + + return E_SUCCESS; +} + + +bool +CallSettingDataService::IsCallToBeRejected(String& phoneNumber) +{ + AppLogDebug("Enter"); + bool isCallToBeRejected = false; + String statement; + __pStmt = null; + __pEnum = null; + result r = E_SUCCESS; + __pDatabase->BeginTransaction(); + + //statement.Append(L"SELECT * FROM CallRejectInfoTable WHERE phonenumber LIKE ?"); + statement.Append(L"SELECT * FROM CallRejectInfoTable WHERE activated=?"); + + __pStmt = __pDatabase->CreateStatementN(statement); + r = GetLastResult(); + TryCatch(r == E_SUCCESS, , "CallSettingDataService::SearchFromDataBase CreateStatementN failed"); + + //__pStmt->BindString(0, phoneNumber); + if (__pStmt != null) + { + __pStmt->BindInt(0,(int)true); + __pEnum = __pDatabase->ExecuteStatementN(*__pStmt); + } + r = GetLastResult(); + TryCatch(r == E_SUCCESS, , "CallSettingDataService::SearchFromDataBaseN search failed"); + + //check if the query returned any result and then iterate through the results + if (__pEnum != null) + { + while (__pEnum->MoveNext() == E_SUCCESS) + { + CallRejectInfo* pCallRejectInfoItem = new (std::nothrow) CallRejectInfo; + int activateflag; + int rejectCondition; + __pEnum->GetIntAt(0, pCallRejectInfoItem->rowId); + __pEnum->GetStringAt(1, pCallRejectInfoItem->phoneNumber); + __pEnum->GetIntAt(2, rejectCondition); + __pEnum->GetIntAt(3, activateflag); + pCallRejectInfoItem->rejectCondition = (CallRejectMatchCondition)rejectCondition; + pCallRejectInfoItem->isActivated = (bool)activateflag; + if (CheckRejectCondition(phoneNumber, *pCallRejectInfoItem) == true) + { + delete pCallRejectInfoItem; + isCallToBeRejected = true; + break; + } + delete pCallRejectInfoItem; + } + } + __pDatabase->CommitTransaction(); + + if (__pStmt != null) + { + delete __pStmt; + __pStmt = NULL; + } + if (__pEnum != null) + { + delete __pEnum; + __pEnum = NULL; + } + AppLogDebug("%d",isCallToBeRejected); + return isCallToBeRejected; + + CATCH: + return isCallToBeRejected; +} + +bool +CallSettingDataService::CheckRejectCondition(String& phoneNumber, CallRejectInfo& callRejectInfo) +{ + bool isCallToBeRejected = false; + switch (callRejectInfo.rejectCondition) + { + case CALL_REJECT_MATCH_EXACTLY: + { + if (callRejectInfo.phoneNumber.CompareTo(phoneNumber) == 0) + { + isCallToBeRejected = true; + } + } + break; + case CALL_REJECT_MATCH_START: + { + isCallToBeRejected = phoneNumber.StartsWith(callRejectInfo.phoneNumber, 0); + } + break; + case CALL_REJECT_MATCH_END: + { + isCallToBeRejected = phoneNumber.EndsWith(callRejectInfo.phoneNumber); + } + break; + case CALL_REJECT_MATCH_INCLUDE: + { + isCallToBeRejected = phoneNumber.Contains(callRejectInfo.phoneNumber); + } + break; + default: + break; + } + + return isCallToBeRejected; +} + diff --git a/src/CallSettingsConstants.cpp b/src/CallSettingsConstants.cpp new file mode 100644 index 0000000..951d9e6 --- /dev/null +++ b/src/CallSettingsConstants.cpp @@ -0,0 +1,88 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallSettingsConstants.cpp + * @brief Call setting tone form + */ +#include "CallSettingsConstants.h" + +using namespace Tizen::Graphics; + + +// Dimensions used in List views // +// menu item height +const int H_LIST_HIDDENGROUP_ITEM = 1; +const int H_LIST_NORMAL_MENU_ITEM = 112; +const int H_LIST_DROPDOWN_MENU_ITEM = 128; +const int H_LIST_MENU_SINGLELINE_HLPTXT_ITEM = 102; +//text item height +const int H_LIST_NORMAL_TXT_ITEM = 54; +const int H_LIST_SUB_TXT_ITEM = 38; +//Two line text for Drop down menu item +const int H_LIST_DROPDOWN_TXT_ITEM = 52; +//single line text +const int X_LIST_MENU_TEXT_ITEM = 26; +const int Y_LIST_MENU_TEXT_ITEM = 8; +//Help text +const int X_LIST_MENU_HLPTXT_ITEM = 26; +const int Y_LIST_MENU_HLPTXT_ITEM = 8; +//custom Item for Bg line +const int Y_CUSTOM_BG_ELEMENT = 0; +//Position for delete list item +const int X_DEL_LIST_ELEMENT = 16; +const int Y_DEL_LIST_ELEMENT = 0; + +// Dimensions for icons // +//Expand icon for DropDown Menu Items +const int W_EXPAND_ICON = 64; +const int H_EXPAND_ICON = 64; +const int W_SLIDER_ICON = 150; +const int H_SLIDER_ICON = 64; +//Dimensions for custom bg line +const int W_CUSTOM_BG_ELEMENT = 1; +//Item Width for delete list +const int W_DELETE_LIST_ITEM = 628; +const int W_LEFT_HEADER_EXPAND_ITEMS = 8; + +const int FONT_SIZE_SUB_TXT = 32; +//Help text +const int FONT_SIZE_HELP_TXT = 32; +//Header, Footer icon +const int W_HDR_FTR_ICON = 60; +const int H_HDR_FTR_ICON = 60; +//Processing Animation constants +const int IDI_ANIM_DURATION = 500; +const int IDI_ANIM_PROGRESS_COUNT = 30; + + +//Settings UI contants +// Colors used in List views // +const unsigned int COLOR_GROUP_ITEM_BG = Color32<249, 249, 249>::Value; +const unsigned int COLOR_LIST_MENU_ITEM = Color32<236, 240, 242>::Value; +const unsigned int COLOR_SECONDDEPTH_ITEM_BG = Color32<215, 225, 232>::Value; +const unsigned int COLOR_HELP_ITEM_BG = Color32<255, 255, 255, 0>::Value; +const unsigned int COLOR_NORMAL_MAIN_TXT = Color32<102, 102, 102>::Value; +const unsigned int COLOR_NORMAL_SUB_TXT = Color32<124, 124, 124>::Value; +const unsigned int COLOR_PRESS_SUB_TXT = Color32<42, 137, 194>::Value; +const unsigned int COLOR_PRESS_MAIN_TXT = Color32<249, 249, 249>::Value; +const unsigned int COLOR_HELP_TXT = Color32<124, 124, 124>::Value; +const unsigned int COLOR_LEFT_HEADER_EXPAND_ITEMS = Color32<108, 168, 199>::Value; +//Main List Option text +const unsigned int COLOR_MAIN_TXT = Color32<0, 0, 0>::Value; +const unsigned int COLOR_NORMAL_ITEM_BG = Color32<249, 249, 249>::Value; +const unsigned int COLOR_PRESS_ITEM_BG = Color32<42, 137, 194>::Value; +const unsigned int COLOR_SELECTALL_ITEM_BG = Color32<215, 225, 232>::Value; diff --git a/src/CallSettingsManager.cpp b/src/CallSettingsManager.cpp new file mode 100644 index 0000000..3cdc5ed --- /dev/null +++ b/src/CallSettingsManager.cpp @@ -0,0 +1,391 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallSettingsManager.cpp + * @brief Setting Manager class + */ +#include +#include +#include +#include +#include "vconf.h" +#include "vconf-internal-ciss-keys.h" +#include "CallSettingsManager.h" +#include "CallTypes.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; +using namespace Tizen::Io; +using namespace Tizen::Social; +using namespace Tizen::System; + +SettingsManager* SettingsManager::__pInstance = null; + +SettingsManager::SettingsManager(void) + : __pTapiHandle(null) + , __pSettingsEventListener(null) + , __pCallSettingDataService(null) +{ + +} + +SettingsManager::~SettingsManager(void) +{ + //De-initialize the TAPI Library + if(__pTapiHandle != null) + { + tel_deinit(__pTapiHandle); + } + if (__pCallSettingDataService) + { + __pCallSettingDataService->CloseDatabase(); + delete __pCallSettingDataService; + } + if (__pSettingsEventListener != null) + { + delete __pSettingsEventListener; + } + RemoveSystemEventListener(); +} + +void SettingsManager::CreateInstance(void) +{ + __pInstance = new (std::nothrow) SettingsManager(); + result r = __pInstance->Construct(); + if(IsFailed(r)) + { + delete __pInstance; + __pInstance = null; + return; + } + std::atexit(&(SettingsManager::DestroyInstance)); +} + +void SettingsManager::DestroyInstance(void) +{ + delete __pInstance; +} + +result +SettingsManager::Construct(void) +{ + __pCallSettingDataService = CallSettingDataService::CreateInstance(); + result r = __pCallSettingDataService->OpenDatabase(); + if(IsFailed(r)) + { + return E_FAILURE; + } + //initialize telephony + __pTapiHandle = tel_init(null); + SetCallState(CALL_STATE_CALL_OFF); + AddSystemEventListener(); + return E_SUCCESS; +} + +SettingsManager* +SettingsManager::GetInstance(void) +{ + if (__pInstance == null) + { + CreateInstance(); + } + return __pInstance; +} + +void +SettingsManager::AddSettingEventListener(ISettingsEventListener* pSettingsEventListener) +{ + if (__pSettingsEventListener == null) + { + __pSettingsEventListener = new (std::nothrow) ArrayListT(); + } + + //Add to listeners, if not already in list. + if ( (pSettingsEventListener != null) + && !(__pSettingsEventListener->Contains(pSettingsEventListener)) ) + { + __pSettingsEventListener->Add(pSettingsEventListener); + } +} + +void +SettingsManager::RemoveSettingEventListener(ISettingsEventListener* pSettingsEventListener) +{ + if ((__pSettingsEventListener != null) && (pSettingsEventListener != null) + && __pSettingsEventListener->Contains(pSettingsEventListener)) + { + __pSettingsEventListener->Remove(pSettingsEventListener); + } +} + +bool +SettingsManager::IsCallToBeRejected(String& phoneNumber) +{ + if(__pCallSettingDataService != null) + { + return __pCallSettingDataService->IsCallToBeRejected(phoneNumber); +} + else + { + return false; + } +} + +bool +SettingsManager::GetUnknownRejectStatus(void) +{ + int unknownRejectStatus = -1; + + vconf_get_bool(VCONFKEY_CISSAPPL_AUTO_REJECT_UNKNOWN_BOOL, &unknownRejectStatus); + + bool retVal = unknownRejectStatus; + return retVal; +} + +void +SettingsManager::NotifyForwardingEventListeners(ForwardResponseType responseType, bool isCallSuccessful, CallForwardCondition callFwdCondition, const Tizen::Base::String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime) +{ + IEnumeratorT* pListenerEnum = null; + result r = E_FAILURE; + if (__pSettingsEventListener != null) + { + pListenerEnum = __pSettingsEventListener->GetEnumeratorN(); + //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult())); + + while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE) + { + ISettingsEventListener* pListener; + r = pListenerEnum->GetCurrent(pListener); + //TryCatch(r == E_SUCCESS, , "[%s] Propagated.", GetErrorMessage(r)); + if (responseType == SET_CALLFORWARD_RESPONSE) + { + pListener->HandleSetCallForwardResponse(isCallSuccessful, callFwdCondition, callFwdNumber, isCallForwardActivated, noReplyWaitTime); + } + else + { + pListener->HandleGetCallForwardResponse(isCallSuccessful, callFwdCondition, callFwdNumber, isCallForwardActivated, noReplyWaitTime); + } + } + } +} + +void +SettingsManager::NotifyBarringEventListeners(BarringResponseType responseType, bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated) +{ + IEnumeratorT* pListenerEnum = null; + result r = E_FAILURE; + if (__pSettingsEventListener != null) + { + pListenerEnum = __pSettingsEventListener->GetEnumeratorN(); + //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult())); + + while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE) + { + ISettingsEventListener* pListener; + r = pListenerEnum->GetCurrent(pListener); + //TryCatch(r == E_SUCCESS, , "[%s] Propagated.", GetErrorMessage(r)); + if (responseType == SET_CALLBARRING_RESPONSE) + { + pListener->HandleSetCallBarringResponse(isCallSuccessful, callBarringType, isBarringActivated); + } + else + { + pListener->HandleGetCallBarringResponse(isCallSuccessful, callBarringType, isBarringActivated); + } + } + } +} + +void +SettingsManager::NotifyWaitingEventListeners(WaitingResponseType responseType, bool isCallSuccessful, bool isCallWaitingActivated) +{ + IEnumeratorT* pListenerEnum = null; + result r = E_FAILURE; + if (__pSettingsEventListener != null) + { + pListenerEnum = __pSettingsEventListener->GetEnumeratorN(); + //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult())); + + while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE) + { + ISettingsEventListener* pListener; + r = pListenerEnum->GetCurrent(pListener); + //TryCatch(r == E_SUCCESS, , "[%s] Propagated.", GetErrorMessage(r)); + if (responseType == SET_CALLWAITING_RESPONSE) + { + pListener->HandleSetCallWaitingResponse(isCallSuccessful, isCallWaitingActivated); + } + else + { + pListener->HandleGetCallWaitingResponse(isCallSuccessful, isCallWaitingActivated); + } + } + delete pListenerEnum; + } +} + +IMapT* +SettingsManager::GetRejectMessageListN(void) +{ + int messagesCount; + char* pMessage = null; + HashMapT *pMessageMap = null; + + int retval = vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &messagesCount); + if (retval == 0 && messagesCount > 0) + { + pMessageMap = new (std::nothrow) HashMapT(); + pMessageMap->Construct(messagesCount); + for (int index = 0; index < messagesCount; index++) + { + int keyForMsg = index; + String *pMessageStr = new (std::nothrow) String(); + switch (index) + { + case 0: + { + pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG1_STR); + } + break; + + case 1: + { + pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG2_STR); + } + break; + + case 2: + { + pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG3_STR); + } + break; + + case 3: + { + pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG4_STR); + } + break; + + case 4: + { + pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG5_STR); + } + break; + + case 5: + { + pMessage = vconf_get_str(VCONFKEY_CISSAPPL_USER_CREATE_MSG6_STR); + } + break; + + default: + { + delete pMessageMap; + pMessageMap = null; + delete pMessageStr; + pMessageStr = null; + return null; + } + break; + } + //todo:Chk if this is allowed outside the call settings library + if((pMessage != null) && (String(pMessage).IsEmpty() == false)) + { + bindtextdomain("ug-setting-call-efl", "/usr/ug/res/locale"); + pMessageStr->Append(dgettext("ug-setting-call-efl", pMessage)); + pMessageMap->Add(keyForMsg, *pMessageStr); + } + } + } + return pMessageMap; +} + +result +SettingsManager::SetCallState(CallState callState) +{ + AppLogDebug("Enter %d",callState); + result r = E_FAILURE; + int retVal = vconf_set_int(VCONFKEY_CALL_STATE, callState); + if (retVal == 0) + { + AppLogDebug("Success"); + r = E_SUCCESS; + } + return r; +} +void +SettingsManager::AddSystemEventListener(void) +{ + Tizen::System::SettingInfo::AddSettingEventListener(*this); +} + +void +SettingsManager::RemoveSystemEventListener(void) +{ + Tizen::System::SettingInfo::RemoveSettingEventListener(*this); +} + +void +SettingsManager::OnSettingChanged(Tizen::Base::String& key) +{ + AppLogDebug("Enter"); + //Flight mode changed + if(key.Equals(String(SETTINGS_FLIGHT_MODE_STR))) + { + bool flightMode = false; + SettingInfo::GetValue(key, flightMode); + if(flightMode == true) + { + // Notify if some active call is going on + IEnumeratorT* pListenerEnum = null; + result r = E_FAILURE; + if (__pSettingsEventListener != null) + { + pListenerEnum = __pSettingsEventListener->GetEnumeratorN(); + //TryReturn(pListenerEnum != null, GetLastResult(), "[%s] Propagated.", GetErrorMessage(GetLastResult())); + + while ((r = pListenerEnum->MoveNext()) != E_OUT_OF_RANGE) + { + ISettingsEventListener* pListener; + r = pListenerEnum->GetCurrent(pListener); + pListener->HandleFlightMode(true); + + } + } + + } + } +} + +bool +SettingsManager::GetFlightModeStatus(void) +{ + result r = E_SUCCESS; + + String key(SETTINGS_FLIGHT_MODE_STR); + bool flightMode = false; + + r = SettingInfo::GetValue(key, flightMode); + TryCatch(r == E_SUCCESS, , "GetFlightModeStatus: To get a value is failed"); + + return flightMode; + + CATCH: + return flightMode; +} + diff --git a/src/CallSettingsPresentationModel.cpp b/src/CallSettingsPresentationModel.cpp new file mode 100644 index 0000000..4947fa9 --- /dev/null +++ b/src/CallSettingsPresentationModel.cpp @@ -0,0 +1,195 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallSettingsPresentationModel.cpp + * @brief Setting Presentation model + */ +#include "CallSettingsConstants.h" +#include "CallSettingsManager.h" +#include "CallSettingsPresentationModel.h" +#include "CallPresentationModel.h" + +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; +using namespace Tizen::Social; + +SettingsPresentationModel* SettingsPresentationModel::__pInstance = null; + +SettingsPresentationModel::SettingsPresentationModel() +{ + __pSettingsMgr = null; + __pSettingsEventListener = null; +} + +SettingsPresentationModel::~SettingsPresentationModel() +{ +} + +void +SettingsPresentationModel::CreateInstance(void) +{ + __pInstance = new (std::nothrow) SettingsPresentationModel(); + result r = __pInstance->Construct(); + if(IsFailed(r)) + { + delete __pInstance; + __pInstance = null; + return; + } + atexit(&(SettingsPresentationModel::DestroyInstance)); +} + +SettingsPresentationModel* +SettingsPresentationModel::GetInstance(void) +{ + if (__pInstance == null) + { + CreateInstance(); + } + return __pInstance; +} + +void +SettingsPresentationModel::DestroyInstance(void) +{ + if (__pInstance->__pSettingsMgr != null) + { + __pInstance->__pSettingsMgr->RemoveSettingEventListener(__pInstance); + __pInstance->__pSettingsMgr = null; + } + delete __pInstance; +} + +result +SettingsPresentationModel::Construct(void) +{ + //Construct Settings Manager + __pSettingsMgr = SettingsManager::GetInstance(); + if(__pSettingsMgr != null) + { + __pSettingsMgr->AddSettingEventListener(this); + } + return E_SUCCESS; +} + +result +SettingsPresentationModel::AddSettingEventListener(ISettingsEventListener* pSettingsEventListener) +{ + result r = E_FAILURE; + if (__pSettingsEventListener == null && pSettingsEventListener != null) + { + __pSettingsEventListener = pSettingsEventListener; + r = E_SUCCESS; + } + return r; +} + +void +SettingsPresentationModel::RemoveSettingEventListener(void) +{ + __pSettingsEventListener = null; +} + +IMapT* +SettingsPresentationModel::GetRejectMessageListN(void) +{ + return __pSettingsMgr->GetRejectMessageListN(); +} + + +bool +SettingsPresentationModel::IsCallToBeRejected(Tizen::Base::String& phoneNumber) +{ + return __pSettingsMgr->IsCallToBeRejected(phoneNumber); +} + + +////////////////////////////////////////////////// +// Settings Event Listener Methods // +////////////////////////////////////////////////// + +void +SettingsPresentationModel::HandleGetCallWaitingResponse(bool isCallSuccessful, bool callWaitingActivated) +{ + if (__pSettingsEventListener != null) + { + __pSettingsEventListener->HandleGetCallWaitingResponse(isCallSuccessful, callWaitingActivated); + } +} + +void +SettingsPresentationModel::HandleSetCallWaitingResponse(bool isCallSuccessful, bool isCallWaitingEnabled) +{ + if (__pSettingsEventListener != null) + { + __pSettingsEventListener->HandleSetCallWaitingResponse(isCallSuccessful, isCallWaitingEnabled); + } +} + +void +SettingsPresentationModel::HandleGetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const String& callFwdNumber, bool callForwardActivated, int noReplyWaitTime) +{ + if (__pSettingsEventListener != null) + { + __pSettingsEventListener->HandleGetCallForwardResponse(isCallSuccessful, callFwdCondition, callFwdNumber, callForwardActivated, noReplyWaitTime); + } +} + +void +SettingsPresentationModel::HandleSetCallForwardResponse(bool isCallSuccessful, CallForwardCondition callFwdCondition, const String& callFwdNumber, bool isCallForwardActivated, int noReplyWaitTime) +{ + if (__pSettingsEventListener != null) + { + __pSettingsEventListener->HandleSetCallForwardResponse(isCallSuccessful, callFwdCondition, callFwdNumber, isCallForwardActivated, noReplyWaitTime); + } +} + +void +SettingsPresentationModel::HandleGetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated) +{ + if (__pSettingsEventListener != null) + { + __pSettingsEventListener->HandleGetCallBarringResponse(isCallSuccessful, callBarringType, isBarringActivated); + } +} + +void +SettingsPresentationModel::HandleSetCallBarringResponse(bool isCallSuccessful, CallBarringType callBarringType, bool isBarringActivated) +{ + if (__pSettingsEventListener != null) + { + __pSettingsEventListener->HandleSetCallBarringResponse(isCallSuccessful, callBarringType, isBarringActivated); + } +} + +void +SettingsPresentationModel::HandleFlightMode(bool isFlightModeActivated) +{ + CallPresentationModel::GetInstance()->EndAllCall(); +} + +result +SettingsPresentationModel::SetCallState(CallState callState) +{ + return __pSettingsMgr->SetCallState(callState); +} + +bool +SettingsPresentationModel::GetFlightModeStatus(void) +{ + return __pSettingsMgr->GetFlightModeStatus(); +} diff --git a/src/CallSoundManager.cpp b/src/CallSoundManager.cpp new file mode 100644 index 0000000..635e621 --- /dev/null +++ b/src/CallSoundManager.cpp @@ -0,0 +1,905 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallSettingsMoreOptionsForm.cpp + * @brief Sound manager class + */ +#include "CallSoundManager.h" +#include "CallTelephonyManager.h" +#include "vconf.h" + +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::Io; +using namespace Tizen::Media; +using namespace Tizen::Social; +using namespace Tizen::System; +using namespace Tizen::Base::Collection; +using namespace Tizen::Base::Runtime; + +static const wchar_t* RINGTONE_PATH = L"/opt/usr/apps/zktdpemtmw/shared/data/ringtone_sdk.mp3"; +static const wchar_t* CALLCONNECTTONE_PATH = L"/opt/usr/apps/zktdpemtmw/shared/data/Call_Connect.ogg"; +static const wchar_t* CALLDISCONNECTTONE_PATH = L"/opt/usr/apps/zktdpemtmw/shared/data/Call_Disconnect.ogg"; +static const wchar_t* MINUTEREMINDERTONE_PATH = L"/opt/usr/apps/zktdpemtmw/shared/data/Call_RecordStart.wav"; +static const wchar_t* CALLWAITINGTONE_PATH = L"/opt/usr/apps/zktdpemtmw/shared/data/Call_WaitingTone.wav"; + + +SoundManager::SoundManager(void) + : __pSoundCallSession(null) + , __pVibrator(null) + , __pPlayer(null) + , __pDisconnectPlayer(null) + , __pConnectPlayer(null) + , __pReminderPlayer(null) + , __pWaitingTonePlayer(null) + , __lastEndedConferenceCall(false) +{ + __timer.Construct(*this); + __isSoundStatusOn = false; + __isVibrateStatusOn = false; +} + +SoundManager::~SoundManager(void) +{ + if(__pSoundCallSession != null) + { + sound_manager_call_session_destroy(__pSoundCallSession); + } + if (__pVibrator != null) + { + delete __pVibrator; + __pVibrator = null; + } + if (__pPlayer != null) + { + delete __pPlayer; + __pPlayer = null; + } + if(__pConnectPlayer != null) + { + delete __pConnectPlayer; + __pConnectPlayer = null; + } + if(__pDisconnectPlayer != null) + { + delete __pDisconnectPlayer; + __pDisconnectPlayer = null; + } + if(__pReminderPlayer != null) + { + delete __pReminderPlayer; + __pReminderPlayer = null; + } + if(__pWaitingTonePlayer != null) + { + delete __pWaitingTonePlayer; + __pWaitingTonePlayer = null; + } + +} + +void +SoundManager::SetlastEndedConferenceCall() +{ + __lastEndedConferenceCall = true; +} + +bool +SoundManager::GetLastConferenceCall() +{ + return __lastEndedConferenceCall; +} + +Timer* +SoundManager::GetTimer() +{ + return &__timer; +} + +result +SoundManager::StopSession(void) +{ + AppLogDebug("Enter"); + if(__pSoundCallSession != null) + { + AppLogDebug("sound_manager_call_session_destroy"); + sound_manager_call_session_destroy(__pSoundCallSession); + __pSoundCallSession = null; + } + + return E_SUCCESS; +} + +result +SoundManager::StartSession(void) +{ + AppLogDebug("Enter"); + if (__pSoundCallSession != null) + { + sound_manager_call_session_set_mode(__pSoundCallSession,(sound_call_session_mode_e)SOUND_CALL_SESSION_MODE_VOICE); + sound_manager_set_active_route((sound_route_e)SOUND_ROUTE_IN_MIC_OUT_RECEIVER); + sound_manager_set_volume((sound_type_e)SOUND_TYPE_CALL,5); + return E_SUCCESS; + } + int res = sound_manager_call_session_create((sound_call_session_type_e)SOUND_SESSION_TYPE_CALL, &__pSoundCallSession); + if (res != SOUND_MANAGER_ERROR_NONE) + { + AppLogDebug("Sound manager creation failed"); + return E_FAILURE; + } + res = sound_manager_call_session_set_mode(__pSoundCallSession,(sound_call_session_mode_e)SOUND_CALL_SESSION_MODE_VOICE); + sound_manager_set_active_route((sound_route_e)SOUND_ROUTE_IN_MIC_OUT_RECEIVER); + //todo start listening for volume key and set the volume + sound_manager_set_volume((sound_type_e)SOUND_TYPE_CALL,5); + // + SetSoundPath(); + return E_SUCCESS; +} + +result +SoundManager::SetSoundPath(bool bSpeaker) +{ + AppLogDebug("Enter"); + int btStatus; + TelCallSoundPathInfo_t callSoundPathInfo; + sound_route_e soundRoute; + bool isEarJackPresent = IsEarJackConnected(); + vconf_get_int(VCONFKEY_BT_HEADSET_SCO,&btStatus); + if(btStatus == VCONFKEY_BT_SCO_CONNECT) + { + AppLogDebug("Routing audio input and output to bluetooth SCO"); + callSoundPathInfo.path = TAPI_SOUND_PATH_BLUETOOTH; + soundRoute = SOUND_ROUTE_INOUT_BLUETOOTH; + } + else + { + if(bSpeaker == false) + { + if (isEarJackPresent == true) + { + AppLogDebug("Routing audio input to device builtin mic and routing audio output to headphone"); + soundRoute = SOUND_ROUTE_IN_MIC_OUT_HEADPHONE; + callSoundPathInfo.path = TAPI_SOUND_PATH_HEADSET; + } + else + { + AppLogDebug("Routing audio input to device builtin mic and routing audio output to builtin receiver"); + soundRoute = SOUND_ROUTE_IN_MIC_OUT_RECEIVER; + callSoundPathInfo.path = TAPI_SOUND_PATH_HANDSET; + } + } + else + { + AppLogDebug("Routing audio input to device builtin mic and routing audio output to builtin speaker"); + soundRoute = SOUND_ROUTE_IN_MIC_OUT_SPEAKER; + callSoundPathInfo.path = TAPI_SOUND_PATH_SPK_PHONE; + } + + } + callSoundPathInfo.ex_volume = TelCallSoundPathInfo_t::TAPI_SOUND_EX_VOLUME_ON; + + int res = tel_set_call_sound_path(TelephonyManager::GetInstance(null)->GetTapiHandle(), &callSoundPathInfo, &HandleCallbackResponse, this); + TryReturn(res == TAPI_CAUSE_SUCCESS,E_FAILURE, "[%d] tel_set_call_sound_path failed",res ); + + res = sound_manager_set_active_route(soundRoute); + TryReturn(res == SOUND_MANAGER_ERROR_NONE,E_FAILURE, "[%d] sound_manager_set_active_route failed",res ); + + return E_SUCCESS; + AppLogDebug("Exit"); +} + +result +SoundManager::SetSpeakerStatus(bool setSpeaker) +{ + result r = E_FAILURE; + int res = -1; + bool isEarJackPresent = IsEarJackConnected(); + sound_route_e soundRoute; + if (setSpeaker == true) + { + soundRoute = SOUND_ROUTE_IN_MIC_OUT_SPEAKER; + } + else + { + if (isEarJackPresent == true) + { + soundRoute = SOUND_ROUTE_IN_MIC_OUT_HEADPHONE; + } + else + { + soundRoute = SOUND_ROUTE_IN_MIC_OUT_RECEIVER; + } + } + res = sound_manager_set_active_route(soundRoute); + if (res == SOUND_MANAGER_ERROR_NONE) + { + r = E_SUCCESS; + } + else + { + r = E_FAILURE; + } + return r; +} + +result +SoundManager::SetSoundMode(SoundMode soundMode) +{ + if (__pSoundCallSession == null) + { + return E_FAILURE; + } + sound_call_session_mode_e sessionMode; + switch (soundMode) + { + case SOUND_MODE_RINGTONE: + { + sessionMode = SOUND_CALL_SESSION_MODE_RINGTONE; + break; + } + case SOUND_MODE_MEDIA: + { + sessionMode = SOUND_CALL_SESSION_MODE_MEDIA; + break; + } + case SOUND_MODE_VOICE: + { + sessionMode = SOUND_CALL_SESSION_MODE_VOICE; + } + break; + default: + { + sessionMode = SOUND_CALL_SESSION_MODE_RINGTONE; + break; + } + } + int res = sound_manager_call_session_set_mode(__pSoundCallSession,sessionMode); + if (res != SOUND_MANAGER_ERROR_NONE) + { + return E_FAILURE; + } + return E_SUCCESS; +} + +void +SoundManager::OnTimerExpired(Timer& timer) +{ + AppLogDebug("Enter"); + String reminderTonePath; + int unknownRejectStatus = -1; + vconf_get_bool(VCONFKEY_CISSAPPL_MINUTE_MINDER_BOOL, &unknownRejectStatus); + bool ReminderToneSetStatus = unknownRejectStatus; + result res = E_FAILURE; + reminderTonePath.Append(MINUTEREMINDERTONE_PATH); + + if(ReminderToneSetStatus == true) + { + + if(__pReminderPlayer == null) + { + + if(reminderTonePath.IsEmpty() == false) + { + __pReminderPlayer = new (std::nothrow) Player(); + res = __pReminderPlayer->Construct(*this); + if(res != E_SUCCESS) + { + AppLogDebug("__pReminderPlayer Construct failed with %d",res); + delete __pReminderPlayer; + __pReminderPlayer = null; + return; + } + res = __pReminderPlayer->OpenFile(reminderTonePath,false); + if(res != E_SUCCESS) + { + AppLogDebug("__pReminderPlayer OpenFile failed with %d",res); + delete __pReminderPlayer; + __pReminderPlayer = null; + return; + } + res = __pReminderPlayer->SetLooping(false); + if(res != E_SUCCESS) + { + AppLogDebug("__pReminderPlayer SetLooping failed with %d",res); + delete __pReminderPlayer; + __pReminderPlayer = null; + return; + } + res = __pReminderPlayer->SetVolume(80); + if(res != E_SUCCESS) + { + AppLogDebug("__pReminderPlayer SetVolume failed with %d",res); + delete __pReminderPlayer; + __pReminderPlayer = null; + return; + } + } + } + + if(__pReminderPlayer != null) + { + SetSoundMode(SOUND_MODE_MEDIA); + res = __pReminderPlayer->Play(); + if(res != E_SUCCESS) + { + AppLogDebug("__pReminderPlayer Play failed with %d",res); + return; + } + SetSoundMode(SOUND_MODE_VOICE); + } + } + /*else if(ReminderToneSetStatus == false) + { + timer.Cancel(); + }*/ + +} + + + +void +SoundManager::SetDisconnectTone(void) +{ + + AppLogDebug("Enter"); + int unknownRejectStatus = -1; + String disconnectTonePath=L""; + vconf_get_bool(VCONFKEY_CISSAPPL_CALL_END_TONE_BOOL, &unknownRejectStatus); + bool disconnectToneSetStatus = unknownRejectStatus; + result res = E_FAILURE; + + if(disconnectToneSetStatus == true) + { + AppLogDebug("disconnectToneSetStatus == true"); + disconnectTonePath.Append(CALLDISCONNECTTONE_PATH); + if(disconnectTonePath.IsEmpty() == false) + { + if(__pDisconnectPlayer == null) + { + AppLogDebug("__pConnectPlayer == null"); + __pDisconnectPlayer = new (std::nothrow) Player(); + res = __pDisconnectPlayer->Construct(*this); + if(res != E_SUCCESS) + { + AppLogDebug("__pDisconnectPlayer Construct failed with %d",res); + delete __pDisconnectPlayer; + __pDisconnectPlayer = null; + return; + } + res = __pDisconnectPlayer->OpenFile(disconnectTonePath,false); + if(res != E_SUCCESS) + { + AppLogDebug("__pDisconnectPlayer OpenFile failed with %d",res); + delete __pDisconnectPlayer; + __pDisconnectPlayer = null; + return; + } + res = __pDisconnectPlayer->SetLooping(false); + if(res != E_SUCCESS) + { + AppLogDebug("__pDisconnectPlayer SetLooping failed with %d",res); + delete __pDisconnectPlayer; + __pDisconnectPlayer = null; + return; + } + res = __pDisconnectPlayer->SetVolume(80); + if(res != E_SUCCESS) + { + AppLogDebug("__pDisconnectPlayer SetLooping SetVolume with %d",res); + delete __pDisconnectPlayer; + __pDisconnectPlayer = null; + return; + } + + } + } + + if(__pDisconnectPlayer != null) + { + AppLogDebug("__pDisconnectPlayer OpenFile %ls",disconnectTonePath.GetPointer()); + SetSoundMode(SOUND_MODE_MEDIA); + AppLogDebug("__pDisconnectPlayer SetVolume"); + if(__pDisconnectPlayer->GetState() == PLAYER_STATE_PLAYING) + { + __pDisconnectPlayer->Stop(); + } + res = __pDisconnectPlayer->Play(); + if(res != E_SUCCESS) + { + AppLogDebug("__pDisconnectPlayer Play with %d",res); + return; + } + } + + } + + + + + AppLogDebug("Exit"); + +} + +void +SoundManager::SetMinuteReminderTone(void) +{ + __timer.StartAsRepeatable(60000); +} + + +void +SoundManager::SetConnectTone(void) +{ + + String connectTonePath; + int unknownRejectStatus = -1; + vconf_get_bool(VCONFKEY_CISSAPPL_CALL_CONNECT_TONE_BOOL, &unknownRejectStatus); + bool connectToneSetStatus = unknownRejectStatus; + result res = E_FAILURE; + + connectTonePath.Append(CALLCONNECTTONE_PATH); + + if(connectToneSetStatus == true) + { + + if(__pConnectPlayer == null) + { + if (connectTonePath.IsEmpty() == false) + { + __pConnectPlayer = new (std::nothrow) Player(); + res = __pConnectPlayer->Construct(*this); + if(res != E_SUCCESS) + { + AppLogDebug("__pConnectPlayer Construct failed with %d",res); + delete __pConnectPlayer; + __pConnectPlayer = null; + return; + } + res = __pConnectPlayer->OpenFile(connectTonePath,false); + if(res != E_SUCCESS) + { + AppLogDebug("__pConnectPlayer OpenFile failed with %d",res); + delete __pConnectPlayer; + __pConnectPlayer = null; + return; + } + res = __pConnectPlayer->SetLooping(false); + if(res != E_SUCCESS) + { + AppLogDebug("__pConnectPlayer SetLooping failed with %d",res); + delete __pConnectPlayer; + __pConnectPlayer = null; + return; + } + res = __pConnectPlayer->SetVolume(80); + if(res != E_SUCCESS) + { + AppLogDebug("__pConnectPlayer SetVolume failed with %d",res); + delete __pConnectPlayer; + __pConnectPlayer = null; + return; + } + } + } + + if(__pConnectPlayer != null) + { + res = SetSoundMode(SOUND_MODE_MEDIA); + AppLogDebug("__pConnectPlayer Playing connect tone"); + res = __pConnectPlayer->Play(); + if(res != E_SUCCESS) + { + AppLogDebug("__pConnectPlayer Play failed with %d",res); + return; + } + } + + } + + +} + +void +SoundManager::SetWaitTone(void) +{ + CallAlertStatus status= CALL_ALERT_SOUND; + int alertStatus = -1; + result res = E_FAILURE; + int retVal = vconf_get_int(VCONFKEY_CISSAPPL_ALERT_ON_CALL_INT, &alertStatus); + if (retVal == 0) + { + status = (CallAlertStatus) alertStatus; + } + AppLogDebug("No Alert already in call"); + if(status == CALL_ALERT_SOUND) + { + AppLogDebug("Playing alert tone"); + String waitingTonePath; + waitingTonePath.Append(CALLWAITINGTONE_PATH); + if(__pWaitingTonePlayer == null) + { + if (waitingTonePath.IsEmpty() == false) + { + __pWaitingTonePlayer = new (std::nothrow) Player(); + res = __pWaitingTonePlayer->Construct(*this); + if(res != E_SUCCESS) + { + AppLogDebug("__pWaitingTonePlayer Construct failed with %d",res); + delete __pWaitingTonePlayer; + __pWaitingTonePlayer = null; + return; + } + res = __pWaitingTonePlayer->OpenFile(waitingTonePath,false); + if(res != E_SUCCESS) + { + AppLogDebug("__pWaitingTonePlayer OpenFile failed with %d",res); + delete __pWaitingTonePlayer; + __pWaitingTonePlayer = null; + + return; + } + res = __pWaitingTonePlayer->SetLooping(true); + if(res != E_SUCCESS) + { + AppLogDebug("__pWaitingTonePlayer SetLooping failed with %d",res); + delete __pWaitingTonePlayer; + __pWaitingTonePlayer = null; + + return; + } + res = __pWaitingTonePlayer->SetVolume(80); + if(res != E_SUCCESS) + { + AppLogDebug("__pWaitingTonePlayer SetVolume failed with %d",res); + delete __pWaitingTonePlayer; + __pWaitingTonePlayer = null; + + return; + } + } + } + + if( __pWaitingTonePlayer != null ) + { + SetSoundMode(SOUND_MODE_MEDIA); + res = __pWaitingTonePlayer->Play(); + if(res != E_SUCCESS) + { + AppLogDebug("__pWaitingTonePlayer Play failed with %d",res); + return; + } + } + + } +} + +void +SoundManager::ResumeAlert(String& contactRingTone) +{ + AppLogDebug("Enter"); + result res = E_FAILURE; + IntensityDurationVibrationPattern vibration; + vibration.duration = 3000; + vibration.intensity = -1; + AppLogDebug("Enter"); + /* if(__pWaitingTonePlayer != null) + { + if(__pWaitingTonePlayer->GetState() == PLAYER_STATE_PLAYING) + { + __pWaitingTonePlayer->Stop(); + } + }*/ + StopAlert(); + if(__pSoundCallSession == null) + { + StartSession(); + } + if(__pVibrator == null) + { + __pVibrator = new (std::nothrow) Vibrator(); + res = __pVibrator->Construct(); + if(res != E_SUCCESS) + { + AppLogDebug("__pVibrator Construct failed with %d",res); + return; + } + } + if(__pPlayer == null) + { + __pPlayer = new (std::nothrow) Player(); + res = __pPlayer->Construct(*this); + if(res != E_SUCCESS) + { + AppLogDebug("__pPlayer Construct failed with %d",res); + delete __pPlayer; + __pPlayer = null; + return; + } + } + int retVal = -1; + vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &retVal); + __isSoundStatusOn = retVal; + vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &retVal); + __isVibrateStatusOn = retVal; + //todo: do only if call alert mode is set + if (__isSoundStatusOn == true) + { + String ringTonePath; + //Check if contact has any custom ringtone, else play defautl ringtone. + if(contactRingTone.IsEmpty() == true) + { + char* pRingTonePtr = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR); + AppLog("Ringtone Path : %s",pRingTonePtr); + ringTonePath.Append(pRingTonePtr); + } + else + { + AppLog("Ringtone Path : %ls",contactRingTone.GetPointer()); + ringTonePath.Append(contactRingTone); + } + + //Check if file is present + File file; + res = file.Construct(ringTonePath, "r"); + if(res != E_SUCCESS ) + { + ringTonePath.Clear(); + ringTonePath.Append(RINGTONE_PATH); + } + + res = __pPlayer->OpenFile(ringTonePath,false); + if(res != E_SUCCESS) + { + AppLogDebug("__pPlayer OpenFile failed with %d",res); + return; + } + res = __pPlayer->SetLooping(true); + if(res != E_SUCCESS) + { + AppLogDebug("__pPlayer SetLooping failed with %d",res); + return; + } + res = __pPlayer->SetVolume(80); + if(res != E_SUCCESS) + { + AppLogDebug("__pPlayer SetVolume failed with %d",res); + return; + } + res = SetSoundMode(SOUND_MODE_RINGTONE); + res = __pPlayer->Play(); + if(res != E_SUCCESS) + { + AppLogDebug("__pPlayer Play failed with %d",res); + return; + } + } + if (__isVibrateStatusOn == true) + { + //todo: Get the level from settings + __pVibrator->Start(&vibration, 1, 1000); + } + AppLogDebug("Exit"); + return; +} + +void +SoundManager::StartAlert(String& contactRingTone) +{ + result res = E_FAILURE; + IntensityDurationVibrationPattern vibration; + vibration.duration = 3000; + vibration.intensity = -1; + AppLogDebug("Enter"); + if(__pSoundCallSession != null) + { + SetWaitTone(); + return; + } + else + { + StartSession(); + } + if(__pVibrator == null) + { + __pVibrator = new (std::nothrow) Vibrator(); + res = __pVibrator->Construct(); + if(res != E_SUCCESS) + { + AppLogDebug("__pVibrator Construct failed with %d",res); + return; + } + } + if(__pPlayer == null) + { + __pPlayer = new (std::nothrow) Player(); + res = __pPlayer->Construct(*this); + if(res != E_SUCCESS) + { + AppLogDebug("__pPlayer Construct failed with %d",res); + delete __pPlayer; + __pPlayer = null; + return; + } + } + int retVal = -1; + vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &retVal); + __isSoundStatusOn = retVal; + vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &retVal); + __isVibrateStatusOn = retVal; + //todo: do only if call alert mode is set + if (__isSoundStatusOn == true) + { + String ringTonePath; + //Check if contact has any custom ringtone, else play defautl ringtone. + if(contactRingTone.IsEmpty() == true) + { + char* pRingTonePtr = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR); + AppLog("Ringtone Path : %s",pRingTonePtr); + ringTonePath.Append(pRingTonePtr); + } + else + { + AppLog("Ringtone Path : %ls",contactRingTone.GetPointer()); + ringTonePath.Append(contactRingTone); + } + + //Check if file is present + File file; + res = file.Construct(ringTonePath, "r"); + if(res != E_SUCCESS ) + { + ringTonePath.Clear(); + ringTonePath.Append(RINGTONE_PATH); + } + + res = __pPlayer->OpenFile(ringTonePath,false); + if(res != E_SUCCESS) + { + AppLogDebug("__pPlayer OpenFile failed with %d",res); + return; + } + res = __pPlayer->SetLooping(true); + if(res != E_SUCCESS) + { + AppLogDebug("__pPlayer SetLooping failed with %d",res); + return; + } + res = __pPlayer->SetVolume(80); + if(res != E_SUCCESS) + { + AppLogDebug("__pPlayer SetVolume failed with %d",res); + return; + } + res = SetSoundMode(SOUND_MODE_RINGTONE); + res = __pPlayer->Play(); + if(res != E_SUCCESS) + { + AppLogDebug("__pPlayer Play failed with %d",res); + return; + } + } + if (__isVibrateStatusOn == true) + { + //todo: Get the level from settings + __pVibrator->Start(&vibration, 1, 1000); + } + AppLogDebug("Exit"); + return; +} + +void +SoundManager::StopAlert(void) +{ + result res = E_FAILURE; + AppLogDebug("Enter"); + if (__isSoundStatusOn == true) + { + //todo: stop player + if(__pPlayer != null) + { + AppLogDebug("Stopping ring tone"); + if(__pPlayer->GetState() == PLAYER_STATE_PLAYING) + { + res = __pPlayer->Stop(); + } + if(res != E_SUCCESS) + { + AppLogDebug("__pPlayer Stop failed with %d",res); + + } + res = __pPlayer->Close(); + if(res != E_SUCCESS) + { + AppLogDebug("__pPlayer Close failed with %d",res); + + } + SetSoundMode(SOUND_MODE_VOICE); + __isSoundStatusOn = false; + StopSession(); + } + } + if (__isVibrateStatusOn == true) + { + __pVibrator->Stop(); + __isVibrateStatusOn = false; + } + if(__pWaitingTonePlayer != null) + { + if(__pWaitingTonePlayer->GetState() == PLAYER_STATE_PLAYING) + { + __pWaitingTonePlayer->Stop(); + } + } + + AppLogDebug("Exit"); +} + +void +SoundManager::OnPlayerOpened(result r) +{ +} + +void +SoundManager::OnPlayerEndOfClip(void) +{ +} + +void +SoundManager::OnPlayerSeekCompleted(result r) +{ +} + +void +SoundManager::OnPlayerBuffering(int percent) +{ +} + +void +SoundManager::OnPlayerErrorOccurred(Tizen::Media::PlayerErrorReason r) +{ +} + +void +SoundManager::OnPlayerInterrupted(void) +{ +} + +void +SoundManager::OnPlayerReleased(void) +{ +} + +bool +SoundManager::IsEarJackConnected(void) +{ + int earJackStatus = -1; + if (vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &earJackStatus) == 0) + { + if (earJackStatus == VCONFKEY_SYSMAN_EARJACK_REMOVED) + { + return false; + } + else + { + return true; + } + } + else + { + return false; + } +} diff --git a/src/CallTelephonyManager.cpp b/src/CallTelephonyManager.cpp new file mode 100644 index 0000000..ba4b0ec --- /dev/null +++ b/src/CallTelephonyManager.cpp @@ -0,0 +1,3076 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallTelephonyManager.cpp + * @brief Call log item provider + */ +#include +#include +#include +#include +#include "ITapiModem.h" +#include "ITapiSim.h" +#include "CallApp.h" +#include "CallInfo.h" +#include "CallTelephonyManager.h" +#include "CallSettingsManager.h" +#include "CallTypes.h" + +using namespace Tizen::Base; +using namespace Tizen::Graphics; +using namespace Tizen::Social; +using namespace Tizen::System; +using namespace Tizen::Base::Collection; +using namespace Tizen::Telephony; +using namespace Tizen::Base::Utility; + +const char* callEventList[] = { + TAPI_NOTI_VOICE_CALL_STATUS_IDLE, + TAPI_NOTI_VOICE_CALL_STATUS_ACTIVE, + TAPI_NOTI_VOICE_CALL_STATUS_HELD, + TAPI_NOTI_VOICE_CALL_STATUS_DIALING, + TAPI_NOTI_VOICE_CALL_STATUS_ALERT, + TAPI_NOTI_VOICE_CALL_STATUS_WAITING, + TAPI_NOTI_CALL_INFO_CALL_CONNECTED_LINE, + TAPI_NOTI_CALL_INFO_WAITING, + TAPI_NOTI_CALL_INFO_CUG, + TAPI_NOTI_CALL_INFO_FORWARDED, + TAPI_NOTI_CALL_INFO_BARRED_INCOMING, + TAPI_NOTI_CALL_INFO_BARRED_OUTGOING, + TAPI_NOTI_CALL_INFO_DEFLECTED, + TAPI_NOTI_CALL_INFO_CLIR_SUPPRESSION_REJECT, + TAPI_NOTI_CALL_INFO_FORWARD_UNCONDITIONAL, + TAPI_NOTI_CALL_INFO_FORWARD_CONDITIONAL, + TAPI_NOTI_CALL_INFO_CALL_LINE_IDENTITY, + TAPI_NOTI_CALL_INFO_CALL_NAME_INFORMATION, + TAPI_NOTI_CALL_INFO_FORWARDED_CALL, + TAPI_NOTI_CALL_INFO_CUG_CALL, + TAPI_NOTI_CALL_INFO_DEFLECTED_CALL, + TAPI_NOTI_CALL_INFO_TRANSFERED_CALL, + TAPI_NOTI_CALL_INFO_HELD, + TAPI_NOTI_CALL_INFO_ACTIVE, + TAPI_NOTI_CALL_INFO_JOINED, + TAPI_NOTI_CALL_INFO_RELEASED_ON_HOLD, + TAPI_NOTI_CALL_INFO_TRANSFER_ALERT, + TAPI_NOTI_CALL_INFO_TRANSFERED, + TAPI_NOTI_CALL_INFO_CF_CHECK_MESSAGE, +}; + +TelephonyManager* TelephonyManager::__pManager = null; + +TelephonyManager::TelephonyManager(ITelephonyEventListener* pEventListener) +: __pEventListener(pEventListener) +{ + __pDialedCall = null; + __pIncomingCall = null; + __pActiveCallList = null; + __pSettingsManager = null; + __pTapiHandle = null; + __pAddressBook = null; + __pCachedContact = null; + __isMuted = false; + __isSpeakerOn = false; + __pSoundManager = null; + __pCalllogMgr = null; + __pNetworkManager = null; + __isDialCallPresentAfterHold = false; + __pDialNumberAfterHold = null; + __isDialNumberAfterHoldEmergency = false; +} + +TelephonyManager::~TelephonyManager(void) +{ + AppLogDebug("Enter"); + if (__pActiveCallList != null) + { + delete __pActiveCallList; + } + + if (__pDialedCall != null) + { + delete __pDialedCall; + __pDialedCall = null; + } + + if (__pIncomingCall != null) + { + delete __pIncomingCall; + __pIncomingCall = null; + } + + if (__pAddressBook != null) + { + delete __pAddressBook; + __pAddressBook = null; + } + if (__pCachedContact != null) + { + delete __pCachedContact; + __pCachedContact = null; + } + + //unregister for events from TAPI Lib. + UnregisterEvents(); + + //De-initialize the TAPI Library + if(__pTapiHandle != null) + { + tel_deinit(__pTapiHandle); + } + + if (__pSoundManager != null) + { + delete __pSoundManager; + } + + if (__pCalllogMgr != null) + { + __pCalllogMgr = null; + } + AppLogDebug("Exit"); +} + +TelephonyManager* +TelephonyManager::GetInstance(ITelephonyEventListener* pEventListener) +{ + AppLogDebug("Enter"); + if (__pManager == null) + { + CreateInstance(pEventListener); + } + return __pManager; + AppLogDebug("Exit"); +} + +void +TelephonyManager::CreateInstance(ITelephonyEventListener* pEventListener) +{ + AppLogDebug("Enter"); + __pManager = new (std::nothrow) TelephonyManager(pEventListener); + result r = __pManager->Initialize(); + if (IsFailed(r)) + { + delete __pManager; + __pManager = null; + } + atexit(&(TelephonyManager::DestroyInstance)); + AppLogDebug("Exit"); +} + +void +TelephonyManager::DestroyInstance(void) +{ + AppLogDebug("Enter"); + if (__pManager != null) + { + __pManager->EndAllCalls(); + delete __pManager; + __pManager = null; + } + vconf_ignore_key_changed(VCONFKEY_BT_HEADSET_SCO,TelephonyManager::OnBluetoothStateChange); + AppLogDebug("Exit"); +} + +result +TelephonyManager::Initialize(void) +{ + AppLogDebug("Enter"); + //Initialize telephony library + result r = InitializeTelephonyLibrary(); + if (IsFailed(r)) + { + return r; + } + __pActiveCallList = new (std::nothrow) HashMapT(); + __pActiveCallList->Construct(IDI_MAX_ACTIVE_CALLS); + + //Initialize the Settings Manager to fetch call settings + __pSettingsManager = SettingsManager::GetInstance(); + + __pSoundManager = new (std::nothrow) SoundManager(); + __pCalllogMgr = CallLogManager::GetInstance(); + + //initialize address book to fetch contacts information + __pAddressBook = AddressbookManager::GetInstance()->GetAddressbookN(); + if(__pAddressBook == null) + { + return E_FAILURE; + } + __pNetworkManager = new NetworkManager(); + if(__pNetworkManager != null) + { + __pNetworkManager->Construct(this); + } + vconf_notify_key_changed(VCONFKEY_BT_HEADSET_SCO,TelephonyManager::OnBluetoothStateChange,this); + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::InitializeTelephonyLibrary(void) +{ + AppLogDebug("Enter"); + result r = E_FAILURE; + + __pTapiHandle = tel_init(null); + if (__pTapiHandle != null) + { + //register telephony events + int errorCode = RegisterEvents(); + if (errorCode == TAPI_CAUSE_SUCCESS) + { + r = E_SUCCESS; + } + } + //TAPI Library is initialized and events registered successfully + AppLogDebug("Exit"); + return r; +} + +int +TelephonyManager::RegisterEvents(void) +{ + AppLogDebug("Enter"); + int errCode = -1; + int eventCount = sizeof(callEventList) / sizeof(char *); + for (int index = 0; index < eventCount; index++) + { + errCode = tel_register_noti_event(__pTapiHandle, callEventList[index], &HandleCallback, this); + if (errCode != TAPI_API_SUCCESS) + { + return errCode; + } + } + AppLogDebug("Exit"); + return errCode; +} + +void +TelephonyManager::UnregisterEvents(void) +{ + AppLogDebug("Enter"); + int eventCount = sizeof(callEventList) / sizeof(char *); + for (int index = 0; index < eventCount; index++) + { + tel_deregister_noti_event(__pTapiHandle, callEventList[index]); + } + AppLogDebug("Exit"); +} + +ErrorCodes +TelephonyManager::SetupMoCall(String& contactNumber, bool isEmergency) +{ + AppLogDebug("Enter"); + result res = E_SUCCESS; + //check if valid phone number exist + res = CheckValidTelePhoneNumber(contactNumber); + if (IsFailed(res)) + { + AppLogDebug("ERROR_INVALID_NUMBER"); + return ERROR_INVALID_NUMBER; + } + + //if dialing an emergency call and active calls exist + //then end all active calls. + if (isEmergency && __pActiveCallList->GetCount() > 0) + { + //Get first call handle + AppCallInfo endCallInfo; + IListT* pCallList = __pActiveCallList->GetValuesN(); + pCallList->GetAt(0, endCallInfo); + int callHandle = endCallInfo.GetCallHandle()->ToLong(); + delete pCallList; + pCallList = null; + + //release all active or held calls + AppLogDebug("TAPI_CALL_END_ALL"); + int tapiRes = tel_end_call(__pTapiHandle, callHandle, TAPI_CALL_END_ALL, &HandleCallbackResponse, this); + if (tapiRes == TAPI_CAUSE_SUCCESS) + { + __pActiveCallList->RemoveAll(); + res = E_SUCCESS; + } + else + { + res = E_FAILURE; + } + } + else if (__pActiveCallList->GetCount() == 1) + { + //Check if there is already an active call, + //Put the already active call on hold. + AppCallInfo holdCallInfo; + IListT* pCallList = __pActiveCallList->GetValuesN(); + + pCallList->GetAt(0, holdCallInfo); + //Check if call is active, then put on hold + if (holdCallInfo.IsOnHold() == false) + { + AppLogDebug("holdCallInfo.IsOnHold()"); + __isDialCallPresentAfterHold = true; + __pDialNumberAfterHold = new (std::nothrow) String(contactNumber); + __isDialNumberAfterHoldEmergency = isEmergency; + res = HoldActiveCall(&holdCallInfo, true); + } + else + { + res = DialOutgoingCall(contactNumber, isEmergency); + } + delete pCallList; + pCallList = null; + + } + //make the next call, only if any existing active call + //is successfully put on hold or is already on hold. + else + { + AppLogDebug("DialOutgoingCall"); + res = DialOutgoingCall(contactNumber, isEmergency); + } + + if(res == E_SUCCESS) + { + return ERROR_NONE; + } + else if (res == TAPI_CAUSE_CALL_BARRED) + { + return ERROR_CALL_BARRED; + } + else + { + return ERROR_TAPI_ERROR; + } + AppLogDebug("Exit"); +} + +void +TelephonyManager::EndAllCalls(void) +{ + AppLogDebug("Enter"); + if(__pDialedCall != null) + { + if(__pDialedCall->GetCallHandle() != null) + { + tel_end_call(__pTapiHandle, __pDialedCall->GetCallHandle()->ToLong(), TAPI_CALL_END, &HandleCallbackResponse, this); + } + } + tel_end_call(__pTapiHandle, -1, TAPI_CALL_END_HOLD_ALL, &HandleCallbackResponse, this); + //end all active calls before terminating application + tel_end_call(__pTapiHandle, -1, TAPI_CALL_END_ALL, &HandleCallbackResponse, this); + __pSettingsManager->SetCallState(CALL_STATE_CALL_OFF); + AppLogDebug("Exit"); +} + +result +TelephonyManager::EndActiveCall(Long callHandle) +{ + AppLogDebug("Enter"); + result r = E_FAILURE; + //fetch ended callInfo from active call list + AppCallInfo endCall; + r = __pActiveCallList->GetValue(callHandle.ToLong(), endCall); + if (r == E_SUCCESS) + { + r = EndCall(endCall); + } + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::EndDialingCall(String& contactNumber) +{ + AppLogDebug("Enter"); + result r = E_FAILURE; + //This is because for a dialing call, call handle is updated with some delay in telephony manager. + //And it is not available with outgoing call screen. + if (contactNumber.IsEmpty()) + { + return r; + } + + //Check If Ended call matches Dialed Call. + AppCallInfo endCall; + if (__pDialedCall != null && __pDialedCall->GetContactNumber().Equals(contactNumber)) + { + endCall = *__pDialedCall; + r = EndCall(endCall); + } + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::EndCall(AppCallInfo& endCallInfo) +{ + AppLogDebug("Enter"); + result r = E_FAILURE; + + if (endCallInfo.GetCallHandle() != null) + { + unsigned int callHandle = endCallInfo.GetCallHandle()->ToLong(); + //end "dialed but unconnected" call or active call - processing to be handled in HandleIdleCallback(). + AppLogDebug("TAPI_CALL_END"); + int res = tel_end_call(__pTapiHandle, callHandle, TAPI_CALL_END, &HandleCallbackResponse, this); + if (res == TAPI_CAUSE_SUCCESS) + { + r = E_SUCCESS; + } + } + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::AnswerAutoRejectCall(int callHandle) +{ + //Incoming call automatically blocked is handled here. + AppLogDebug("Enter "); + result r = E_FAILURE; + TelCallAnswerType_t answerType = TAPI_CALL_ANSWER_REJECT; + int res = -1; + + AppLogDebug("tel_answer_call"); + //save to logs db. + AppCallInfo rejectedCallInfo; + rejectedCallInfo = *(__pIncomingCall); + rejectedCallInfo.SetCalllogType(CALL_LOG_TYPE_VOICE_BLOCKED); + SaveCallInfoToLogsDb(rejectedCallInfo); + delete __pIncomingCall; + __pIncomingCall = null; + + // redirect to reject call back handler as the flow has to be handled + res = tel_answer_call(__pTapiHandle, callHandle, answerType, &HandleCallbackResponse, this); + + if (res == TAPI_CAUSE_SUCCESS) + { + r = E_SUCCESS; + } + else + { + r = E_FAILURE; + } + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::AnswerCall(int callHandle, bool acceptCall) +{ + AppLogDebug("Enter %d %d",acceptCall,callHandle); + result r = E_FAILURE; + __pSoundManager->StopAlert(); + TelCallAnswerType_t answerType = TAPI_CALL_ANSWER_ACCEPT; + int res = -1; + if (acceptCall == true) + { + answerType = TAPI_CALL_ANSWER_ACCEPT; + // redirect to dummy call back handler as the flow already handled in registered event callback + res = tel_answer_call(__pTapiHandle, callHandle, answerType, &HandleCallbackResponse, this); + } + else + { + AppLogDebug("tel_answer_call"); + answerType = TAPI_CALL_ANSWER_REJECT; + // redirect to reject call back handler as the flow has to be handled + res = tel_answer_call(__pTapiHandle, callHandle, answerType, &HandleRejectCallbackResponse, this); + } + + if (res == TAPI_CAUSE_SUCCESS) + { + r = E_SUCCESS; + } + else + { + r = E_FAILURE; + } + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::AcceptCall(CallAnsweringOptions answerOptions,int callHandle) +{ + AppLogDebug("Enter"); + result r = E_FAILURE; + __pSoundManager->StopAlert(); + __pSoundManager->SetSoundMode(SOUND_MODE_VOICE); + + //Check if this is a new incoming call + if(__pIncomingCall == null || (callHandle != (unsigned int)__pIncomingCall->GetCallHandle()->ToLong())) + { + //construct and fetch new Incoming call Info + String incomingHandle; + incomingHandle.Append(callHandle); + AppCallInfo* pDuplicateCallInfo = FetchIncomingCallHandleN(incomingHandle, String(L"")); + if(pDuplicateCallInfo == null) + { + r = E_SUCCESS; + return r; + } + delete pDuplicateCallInfo; + pDuplicateCallInfo = null; + } + + switch(answerOptions) + { + case ANSERWING_OPTION_HOLD_SINGLE_CALL: + case ANSERWING_OPTION_END_SINGLE_CALL: + { + //N_SE-50012 + if(__pActiveCallList->GetCount() < 1) + { + r = E_SUCCESS; + return r; + } + r = AcceptSecondCall(answerOptions, callHandle); + } + break; + + case ANSERWING_OPTION_REPLACE_ACTIVE_CALL: + case ANSERWING_OPTION_REPLACE_HELD_CALL: + case ANSERWING_OPTION_END_ALL_CALLS: + { + //N_SE-50012 + if(__pActiveCallList->GetCount() < 2) + { + //some call got disconnected just when we are trying to answer + r = E_SUCCESS; + return r; + + } + r = AcceptMultipleCall(answerOptions, callHandle); + } + break; + + default: + break; + } + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::AcceptSecondCall(CallAnsweringOptions answerOptions, const int incomingCallHandle) +{ + AppLogDebug("Enter"); + result r = E_FAILURE; + + switch (answerOptions) + { + case ANSERWING_OPTION_HOLD_SINGLE_CALL: + { + //accept incoming call by putting active call on Hold with 'TAPI_CALL_ANSWER_HOLD_AND_ACCEPT' + int res = tel_answer_call(__pTapiHandle, incomingCallHandle, TAPI_CALL_ANSWER_HOLD_AND_ACCEPT, &HandleCallbackResponse, this); + if (res != 0) + { + r = E_FAILURE; + break; + } + + //Call connected successfully + r = E_SUCCESS; + //update status of first call to "OnHold" + IListT* pCallList = __pActiveCallList->GetValuesN(); + AppCallInfo firstCallInfo; + pCallList->GetAt(0, firstCallInfo); + //replace old object with update AppCallInfo + AppCallInfo* pHeldCallInfo = new (std::nothrow) AppCallInfo(); + *pHeldCallInfo = firstCallInfo; + pHeldCallInfo->SetOnHold(true); + __pActiveCallList->Remove(firstCallInfo.GetCallHandle()->ToLong()); + __pActiveCallList->Add(pHeldCallInfo->GetCallHandle()->ToLong(), *pHeldCallInfo); + delete pCallList; + pCallList = null; + } + break; + + case ANSERWING_OPTION_END_SINGLE_CALL: + { + //Transfer Old active calls to a separate list to avoid any processing in HandleIdleCallback(). + HashMapT* pEndCallsList = __pActiveCallList; + //create a new ActiveCallList + __pActiveCallList = new (std::nothrow) HashMapT(); + __pActiveCallList->Construct(IDI_MAX_ACTIVE_CALLS); + + //accept call and reject all active calls with 'TAPI_CALL_ANSWER_REPLACE' + int res = tel_answer_call(__pTapiHandle, incomingCallHandle, TAPI_CALL_ANSWER_REPLACE, &HandleCallbackResponse, this); + if (res != 0) + { + r = E_FAILURE; + //delete newly constructed list and gain ownership of old list + delete __pActiveCallList; + __pActiveCallList = pEndCallsList; + break; + } + + //Call connected successfully + r = E_SUCCESS; + //Add calls information to call log before deleting from active call list. + IListT* pCallList = pEndCallsList->GetValuesN(); + if(pCallList != null) + { + AppCallInfo endCallInfo; + if (pCallList->GetAt(0, endCallInfo) == E_SUCCESS) + { + SaveCallInfoToLogsDb(endCallInfo); + } + delete pCallList; + } + pEndCallsList->RemoveAll(); + delete pEndCallsList; + } + break; + + default: + break; + } + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::AcceptMultipleCall(CallAnsweringOptions answerOptions, const int incomingCallHandle) +{ + AppLogDebug("Enter"); + result r = E_FAILURE; + + switch (answerOptions) + { + case ANSERWING_OPTION_REPLACE_ACTIVE_CALL: + { + //Replace "Active" call by incoming call and save ended call to call logs db. + IListT* pCallList = __pActiveCallList->GetValuesN(); + AppCallInfo callToBeEnded; + pCallList->GetAt(0, callToBeEnded); + //Check if the call is on "Hold", then fetch 2nd callInfo + if (callToBeEnded.IsOnHold() == true) + { + pCallList->GetAt(1, callToBeEnded); + } + delete pCallList; + pCallList = null; + + //remove "CallToBeEnded" from Active call list to avoid processing in HandleIdleCallback(). + __pActiveCallList->Remove(callToBeEnded.GetCallHandle()->ToLong()); + + //Accept incoming call by End Active call with 'TAPI_CALL_ANSWER_REPLACE' + int res = tel_answer_call(__pTapiHandle, incomingCallHandle, TAPI_CALL_ANSWER_REPLACE, &HandleCallbackResponse, this); + if (res != 0) + { + r = E_FAILURE; + //save the previous call back to active call list + __pActiveCallList->Add(callToBeEnded.GetCallHandle()->ToLong(), callToBeEnded); + break; + } + + //Incoming Call connected successfully + r = E_SUCCESS; + //save to ended call to call logs db. + SaveCallInfoToLogsDb(callToBeEnded); + } + break; + + case ANSERWING_OPTION_REPLACE_HELD_CALL: + { + //Replace "Held" call by incoming call and save ended call to call logs db. + IListT* pCallList = __pActiveCallList->GetValuesN(); + //"Held" call is to be ended + AppCallInfo callToBeEnded; + //"Active" call will be put on Hold + AppCallInfo callToPutOnHold; + pCallList->GetAt(0, callToBeEnded); + //Check if the call is NOT "Held", then fetch 2nd callInfo + if (callToBeEnded.IsOnHold() == false) + { + callToPutOnHold = callToBeEnded; + pCallList->GetAt(1, callToBeEnded); + } + else + { + pCallList->GetAt(1, callToPutOnHold); + } + delete pCallList; + pCallList = null; + + //remove "CallToBeEnded" from Active call list to avoid processing in HandleIdleCallback(). + __pActiveCallList->Remove(callToBeEnded.GetCallHandle()->ToLong()); + + //End "Held" Call using 'TAPI_CALL_END'. + int res = -1; + if (callToBeEnded.IsConferenceCall() == false) + { + res = tel_end_call(__pTapiHandle, callToBeEnded.GetCallHandle()->ToLong(), TAPI_CALL_END, &HandleCallbackResponse, this); + } + else + { + IListT* pParticipantsInfo = callToBeEnded.GetCallerList(); + //need to end every participant individually for conference call + for (int index = 0; index < pParticipantsInfo->GetCount(); index++) + { + AppCallInfo memberCallInfo; + pParticipantsInfo->GetAt(index, memberCallInfo); + res = tel_end_call(__pTapiHandle, memberCallInfo.GetCallHandle()->ToLong(), TAPI_CALL_END, &HandleCallbackResponse, this); + } + } + + if (res != 0) + { + r = E_FAILURE; + //save the previous "callToBeEnded" call back to active call list + __pActiveCallList->Add(callToBeEnded.GetCallHandle()->ToLong(), callToBeEnded); + break; + } + //"Held" call successfully ended - Add call ended to call log database + SaveCallInfoToLogsDb(callToBeEnded); + + //accept incoming call by Holding "Active" call using "TAPI_CALL_ANSWER_HOLD_AND_ACCEPT". + res = tel_answer_call(__pTapiHandle, incomingCallHandle, TAPI_CALL_ANSWER_HOLD_AND_ACCEPT, &HandleCallbackResponse, this); + if (res != 0) + { + r = E_FAILURE; + break; + } + + //Call connected successfully and active call is "Onhold" + r = E_SUCCESS; + //replace old object with update CallInfo + AppCallInfo* pHeldCallInfo = new (std::nothrow) AppCallInfo(); + *pHeldCallInfo = callToPutOnHold; + pHeldCallInfo->SetOnHold(true); + __pActiveCallList->Remove(callToPutOnHold.GetCallHandle()->ToLong()); + __pActiveCallList->Add(pHeldCallInfo->GetCallHandle()->ToLong(), *pHeldCallInfo); + } + break; + + case ANSERWING_OPTION_END_ALL_CALLS: + { + //End all active and Held calls after saving to call log. Incoming call is automatically accepted by TAPI engine, + // and processing of Incoming call is handled in HandleActiveCallback(). + + //Transfer Old active calls to a separate list to avoid any processing in HandleIdleCallback(). + HashMapT* pEndCallsList = __pActiveCallList; + //create a new ActiveCallList + __pActiveCallList = new (std::nothrow) HashMapT(); + __pActiveCallList->Construct(IDI_MAX_ACTIVE_CALLS); + + //End all active calls and all hold calls + int res = tel_end_call(__pTapiHandle, -1, TAPI_CALL_END_ACTIVE_ALL, &HandleCallbackResponse, this); + if(res == 0) + { + res = tel_end_call(__pTapiHandle, -1, TAPI_CALL_END_HOLD_ALL, &HandleCallbackResponse, this); + } + + if (res != 0) + { + r = E_FAILURE; + //delete newly constructed list and gain ownership of old list + delete __pActiveCallList; + __pActiveCallList = pEndCallsList; + break; + } + + //all calls ended successfully, Incoming call is automatically accepted. + r = E_SUCCESS; + + //Add calls information to call log before deleting from active call list. + IListT* pCallList = pEndCallsList->GetValuesN(); + if(pCallList != null) + { + int callCount = pCallList->GetCount(); + for (int index = 0; index < callCount; index++) + { + AppCallInfo endCallInfo; + if (pCallList->GetAt(index, endCallInfo) == E_SUCCESS) + { + SaveCallInfoToLogsDb(endCallInfo); + } + } + delete pCallList; + pCallList = null; + } + pEndCallsList->RemoveAll(); + delete pEndCallsList; + pEndCallsList = null; + } + break; + + default: + break; + } + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::HoldCall(Tizen::Base::Long callHandle, bool holdCall) +{ + AppLogDebug("Enter"); + result r = E_SUCCESS; + //Check if there are any existing active calls + if (__pActiveCallList->GetCount()) + { + IListT* pCallList = __pActiveCallList->GetValuesN(); + int callCount = pCallList->GetCount(); + for (int index = 0; index < callCount; index++) + { + AppCallInfo holdCallInfo; + + r = pCallList->GetAt(index, holdCallInfo); + //check if an active call is found with matching contact no. + if ((r == E_SUCCESS) && (holdCallInfo.GetCallHandle()->Equals(callHandle))) + { + r = HoldActiveCall(&holdCallInfo, holdCall); + break; + } + } + delete pCallList; + pCallList = null; + } + + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::EndConferenceCall(void) +{ + AppLogDebug("Enter"); + result r = E_FAILURE; + //fetch conference callInfo to end + AppCallInfo confCallToEnd; + bool isConferenceCallFound = false; + + IListT* pCallList = __pActiveCallList->GetValuesN(); + int callCount = pCallList->GetCount(); + for (int index = 0; index < callCount; index++) + { + pCallList->GetAt(index, confCallToEnd); + if (confCallToEnd.IsConferenceCall() == true) + { + isConferenceCallFound = true; + break; + } + } + delete pCallList; + pCallList = null; + + if (isConferenceCallFound == true) + { + //End conference call + TelCallEndType_t callEndType = TAPI_CALL_END_ACTIVE_ALL; + if (confCallToEnd.IsOnHold() == true) + { + callEndType = TAPI_CALL_END_HOLD_ALL; + } + int res = tel_end_call(__pTapiHandle, confCallToEnd.GetCallHandle()->ToLong(), callEndType, &HandleEndConferenceCallbackResponse, this); + if (res == TAPI_CAUSE_SUCCESS) + { + r = E_SUCCESS; + } + } + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::HoldConferenceCall(bool holdCall) +{ + AppLogDebug("Enter"); + result r = E_FAILURE; + int confCallIndex = -1; + AppCallInfo confCallToHold; + bool isConferenceCallFound = false; + + IListT* pCallList = __pActiveCallList->GetValuesN(); + int confCallCount = pCallList->GetCount(); + + for (int index = 0; index < confCallCount; index++) + { + pCallList->GetAt(index, confCallToHold); + if (confCallToHold.IsConferenceCall() == true) + { + isConferenceCallFound = true; + confCallIndex = index; + //Found the Conference call to be ended. + break; + } + } + + if (isConferenceCallFound == false) + { + delete pCallList; + pCallList = null; + return r; + } + + unsigned int callHandle = confCallToHold.GetCallHandle()->ToLong(); + int res = TAPI_API_INVALID_INPUT; + if (holdCall == true) + { + res = tel_hold_call(__pTapiHandle, callHandle, &HandleHoldConferenceCallbackResponse, this); + } + else + { + res = tel_active_call(__pTapiHandle, callHandle, &HandleActiveConferenceCallbackResponse, this); + } + + if (res == TAPI_CAUSE_SUCCESS) + { + r = E_SUCCESS; + } + else + { + r = E_FAILURE; + } + + delete pCallList; + pCallList = null; + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::JoinCall(void) +{ + AppLogDebug("Enter"); + result r = E_FAILURE; + int res = -1; + AppCallInfo activeCall; + AppCallInfo heldCall; + // Use enumerator to access elements in the map + IListT* pCallList = __pActiveCallList->GetValuesN(); + r = pCallList->GetAt(0, activeCall); + + if (r == E_SUCCESS) + { + r = pCallList->GetAt(1, heldCall); + if (r == E_SUCCESS) + { + unsigned int activeCallHandle = activeCall.GetCallHandle()->ToLong(); + unsigned int heldCallHandle = heldCall.GetCallHandle()->ToLong(); + + //Check if participants in conference call are under limit. + if ((heldCall.IsConferenceCall() == true) && (heldCall.GetCallerListCount() < IDI_MAX_CONF_CALL_PARTICIPANTS)) + { + res = tel_join_call(__pTapiHandle, heldCallHandle, activeCallHandle, &HandleJoinCallbackResponse, this); + } + else if (activeCall.GetCallerListCount() < IDI_MAX_CONF_CALL_PARTICIPANTS) + { + res = tel_join_call(__pTapiHandle, activeCallHandle, heldCallHandle, &HandleJoinCallbackResponse, this); + } + } + } + delete pCallList; + pCallList = null; + if (res == TAPI_API_SUCCESS) + { + r = E_SUCCESS; + } + else + { + r = E_FAILURE; + } + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::HoldActiveCall(AppCallInfo* pActiveCallInfo, bool holdCall) +{ + + AppLogDebug("Enter"); + unsigned int callHandle = pActiveCallInfo->GetCallHandle()->ToLong(); + AppLogDebug("Enter %d",callHandle); + + int retStatus = -1; + if (holdCall == true) + { + retStatus = tel_hold_call(__pTapiHandle, callHandle, &HandleHoldCallbackResponse, this); + } + else + { + retStatus = tel_active_call(__pTapiHandle, callHandle, &HandleActiveCallbackResponse, this); + } + + if (retStatus == TAPI_CAUSE_SUCCESS) + { + AppLogDebug("Exit"); + return E_SUCCESS; + } + else + { + return E_FAILURE; + } +} + +result +TelephonyManager::DialOutgoingCall(String& contactNumber, bool isEmergency) +{ + TelCallDial_t structDialCall; + + AppLogDebug("Enter %ls",contactNumber.GetPointer()); + //Temp String to replace , with P and ; with W + String TempContactNum; + TempContactNum.Append(contactNumber); + TempContactNum.Replace(L",",L"W"); + TempContactNum.Replace(L";",L","); + //conversion "contactNumber" to char* + const wchar_t* pContact = TempContactNum.GetPointer(); + int len = TempContactNum.GetLength()+1; + char* pNumber = new (std::nothrow) char[len]; + wcstombs(pNumber, pContact, len); + + + //initialize request parameter + memset(&structDialCall, '\0', sizeof(TelCallDial_t)); + memcpy(structDialCall.szNumber, pNumber, strlen(pNumber)); + AppLogDebug("%s",structDialCall.szNumber); + if(isEmergency == true) + { + structDialCall.CallType = TAPI_CALL_TYPE_E911; + } + else + { + structDialCall.CallType = TAPI_CALL_TYPE_VOICE; + } + + int res = tel_dial_call(__pTapiHandle, &structDialCall, &HandleDialCallbackResponse, this); + if (__pSoundManager == null) + { + __pSoundManager = new (std::nothrow) SoundManager(); + } + __pSoundManager->StartSession(); + delete[] pNumber; + pNumber = null; + + if (res == TAPI_CAUSE_SUCCESS) + { + if (__pDialedCall != null) + { + delete __pDialedCall; + __pDialedCall = null; + } + __pDialedCall = new (std::nothrow) AppCallInfo(); + __pDialedCall->SetContactNumber(contactNumber); + __pDialedCall->SetEmergency(isEmergency); + result r = FetchContactInfoForNumber(contactNumber); + if (!IsFailed(r)) + { + __pDialedCall->SetContactInfo(*__pCachedContact); + } + AppLogDebug("Exit"); + return E_SUCCESS; + } + else + { + AppLogDebug("%d",res); + return res; + } +} + +result +TelephonyManager::SwapCalls(void) +{ + result r = E_FAILURE; + + AppLogDebug("Enter"); + //check if there are atleast 2 active calls + if (__pActiveCallList->GetCount() == IDI_MAX_ACTIVE_CALLS) + { + int retStatus = 0; + + //fetch call handles + IListT* pCallHandleList = __pActiveCallList->GetKeysN(); + long callHandle1 = 0; + pCallHandleList->GetAt(0, callHandle1); + long callHandle2 = 0; + pCallHandleList->GetAt(1, callHandle2); + + retStatus = tel_swap_call(__pTapiHandle, callHandle1, callHandle2, &HandleSwapCallbackResponse, this); + + if (retStatus == TAPI_CAUSE_SUCCESS) + { + r = E_SUCCESS; + } + delete pCallHandleList; + pCallHandleList = null; + } + + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::SendCallDTMF(String& textToBeSent) +{ + result r = E_FAILURE; + AppLogDebug("Enter"); + //check if there is an active Call + if (__pActiveCallList->GetCount() > 0) + { + //conversion "textToBeSent" to char* + const wchar_t* pTextToBeSent = textToBeSent.GetPointer(); + int len = textToBeSent.GetLength() + 1; + char* pNumber = new (std::nothrow) char[len]; + wcstombs(pNumber, pTextToBeSent, len); + int retStatus = tel_call_dtmf(__pTapiHandle, pNumber, &HandleCallbackResponse, this); + delete []pNumber; + pNumber = null; + if (retStatus == TAPI_CAUSE_SUCCESS) + { + r = E_SUCCESS; + } + } + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::EndFromConference(int callHandle) +{ + AppLogDebug("Enter"); + result r = E_FAILURE; + int confCallIndex = -1; + AppCallInfo endConfCall; + bool isConferenceCallFound = false; + + IListT* pCallList = __pActiveCallList->GetValuesN(); + int callCount = pCallList->GetCount(); + for (int index = 0; index < callCount; index++) + { + pCallList->GetAt(index, endConfCall); + if (endConfCall.IsConferenceCall() == true) + { + isConferenceCallFound = true; + confCallIndex = index; + //Found the Conference call to be ended. + break; + } + } + + delete pCallList; + pCallList = null; + + if (isConferenceCallFound == false) + { + //no conference call found + return r; + } + + //Identify the call to be ended and remove from list on API success + AppCallInfo callToBeEnded; + IListT* pParticipantList = endConfCall.GetCallerList(); + int participantCount = pParticipantList->GetCount(); + for (int index = 0; index < participantCount; index++) + { + pParticipantList->GetAt(index, callToBeEnded); + if (callToBeEnded.GetCallHandle()->ToLong() == callHandle) + { + //Identify the call to be ended and remove from list on API success + TelCallEndType_t endType = TAPI_CALL_END; + + int res = tel_end_call(__pTapiHandle, callHandle, endType, &HandleEndFromConferenceCallbackResponse, this); + if (res == TAPI_CAUSE_SUCCESS) + { + r = E_SUCCESS; + } + else + { + r = E_FAILURE; + } + break; + } + } + + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::SplitFromConference(int callHandle) +{ + AppLogDebug("Enter"); + result r = E_FAILURE; + int confCallIndex = -1; + AppCallInfo endConfCall; + bool isConferenceCallFound = false; + + IListT* pCallList = __pActiveCallList->GetValuesN(); + int callCount = pCallList->GetCount(); + for (int index = 0; index < callCount; index++) + { + pCallList->GetAt(index, endConfCall); + if (endConfCall.IsConferenceCall() == true) + { + isConferenceCallFound = true; + confCallIndex = index; + //Found the Conference call to be ended. + break; + } + } + delete pCallList; + pCallList = null; + if (isConferenceCallFound == false) + { + //no conference call found + return r; + } + + //Identify the call to be ended and remove from list on API success + AppCallInfo callToBeEnded; + pCallList = endConfCall.GetCallerList(); + callCount = pCallList->GetCount(); + for (int index = 0; index < callCount; index++) + { + pCallList->GetAt(index, callToBeEnded); + if (callToBeEnded.GetCallHandle()->ToLong() == callHandle) + { + int res = tel_split_call(__pTapiHandle, callHandle, &HandleSplitFromConferenceCallbackResponse, this); + if (res == TAPI_CAUSE_SUCCESS) + { + r = E_SUCCESS; + } + else + { + r = E_FAILURE; + } + break; + } + } + AppLogDebug("Exit"); + return r; +} + +result +TelephonyManager::SetMuteStatus(bool setMute) +{ + AppLogDebug("Enter"); + TelSoundMuteStatus_t muteStatus; + result r = E_FAILURE; + if (setMute == true) + { + muteStatus = TAPI_SOUND_MUTE_STATUS_ON; + } + else + { + muteStatus = TAPI_SOUND_MUTE_STATUS_OFF; + } + int res = tel_set_call_mute_status(__pTapiHandle, muteStatus, &HandleCallbackResponse, this); + if (res == TAPI_CAUSE_SUCCESS) + { + __isMuted = setMute; + r = E_SUCCESS; + } + else + { + r = E_FAILURE; + } + AppLogDebug("Exit"); + return r; +} + +bool +TelephonyManager::IsCallMuted(void) +{ + AppLogDebug("Enter"); + return __isMuted; +} + +result +TelephonyManager::SetSpeakerStatus(bool setSpeaker) +{ + AppLogDebug("Enter"); + + result res = __pSoundManager->SetSoundPath(setSpeaker); + TryReturn(res==E_SUCCESS,E_FAILURE,"SetSoundPath failed"); + __isSpeakerOn = setSpeaker; + return E_SUCCESS; + /*result r = E_FAILURE; + TelCallSoundPathInfo_t callSoundPathInfo; + __pSoundManager->SetSpeakerStatus(setSpeaker); + if (setSpeaker == true) + { + callSoundPathInfo.path = TAPI_SOUND_PATH_SPK_PHONE; + } + else + { + callSoundPathInfo.path = TAPI_SOUND_PATH_HANDSET; + } + callSoundPathInfo.ex_volume = TelCallSoundPathInfo_t::TAPI_SOUND_EX_VOLUME_ON; + + int res = tel_set_call_sound_path(__pTapiHandle, &callSoundPathInfo, &HandleCallbackResponse, this); + + if (res == TAPI_CAUSE_SUCCESS) + { + __isSpeakerOn = setSpeaker; + r = E_SUCCESS; + } + else + { + r = E_FAILURE; + } + AppLogDebug("Exit"); + return r;*/ +} + +bool +TelephonyManager::IsSpeakerOn(void) +{ + AppLogDebug("Enter"); + return __isSpeakerOn; + AppLogDebug("Exit"); +} + +bool +TelephonyManager::IsSplitAllowed(void) +{ + // Split functionality is allowed only if a one call is present. + // The call can be a single call or a conference call + AppLogDebug("Enter"); + if (__pActiveCallList->GetCount() == 1) + { + return true; + } + AppLogDebug("Exit"); + return false; +} +void +TelephonyManager::HandleActiveConferenceCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData) +{ + AppLogDebug("Enter %d",callBackResult); + TelephonyManager* pTelManager = (TelephonyManager*) pUserData; + AppCallInfo confCallToHold; + IListT* pCallList = pTelManager->__pActiveCallList->GetValuesN(); + if(pCallList == null) + { + return; + } + int confCallCount = pCallList->GetCount(); + + for (int index = 0; index < confCallCount; index++) + { + pCallList->GetAt(index, confCallToHold); + if (confCallToHold.IsConferenceCall() == true) + { + unsigned int conferenceCallHandleToHold = 0; + memcpy(&conferenceCallHandleToHold, pData, sizeof(TS_UINT)); + if (callBackResult == TAPI_API_SUCCESS) + { + confCallToHold.SetOnHold(false); + AppCallInfo* pConfCallInfo = new (std::nothrow) AppCallInfo(); + *pConfCallInfo = confCallToHold; + pTelManager->__pActiveCallList->Remove(conferenceCallHandleToHold); + pTelManager->__pActiveCallList->Add(conferenceCallHandleToHold, *pConfCallInfo); + pTelManager->__pEventListener->HandleConfCallActiveOccured(true); + } + break; + } + } + + if(pCallList != null) + { + delete pCallList; + pCallList = null; + } + AppLogDebug("Exit"); +} +void +TelephonyManager::HandleHoldConferenceCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData) +{ + AppLogDebug("Enter %d",callBackResult); + TelephonyManager* pTelManager = (TelephonyManager*) pUserData; + AppCallInfo confCallToHold; + IListT* pCallList = pTelManager->__pActiveCallList->GetValuesN(); + if(pCallList == null) + { + return; + } + int confCallCount = pCallList->GetCount(); + + for (int index = 0; index < confCallCount; index++) + { + pCallList->GetAt(index, confCallToHold); + if (confCallToHold.IsConferenceCall() == true) + { + unsigned int conferenceCallHandleToHold = 0; + memcpy(&conferenceCallHandleToHold, pData, sizeof(TS_UINT)); + if (callBackResult == TAPI_API_SUCCESS) + { + confCallToHold.SetOnHold(true); + AppCallInfo* pConfCallInfo = new (std::nothrow) AppCallInfo(); + *pConfCallInfo = confCallToHold; + pTelManager->__pActiveCallList->Remove(conferenceCallHandleToHold); + pTelManager->__pActiveCallList->Add(conferenceCallHandleToHold, *pConfCallInfo); + pTelManager->__pEventListener->HandleConfCallHoldOccured(true); + } + break; + } + } + if(pCallList != null) + { + delete pCallList; + pCallList = null; + } + AppLogDebug("Exit"); +} + + +void +TelephonyManager::HandleHoldCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData) +{ + AppLogDebug("%d",callBackResult); + result r = E_FAILURE; + TelephonyManager* pTelManager = (TelephonyManager*) pUserData; + if (pData != null && callBackResult == TAPI_API_SUCCESS) + { + unsigned int heldCallHandle = 0; + memcpy(&heldCallHandle, pData, sizeof(TS_UINT)); + + if (pTelManager->__pActiveCallList->GetCount()) + { + IListT* pCallList = pTelManager->__pActiveCallList->GetValuesN(); + int callCount = pCallList->GetCount(); + for (int index = 0; index < callCount; index++) + { + AppCallInfo holdCallInfo; + r = pCallList->GetAt(index, holdCallInfo); + //check if an active call is found with matching contact no. + if ((r == E_SUCCESS) && (heldCallHandle == (unsigned int) holdCallInfo.GetCallHandle()->ToLong())) + { + AppCallInfo* pHeldCallInfo = new (std::nothrow) AppCallInfo(); + //copy state into new callinfo object + *pHeldCallInfo = holdCallInfo; + //set call to hold state + pHeldCallInfo->SetOnHold(true); + //update the state of the call in Active call list by removing and adding again + pTelManager->__pActiveCallList->Remove(heldCallHandle); + pTelManager->__pActiveCallList->Add(heldCallHandle, *pHeldCallInfo); + pTelManager->__pEventListener->HandleCallHeld(true); + break; + } + } + delete pCallList; + pCallList = null; + } + } + pTelManager->CheckPendingDialCalls(callBackResult); + AppLogDebug("Exit"); +} + +void +TelephonyManager::HandleActiveCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData) +{ + AppLogDebug("%d",callBackResult); + result r = E_FAILURE; + TelephonyManager* pTelManager = (TelephonyManager*) pUserData; + if (pData != null && callBackResult == TAPI_API_SUCCESS) + { + unsigned int activeCallHandle = 0; + memcpy(&activeCallHandle, pData, sizeof(TS_UINT)); + + if (pTelManager->__pActiveCallList->GetCount()) + { + IListT* pCallList = pTelManager->__pActiveCallList->GetValuesN(); + int callCount = pCallList->GetCount(); + for (int index = 0; index < callCount; index++) + { + AppCallInfo ActiveCallInfo; + r = pCallList->GetAt(index, ActiveCallInfo); + //check if an active call is found with matching contact no. + if ((r == E_SUCCESS) && (activeCallHandle == (unsigned int) ActiveCallInfo.GetCallHandle()->ToLong())) + { + AppCallInfo* pActiveCallInfo = new (std::nothrow) AppCallInfo(); + //copy state into new callinfo object + *pActiveCallInfo = ActiveCallInfo; + //set call to active state + pActiveCallInfo->SetOnHold(false); + //update the state of the call in Active call list by removing and adding again + pTelManager->__pActiveCallList->Remove(activeCallHandle); + pTelManager->__pActiveCallList->Add(activeCallHandle, *pActiveCallInfo); + break; + } + } + delete pCallList; + pCallList = null; + pTelManager->__pEventListener->HandleCallActive(true); + } + } + AppLogDebug("Exit"); +} + +void +TelephonyManager::HandleCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData) +{ + //should not do anything here. + +} + +void +TelephonyManager::HandleDialCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData) +{ + AppLogDebug("Enter %d",callBackResult); + TelephonyManager* pTelManager = (TelephonyManager*) pUserData; + if (callBackResult != TAPI_CAUSE_SUCCESS) + { + if (pTelManager->__pDialedCall != null) + { + delete pTelManager->__pDialedCall; + pTelManager->__pDialedCall = null; + } + + //Check if there are no active connected calls and no incoming call. + if (pTelManager->__pIncomingCall != null) + { + pTelManager->__pSettingsManager->SetCallState(CALL_STATE_CALL_VOICE_CONNECTING); + } + else if (pTelManager->GetCurrentCallCount() >= 1) + { + pTelManager->__pSettingsManager->SetCallState(CALL_STATE_CALL_VOICE_ACTIVE); + } + else + { + pTelManager->__pSettingsManager->SetCallState(CALL_STATE_CALL_OFF); + } + + pTelManager->__pEventListener->HandleTelephonyError(ERROR_DIAL_FAILED); + } + AppLogDebug("Exit"); +} + +void +TelephonyManager::HandleRejectCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData) +{ + AppLogDebug("Enter %d",callBackResult); + // This callback comes only if user has rejected an incoming call from IncomingCallForm. + TelephonyManager* pTelManager = (TelephonyManager*) pUserData; + if (pData != null && callBackResult == TAPI_API_SUCCESS) + { + unsigned int rejectedCallHandle = 0; + memcpy(&rejectedCallHandle, pData, sizeof(TS_UINT)); + + //Check if incoming call is rejected + if (pTelManager->__pIncomingCall != null && (rejectedCallHandle == (unsigned int) pTelManager->__pIncomingCall->GetCallHandle()->ToLong())) + { + AppLogDebug("Call rejected by user"); + AppCallInfo rejectedCallInfo; + rejectedCallInfo = *(pTelManager->__pIncomingCall); + delete pTelManager->__pIncomingCall; + pTelManager->__pIncomingCall = null; + + //rejected by user from incoming call form + rejectedCallInfo.SetCalllogType(CALL_LOG_TYPE_VOICE_REJECTED); + //Save rejected incoming call to call log db. + pTelManager->SaveCallInfoToLogsDb(rejectedCallInfo); + + //check if the ended call was the last call + bool isLastCall = (pTelManager->__pActiveCallList->GetCount() == 0); + //Stop alert - started only for incoming calls which are not blocked. + if(pTelManager->__pSoundManager != null) + { + pTelManager->__pSoundManager->StopAlert(); + //Do not call stop session if there is already a call going on + if(isLastCall == true) + { + pTelManager->__pSoundManager->StopSession(); + } + } + //Send notification to user + ArrayListT* pCallList = null; + if (isLastCall) + { + //save 'RejectedCall' to list to show on EndCallForm + pCallList = new (std::nothrow) ArrayListT(); + pCallList->Construct(1); + AppCallInfo* pRejectedCall = new (std::nothrow) AppCallInfo(); + *pRejectedCall = rejectedCallInfo; + pCallList->Add(*pRejectedCall); + } + else + { + //fetch active calls to show appropriate scene + pCallList = static_cast*>(pTelManager->__pActiveCallList->GetValuesN()); + } + pTelManager->__pEventListener->HandleCallDisconnected(isLastCall, *pCallList); + delete pCallList; + pCallList = null; + } + } + else + { + pTelManager->__pEventListener->HandleTelephonyError(ERROR_REJECT_FAILED); + } + AppLogDebug("EXIT"); +} + +void +TelephonyManager::HandleJoinCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData) +{ + AppLogDebug("Enter %d",callBackResult); + TelephonyManager* pTelManager = (TelephonyManager*) pUserData; + if (callBackResult == TAPI_API_SUCCESS && pData != null) + { + unsigned int tempHandle = 0; + TelCallInfoJoinedNoti_t joinedInfoNotification; + AppCallInfo confCallInfo; + + memcpy(&tempHandle, pData, sizeof(TS_UINT)); + joinedInfoNotification.id = tempHandle; + AppCallInfo activeCall; + AppCallInfo heldCall; + // Use enumerator to access elements in the map + IListT* pCallList = pTelManager->__pActiveCallList->GetValuesN(); + result r = pCallList->GetAt(0, activeCall); + + if (r == E_SUCCESS) + { + r = pCallList->GetAt(1, heldCall); + if (r == E_SUCCESS) + { + AppCallInfo* pConfCallInfo = new (std::nothrow) AppCallInfo(); + unsigned int activeCallHandle = activeCall.GetCallHandle()->ToLong(); + unsigned int heldCallHandle = heldCall.GetCallHandle()->ToLong(); + if (activeCall.IsConferenceCall() == true) + { + r = E_SUCCESS; + //When joined both become active + activeCall.SetOnHold(false); + heldCall.SetOnHold(false); + *pConfCallInfo = activeCall; + pConfCallInfo->AddCallToCallerList(heldCall); + pConfCallInfo->SetCallHandle(activeCallHandle); + //Set call start time + //if (pConfCallInfo->GetCallConnectTime() > heldCall.GetCallConnectTime()) + if (pConfCallInfo->GetDurationTime() > heldCall.GetDurationTime()) + { + pConfCallInfo->SetCallConnectTime(heldCall.GetCallConnectTime()); + pConfCallInfo->SetDurationTime(heldCall.GetDurationTime()); + pConfCallInfo->SetCallNotificationTime(heldCall.GetCallNotificationTime()); + } + } + else if (heldCall.IsConferenceCall() == true) + { + r = E_SUCCESS; + heldCall.SetOnHold(false); + activeCall.SetOnHold(false); + *pConfCallInfo = heldCall; + pConfCallInfo->AddCallToCallerList(activeCall); + pConfCallInfo->SetCallHandle(heldCallHandle); + //Set call start time + //if (pConfCallInfo->GetCallConnectTime() > activeCall.GetCallConnectTime()) + if (pConfCallInfo->GetDurationTime() > activeCall.GetDurationTime()) + { + pConfCallInfo->SetCallConnectTime(activeCall.GetCallConnectTime()); + pConfCallInfo->SetDurationTime(activeCall.GetDurationTime()); + pConfCallInfo->SetCallNotificationTime(activeCall.GetCallNotificationTime()); + } + } + else + { + r = E_SUCCESS; + pConfCallInfo->SetConference(true); + heldCall.SetOnHold(false); + activeCall.SetOnHold(false); + pConfCallInfo->AddCallToCallerList(activeCall); + pConfCallInfo->AddCallToCallerList(heldCall); + pConfCallInfo->SetCallHandle(activeCallHandle); + //Set call start time + //if (activeCall.GetCallConnectTime() > heldCall.GetCallConnectTime()) + if (activeCall.GetDurationTime() > heldCall.GetDurationTime()) + { + pConfCallInfo->SetCallConnectTime(heldCall.GetCallConnectTime()); + pConfCallInfo->SetDurationTime(heldCall.GetDurationTime()); + pConfCallInfo->SetCallNotificationTime(heldCall.GetCallNotificationTime()); + } + else + { + pConfCallInfo->SetCallConnectTime(activeCall.GetCallConnectTime()); + pConfCallInfo->SetDurationTime(activeCall.GetDurationTime()); + pConfCallInfo->SetCallNotificationTime(activeCall.GetCallNotificationTime()); + } + } + pConfCallInfo->SetCallHandle(joinedInfoNotification.id); + pTelManager->__pActiveCallList->RemoveAll(); + //only one call in the list + pTelManager->__pActiveCallList->Add(joinedInfoNotification.id, *pConfCallInfo); + //notify listener that call is connected. + pTelManager->__pEventListener->HandleConferenceCall(*pConfCallInfo); + delete pCallList; + pCallList = null; + } + } + } + else + { + pTelManager->__pEventListener->HandleTelephonyError(ERROR_JOIN_FAILED); + } + AppLogDebug("Exit"); +} + +void +TelephonyManager::HandleSwapCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData) +{ + AppLogDebug("Enter %d",callBackResult); + TelephonyManager* pTelManager = (TelephonyManager*) pUserData; + if (callBackResult == TAPI_CAUSE_SUCCESS) + { + IListT* pCallList = pTelManager->__pActiveCallList->GetValuesN(); + IListT* pKeyList = pTelManager->__pActiveCallList->GetKeysN(); + int callCount = pTelManager->__pActiveCallList->GetCount(); + for (int index = 0; index < callCount; index++) + { + AppCallInfo* pTempCallInfo = new (std::nothrow) AppCallInfo(); + pCallList->GetAt(index, *pTempCallInfo); + (pTempCallInfo->IsOnHold() == false) ? pTempCallInfo->SetOnHold(true) : pTempCallInfo->SetOnHold(false); + long callHandle; + pKeyList->GetAt(index, callHandle); + pTelManager->__pActiveCallList->SetValue(callHandle, *pTempCallInfo); + } + delete pCallList; + pCallList = null; + delete pKeyList; + pKeyList = null; + pCallList = pTelManager->__pActiveCallList->GetValuesN(); + pTelManager->__pEventListener->HandleCallSwapOccured(*pCallList); + } + else + { + pTelManager->__pEventListener->HandleTelephonyError(ERROR_SWAP_FAILED); + } +} + +void +TelephonyManager::HandleEndFromConferenceCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData) +{ + AppLogDebug("Enter %d",callBackResult); + //This callback comes if a single call is ended from Conference call. + TelephonyManager* pTelManager = (TelephonyManager*) pUserData; + bool isParticipantCallEnded = false; + + if (callBackResult == TAPI_CAUSE_SUCCESS && pData != null) + { + //fetch end call handle + TelCallEndCnf_t callEndNotification; + memcpy(&callEndNotification, pData, sizeof(TelCallEndCnf_t)); + //Fetch conference call + AppCallInfo endConfCall; + bool isConferenceCallFound = false; + IListT* pCallList = pTelManager->__pActiveCallList->GetValuesN(); + int callCount = pCallList->GetCount(); + for (int index = 0; index < callCount; index++) + { + pCallList->GetAt(index, endConfCall); + if (endConfCall.IsConferenceCall() == true) + { + isConferenceCallFound = true; + //Found the Conference call to be changed. + break; + } + } + delete pCallList; + pCallList = null; + + //Identify the call to be ended and remove from list. + if (isConferenceCallFound == true) + { + isParticipantCallEnded = pTelManager->HandleParticipantEndedFromConference(callEndNotification.id, endConfCall); + } + } + else + { + AppLog("TAPI Failed - %d", callBackResult); + } + + //Check if participant call or Conference call was not found, then show error + if (isParticipantCallEnded == false) + { + pTelManager->__pEventListener->HandleTelephonyError(ERROR_END_FROM_CONFERENCE_FAILED); + } + AppLogDebug("EXIT"); +} + +bool +TelephonyManager::HandleParticipantEndedFromConference(unsigned int participantCallHandle, AppCallInfo& conferenceCall) +{ + AppLogDebug("ENTER"); + //to check if participant call was found and ended. + bool isParticipantCallEnded = false; + //Identify the call to be ended and remove from list. + AppCallInfo callToBeEnded; + IListT* pCallerList = conferenceCall.GetCallerList(); + int callerCount = pCallerList->GetCount(); + for (int index = 0; index < callerCount; index++) + { + pCallerList->GetAt(index, callToBeEnded); + if ((unsigned int)callToBeEnded.GetCallHandle()->ToLong() == participantCallHandle) + { + //Identify the call to be ended and remove from conference list + conferenceCall.RemoveCallFromCallerList(index); + //update its status to individual call before saving to database + callToBeEnded.SetConference(false); + SaveCallInfoToLogsDb(callToBeEnded); + isParticipantCallEnded = true; + //since participant call got ended play disconnect tone + __pSoundManager->SetDisconnectTone(); + break; + } + } + + if(isParticipantCallEnded == false) + { + //participant call not found and not ended + return isParticipantCallEnded; + } + + unsigned int confCallHandle = (unsigned int)conferenceCall.GetCallHandle()->ToLong(); + //Check if last participant removed. If yes, switch to single active view + if (conferenceCall.GetCallerListCount() == 1) + { + AppCallInfo callFromList; + pCallerList = conferenceCall.GetCallerList(); + pCallerList->GetAt(0, callFromList); + //construct a new single active call + AppCallInfo* pActiveCall = new (std::nothrow) AppCallInfo(); + *pActiveCall = callFromList; + //update conference status and Hold status + pActiveCall->SetConference(false); + pActiveCall->SetOnHold(conferenceCall.IsOnHold()); + + __pActiveCallList->Remove(confCallHandle); + __pActiveCallList->Add(pActiveCall->GetCallHandle()->ToLong(), *pActiveCall); + pActiveCall = null; + + //using the callConnected to switch to single active screen + //or update multiple active call screen + IListT* pActiveCallList = __pActiveCallList->GetValuesN(); + __pEventListener->HandleCallConnected(*pActiveCallList); + delete pActiveCallList; + pActiveCallList = null; + } + else + { + AppCallInfo callFromList; + pCallerList = conferenceCall.GetCallerList(); + pCallerList->GetAt(0, callFromList); + //construct a new conference call + AppCallInfo* pConfCallInfo = new (std::nothrow) AppCallInfo(); + *pConfCallInfo = conferenceCall; + if (confCallHandle == participantCallHandle) + { + //Call Handle is same as conf call handle, so need to change conf call handle + __pActiveCallList->Remove(confCallHandle); + int newConfCallHandle = callFromList.GetCallHandle()->ToLong(); + pConfCallInfo->SetCallHandle(newConfCallHandle); + __pActiveCallList->Add(newConfCallHandle, *pConfCallInfo); + } + else + { + __pActiveCallList->SetValue(confCallHandle, *pConfCallInfo); + } + __pEventListener->HandleConferenceChange(); + } + AppLogDebug("EXIT"); + return isParticipantCallEnded; +} + +void +TelephonyManager::HandleSplitFromConferenceCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData) +{ + AppLogDebug("Enter %d",callBackResult); + TelephonyManager* pTelManager = (TelephonyManager*) pUserData; + if (callBackResult == TAPI_CAUSE_SUCCESS && pData != null) + { + TelCallSplitCnf_t callSplitNotification; + memcpy(&callSplitNotification, pData, sizeof(TelCallSplitCnf_t)); + int confCallIndex = -1; + AppCallInfo endConfCall; + bool isConferenceCallFound = false; + + IListT* pCallList = pTelManager->__pActiveCallList->GetValuesN(); + int callCount = pCallList->GetCount(); + for (int index = 0; index < callCount; index++) + { + pCallList->GetAt(index, endConfCall); + if (endConfCall.IsConferenceCall() == true) + { + isConferenceCallFound = true; + confCallIndex = index; + //Found the Conference call to be ended. + break; + } + } + + if (isConferenceCallFound == false) + { + delete pCallList; + pCallList = null; + return; + } + delete pCallList; + pCallList = null; + //Identify the call to be ended and remove from list on API success + AppCallInfo callToBeEnded; + pCallList = endConfCall.GetCallerList(); + callCount = pCallList->GetCount(); + for (int index = 0; index < callCount; index++) + { + pCallList->GetAt(index, callToBeEnded); + if ((unsigned int)callToBeEnded.GetCallHandle()->ToLong() == callSplitNotification.id) + { + //Identified the call to be ended and remove from conference list + //Add this to the active call list + endConfCall.RemoveCallFromCallerList(index); + break; + } + } + unsigned int confCallHandle = (unsigned int)endConfCall.GetCallHandle()->ToLong(); + //Set the hold flags correctly and make the changes to the active call list + if (endConfCall.GetCallerListCount() == 1) + { + //Set hold for the other single call + // and add to the list + AppCallInfo callFromList; + pCallList = endConfCall.GetCallerList(); + pCallList->GetAt(0, callFromList); + AppCallInfo* pHeldCall = new (std::nothrow) AppCallInfo(); + *pHeldCall = callFromList; + pHeldCall->SetConference(false); + pHeldCall->SetOnHold(true); + pTelManager->__pActiveCallList->Remove(confCallHandle); + pTelManager->__pActiveCallList->Add(pHeldCall->GetCallHandle()->ToLong(), *pHeldCall); + pHeldCall = null; + } + else + { + //Set hold flag for conference call + endConfCall.SetOnHold(true); + AppCallInfo callFromList; + pCallList = endConfCall.GetCallerList(); + pCallList->GetAt(0, callFromList); + + AppCallInfo* pConfCallInfo = new (std::nothrow) AppCallInfo(); + *pConfCallInfo = endConfCall; + if (confCallHandle == callSplitNotification.id) + { + //Call Handle is same as conf call handle. + //Change conf call handle + pTelManager->__pActiveCallList->Remove(confCallHandle); + int tmpCallHandle = callFromList.GetCallHandle()->ToLong(); + pConfCallInfo->SetCallHandle(tmpCallHandle); + pTelManager->__pActiveCallList->Add(callFromList.GetCallHandle()->ToLong(), *pConfCallInfo); + } + else + { + pTelManager->__pActiveCallList->Remove(confCallHandle); + pTelManager->__pActiveCallList->Add(confCallHandle, *pConfCallInfo); + } + } + //Add the new active call to active call list + AppCallInfo* pActiveCall = new (std::nothrow) AppCallInfo(); + *pActiveCall = callToBeEnded; + pActiveCall->SetConference(false); + pActiveCall->SetOnHold(false); + pTelManager->__pActiveCallList->Remove(pActiveCall->GetCallHandle()->ToLong()); + pTelManager->__pActiveCallList->Add(pActiveCall->GetCallHandle()->ToLong(), *pActiveCall); + pActiveCall = null; + //using the callConnected to switch to Multiple active screen + pCallList = pTelManager->__pActiveCallList->GetValuesN(); + pTelManager->__pEventListener->HandleCallConnected(*pCallList); + pCallList = null; + } + else + { + pTelManager->__pEventListener->HandleTelephonyError(ERROR_SPLIT_FROM_CONFERENCE_FAILED); + } +} + +void +TelephonyManager::HandleEndConferenceCallbackResponse(TapiHandle* pHandle, int callBackResult, void* pData, void* pUserData) +{ + AppLogDebug("Enter %d",callBackResult); + //This callback comes only if a conference call is ended by user. + TelephonyManager* pTelManager = (TelephonyManager*) pUserData; + AppCallInfo heldCall; + if (callBackResult == TAPI_CAUSE_SUCCESS && pData != null) + { + //fetch ended confCall details + result r = E_FAILURE; + AppCallInfo endConfCallInfo; + IListT* pActiveCallList = pTelManager->__pActiveCallList->GetValuesN(); + if(pActiveCallList != null && pActiveCallList->GetCount() > 0) + { + for (int index = 0; index < pActiveCallList->GetCount(); index++) + { + r = pActiveCallList->GetAt(index, endConfCallInfo); + if(r == E_SUCCESS && endConfCallInfo.IsConferenceCall() == true) + { + //conference call found. + r = E_SUCCESS; + break; + } + else + { + r = E_FAILURE; + } + } + } + delete pActiveCallList; + pActiveCallList = null; + + //check if no conference call found, then return. + if(r == E_FAILURE) + { + return; + } + //remove the conference call handle from active call list to avoid any processing in HandleIdleCallback(). + pTelManager->__pActiveCallList->Remove(endConfCallInfo.GetCallHandle()->ToLong()); + //Save "End" Conf. call info to call log database + pTelManager->SaveCallInfoToLogsDb(endConfCallInfo); + + //check if the ended call was the last call and show notification to user + bool isLastCall = (pTelManager->__pActiveCallList->GetCount() == 0); + ArrayListT* pCallList = null; + if (isLastCall) + { + pTelManager->__pSoundManager->SetlastEndedConferenceCall(); + //stop sound session + pTelManager->__pSoundManager->StopSession(); + //send empty call list to show dialer or call log screen + pCallList =new (std::nothrow) ArrayListT(); + pCallList->Construct(1); + pCallList->Add(endConfCallInfo); + } + else + { + //fetch active calls to show appropriate scene + pCallList = static_cast*>(pTelManager->__pActiveCallList->GetValuesN()); + r = pCallList->GetAt(0, heldCall); + if (r == E_SUCCESS) + { + //pTelManager->HoldActiveCall(&heldCall, false); + AppCallInfo* pHeldCallInfo = new (std::nothrow) AppCallInfo(); + unsigned int callHandle = heldCall.GetCallHandle()->ToLong(); + //copy state into new callinfo object + *pHeldCallInfo = heldCall; + + //set call to hold state + pHeldCallInfo->SetOnHold(false); + + pTelManager->__pActiveCallList->Remove(callHandle); + //replace old object with new + pTelManager->__pActiveCallList->Add(callHandle, *pHeldCallInfo); + delete pCallList; + pCallList = static_cast*>(pTelManager->__pActiveCallList->GetValuesN()); + } + } + pTelManager->__pSoundManager->SetDisconnectTone(); + //notify listener that call is disconnected. + pTelManager->__pEventListener->HandleCallDisconnected(isLastCall, *pCallList); + delete pCallList; + pCallList = null; + } + else + { + pTelManager->__pEventListener->HandleTelephonyError(ERROR_END_CALL_FAILED); + } + AppLog("EXIT"); +} + +void +TelephonyManager::HandleIdleCallBack(void* pData) +{ + //This callback comes when any type of calls are ended + //We do NOT handle below scenarios here - + //1) In incoming call scenarios, if we end any active calls - handled in "AcceptCall()". + //2) Incoming call automatically blocked is handled in "AnswerAutoRejectCall()" and rejection by user scenarios are handled in "HandleRejectCallbackResponse()". + //3) End conference call is handled in "HandleEndConferenceCallbackResponse()". + //4) End Single Call from Conference call by user is handled in "HandleEndFromConferenceCallbackResponse()". + //5) End Single Call from Conference call using eventInjector is diverted to "HandleParticipantEndedFromConference()". + //BUT, we do handle below scenarios here - + //1) "MISSED" incoming call scenario here i.e incoming call is rejected by other caller. + //2) an "unconnected" dialed call is ended by caller or other party. + //3) Any normal active calls(NOT conference calls) ended by user or by other party. + + TelCallStatusIdleNoti_t idleNotification; + memcpy(&idleNotification, pData, sizeof(TelCallStatusIdleNoti_t)); + //handle end call event, show next screen + unsigned int endCallHandle = idleNotification.id; + AppLogDebug("ENTER %d",endCallHandle); + + //empty active call list or no dialed or incoming calls - ignore this event + IListT* pActiveCallList = __pActiveCallList->GetValuesN(); + if((pActiveCallList == null || pActiveCallList->GetCount() <= 0) && __pDialedCall == null && __pIncomingCall == null) + { + delete pActiveCallList; + AppLogDebug("EXIT - no calls exist"); + return; + } + + //Check if ended call was among conference caller list, + //then divert event to "HandleParticipantEndedFromConference()" + AppCallInfo confCallInfo; + bool isConferenceCallChanged = false; + for (int index = 0; (pActiveCallList != null && index < pActiveCallList->GetCount()); index++) + { + //fetch conference call + result r = pActiveCallList->GetAt(index, confCallInfo); + if (r == E_SUCCESS && confCallInfo.IsConferenceCall() == true) + { + //Conference call found - check if ended call is a participant + isConferenceCallChanged = HandleParticipantEndedFromConference(endCallHandle, confCallInfo); + break; + } + } + delete pActiveCallList; + pActiveCallList = null; + if (isConferenceCallChanged == true) + { + //end call event handled - conference call will now either remain as conf. call + //or become single active call, if it has only 1 participant left. + __pSoundManager->SetSoundMode(SOUND_MODE_VOICE); + AppLogDebug("isConferenceCallChanged == true"); + return; + } + + //check if ended call was among the active call list and not a conference call + AppCallInfo endCallInfo; + result r = __pActiveCallList->GetValue(endCallHandle, endCallInfo); + if (r == E_SUCCESS) + { + bool isHandled = HandleEndNormalActiveCall(endCallInfo); + if (isHandled == true) + { + __pSoundManager->SetSoundMode(SOUND_MODE_VOICE); + return; + } + } + + //Check if dialed call is rejected by other party + bool isDialedCallEnded = ((__pDialedCall != null) && (__pDialedCall->GetCallHandle() != null) &&(((unsigned int)__pDialedCall->GetCallHandle()->ToLong()) == idleNotification.id)); + //Check if "missed" incoming call is ended + bool isMissedIncomingCallEnded = (__pIncomingCall != null && ((unsigned int)__pIncomingCall->GetCallHandle()->ToLong() == idleNotification.id)); + if (isDialedCallEnded == true || isMissedIncomingCallEnded == true) + { + //It comes here only if the ended call was either a "unconnected" dialed call or an "Missed" incoming call. + bool isLastCall = (__pActiveCallList->GetCount() == 0); + + ArrayListT* pCallList = null; + //Check if dialed call was ended + if (isDialedCallEnded == true) + { + AppLogDebug("Dialed Call Ended"); + //Call Ended is the dialed call + endCallInfo = *(__pDialedCall); + __pSoundManager->SetDisconnectTone(); + delete __pDialedCall; + __pDialedCall = null; + } + else + { + //Here, only "Missed" Incoming call ended by other caller is handled. + AppLogDebug("Missed Call Ended"); + __pSoundManager->StopAlert(); + endCallInfo = *(__pIncomingCall); + delete __pIncomingCall; + __pIncomingCall = null; + //update missed status + endCallInfo.SetCalllogType(CALL_LOG_TYPE_VOICE_MISSED_UNSEEN); + //save ended call to call log db. + //SaveCallInfoToLogsDb(endCallInfo); + } + //save ended call to call log db. + SaveCallInfoToLogsDb(endCallInfo); + + //notify listener that call is disconnected. + if (isLastCall == true) + { + __pSoundManager->StopSession(); + pCallList = new (std::nothrow) ArrayListT(); + pCallList->Construct(1); + //This is done to show end call form in missed call case also + //this was done on request received from HQ to solve a bug in + //camera application. In which if a call comes when camera is + //running and user disconnects before the ui is shown the camera + //application hangs + //if (isMissedIncomingCallEnded == false) + { + //save to list to show EndCallForm + pCallList->Add(endCallInfo); + } + __pSoundManager->GetTimer()->Cancel(); + + } + else + { + pCallList = static_cast*>(__pActiveCallList->GetValuesN()); + } + __pEventListener->HandleCallDisconnected(isLastCall, *pCallList); + delete pCallList; + pCallList = null; + } + __pSoundManager->SetSoundMode(SOUND_MODE_VOICE); + AppLogDebug("EXIT"); +} + +bool +TelephonyManager::HandleEndNormalActiveCall(AppCallInfo& endCallInfo) +{ + AppLogDebug("Enter"); + result r = E_FAILURE; + AppCallInfo heldCall; + // This function gets called only from HandleIdleCallback(), + // to handle disconnection of normal active calls. + if (endCallInfo.IsConferenceCall() == false) + { + //since active call got ended play disconnect tone + __pSoundManager->SetDisconnectTone(); + //remove the call handle from active call list + __pActiveCallList->Remove(endCallInfo.GetCallHandle()->ToLong()); + //check if the ended call was the last call and show notification to user + bool isLastCall = (__pActiveCallList->GetCount() == 0); + ArrayListT* pCallList = null; + if (isLastCall) + { + __pSoundManager->GetTimer()->Cancel(); + //stop sound session + __pSoundManager->StopSession(); + //save "End" CallInfo to list to show EndCallForm + pCallList = new (std::nothrow) ArrayListT(); + pCallList->Construct(1); + pCallList->Add(endCallInfo); + } + else + { + if(__pIncomingCall == null) + { + //fetch active calls to show appropriate scene + pCallList = static_cast*>(__pActiveCallList->GetValuesN()); + //fetch the held call on disconnecting the active call and activate it. + r = pCallList->GetAt(0, heldCall); + if (r == E_SUCCESS) + { + HoldActiveCall(&heldCall, false); + delete pCallList; + pCallList = static_cast*>(__pActiveCallList->GetValuesN()); + } + } + } + + //Save "End" call info to call log database + SaveCallInfoToLogsDb(endCallInfo); + //notify listener that call is disconnected. + __pEventListener->HandleCallDisconnected(isLastCall, *pCallList); + delete pCallList; + pCallList = null; + return true; + } + return false; +} + +void +TelephonyManager::HandleDialingCallBack(void* pData) +{ + AppLogDebug("Enter"); + unsigned int tempHandle = 0; + TelCallStatusDialingNoti_t dialingNotification; + memcpy(&tempHandle, pData, sizeof(TS_UINT)); + dialingNotification.id = tempHandle; + //check if callback is for different dialed call + //Dont check for call handle, since this is the first time, we get call handle for a dialed call. + if (__pDialedCall == null) + { + AppLogDebug("__pDialedCall == null"); + //construct new dialed call + __pDialedCall = new (std::nothrow) AppCallInfo(); + + TelCallStatus_t callStatus; + int res = tel_get_call_status(__pTapiHandle, dialingNotification.id, &callStatus); + if (res == TAPI_CAUSE_SUCCESS) + { + //save phone number + String contactNumber(callStatus.pNumber); + __pDialedCall->SetContactNumber(contactNumber); + //set emergency state + if(callStatus.CallType == TAPI_CALL_TYPE_E911) + { + __pDialedCall->SetEmergency(true); + } + else + { + __pDialedCall->SetEmergency(false); + } + //save contact info + FetchContactInfoForNumber(__pDialedCall->GetContactNumber()); + if (__pCachedContact != null) + { + __pDialedCall->SetContactInfo(*(__pCachedContact)); + } + } + } + //set call handle for dialed call + __pDialedCall->SetCallHandle(dialingNotification.id); + __pDialedCall->SetCalllogType(CALL_LOG_TYPE_VOICE_OUTGOING); + + //set call notification time. + long long startTime = 0; + SystemTime::GetTicks(startTime); + __pDialedCall->SetCallNotificationTime(startTime); + //SaveCallInfoToLogsDb(*__pDialedCall); +} + +void +TelephonyManager::HandleActiveCallBack(void* pData) +{ + // This callback comes whenever any new call is connected + // Or, any "Held" call is activated (we ignore activation of "Held" calls). + unsigned int newCallHandle = 0; + TelCallStatusActiveNoti_t activeNotification; + memcpy(&newCallHandle, pData, sizeof(TS_UINT)); + activeNotification.id = newCallHandle; + IListT* pCallList = __pActiveCallList->GetValuesN(); + AppLogDebug("Enter %d",newCallHandle); + //Check if the "Held" call was activated, i.e it is already present in already activated calls list. + bool toHandleEvent = true; + for (int callIndex = 0; (callIndex < pCallList->GetCount() && toHandleEvent == true); callIndex++ ) + { + AppCallInfo tempCallInfo; + pCallList->GetAt(callIndex, tempCallInfo); + unsigned int tempCallHandle = tempCallInfo.GetCallHandle()->ToLong(); + //Check if active callback came for "HandleJoinCallbackResponse" + //or for "UnHold Conference Call or normal call". + if(tempCallInfo.IsConferenceCall() == true) + { + if (tempCallHandle == activeNotification.id) + { + AppLogDebug("tempCallHandle == activeNotification.id"); + toHandleEvent = false; + } + else + { + //check individual participants of conf call + IListT* pConfCallList = tempCallInfo.GetCallerList(); + int confCallCount = pConfCallList->GetCount(); + for (int callIndex = 0; (callIndex < confCallCount && toHandleEvent == true); callIndex++) + { + AppCallInfo confCallerInfo; + pConfCallList->GetAt(callIndex, confCallerInfo); + unsigned int confCallerHandle = confCallerInfo.GetCallHandle()->ToLong(); + if (confCallerHandle == activeNotification.id) + { + AppLogDebug("confCallerHandle == activeNotification.id"); + toHandleEvent = false; + } + } + } + } + else if(tempCallHandle == activeNotification.id) + { + AppLogDebug("normal call is UnHold"); + //If normal call is UnHold + toHandleEvent = false; + } + } + + AppLogDebug("%d",toHandleEvent); + //check if we need to handle this event. + if(toHandleEvent == true) + { + //Here it comes, only if either new dialed or incoming call was connected. + HandleCallConnected( activeNotification.id); + } + delete pCallList; + pCallList = null; + AppLogDebug("Exit"); +} + +void +TelephonyManager::HandleCallConnected(unsigned int connectedCallHandle) +{ + //Here it comes, only if either new dialed or incoming call was connected. + //This function should be called only from "HandleActiveCallback()". + AppLogDebug("Enter %d",connectedCallHandle); + AppCallInfo* pConnectedCall = null; + //to check if incoming call was connected + bool isIncomingCallConnected = false; + + __pSoundManager->SetConnectTone(); + //Check if dialed call is connected. + if ((__pDialedCall != null) && (__pDialedCall->GetCallHandle() != null) && (connectedCallHandle == (unsigned int)__pDialedCall->GetCallHandle()->ToLong())) + { + pConnectedCall = __pDialedCall; + __pDialedCall = null; + } + //Check if connected call is incoming call. + else if (__pIncomingCall != null && (connectedCallHandle == (unsigned int)__pIncomingCall->GetCallHandle()->ToLong())) + { + pConnectedCall = __pIncomingCall; + __pIncomingCall = null; + isIncomingCallConnected = true; + } + else + { + // this is just for safety. This scenario should never come. + // Otherwise Correct the code in some other function, if it comes here. + AppLogDebug("Error - Connected call was neither one of active calls nor it was dialed or incoming call"); + //Construct a new CallInfo object for call + pConnectedCall = new (std::nothrow) AppCallInfo(); + pConnectedCall->SetCallHandle(connectedCallHandle); + + TelCallStatus_t callStatus; + int res = tel_get_call_status(__pTapiHandle, connectedCallHandle, &callStatus); + if (res == TAPI_CAUSE_SUCCESS) + { + String contactNumber(callStatus.pNumber); + pConnectedCall->SetContactNumber(contactNumber); + //set emergency state + if(callStatus.CallType == TAPI_CALL_TYPE_E911) + { + pConnectedCall->SetEmergency(true); + } + else + { + pConnectedCall->SetEmergency(false); + } + //set call notification time + long long startTime = 0; + SystemTime::GetTicks(startTime); + pConnectedCall->SetCallNotificationTime(startTime); + if (callStatus.bMoCall == true) + { + pConnectedCall->SetCalllogType(CALL_LOG_TYPE_VOICE_OUTGOING); + } + else + { + pConnectedCall->SetCalllogType(CALL_LOG_TYPE_VOICE_INCOMING); + isIncomingCallConnected = true; + } + } + //delete any dialed or incoming call objects + delete __pDialedCall; + __pDialedCall = null; + delete __pIncomingCall; + __pIncomingCall = null; + } + + //fetch contact info for connected call & it is not a hidden call + if (pConnectedCall->GetContactInfo() == null && pConnectedCall->GetContactNumber().IsEmpty() == false) + { + FetchContactInfoForNumber(pConnectedCall->GetContactNumber()); + if (__pCachedContact != null) + { + pConnectedCall->SetContactInfo(*(__pCachedContact)); + } + } + //set Call connect time for newly connected call + long long startTime = 0; + SystemTime::GetTicks(startTime); + pConnectedCall->SetCallConnectTime(startTime); + CallApp* pPhoneApp = static_cast(CallApp::GetInstance()); + pConnectedCall->SetDurationTime(pPhoneApp->GetCallAppTicks()); + if(GetCurrentCallCount() == 0) + { + __pSoundManager->SetMinuteReminderTone(); + } + + + //transfer ownership to Active calls list + __pActiveCallList->Add(connectedCallHandle, *(pConnectedCall)); +/* if (pConnectedCall->GetCalllogType() == CALL_LOG_TYPE_VOICE_INCOMING) + { + SaveCallInfoToLogsDb(*pConnectedCall); + }*/ + pConnectedCall = null; + + //notify listener that call is connected. + IListT* pCallList = __pActiveCallList->GetValuesN(); + __pSoundManager->SetSoundMode(SOUND_MODE_VOICE); + __pEventListener->HandleCallConnected(*pCallList); + if (isIncomingCallConnected == true) + { + __pSoundManager->StopAlert(); + } + delete pCallList; + pCallList = null; +} + +bool +TelephonyManager::CheckIncomingCallToBeRejected(AppCallInfo* pIncomingCallInfo) +{ + AppLogDebug("Enter"); + int callHandle = pIncomingCallInfo->GetCallHandle()->ToLong(); + String contactNumber(L""); + contactNumber.Append(pIncomingCallInfo->GetContactNumber()); + //Check if "reject unknown calls" is set and contact number is not present in AddressBook + //or if contact number is blacklisted + if(__pSettingsManager != null) + { + if (((__pSettingsManager->GetUnknownRejectStatus() == true) && (pIncomingCallInfo->GetContactInfo() == null)) + || (__pSettingsManager->IsCallToBeRejected(contactNumber) == true)) + { + AnswerAutoRejectCall(callHandle); + return true; + } + } + return false; +} + +void +TelephonyManager::HandleCallback(TapiHandle* pHandle, const char* pNotiId, void* pData, void* pUserData) +{ + AppLogDebug("Enter %s",pNotiId); + unsigned int tempHandle = 0; + TelephonyManager* pTelManager = (TelephonyManager*) pUserData; + if (pTelManager->__pSoundManager == null) + { + AppLog("Creating Sound Manager"); + pTelManager->__pSoundManager = new (std::nothrow) SoundManager(); + } + //Handle telephony events + if (strcmp(pNotiId, TAPI_NOTI_VOICE_CALL_STATUS_IDLE) == 0) + { + pTelManager->HandleIdleCallBack(pData); + } + else if (strcmp(pNotiId, TAPI_NOTI_VOICE_CALL_STATUS_ACTIVE) == 0) + { + pTelManager->__pSoundManager->StartSession(); + pTelManager->HandleActiveCallBack(pData); + } + else if (strcmp(pNotiId, TAPI_NOTI_VOICE_CALL_STATUS_DIALING) == 0) + { + pTelManager->HandleDialingCallBack(pData); + } + else + { + memcpy(&tempHandle, pData, sizeof(TS_UINT)); + } +} + +AppCallInfo* +TelephonyManager::GetConferenceCallInfoN(void) +{ + AppCallInfo* pConfCallInfo = null; + + IListT* pCallList = __pActiveCallList->GetValuesN(); + int callCount = pCallList->GetCount(); + for (int index = 0; index < callCount; index++) + { + AppCallInfo callInfo; + pCallList->GetAt(index, callInfo); + if (callInfo.IsConferenceCall() == true) + { + pConfCallInfo = new (std::nothrow) AppCallInfo(); + *pConfCallInfo = callInfo; + //Found the Conference call + break; + } + } + delete pCallList; + pCallList = null; + + return pConfCallInfo; +} + +IListT* +TelephonyManager::GetCallListN(void) +{ + ArrayListT* pCallList = null; + if (__pActiveCallList != null) + { + pCallList = static_cast*>(__pActiveCallList->GetValuesN()); + } + return pCallList; +} + +int +TelephonyManager::GetCurrentCallCount(void) +{ + if (__pActiveCallList != null) + { + return __pActiveCallList->GetCount(); + } + return 0; +} + +AppCallInfo* +TelephonyManager::GetIncomingCallHandle() +{ + if(__pIncomingCall != null) + { + return __pIncomingCall; + } + else + { + return null; + } +} + +void +TelephonyManager::ResumeAlert(AppCallInfo& incomingCallInfo) +{ + String contactRingTone(L""); + String contactNumber = incomingCallInfo.GetContactNumber(); + //check if not hidden call + if(contactNumber.IsEmpty() == false) + { + //fetch contact info from Db + Contact* foundContact = GetContactN(contactNumber); + if(foundContact != null) + { + //fetch custom ringtone for contact + result r = foundContact->GetValue(CONTACT_PROPERTY_ID_RINGTONE, contactRingTone); + //Now check if there is a group ring tone + if(contactRingTone.IsEmpty() == true) + { + IList* pCategoryList = __pAddressBook->GetCategoriesByContactN(foundContact->GetRecordId()); + if(pCategoryList != null && pCategoryList->GetCount() > 0) + { + Category* pCategory = static_cast(pCategoryList->GetAt(0)); + contactRingTone = pCategory->GetRingtonePath(); + } + } + AppLog("ringtone fetched - r = %d", r); + delete foundContact; + foundContact = null; + } + } + __pSoundManager->ResumeAlert(contactRingTone); +} + +void +TelephonyManager::StartAlert(AppCallInfo& incomingCallInfo) +{ + String contactRingTone(L""); + String contactNumber = incomingCallInfo.GetContactNumber(); + //check if not hidden call + if(contactNumber.IsEmpty() == false) + { + //fetch contact info from Db + Contact* foundContact = GetContactN(contactNumber); + if(foundContact != null) + { + //fetch custom ringtone for contact + result r = foundContact->GetValue(CONTACT_PROPERTY_ID_RINGTONE, contactRingTone); + //Now check if there is a group ring tone + if(contactRingTone.IsEmpty() == true) + { + IList* pCategoryList = __pAddressBook->GetCategoriesByContactN(foundContact->GetRecordId()); + if(pCategoryList != null && pCategoryList->GetCount() > 0) + { + Category* pCategory = static_cast(pCategoryList->GetAt(0)); + contactRingTone = pCategory->GetRingtonePath(); + } + } + AppLog("ringtone fetched - r = %d", r); + delete foundContact; + foundContact = null; + } + } + __pSoundManager->StartAlert(contactRingTone); +} + +void +TelephonyManager::StopAlert(void) +{ + __pSoundManager->StopAlert(); +} + +result +TelephonyManager::CheckValidTelePhoneNumber(const String& contactNumber) +{ + result r = E_SUCCESS; + if (contactNumber.GetLength() > TAPI_CALL_DIALDIGIT_LEN_MAX) + { + r = E_FAILURE; + } + + //Pattern to compare all characters except 0-9 * # P ; , + + String phoneNumberPattern(L"[^0-9*#P,p+;]"); + RegularExpression checkPhoneNumber; + checkPhoneNumber.Construct(phoneNumberPattern); + //If there is any character other than these listed above then display invalid number + bool resultMatch = checkPhoneNumber.Match(contactNumber,false); + //return false for patterns other than 0-9 * # P ; , + + if(resultMatch == true) + { + //return phone number is invalid + r = E_FAILURE; + } + //TODO: check if valid phone number else return error message + return r; +} + +result +TelephonyManager::CheckIfMOCallIsPossible() +{ + result r = E_SUCCESS; + + //Check modem power status + int modemStatus = 0; + int errorCode = tel_check_modem_power_status(__pTapiHandle, &modemStatus); + if (errorCode != TAPI_API_SUCCESS || modemStatus == TAPI_PHONE_POWER_STATUS_OFF + || modemStatus == TAPI_PHONE_POWER_STATUS_ERROR) + { + r = E_FAILURE; + } + else + { + TelSimCardStatus_t simStatus; + int simChangedStatus; + //fetch sim initialization status + int errorCode = tel_get_sim_init_info(__pTapiHandle, &simStatus, &simChangedStatus); + if (errorCode != TAPI_API_SUCCESS) + { + r = E_FAILURE; + } + else + { + switch (simStatus) + { + case TAPI_SIM_STATUS_SIM_INIT_COMPLETED: // Sim Initialization ok + r = E_SUCCESS; + break; + + case TAPI_SIM_STATUS_UNKNOWN: //initial state + case TAPI_SIM_STATUS_CARD_NOT_PRESENT: //Card not present + case TAPI_SIM_STATUS_CARD_REMOVED: //Card removed + case TAPI_SIM_STATUS_CARD_ERROR: // Bad card / On the fly, SIM gone bad + //TODO: might want to set different error code, to give proper message to user + r = E_FAILURE; + break; + default: + r = E_FAILURE; + break; + } + } + } + return r; +} + +bool +TelephonyManager::CheckIfMOCallIsEmergency(const String& contactNumber, bool isSimInitialized) +{ + //TODO: extract actual telephone number from contactNumber + //by deleting prefix,'P','W', etx. + + bool isEmergency = false; + //conversion "contactNumber" to char* + const wchar_t* pContact = contactNumber.GetPointer(); + int len = contactNumber.GetLength() + 1; + char* pNumber = new (std::nothrow) char[len]; + wcstombs(pNumber, pContact, len); + + if(isSimInitialized) + { + //used to get Ecc information for 2G and 3G. + TelSimEccList_t simEccList; + memset(&simEccList, 0x00, sizeof(TelSimEccList_t)); + //Check if given number matches the sim card's emergency numbers + int errorCode = tel_get_sim_ecc(__pTapiHandle, &simEccList); + if (errorCode == TAPI_API_SUCCESS && simEccList.ecc_count > 0) + { + for (int index = 0; index < simEccList.ecc_count; index++) + { + if ((strcmp(pNumber, simEccList.list[index].number) == 0)) + { + isEmergency = true; + } + } + } + } + else + { + //TODO: check if we need to also check SOS call numbers, if sim not present. + } + + delete[] pNumber; + pNumber = null; + return isEmergency; +} + +result +TelephonyManager::FetchContactInfoForNumber(const String& phoneNumberStr) +{ + result r = E_FAILURE; + + //delete previously cached data + if (__pCachedContact != null) + { + delete __pCachedContact; + __pCachedContact = null; + } + + //Searches contacts by phone number. + IList* pContactList = __pAddressBook->SearchContactsByPhoneNumberN(phoneNumberStr); + if (pContactList == null || IsFailed(GetLastResult())) + { + return r; + } + + //Fetch the contact's info to be displayed + IEnumerator* pContactEnum = pContactList->GetEnumeratorN(); + while ((E_SUCCESS == pContactEnum->MoveNext()) && (__pCachedContact == null)) + { + Contact* pContact = static_cast(pContactEnum->GetCurrent()); + + IList* pPhoneNumberList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS); + if (pPhoneNumberList != null) + { + IEnumerator* pPhoneEnum = pPhoneNumberList->GetEnumeratorN(); + while (E_SUCCESS == pPhoneEnum->MoveNext()) + { + PhoneNumber* pPhoneNumber = (PhoneNumber*) pPhoneEnum->GetCurrent(); + //Check if this is the correct contact + if (pPhoneNumber->GetPhoneNumber().Equals(phoneNumberStr)) + { + //save newly fetched contact info. + __pCachedContact = new (std::nothrow) Contact(*pContact); + r = E_SUCCESS; + break; + } + } + delete pPhoneEnum; + pPhoneNumberList->RemoveAll(true); + delete pPhoneNumberList; + } + } + delete pContactEnum; + pContactList->RemoveAll(true); + delete pContactList; + + return r; +} + +Contact* +TelephonyManager::GetContactN(const String& phoneNumber) +{ + result r = FetchContactInfoForNumber(phoneNumber); + if (!IsFailed(r)) + { + return new (std::nothrow) Contact(*__pCachedContact); + } + return null; +} + +AppCallInfo* +TelephonyManager::FetchIncomingCallHandleN(const String& callHandle, const String& contactNumber) +{ + if(__pIncomingCall != null) + { + delete __pIncomingCall; + __pIncomingCall = null; + } + + if(callHandle.IsEmpty() == false) + { + int incomingHandle; + Integer::Parse(callHandle,incomingHandle); + //This API call is synchronous + TelCallStatus_t callStatus; + int errCode = tel_get_call_status(__pTapiHandle, incomingHandle, &callStatus); + if (errCode != TAPI_API_SUCCESS) + { + AppLogDebug("tel_get_call_status failed"); + return null; + } + //construct incoming call info object + __pIncomingCall = new (std::nothrow) AppCallInfo(); + __pIncomingCall->SetCallHandle(incomingHandle); + + //contact number + String phoneNumber(contactNumber); + if(phoneNumber.IsEmpty() == true) + { + phoneNumber.Append(callStatus.pNumber); + } + __pIncomingCall->SetContactNumber(phoneNumber); + //set emergency state + if(callStatus.CallType == TAPI_CALL_TYPE_E911) + { + __pIncomingCall->SetEmergency(true); + } + else + { + __pIncomingCall->SetEmergency(false); + } + //set start time, when call is connected + long long startTime = 0; + SystemTime::GetTicks(startTime); + __pIncomingCall->SetCallNotificationTime(startTime); + __pIncomingCall->SetCalllogType(CALL_LOG_TYPE_VOICE_INCOMING); + } + else + { + //TODO: This 'else' block can be removed once AppControl request API is stabilized. + //This API call is synchronous and 'HandleIncomingCallStatusCallBack' is called for each active call. + int errCode = tel_get_call_status_all(__pTapiHandle, &HandleIncomingCallStatusCallBack, this); + if (errCode != TAPI_API_SUCCESS) + { + return null; + } + } + + if(__pIncomingCall != null) + { + //set call notification time + long long startTime = 0; + SystemTime::GetTicks(startTime); + __pIncomingCall->SetCallNotificationTime(startTime); + + if(__pIncomingCall->GetContactNumber().IsEmpty() == false) + { + //fetch contact info + FetchContactInfoForNumber(__pIncomingCall->GetContactNumber()); + if (__pCachedContact != null) + { + __pIncomingCall->SetContactInfo(*__pCachedContact); + } + } + + //construct a new callinfo object to pass its ownership to caller. + AppCallInfo* pNewIncomingCall = new (std::nothrow) AppCallInfo(); + *pNewIncomingCall = *__pIncomingCall; + return pNewIncomingCall; + } + //return null, if no incoming call found + return null; +} + +void +TelephonyManager::HandleIncomingCallStatusCallBack(TelCallStatus_t* pCallStatus, void* pUserData) +{ + TelephonyManager* pTelManager = (TelephonyManager*) pUserData; + if (pCallStatus != null && pCallStatus->bMoCall == false + && ((pCallStatus->CallState == TAPI_CALL_STATE_INCOMING) + || (pCallStatus->CallState == TAPI_CALL_STATE_WAITING))) + { + //construct incoming call details + pTelManager->__pIncomingCall = new (std::nothrow) AppCallInfo(); + pTelManager->__pIncomingCall->SetCallHandle(pCallStatus->CallHandle); + //contact number + String contactNumber(pCallStatus->pNumber); + pTelManager->__pIncomingCall->SetContactNumber(contactNumber); + //set emergency state + if(pCallStatus->CallType == TAPI_CALL_TYPE_E911) + { + pTelManager->__pIncomingCall->SetEmergency(true); + } + else + { + pTelManager->__pIncomingCall->SetEmergency(false); + } + + pTelManager->__pIncomingCall->SetCalllogType(CALL_LOG_TYPE_VOICE_INCOMING); + } +} + +void +TelephonyManager::SaveCallInfoToLogsDb(AppCallInfo& endCallInfo) +{ + if (endCallInfo.IsConferenceCall() == false) + { + //single active call - Add call ended to call log database + __pCalllogMgr->AddCallogInfoToDatabase(&endCallInfo); + } + else + { + //Conference call + int confCallCount = endCallInfo.GetCallerListCount(); + IListT* pParticipantList = endCallInfo.GetCallerList(); + for (int index = 0; index < confCallCount; index++) + { + AppCallInfo participantInfo; + if (pParticipantList->GetAt(index, participantInfo) == E_SUCCESS) + { + //Add call ended to call log database + __pCalllogMgr->AddCallogInfoToDatabase(&participantInfo); + } + } + } +} + +void +TelephonyManager::OnTelephonyNetworkStatusChanged(const NetworkStatus& networkStatus) +{ + if(networkStatus.IsCallServiceAvailable() == false) + { + EndAllCalls(); + } +} + +bool +TelephonyManager::IsIncomingCallPresent(void) +{ + return (__pIncomingCall != null); +} + + +bool +TelephonyManager::IsIncomingorDialingCallPresent(void) +{ + //returns false, if incoming call or dialed call is present. + return ((__pIncomingCall != null) || (__pDialedCall != null)); +} + +void +TelephonyManager::CheckPendingDialCalls(int callBackResult) +{ + if(callBackResult == TAPI_CAUSE_SUCCESS) + { + if(__isDialCallPresentAfterHold == true) + { + __isDialCallPresentAfterHold = false; + DialOutgoingCall(*__pDialNumberAfterHold,__isDialNumberAfterHoldEmergency); + delete __pDialNumberAfterHold; + __pDialNumberAfterHold = null; + } + } + else + { + __isDialCallPresentAfterHold = false; + if(__pDialNumberAfterHold != null) + { + delete __pDialNumberAfterHold; + __pDialNumberAfterHold = null; + } + + } + +} + +TapiHandle* +TelephonyManager::GetTapiHandle(void) +{ + return __pTapiHandle; +} + +void +TelephonyManager::SetSoundPath(void) +{ + if(GetCurrentCallCount() > 0 && IsIncomingorDialingCallPresent() == true) + { + __pSoundManager->SetSoundPath(); + } + +} + +void +TelephonyManager::OnBluetoothStateChange(keynode_t *node, void *user_data) +{ + AppLogDebug("Enter"); + TelephonyManager* pTelMgr = (TelephonyManager*)user_data; + pTelMgr->SetSoundPath(); +} diff --git a/src/CallTypes.cpp b/src/CallTypes.cpp new file mode 100644 index 0000000..5251d44 --- /dev/null +++ b/src/CallTypes.cpp @@ -0,0 +1,361 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CallTypes.cpp + * @brief Common constants used in Phone application + */ +#include "CallTypes.h" + +//bitmap +const wchar_t* IDB_BTN_OPTION_BG_ICON = L"C01-3_dialer_btn_option_bg.9.png"; +const wchar_t* IDB_BTN_OPTION_PRESS_BG_ICON = L"C01-3_dialer_btn_option_press.9.png"; +const wchar_t* IDB_BTN_MORE_ICON = L"more.png"; +const wchar_t* IDB_BTN_MORE_PRESS_ICON = L"more_press.png"; +const wchar_t* IDB_POPUP_BUBBLE_ICON = L"00_popup_bubble_tail_bottom.png"; +const wchar_t* IDB_DIALER_BTN_LINE_ICON = L"C01-3_dialer_btn_1line_bg.9.png"; +const wchar_t* IDB_DIALER_BTN_PRESS_ICON = L"C01-3_dialer_btn_press.9.png"; +const wchar_t* IDB_VOICEMAIL_BTN_ICON = L"C01-3_dialer_icon_01.png"; +const wchar_t* IDB_VOICEMAIL_BTN_PRESS_ICON = L"C01-3_dialer_icon_01_press.png"; +const wchar_t* IDB_DIALER_BTN_LINE2_ICON = L"C01-3_dialer_btn_2line_bg.9.png"; +const wchar_t* IDB_DIALER_BTN_LINE3_ICON = L"C01-3_dialer_btn_3line_bg.9.png"; +const wchar_t* IDB_DIALER_BTN_LINE4_ICON = L"C01-3_dialer_btn_4line_bg.9.png"; +const wchar_t* IDB_DIALER_BTN_LINE5_ICON = L"C01-3_dialer_btn_5line_bg.9.png"; +const wchar_t* IDB_DIALER_STAR_ICON = L"C01-3_dialer_icon_star.png"; +const wchar_t* IDB_DIALER_MUTE_ICON = L"00_volume_icon_Mute.png"; +const wchar_t* IDB_DIALER_VIDEOCALL_ICON = L"C01-3_icon_voicecall.png"; +const wchar_t* IDB_DIALER_CALL_ICON = L"C01-3_icon_call.png"; +const wchar_t* IDB_DIALER_CLEAR_ICON = L"C01-3_icon_clear.png"; +const wchar_t* IDB_DIALER_CALL_BG_ICON = L"C01-3_dialer_btn_call_bg.9.png"; +const wchar_t* IDB_HIDE_KEYPAD_ICON = L"C01-1_icon_Hide.png"; +const wchar_t* IDB_HIDE_KEYPAD_PRESS_ICON = L"C01-1_icon_Hide_press_wh.png"; +const wchar_t* IDB_HIDE_KEYPAD_DIM_ICON = L"C01-1_icon_Hide_dim.png"; +const wchar_t* IDB_CLOSE_KEYPAD_ICON = L"C01-1_icon_keypad.png"; +const wchar_t* IDB_CLOSE_KEYPAD_PRESS_ICON = L"C01-1_icon_keypad_press_wh.png"; +const wchar_t* IDB_CLOSE_KEYPAD_DIM_ICON = L"C01-1_icon_keypad_dim.png"; +const wchar_t* IDB_SPEAKER_ON_ICON = L"C01-1_icon_speaker_on.png"; +const wchar_t* IDB_SPEAKER_ON_PRESS_ICON = L"C01-1_icon_speaker_on_press.png"; +const wchar_t* IDB_SPEAKER_ON_DIM_ICON = L"C01-1_icon_speaker_on_dim.png"; +const wchar_t* IDB_SPEAKER_OFF_ICON = L"C01-1_icon_speaker.png"; +const wchar_t* IDB_SPEAKER_OFF_PRESS_ICON = L"C01-1_icon_speaker_press_wh.png"; +const wchar_t* IDB_SPEAKER_OFF_DIM_ICON = L"C01-1_icon_speaker_dim.png"; +const wchar_t* IDB_MUTE_ON_ICON = L"C01-1_icon_mute_on.png"; +const wchar_t* IDB_MUTE_ON_PRESS_ICON = L"C01-1_icon_mute_on_press.png"; +const wchar_t* IDB_MUTE_ON_DIM_ICON = L"C01-1_icon_mute_on_dim.png"; +const wchar_t* IDB_MUTE_OFF_ICON = L"C01-1_icon_mute.png"; +const wchar_t* IDB_MUTE_OFF_PRESS_ICON = L"C01-1_icon_mute_press_wh.png"; +const wchar_t* IDB_MUTE_OFF_DIM_ICON = L"C01-1_icon_mute_dim.png"; +const wchar_t* IDB_BACKGROUND_BITMAP = L"C01-1_call_bg.png"; +const wchar_t* IDB_VOICE_CALL_ICON = L"C01-1_icon_voice call.png"; +const wchar_t* IDB_VOICE_CALL_PRESS_ICON = L"C01-1_icon_voice call_press.png"; +const wchar_t* IDB_VOICE_CALL_DIM_ICON = L"C01-1_icon_voice call_dim.png"; +const wchar_t* IDB_VIDEO_CALL_ICON = L"C01-1_icon_video call.png"; +const wchar_t* IDB_VIDEO_CALL_PRESS_ICON = L"C01-1_icon_video call_press.png"; +const wchar_t* IDB_VIDEO_CALL_DIM_ICON = L"C01-1_icon_video call_dim.png"; +const wchar_t* IDB_MESSAGE_ICON = L"C01-1_icon_message.png"; +const wchar_t* IDB_MESSAGE_PRESS_ICON = L"C01-1_icon_message_press.png"; +const wchar_t* IDB_MESSAGE_DIM_ICON = L"C01-1_icon_message_dim.png"; +const wchar_t* IDB_END_CALL_ICON = L"C01-1_icon_end_call.png"; +const wchar_t* IDB_END_CALL_PRESS_ICON = L"C01-1_icon_end_call_press_wh.png"; +const wchar_t* IDB_END_CALL_DIM_ICON = L"C01-1_icon_end_call_dim.png"; +const wchar_t* IDB_ADD_CALL_ICON = L"C01-1_icon_add.png"; +const wchar_t* IDB_ADD_CALL_PRESS_ICON = L"C01-1_icon_add_press_wh.png"; +const wchar_t* IDB_ADD_CALL_DIM_ICON = L"C01-1_icon_add_dim.png"; +const wchar_t* IDB_JOIN_CALL_ICON = L"C01-1_icon_join.png"; +const wchar_t* IDB_JOIN_CALL_PRESS_ICON = L"C01-1_icon_join_press_wh.png"; +const wchar_t* IDB_JOIN_CALL_DIM_ICON = L"C01-1_icon_join_dim.png"; +const wchar_t* IDB_CONTACT_ICON = L"C01-1_icon_contacts.png"; +const wchar_t* IDB_CONTACT_PRESS_ICON = L"C01-1_icon_contacts_press_wh.png"; +const wchar_t* IDB_CONTACT_DIM_ICON = L"C01-1_icon_contacts_dim.png"; +const wchar_t* IDB_SWAP_ICON_NORMAL = L"C01-1_icon_swap.png"; +const wchar_t* IDB_SWAP_ICON_PRESS = L"C01-1_icon_swap_press.png"; +const wchar_t* IDB_UNHOLD_NORMAL_BUTTON_ICON = L"C01-1_icon_unhold_74x74.png"; +const wchar_t* IDB_UNHOLD_PRESS_BUTTON_ICON = L"C01-1_icon_unhold_74x74_press.png"; +const wchar_t* IDB_HOLD_NORMAL_BUTTON_ICON = L"C01-1_icon_hold_74x74.png"; +const wchar_t* IDB_HOLD_PRESS_BUTTON_ICON = L"C01-1_icon_hold_74x74_press.png"; +const wchar_t* IDB_POPUP_ARROW_ICON = L"C01-1_popup_arrow.png"; +const wchar_t* IDB_POPUP_BG_ICON = L"C01-1_popup_bg.png"; +const wchar_t* IDB_MORE_MANAGE_CONFERENCE_ICON = L"C01-1_icon_more_Manage conference call.png"; +const wchar_t* IDB_CONFERENCE_BG_ICON = L"C01-1_call_group_caller ID_720x720.png"; +const wchar_t* IDB_CONFERENCE_BIG_BG_ICON = L"C01-1_call_group_caller ID_720x720.png"; +const wchar_t* IDB_ACTIVE_CALL_DEFAULT_ICON = L"C01-1_call_default_caller ID_720x720.png"; +const wchar_t* IDB_MULTIPLE_CALL_DEFAULT_ICON = L"C01-1_call_default_caller ID_720x720.png"; +const wchar_t* IDB_CALL_THUMBNAIL_BACKGROUND = L"C01-1_call_thumbnail_bg.png"; +const wchar_t* IDB_CALL_THUMBNAIL_SHADOW = L"C01-1_call_ID_thumbnail_shadow_388x388.png"; +//Bitmaps for DTMF Keypad +const wchar_t* IDB_KEYPAD_BG = L"C01-1_keypad_btn_normal.png"; +const wchar_t* IDB_KEYPAD_BUTTON_PRESS = L"C01-1_keypad_btn_press.png"; +const wchar_t* IDB_KEYPAD_NUM1_ICON = L"C01-1_keypad_btn_icon.png"; +const wchar_t* IDB_CALLOG_LIST_BG = L"00_index list_bg.png"; +const wchar_t* IDB_LOG_RECEIVEDCALL_ICON = L"C01-4_icon_dialed.png"; +const wchar_t* IDB_LOG_DIALEDCALL_ICON = L"C01-4_icon_received.png"; +const wchar_t* IDB_LOG_MISSEDCALL_ICON = L"C01-4_icon_missed-call.png"; +const wchar_t* IDB_LOG_BLOCKEDCALL_ICON = L"C01-4_icon_Blocked(Auto-rejected).png"; +const wchar_t* IDB_LOG_DETAIL_CALL_ICON = L"C01-4_btn_icon_call.png"; +const wchar_t* IDB_LOG_DETAIL_MSG_ICON = L"C01-1_icon_Reject_with_Message.png"; +const wchar_t* IDB_LOG_NO_CONTENT = L"00_Nocontents_text.png"; +const wchar_t* IDB_VIEW_CONTACT_ICON = L"C01-1_contact_btn_icon.png"; +const wchar_t* IDB_VIEW_CONTACT_PRESS_ICON = L"C01-1_contact_btn_icon_press.png"; +//const wchar_t* IDB_VIEW_CONTACT_BG_ICON = L"C01-1_contact_btn.png"; +//const wchar_t* IDB_VIEW_CONTACT_BG_PRESS_ICON = L"C01-1_contact_btn_press.png"; +const wchar_t* IDB_VIEW_CONTACT_BG_ICON = L"C01-1_keypad_btn_normal.png"; +const wchar_t* IDB_VIEW_CONTACT_BG_PRESS_ICON = L"C01-1_keypad_btn_normal.png"; + +//String messages +const wchar_t* IDS_DIALER_MOBILE_STR = L"IDS_DIALER_MOBILE_STR"; +const wchar_t* IDS_DIALER_SPEEDDIAL_POPUP_MSG = L"IDS_DIALER_SPEEDDIAL_POPUP_MSG"; +const wchar_t* IDS_SPEEDDIAL_POP_YES_BTN_STRING = L"IDS_SPEEDDIAL_POP_YES_BTN_STRING"; +const wchar_t* IDS_SPEEDDIAL_POP_NO_BTN_STRING = L"IDS_SPEEDDIAL_POP_NO_BTN_STRING"; +const wchar_t* IDS_DIALER_MENU_ITEM_SEND_MSG = L"IDS_DIALER_MENU_ITEM_SEND_MSG"; +const wchar_t* IDS_DIALER_MENU_ITEM_ADD_CONTACT = L"IDS_DIALER_MENU_ITEM_ADD_CONTACT"; +const wchar_t* IDS_DIALER_MENU_ITEM_SPEED_DIAL = L"IDS_DIALER_MENU_ITEM_SPEED_DIAL"; +const wchar_t* IDS_DIALER_MENU_ITEM_ADD_PAUSE = L"IDS_DIALER_MENU_ITEM_ADD_PAUSE"; +const wchar_t* IDS_DIALER_MENU_ITEM_ADD_WAIT = L"IDS_DIALER_MENU_ITEM_ADD_WAIT"; +const wchar_t* IDS_DIALER_MENU_ITEM_EXIT = L"IDS_DIALER_MENU_ITEM_EXIT"; +const wchar_t* IDS_SPEED_DIAL_SEARCH_KEY = L"SPEED_DIAL"; +const wchar_t* IDS_KEYPAD_BTN_NAME = L"IDS_KEYPAD_BTN_NAME"; +const wchar_t* IDS_SPEAKER_BTN_NAME = L"IDS_SPEAKER_BTN_NAME"; +const wchar_t* IDS_MUTE_BTN_NAME = L"IDS_MUTE_BTN_NAME"; +const wchar_t* IDS_VOICE_CALL_BTN_NAME = L"IDS_VOICE_CALL_BTN_NAME"; +const wchar_t* IDS_VIDEO_CALL_BTN_NAME = L"IDS_VIDEO_CALL_BTN_NAME"; +const wchar_t* IDS_MSG_BTN_NAME = L"IDS_MSG_BTN_NAME"; +const wchar_t* IDS_ENDCALL_BTN_NAME = L"IDS_ENDCALL_BTN_NAME"; +const wchar_t* IDS_ADDCALL_BTN_NAME = L"IDS_ADDCALL_BTN_NAME"; +const wchar_t* IDS_JOINCALL_BTN_NAME = L"IDS_JOINCALL_BTN_NAME"; +const wchar_t* IDS_CONTACT_BTN_NAME = L"IDS_CONTACT_BTN_NAME"; +const wchar_t* IDS_HOLD_BTN_NAME = L"IDS_HOLD_BTN_NAME"; +const wchar_t* IDS_UNHOLD_BTN_NAME = L"IDS_UNHOLD_BTN_NAME"; +const wchar_t* IDS_PEOPLE_STR = L"IDS_PEOPLE_STR"; +const wchar_t* IDS_MGR_CONF_CALL_LIST_STR = L"IDS_MGR_CONF_CALL_LIST_STR"; +const wchar_t* IDS_LOG_CONTEXT_CALL = L"IDS_LOG_CONTEXT_CALL"; +const wchar_t* IDS_LOG_CONTEXT_MESSAGE = L"IDS_LOG_CONTEXT_MESSAGE"; +const wchar_t* IDS_LOG_CONTEXT_VIDEOCALL = L"IDS_LOG_CONTEXT_VIDEOCALL"; +const wchar_t* IDS_LOG_CONTEXT_DELETE = L"IDS_LOG_CONTEXT_DELETE"; +const wchar_t* IDS_AM_TIME = L"IDS_AM_TIME" ; +const wchar_t* IDS_PM_TIME = L"IDS_PM_TIME"; +const wchar_t* IDS_CALLLOG_NO_NUMBER = L"IDS_CALLLOG_NO_NUMBER"; +const wchar_t* IDS_CALLLOG_NO_NAME = L"IDS_CALLLOG_NO_NAME"; +const wchar_t* IDS_CALLLOG_RECEIVED = L"IDS_CALLLOG_RECEIVED"; +const wchar_t* IDS_CALLLOG_MISSED = L"IDS_CALLLOG_MISSED"; +const wchar_t* IDS_CALLLOG_OUTGOING = L"IDS_CALLLOG_OUTGOING"; +const wchar_t* IDS_CALLLOG_RECEIVED_MSG = L"IDS_CALLLOG_RECEIVED_MSG"; +const wchar_t* IDS_CALLLOG_SENT_MSG = L"IDS_CALLLOG_SENT_MSG"; +const wchar_t* IDS_CALLLOG_REJECTED = L"IDS_CALLLOG_REJECTED"; +const wchar_t* IDS_CALLLOG_DELETE_FOOTER = L"IDS_CALLLOG_DELETE_FOOTER"; +const wchar_t* IDS_CALLLOG_CANCEL_FOOTER = L"IDS_CALLLOG_CANCEL_FOOTER"; +const wchar_t* IDS_EMERGENCY_CALL = L"IDS_EMERGENCY_CALL"; +const wchar_t* IDS_SELECT_CALL_LOG = L"IDS_SELECT_CALL_LOG"; +const wchar_t* IDS_SELECTED_ITEMS_STRING = L"IDS_SELECTED_ITEMS_STRING"; +const wchar_t* IDS_SELECTED_ITEM_STRING = L"IDS_SELECTED_ITEM_STRING"; +const wchar_t* IDS_SELECT_NUMBER = L"IDS_SELECT_NUMBER"; +const wchar_t* IDS_NUMBER_SELECTED = L"IDS_NUMBER_SELECTED"; +const wchar_t* IDS_NUMBERS_SELECTED = L"IDS_NUMBERS_SELECTED"; +const wchar_t* IDS_SELECT_MESSAGE = L"IDS_SELECT_MESSAGE"; +const wchar_t* IDS_MESSAGE_SELECTED = L"IDS_MESSAGE_SELECTED"; +const wchar_t* IDS_MESSAGES_SELECTED = L"IDS_MESSAGES_SELECTED"; +const wchar_t* IDS_NO_LOGS = L"IDS_NO_LOGS"; +const wchar_t* IDS_FLIGHT_MODE_ON = L"IDS_FLIGHT_MODE_ON"; +const wchar_t* IDS_ADD_TO_CONTACTS = L"IDS_ADD_TO_CONTACTS"; +const wchar_t* IDS_TIMER_ON_HOLD = L"IDS_TIMER_ON_HOLD"; +const wchar_t* IDS_CANCEL = L"IDS_CANCEL"; +const wchar_t* IDS_LOGS_TODAY = L"IDS_LOGS_TODAY"; +const wchar_t* IDS_LOGS_YESTERDAY = L"IDS_LOGS_YESTERDAY"; +const wchar_t* IDS_REJECT_MESSAGE_CREATE = L"IDS_REJECT_MESSAGE_CREATE"; +const wchar_t* IDS_VIEW_CONTACT = L"IDS_VIEW_CONTACT"; +const wchar_t* IDS_INVALID_NUMBER = L"IDS_INVALID_NUMBER"; +const wchar_t* IDS_NUMBER_UNKNOWN = L"IDS_NUMBER_UNKNOWN"; +const wchar_t* IDS_USSD_NUMBER = L"IDS_USSD_NUMBER"; +const wchar_t* IDS_CONFERENCE_CALL_STRING = L"IDS_CONFERENCE_CALL_STRING"; +const wchar_t* IDS_CALL_REJECT_FROM_STRING = L"IDS_CALL_REJECT_FROM_STRING"; +const wchar_t* IDS_CALL_REJECTED_TITLE_STRING = L"IDS_CALL_REJECTED_TITLE_STRING"; +const wchar_t* IDS_MESSAGE_SENDING_FAILED = L"IDS_MESSAGE_SENDING_FAILED"; +const wchar_t* IDS_LOW_MEMORY_MSG = L"IDS_LOW_MEMORY_MSG"; +const wchar_t* IDS_LOW_MEMORY_MSG_TITLE = L"IDS_LOW_MEMORY_MSG_TITLE"; +const wchar_t* IDS_SERVICE_UNAVAILABLE = L"IDS_SERVICE_UNAVAILABLE"; +const wchar_t* IDS_CALL_BARRED = L"IDS_CALL_BARRED"; +//Panel +const wchar_t* PANEL_DIALER = L"PanelDialer"; +const wchar_t* PANEL_LOGS = L"PanelLogs"; + +//Corresponding Call form name +const wchar_t* IDL_FORM_OUTCALL = L"OutgoingCallForm"; +const wchar_t* IDL_FORM_OUT_EMERGENCYCALL = L"OutgoingEmergencyCallForm"; +const wchar_t* IDL_FORM_INCOMINGCALL = L"IncomingCallForm"; +const wchar_t* IDL_FORM_ACTIVECALL = L"ActiveCallForm"; +const wchar_t* IDL_FORM_ACTIVE_EMERGENCYCALL = L"ActiveEmergencyCallForm"; +const wchar_t* IDL_FORM_CONFCALL = L"ActiveConfCallForm"; +const wchar_t* IDL_FORM_CONFCALLLIST = L"ConfCallListForm "; +const wchar_t* IDL_FORM_ENDCALL = L"EndCallForm"; +const wchar_t* IDL_FORM_MULTIPLEACTIVECALL = L"MultipleActiveCallForm"; +//Corresponding Settings form name +const wchar_t* IDL_FORM_SETTINGS_PREFIX = L"SettingsForm"; +const wchar_t* IDL_FORM_MAIN_SETTING_MENU = L"SettingsFormMainMenu"; +const wchar_t* IDL_FORM_CALL_REJECTLIST_MENU = L"SettingsFormCallRejectList"; +const wchar_t* IDL_FORM_CALL_REJECTMSGS_MENU = L"SettingsFormCallRejectMsgs"; +const wchar_t* IDL_FORM_SPEED_DIAL = L"SettingsFormSpeedDial"; +const wchar_t* IDL_FORM_MORE_OPTIONS = L"SettingsFormMoreOptions"; +const wchar_t* IDL_FORM_CALL_STATUSTONES = L"SettingsFormCallStatusTones"; +const wchar_t* IDL_FORM_CALLTYPE_FORWARD = L"SettingsFormCallTypeForward"; +const wchar_t* IDL_FORM_CALL_FORWARD_OPTIONS = L"SettingsFormCallForwardMenu"; +const wchar_t* IDL_FORM_CALLTYPE_BARRING = L"SettingsFormCallTypeBarring"; +const wchar_t* IDL_FORM_CALL_BARRING_OPTIONS = L"SettingsFormCallBarringMenu"; +const wchar_t* IDL_FORM_CALL_WAITING_OPTIONS = L"SettingsFormCallWaitingMenu"; +const wchar_t* IDL_FORM_ADD_REJECT_NUMBER = L"SettingsFormAddRejectNumber"; +const wchar_t* IDL_FORM_AUTO_AREA_CODE = L"SettingsFormAutoAreaCode"; +const wchar_t* IDL_FORM_ADD_REJECT_MSG = L"SettingsFormAddRejectMsg"; +const wchar_t* IDL_FORM_EDIT_REJECT_MSG = L"SettingsFormEditRejectMsg"; +const wchar_t* IDL_FORM_FORWARD_TO_NUMBER = L"SettingsFormForwardToNumber"; +const wchar_t* IDL_FORM_NOREPLY_FORWARD_TO_NUMBER = L"SettingsFormNoReplyForwardToNumber"; +const wchar_t* IDL_FORM_SCENE_SET_BARRING_PWD = L"SettingsFormSetBarringPwd"; +const wchar_t* IDL_FORM_DEL_NUMBER = L"SettingsFormDeleteNumbers"; +const wchar_t* IDL_FORM_DEL_MESSAGE = L"SettingsFormDeleteMessages"; +//Dialer & Call Log Form names +const wchar_t* IDL_FORM_DIAL_APP = L"DialAppForm"; +const wchar_t* IDL_FORM_CALL_LOG_DETAIL = L"CallLogDetailForm"; +const wchar_t* IDL_CALL_PANEL = L"IDL_KEYS_PANEL"; +const wchar_t* IDL_END_CALL_PANEL = L"IDL_ENDCALLKEYS_PANEL"; +const wchar_t* IDL_OUTCALL_FORM = L"IDL_OUTCALL_FORM"; +const wchar_t* IDL_OUT_EMERGENCYCALL_FORM = L"IDL_OUT_EMERGENCYCALL_FORM"; +const wchar_t* IDL_CALL_FORM = L"IDL_CALL_FORM"; +const wchar_t* IDL_EMERGENCY_CALL_FORM = L"IDL_EMERGENCY_CALL_FORM"; +const wchar_t* IDL_MULTIPLE_CALL_FORM = L"IDL_MULTIPLE_CALL_FORM"; +const wchar_t* IDL_CONFCALL_FORM = L"IDL_CONFCALL_FORM"; +const wchar_t* IDL_DTMF_PANEL = L"IDL_DTMF_KEYPAD_PANEL"; +const wchar_t* IDL_DTMF_KEYS_PANEL = L"IDL_DTMF_KEYS_PANEL"; +const wchar_t* IDL_DIALER_KEYPAD_PANEL = L"IDL_DIALER_KEYPAD_PANEL"; +const wchar_t* IDL_FORM_EMERGENCY_DIAL = L"IDL_FORM_EMERGENCY_DIAL"; + +//Constants - Call Scene name +const wchar_t* IDSCN_SCENE_OUTCALL = L"OutgoingCallScene"; +const wchar_t* IDSCN_SCENE_OUT_EMERGENCYCALL = L"OutgoingEmergencyCallScene"; +const wchar_t* IDSCN_SCENE_INCOMINGCALL = L"IncomingCallScene"; +const wchar_t* IDSCN_SCENE_ACTIVECALL = L"ActiveCallScene"; +const wchar_t* IDSCN_SCENE_ACTIVE_EMERGENCYCALL = L"ActiveEmergencyCallScene"; +const wchar_t* IDSCN_SCENE_CONFCALL = L"ActiveConfCallScene"; +const wchar_t* IDSCN_SCENE_CONFCALLLIST = L"ConfCallListScene"; +const wchar_t* IDSCN_SCENE_ENDCALL = L"EndCallScene"; +const wchar_t* IDSCN_SCENE_MULTIPLEACTIVECALL = L"MultipleActiveCallScene"; +//Constants - Settings Scene name +const wchar_t* IDSCN_SCENE_MAIN_SETTING_MENU = L"CallMainSettingScene"; +const wchar_t* IDSCN_SCENE_CALL_REJECTLIST_MENU = L"CallRejectListScene"; +const wchar_t* IDSCN_SCENE_CALL_REJECTMSGS_MENU = L"CallRejectMsgsScene"; +const wchar_t* IDSCN_SCENE_SPEED_DIAL = L"SpeedDialScene"; +const wchar_t* IDSCN_SCENE_MORE_OPTIONS = L"MoreOptionsScene"; +const wchar_t* IDSCN_SCENE_CALL_STATUSTONES = L"CallStatusTonesScene"; +const wchar_t* IDSCN_SCENE_CALLTYPE_FORWARD = L"CallTypeForwardScene"; +const wchar_t* IDSCN_SCENE_CALL_FORWARD_OPTIONS = L"CallForwardMenuScene"; +const wchar_t* IDSCN_SCENE_CALLTYPE_BARRING = L"CallTypeBarringScene"; +const wchar_t* IDSCN_SCENE_CALL_BARRING_OPTIONS = L"CallBarringMenuScene"; +const wchar_t* IDSCN_SCENE_CALL_WAITING_OPTIONS = L"CallWaitingMenuScene"; +const wchar_t* IDSCN_SCENE_ADD_REJECT_NUMBER = L"AddRejectNumberScene"; +const wchar_t* IDSCN_SCENE_AUTO_AREA_CODE = L"AutoAreaCodeScene"; +const wchar_t* IDSCN_SCENE_ADD_REJECT_MSG = L"AddRejectMsgScene"; +const wchar_t* IDSCN_SCENE_EDIT_REJECT_MSG = L"EditRejectMsgScene"; +const wchar_t* IDSCN_SCENE_FORWARD_TO_NUMBER = L"ForwardToNumberScene"; +const wchar_t* IDSCN_SCENE_NOREPLY_FORWARD_TO_NUMBER = L"NoReplyForwardToNumberScene"; +const wchar_t* IDSCN_SCENE_SET_BARRING_PWD = L"SetBarringPwdScene"; +const wchar_t* IDSCN_SCENE_DEL_NUMBER = L"DeleteNumbersScene"; +const wchar_t* IDSCN_SCENE_DEL_MESSAGE = L"DeleteMessagesScene"; +//Dialer & Call Log Scene names +const wchar_t* IDSCN_DIALER = L"SceneDialer"; +const wchar_t* IDSCN_CALL_LOG = L"SceneCallLog"; +const wchar_t* IDSCN_CALL_LOG_DETAILS = L"SceneCallLogDetails"; +const wchar_t* IDSCN_EMERGENCY_DIAL = L"SceneEmergencyDial"; + +const wchar_t* TYPE_VIDEO = L"type:video"; +const wchar_t* TYPE_VOICE = L"type:voice"; +const wchar_t* TYPE_SMS = L"type:SMS"; +const wchar_t* TEL = L"tel:"; +const wchar_t* TO = L"to:"; + +const wchar_t* OPERATION_ID_PICK = L"http://tizen.org/appcontrol/operation/social/pick"; +const wchar_t* OPERATION_ID_VIEW = L"http://tizen.org/appcontrol/operation/social/view"; +const wchar_t* OPERATION_ID_ADD = L"http://tizen.org/appcontrol/operation/social/add"; +const wchar_t* OPERATION_ID_EDIT = L"http://tizen.org/appcontrol/operation/social/edit"; +const wchar_t* OPERATION_ID_CONFIGURE = L"http://tizen.org/appcontrol/operation/configure"; +const wchar_t* OPERATION_ID_CAPTURE = L"http://tizen.org/appcontrol/operation/capture"; +const wchar_t* OPERATION_ID_CALL = L"http://tizen.org/appcontrol/operation/call"; +const wchar_t* OPERATION_ID_COMPOSE = L"http://tizen.org/appcontrol/operation/compose"; +const wchar_t* OPERATION_ID_DIAL = L"http://tizen.org/appcontrol/operation/dial"; + +const wchar_t* PROVIDER_ID_CAMERA = L"http://tizen.org/appcontrol/provider/camera"; +const wchar_t* PROVIDER_ID_GALLERY = L"http://tizen.org/appcontrol/provider/gallery"; +//const wchar_t* PROVIDER_ID_CALL = L"http://tizen.org/appcontrol/provider/call"; +const wchar_t* PROVIDER_ID_MESSAGE = L"tizen.messages"; +const wchar_t* PROVIDER_ID_EMAIL = L"http://tizen.org/appcontrol/provider/email"; +const wchar_t* PROVIDER_ID_MEDIA = L"http://tizen.org/appcontrol/provider/media"; +const wchar_t* PROVIDER_ID_CONTACTS = L"f9uev8hsyo.Contacts"; +const wchar_t* PROVIDER_ID_CALL = L"nI2PLNdTwi.Call"; +const wchar_t* PROVIDER_ID_PHONE = L"tizen.phone"; + +const wchar_t* RETURN_TYPE_PHONE = L"phone"; +const wchar_t* RETURN_TYPE_EMAIL = L"Email"; +const wchar_t* RETURN_TYPE_CONTACT_ID = L"contactId"; + +//Constants used in AppControl requests +const wchar_t* DELIMITER = L":"; +const wchar_t* LAUNCHTYPE = L"launch-type"; +const wchar_t* PARAM_ORIGIN_MT = L"MT"; +const wchar_t* CALL_HANDLE = L"handle"; +const wchar_t* CONTACT_NUMBER = L"number"; +const wchar_t* PARAM_CALL_VALUE_VOICE = L"voice"; +const wchar_t* PARAM_CALL_TYPE = L"http://tizen.org/appcontrol/data/call/type"; +const wchar_t* PARAM_PHONE_NUMBER = L"tel"; +const wchar_t* INPUT_TYPE_PHONE = L"http://tizen.org/appcontrol/data/social/phone"; +const wchar_t* MESSAGE_TYPE = L"http://tizen.org/appcontrol/data/message/type"; +const wchar_t* MESSAGE_SMS_TYPE = L"SMS"; +const wchar_t* MESSAGE_TEXT = L"http://tizen.org/appcontrol/data/text"; +const wchar_t* MESSAGE_TO = L"http://tizen.org/appcontrol/data/to"; +//Contacts app control parameters +const wchar_t* CONTACTS_VIEW_TYPE = L"viewType"; +const wchar_t* CONTACTS_VIEW_TYPE_CONTACT = L"contact"; +const wchar_t* ITEM_TYPE_CONTACT = L"contact"; +const wchar_t* CONTACTS_ID_KEY = L"contactId"; +const wchar_t* ITEM_TYPE_PERSON = L"person"; +const wchar_t* CONTACT_KEY_ITEM_TYPE = L"http://tizen.org/appcontrol/data/social/item_type"; +const wchar_t* CONTACT_KEY_ITEM_ID = L"http://tizen.org/appcontrol/data/social/item_id"; + + +const wchar_t* SELECTION_MODE = L"selectionMode"; +const wchar_t* RETURN_TYPE = L"returnType"; +const wchar_t* SELECTION_MODE_SINGLE = L"single"; +const wchar_t* RETURN_KEY_VALUE = L"value"; + +//Settings Strings +const wchar_t* SETTINGS_FLIGHT_MODE_STR = L"http://tizen.org/setting/network.flight_mode"; +//Dimensions for Small photo of caller/callee. +const int W_SMALL_PHOTO = 366; +const int H_SMALL_PHOTO = 366; +const int W_CALL_THUMBNAIL = 720; +const int H_CALL_THUMBNAIL = 720; +const int W_CALL_THUMBNAIL_SHADOW = 388; +const int H_CALL_THUMBNAIL_SHADOW = 388; +const int W_CONFERENCE_PHOTO = 720; +const int H_CONFERENCE_PHOTO = 370; +//Maximum number of calls +const int IDI_MAX_ACTIVE_CALLS = 2; +const int IDI_MAX_CONF_CALL_PARTICIPANTS = 5; +//Constants used for custom list item in message panel in Incoming call screen +const int IDA_FORMAT_SENDTEXT = 500; +//Constants +const wchar_t* IDI_KEY2_TXT = L"ABC"; +const wchar_t* IDI_KEY3_TXT = L"DEF"; +const wchar_t* IDI_KEY4_TXT = L"GHI"; +const wchar_t* IDI_KEY5_TXT = L"JKL"; +const wchar_t* IDI_KEY6_TXT = L"MNO"; +const wchar_t* IDI_KEY7_TXT = L"PQRS"; +const wchar_t* IDI_KEY8_TXT = L"TUV"; +const wchar_t* IDI_KEY9_TXT = L"WXYZ"; diff --git a/src/CalllogManager.cpp b/src/CalllogManager.cpp new file mode 100644 index 0000000..2814c23 --- /dev/null +++ b/src/CalllogManager.cpp @@ -0,0 +1,270 @@ +// +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @file CalllogManager.cpp + * @brief This class provides call log APIs + */ +#include +#include "CallApp.h" +#include "CalllogManager.h" + +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; +using namespace Tizen::Base::Utility; +using namespace Tizen::System; +using namespace Tizen::Locales; + +CallLogManager* CallLogManager::__pCallogManager = null; + +CallLogManager::CallLogManager(void) +{ + + pAddressBook = AddressbookManager::GetInstance()->GetAddressbookN(); +} + +CallLogManager::~CallLogManager(void) +{ + __pCallogManager = null; +} + +CallLogManager* +CallLogManager::GetInstance(void) +{ + if(__pCallogManager == null) + { + CreateInstance(); + } + return __pCallogManager; +} + +void +CallLogManager::CreateInstance(void) +{ + __pCallogManager = new CallLogManager(); + result r = __pCallogManager->Construct(); + if(IsFailed(r)) + { + delete __pCallogManager; + __pCallogManager = null; + return; + } + std::atexit(DestroyInstance); +} + +result +CallLogManager::Construct(void) +{ + int ret = contacts_connect2(); + if(ret != 0) + { + return E_FAILURE; + } + return E_SUCCESS; + +} + +void +CallLogManager::DestroyInstance(void) +{ + contacts_disconnect2(); + delete __pCallogManager; +} + +result +CallLogManager::AddCallogInfoToDatabase(AppCallInfo* calllogInfo) +{ + AppLog(" AddVoiceCallInfo Entry"); + int duration = 0; + long long startTime; + + if(calllogInfo != null) + { + CallLogType callLogType = calllogInfo->GetCalllogType(); + contacts_phone_log_type_e logType = CONTACTS_PLOG_TYPE_NONE; + switch (callLogType) + { + case CALL_LOG_TYPE_VOICE_INCOMING: + logType = CONTACTS_PLOG_TYPE_VOICE_INCOMMING; + break; + case CALL_LOG_TYPE_VOICE_OUTGOING: + logType = CONTACTS_PLOG_TYPE_VOICE_OUTGOING; + break; + case CALL_LOG_TYPE_VOICE_MISSED_UNSEEN: + logType = CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN; + break; + case CALL_LOG_TYPE_VOICE_REJECTED: + logType = CONTACTS_PLOG_TYPE_VOICE_REJECT; + break; + case CALL_LOG_TYPE_VOICE_BLOCKED: + logType = CONTACTS_PLOG_TYPE_VOICE_BLOCKED; + break; + default: + break; + } + startTime = calllogInfo->GetCallNotificationTime(); + if ((logType == CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN) + || (logType == CONTACTS_PLOG_TYPE_VOICE_REJECT) + || (logType == CONTACTS_PLOG_TYPE_VOICE_BLOCKED)) + { + duration = 0; + } + else + { + //start time is in miliseconds . so convert to seconds and set it to time_t format. + long long connectTime = calllogInfo->GetDurationTime(); + if(connectTime == 0 || connectTime < 0) + { + //connectTime = time(null); + CallApp* pPhoneApp = static_cast(CallApp::GetInstance()); + connectTime = pPhoneApp->GetCallAppTicks(); + connectTime /=1000; + } + else + { + connectTime = calllogInfo->GetDurationTime()/ 1000; + } + duration = (int)GetDuration(connectTime); + } + + String PhNumber(L""); + ByteBuffer* pByteBuffer = null; + + if(calllogInfo->GetContactNumber().IsEmpty() == false) + { + PhNumber.Append(calllogInfo->GetContactNumber()); + pByteBuffer = StringUtil::StringToUtf8N(PhNumber); + } + + + contacts_record_h hContactLog=0; + int ret = contacts_record_create(_contacts_phone_log._uri,&hContactLog); + if (ret != 0) + { + return E_FAILURE; + } + int id; + + int personid = GetPersonId(PhNumber); + if (personid != -1) + { + if(contacts_record_set_int(hContactLog,_contacts_phone_log.person_id,personid) != CONTACTS_ERROR_NONE) + { + AppLog(" calllog_set_type personid failed"); + } + } + + if (contacts_record_set_int(hContactLog,_contacts_phone_log.log_type,logType) != CONTACTS_ERROR_NONE) + { + AppLog(" calllog_set_type is failed"); + } + else if (contacts_record_set_int(hContactLog,_contacts_phone_log.log_time,startTime/1000) != CONTACTS_ERROR_NONE) + { + AppLog(" calllog_set_time is failed"); + } + else if (contacts_record_set_int(hContactLog,_contacts_phone_log.extra_data1,duration) != CONTACTS_ERROR_NONE) + { + AppLog(" calllog_set_duration is failed"); + } + else if ((pByteBuffer != null) && (contacts_record_set_str(hContactLog,_contacts_phone_log.address,(const char*) pByteBuffer->GetPointer()) != CONTACTS_ERROR_NONE)) + { + AppLog(" calllog_set_number is failed"); + } + else if (contacts_db_insert_record(hContactLog,&id) != CONTACTS_ERROR_NONE) + { + AppLog(" calllog_insert_to_db is failed"); + } + else + { + AppLog(" Call log is added successfully"); + } + + } + AppLog(" AddVoiceCallInfo Exit"); + return E_SUCCESS; +} + +unsigned long +CallLogManager::GetDuration(long long start_time) +{ + long long curr_time; + unsigned long call_duration_in_sec = 50; +// curr_time = time(0); + CallApp* pPhoneApp = static_cast(CallApp::GetInstance()); + curr_time = pPhoneApp->GetCallAppTicks(); + curr_time /=1000; + /*if(start_time != 0) + { + start_time /= 1000; + }*/ + call_duration_in_sec = curr_time - start_time; + return call_duration_in_sec; +} +int +CallLogManager::GetPersonId(Tizen::Base::String& phoneNumber) +{ + AppLogDebug("Enter"); + int personId = -1; + bool bContactFound = false; + if (pAddressBook != null) + { + IList* pNumberContactsList = pAddressBook->SearchContactsByPhoneNumberN(phoneNumber); + if (pNumberContactsList == null || IsFailed(GetLastResult())) + { + return -1; + } + + //Fetch the contact's info to be displayed + IEnumerator* pContactEnum = pNumberContactsList->GetEnumeratorN(); + if(pNumberContactsList != null) + { + while (E_SUCCESS == pContactEnum->MoveNext()) + { + Contact* pContact = static_cast(pContactEnum->GetCurrent()); + + IList* pPhoneNumberList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS); + if (pPhoneNumberList != null) + { + IEnumerator* pPhoneEnum = pPhoneNumberList->GetEnumeratorN(); + while (E_SUCCESS == pPhoneEnum->MoveNext()) + { + PhoneNumber* pPhoneNumber = (PhoneNumber*) pPhoneEnum->GetCurrent(); + //Check if this is the correct contact + if (pPhoneNumber->GetPhoneNumber().Equals(phoneNumber)) + { + //save newly fetched contact info. + bContactFound = true; + personId = pContact->GetPersonId(); + break; + } + } + delete pPhoneEnum; + pPhoneNumberList->RemoveAll(true); + delete pPhoneNumberList; + } + if(bContactFound == true) + { + break; + } + } + } + delete pContactEnum; + pNumberContactsList->RemoveAll(true); + delete pNumberContactsList; + } + return personId; +} + -- 2.7.4