From: Igor Olshevskyi Date: Tue, 18 Jul 2017 12:41:52 +0000 (+0300) Subject: TizenRefApp-8903 [Call UI] Implement BT Headset / Gear device sound path change butto... X-Git-Tag: submit/tizen/20170811.141832^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a4e2a86056651a09e77be995a61eaf8fd96ba5e6;p=profile%2Fwearable%2Fapps%2Fnative%2Fcall-ui.git TizenRefApp-8903 [Call UI] Implement BT Headset / Gear device sound path change button according lates UI Change-Id: I6bafe30eb4bfb911047ab6eb528aacb02681aee8 --- diff --git a/edc/accessory.edc b/edc/accessory.edc index 712ff5c..9cd0ace 100644 --- a/edc/accessory.edc +++ b/edc/accessory.edc @@ -17,52 +17,57 @@ #define CU_ACCESSORY_SOUND_BTNS_PAD_LEFT_MIN 9 0 #define CU_ACCESSORY_SOUND_BTNS_PAD_MIDDLE_MIN 50 26 +#define CU_ACCESSORY_BTN_DIM 60 + +#define CU_ACCESSORY_BTN_SWL_1_X 50 +#define CU_ACCESSORY_BTN_SWL_2_X 150 +#define CU_ACCESSORY_BTN_SWL_3_X 250 + +#define CU_ACCESSORY_BTN_SWL_Y (((CU_WIN_H - CU_ACCESSORY_BTN_DIM) / 2)) + +#define CU_ACCESSORY_BTN_SWL_1_REL1 CU_REL_W(CU_ACCESSORY_BTN_SWL_1_X) CU_REL_H(CU_ACCESSORY_BTN_SWL_Y) +#define CU_ACCESSORY_BTN_SWL_1_REL2 CU_REL_W((CU_ACCESSORY_BTN_SWL_1_X + CU_ACCESSORY_BTN_DIM)) CU_REL_H((CU_ACCESSORY_BTN_SWL_Y + CU_ACCESSORY_BTN_DIM)) + +#define CU_ACCESSORY_BTN_SWL_2_REL1 CU_REL_W(CU_ACCESSORY_BTN_SWL_2_X) CU_REL_H(CU_ACCESSORY_BTN_SWL_Y) +#define CU_ACCESSORY_BTN_SWL_2_REL2 CU_REL_W((CU_ACCESSORY_BTN_SWL_2_X + CU_ACCESSORY_BTN_DIM)) CU_REL_H((CU_ACCESSORY_BTN_SWL_Y + CU_ACCESSORY_BTN_DIM)) + +#define CU_ACCESSORY_BTN_SWL_3_REL1 CU_REL_W(CU_ACCESSORY_BTN_SWL_3_X) CU_REL_H(CU_ACCESSORY_BTN_SWL_Y) +#define CU_ACCESSORY_BTN_SWL_3_REL2 CU_REL_W((CU_ACCESSORY_BTN_SWL_3_X + CU_ACCESSORY_BTN_DIM)) CU_REL_H((CU_ACCESSORY_BTN_SWL_Y + CU_ACCESSORY_BTN_DIM)) + group { "elm/layout/callui/accessory"; parts { - spacer { "sound.btns.pad.left"; + spacer { "bg"; scale; desc { "default"; - fixed: 1 0; - align: 0.0 0.0; - min: CU_ACCESSORY_SOUND_BTNS_PAD_LEFT_MIN; - rel2.relative: 0.0 1.0; } } - spacer { "sound.btns.pad.middle"; + swallow { "swl.volume_control" + scale; + desc { "default"; + } + } + swallow { "swl.slot.1"; scale; desc { "default"; fixed: 1 1; - align: 0.0 0.5; - min: CU_ACCESSORY_SOUND_BTNS_PAD_MIDDLE_MIN; - rel1 { relative: 1.0 0.5; to_x: "sound.btns.pad.left"; } - rel2 { relative: 1.0 0.5; to_x: "sound.btns.pad.left"; } + rel1 { relative: CU_ACCESSORY_BTN_SWL_1_REL1; to: "bg"; } + rel2 { relative: CU_ACCESSORY_BTN_SWL_1_REL2; to: "bg"; } } } - swallow { "swl.sound"; + swallow { "swl.slot.2"; scale; desc { "default"; fixed: 1 1; - align: 0.5 1.0; - min: CU_ACCESSORY_SOUND_BTN_SIZE; - max: CU_ACCESSORY_SOUND_BTN_SIZE; - rel1 { relative: 0.0 0.0; to: "sound.btns.pad.middle"; } - rel2 { relative: 1.0 0.0; to: "sound.btns.pad.middle"; } + rel1 { relative: CU_ACCESSORY_BTN_SWL_2_REL1; to: "bg"; } + rel2 { relative: CU_ACCESSORY_BTN_SWL_2_REL2; to: "bg"; } } } - swallow { "swl.mute"; + swallow { "swl.slot.3"; scale; desc { "default"; fixed: 1 1; - align: 0.5 0.0; - min: CU_ACCESSORY_SOUND_BTN_SIZE; - max: CU_ACCESSORY_SOUND_BTN_SIZE; - rel1 { relative: 0.0 1.0; to: "sound.btns.pad.middle"; } - rel2 { relative: 1.0 1.0; to: "sound.btns.pad.middle"; } - } - } - swallow { "swl.volume_control" - scale; - desc { "default"; + rel1 { relative: CU_ACCESSORY_BTN_SWL_3_REL1; to: "bg"; } + rel2 { relative: CU_ACCESSORY_BTN_SWL_3_REL2; to: "bg"; } } } } diff --git a/edc/buttons.edc b/edc/buttons.edc index b5af325..e5290ed 100644 --- a/edc/buttons.edc +++ b/edc/buttons.edc @@ -14,6 +14,8 @@ * limitations under the License. */ +#define CU_MORE_OPTS_ICONS_DIR "/More_options" + #define CU_BTN_INCOM_CALL_ANIM_TIME 0.15 #define CU_BTN_INCOM_CALL_UNPRESS_DELAY 0.6 #define CU_BTN_INCOM_CALL_ICON_SIZE 54 54 @@ -627,7 +629,7 @@ group { "elm/button/base/"_name; \ } -#define CU_BTN_ACCESSORY(_name, _icon, _icon_rel_y, _icon_align_y) \ +#define CU_BTN_ACCESSORY(_name, _icon) \ group { "elm/button/base/"_name; \ images { \ image: "w_call_button_press_circle.png" COMP; \ @@ -662,13 +664,19 @@ group { "elm/button/base/"_name; \ } \ image { "icon"; \ scale; \ + clip: "icon.clipper"; \ desc { "default"; \ - align: 0.5 _icon_align_y; \ - rel1 { relative: 0.0 _icon_rel_y; to: "sizer"; } \ - rel2 { relative: 1.0 _icon_rel_y; to: "sizer"; } \ + rel1 { relative: 0.0 0.0; to: "sizer"; } \ + rel2 { relative: 1.0 1.0; to: "sizer"; } \ min: CU_BTN_ACCESSORY_ICON_SIZE; \ max: CU_BTN_ACCESSORY_ICON_SIZE; \ image.normal: _icon; \ + } \ + } \ + rect { "icon.clipper"; \ + scale; \ + desc { "default"; \ + rel.to: "icon"; \ color_class: AO011; \ } \ desc { "on"; \ @@ -696,6 +704,135 @@ group { "elm/button/base/"_name; \ } \ } \ } \ + programs { \ + program { \ + signal: "mouse,clicked,*"; \ + source: "event"; \ + action: SIGNAL_EMIT "elm,action,click" ""; \ + } \ + program { \ + signal: "mouse,down,*"; \ + source: "event"; \ + sequence { \ + action: STATE_SET "pressed_effect"; \ + target: "image.bg"; \ + action: STATE_SET "pressed"; \ + target: "image.bg"; \ + transition: TRANSITION_GLIDE(0.3); \ + } \ + } \ + program { \ + signal: "mouse,up,*"; \ + source: "event"; \ + action: STATE_SET "default"; \ + target: "image.bg"; \ + transition: LINEAR 0.535; \ + } \ + program { \ + signal: "turn.on"; \ + source: ""; \ + action: STATE_SET "on"; \ + target: "icon.clipper"; \ + } \ + program { \ + signal: "turn.off"; \ + source: ""; \ + action: STATE_SET "off"; \ + target: "icon.clipper"; \ + } \ + program { \ + signal: "elm,state,enabled"; \ + source: "elm"; \ + action: STATE_SET "default"; \ + target: "event"; \ + target: "icon.clipper"; \ + } \ + program { \ + signal: "elm,state,disabled"; \ + source: "elm"; \ + action: STATE_SET "disabled"; \ + target: "event"; \ + target: "icon.clipper"; \ + } \ + } \ +} + +#define CU_BTN_ACCESSORY_TOGGLE_ICON(_name, _icon_on, _icon_off) \ +group { "elm/button/base/"_name; \ + images { \ + image: "w_call_button_press_circle.png" COMP; \ + image: _icon_on COMP; \ + image: _icon_off COMP; \ + } \ + parts { \ + spacer { "sizer"; \ + scale; \ + desc { "default"; \ + max: CU_ACCESSORY_SOUND_BTN_SIZE; \ + } \ + } \ + image { "image.bg"; \ + nomouse; \ + scale; \ + desc { "default"; \ + fixed: 1 1; \ + rel.to: "icon"; \ + min: CU_BTN_ACCESSORY_EFF_DEFAULT_SIZE; \ + image.normal: "w_call_button_press_circle.png"; \ + color: 255 255 255 0; \ + } \ + desc { "pressed_effect"; \ + inherit: "default"; \ + min: CU_BTN_ACCESSORY_EFF_PRESSED_SIZE; \ + color: 255 255 255 33; \ + } \ + desc { "pressed"; \ + inherit: "pressed_effect"; \ + min: CU_BTN_ACCESSORY_EFF_DEFAULT_SIZE; \ + } \ + } \ + image { "icon"; \ + scale; \ + clip: "icon.clipper"; \ + desc { "default"; \ + rel1 { relative: 0.0 0.0; to: "sizer"; } \ + rel2 { relative: 1.0 1.0; to: "sizer"; } \ + min: CU_BTN_ACCESSORY_ICON_SIZE; \ + max: CU_BTN_ACCESSORY_ICON_SIZE; \ + image.normal: _icon_off; \ + } \ + desc { "on"; \ + inherit: "default"; \ + image.normal: _icon_on; \ + } \ + desc { "off"; \ + inherit: "default"; \ + } \ + } \ + rect { "icon.clipper"; \ + scale; \ + desc { "default"; \ + rel.to: "icon"; \ + color_class: AO011; \ + } \ + desc { "disabled"; \ + inherit: "default"; \ + color_class: AO012D; \ + } \ + } \ + rect { "event"; \ + scale; \ + desc { "default"; \ + fixed: 1 1; \ + rel.to: "sizer"; \ + color: 0 0 0 0; \ + } \ + desc { "disabled"; \ + inherit: "default"; \ + hid; \ + } \ + } \ + } \ programs { \ program { \ signal: "mouse,clicked,*"; \ @@ -737,14 +874,14 @@ group { "elm/button/base/"_name; \ source: "elm"; \ action: STATE_SET "default"; \ target: "event"; \ - target: "icon"; \ + target: "icon.clipper"; \ } \ program { \ signal: "elm,state,disabled"; \ source: "elm"; \ action: STATE_SET "disabled"; \ target: "event"; \ - target: "icon"; \ + target: "icon.clipper"; \ } \ } \ } @@ -761,7 +898,7 @@ styles { #define CU_BTN_MORE_OPTION(_name, _icon) \ group { "elm/button/base/"_name; \ images { \ - image: "w_more_circle_bg.png" COMP; \ + image: CU_MORE_OPTS_ICONS_DIR/"w_more_circle_bg.png" COMP; \ image: _icon COMP; \ } \ parts { \ @@ -771,7 +908,7 @@ styles { aspect: 1 1; \ aspect_preference: BOTH; \ align: 0.5 0.0; \ - image.normal: "w_more_circle_bg.png"; \ + image.normal: CU_MORE_OPTS_ICONS_DIR/"w_more_circle_bg.png"; \ color_class: "AO0110"; \ } \ desc { "pressed"; \ @@ -969,12 +1106,12 @@ styles { #define CU_BTN_KEYPAD(_button_name, _size_x, _size_y, _image) \ group { "elm/button/base/"_button_name; \ images.image: _image COMP; \ - images.image: "numpad_btn_bg.png" COMP; \ + images.image: CU_KEYPAD_ICONS_DIR/"numpad_btn_bg.png" COMP; \ parts { \ image { "bg"; \ scale; \ desc { "default"; \ - image.normal: "numpad_btn_bg.png"; \ + image.normal: CU_KEYPAD_ICONS_DIR/"numpad_btn_bg.png"; \ color: 255 255 255 255; \ min: _size_x _size_y; \ max: _size_x _size_y; \ @@ -1048,14 +1185,14 @@ styles { } group { "elm/button/base/callui/keypad_speaker"; - images.image: "numpad_btn_bg.png" COMP; - images.image: "w_sip_3x4_btn_ic_on.png" COMP; + images.image: CU_KEYPAD_ICONS_DIR/"numpad_btn_bg.png" COMP; + images.image: CU_KEYPAD_ICONS_DIR/"w_sip_3x4_btn_ic_on.png" COMP; parts { image { "bg"; scale; desc { "default"; - image.normal: "numpad_btn_bg.png"; + image.normal: CU_KEYPAD_ICONS_DIR/"numpad_btn_bg.png"; color: 255 255 255 255; min: CU_BTN_KEYPAD_SPEAKER_H CU_BTN_KEYPAD_H; max: CU_BTN_KEYPAD_SPEAKER_H CU_BTN_KEYPAD_H; @@ -1068,7 +1205,7 @@ group { "elm/button/base/callui/keypad_speaker"; image { "pic"; scale; desc { "default"; - image.normal: "w_sip_3x4_btn_ic_on.png"; + image.normal: CU_KEYPAD_ICONS_DIR/"w_sip_3x4_btn_ic_on.png"; rel1 { relative: 24/CU_BTN_KEYPAD_SPEAKER_H 9/CU_BTN_KEYPAD_H; to: "bg"; } rel2 { relative: 48/CU_BTN_KEYPAD_SPEAKER_H 41/CU_BTN_KEYPAD_H; to: "bg"; } min: 32 32; @@ -1134,57 +1271,61 @@ group { "elm/button/base/callui/keypad_speaker"; } } -CU_BTN_INCOM_CALL("callui/accept", "w_call_incoming_icon_accept.png", "AO01131", "AO01132", "AO0113", "AO0113P") -CU_BTN_INCOM_CALL("callui/reject", "w_call_incoming_icon_reject.png", "AO01151", "AO01152", "AO0115", "AO0115P") +CU_BTN_INCOM_CALL("callui/accept", "w_call_incoming_icon_accept.png", + "AO01131", "AO01132", "AO0113", "AO0113P") +CU_BTN_INCOM_CALL("callui/reject", "w_call_incoming_icon_reject.png", + "AO01151", "AO01152", "AO0115", "AO0115P") -CU_BTN_BOTTOM("callui/end_call", "w_incoming_icon_end_phone.png", "AO0121", "AO0121P", "B013A", "B013") -CU_BTN_BOTTOM("callui/call_back", "w_incoming_icon_call.png", "AO0171", "AO0171P", "B013A", "B013") +CU_BTN_BOTTOM("callui/end_call", "w_incoming_icon_end_phone.png", + "AO0121", "AO0121P", "B013A", "B013") +CU_BTN_BOTTOM("callui/call_back", "w_incoming_icon_call.png", + "AO0171", "AO0171P", "B013A", "B013") CU_BTN_VOLUME_CONTROL("callui/minus", "b_slider_icon_minus.png") CU_BTN_VOLUME_CONTROL("callui/plus", "b_slider_icon_plus.png") -CU_BTN_ACCESSORY("callui/volume", "w_outgoing_icon_volume.png", 1.0, 1.0) -CU_BTN_ACCESSORY("callui/mute", "w_outgoing_icon_mute.png", 0.0, 0.0) +CU_BTN_ACCESSORY("callui/volume", "w_outgoing_icon_volume_02.png") +CU_BTN_ACCESSORY("callui/mute", "w_outgoing_icon_mute_02.png") +CU_BTN_ACCESSORY_TOGGLE_ICON("callui/bluetooth", "w_outgoing_icon_towatch_02.png", + "w_outgoing_icon_headset_02.png") +CU_BTN_ACCESSORY("callui/add_contact", "w_outgoing_icon_contact_add_02.png") -CU_BTN_MORE_OPTION("callui/swap", "w_call_option_icon_volume_swap.png") -CU_BTN_MORE_OPTION("callui/unhold", "w_call_option_icon_volume_unhold.png") -CU_BTN_MORE_OPTION("callui/headset", "w_call_option_icon_headset.png") -CU_BTN_MORE_OPTION("callui/phone", "w_call_option_icon_device.png") -CU_BTN_MORE_OPTION("callui/keypad", "w_call_option_icon_keypad.png") -CU_BTN_MORE_OPTION("callui/gear", "w_call_option_icon_volume_towatch.png") +CU_BTN_MORE_OPTION("callui/swap", CU_MORE_OPTS_ICONS_DIR/"w_call_option_icon_volume_swap.png") +CU_BTN_MORE_OPTION("callui/unhold", CU_MORE_OPTS_ICONS_DIR/"w_call_option_icon_volume_unhold.png") +CU_BTN_MORE_OPTION("callui/keypad", CU_MORE_OPTS_ICONS_DIR/"w_call_option_icon_keypad.png") CU_BTN_KEYPAD("callui/keypad_one", CU_BTN_KEYPAD_LEFT_H, CU_BTN_KEYPAD_H, - "privacy_lock_dial_extension_01.png") + CU_KEYPAD_ICONS_DIR/"privacy_lock_dial_extension_01.png") CU_BTN_KEYPAD("callui/keypad_two", CU_BTN_KEYPAD_CENTER_H, CU_BTN_KEYPAD_H, - "privacy_lock_dial_extension_02.png") + CU_KEYPAD_ICONS_DIR/"privacy_lock_dial_extension_02.png") CU_BTN_KEYPAD("callui/keypad_three", CU_BTN_KEYPAD_CENTER_H, CU_BTN_KEYPAD_H, - "privacy_lock_dial_extension_03.png") + CU_KEYPAD_ICONS_DIR/"privacy_lock_dial_extension_03.png") CU_BTN_KEYPAD("callui/keypad_four", CU_BTN_KEYPAD_LEFT_H, CU_BTN_KEYPAD_H, - "privacy_lock_dial_extension_04.png") + CU_KEYPAD_ICONS_DIR/"privacy_lock_dial_extension_04.png") CU_BTN_KEYPAD("callui/keypad_five", CU_BTN_KEYPAD_CENTER_H, CU_BTN_KEYPAD_H, - "privacy_lock_dial_extension_05.png") + CU_KEYPAD_ICONS_DIR/"privacy_lock_dial_extension_05.png") CU_BTN_KEYPAD("callui/keypad_six", CU_BTN_KEYPAD_CENTER_H, CU_BTN_KEYPAD_H, - "privacy_lock_dial_extension_06.png") + CU_KEYPAD_ICONS_DIR/"privacy_lock_dial_extension_06.png") CU_BTN_KEYPAD("callui/keypad_asterix", CU_BTN_KEYPAD_RIGHT_H, CU_BTN_KEYPAD_H, - "privacy_lock_dial_extension_asterisk.png") + CU_KEYPAD_ICONS_DIR/"privacy_lock_dial_extension_asterisk.png") CU_BTN_KEYPAD("callui/keypad_seven", CU_BTN_KEYPAD_LEFT_H, CU_BTN_KEYPAD_H, - "privacy_lock_dial_extension_07.png") + CU_KEYPAD_ICONS_DIR/"privacy_lock_dial_extension_07.png") CU_BTN_KEYPAD("callui/keypad_eight", CU_BTN_KEYPAD_CENTER_H, CU_BTN_KEYPAD_H, - "privacy_lock_dial_extension_08.png") + CU_KEYPAD_ICONS_DIR/"privacy_lock_dial_extension_08.png") CU_BTN_KEYPAD("callui/keypad_nine", CU_BTN_KEYPAD_CENTER_H, CU_BTN_KEYPAD_H, - "privacy_lock_dial_extension_09.png") + CU_KEYPAD_ICONS_DIR/"privacy_lock_dial_extension_09.png") CU_BTN_KEYPAD("callui/keypad_sharp", CU_BTN_KEYPAD_RIGHT_H, CU_BTN_KEYPAD_H, - "privacy_lock_dial_extension_sharp.png") + CU_KEYPAD_ICONS_DIR/"privacy_lock_dial_extension_sharp.png") CU_BTN_KEYPAD("callui/keypad_zero", CU_BTN_KEYPAD_ZERO_H, CU_BTN_KEYPAD_H, - "privacy_lock_dial_extension_00.png") + CU_KEYPAD_ICONS_DIR/"privacy_lock_dial_extension_00.png") diff --git a/edc/call_info.edc b/edc/call_info.edc index f6d5862..ccd688e 100644 --- a/edc/call_info.edc +++ b/edc/call_info.edc @@ -20,98 +20,92 @@ styles { base: "font=Tizen font_weight=Regular font_width=Condensed font_size=24 align=center valign=center color=#FFFFFF ellipsis=1.0"; } style { - name: "call_status_with_photo"; + name: "call_status_photo"; base: "font=Tizen font_weight=Regular font_width=Condensed font_size=24 align=center valign=center color=#FFFFFF ellipsis=1.0"; } style { name: "main_text"; - base: "font=Tizen font_weight=Regular font_width=Condensed font_size=40 align=center valign=center color=#FFFFFF wrap=mixed ellipsis=1.0"; - tag: "br" "\n"; - tag: "ps" "ps"; - tag: "whitecolor" "+ color=#ffffff"; - tag: "tab" "\t"; + base: "font=Tizen font_weight=Regular font_width=Condensed font_size=24 align=center valign=center color=#FFFFFF ellipsis=1.0"; + } + style { + name: "main_text_emergency"; + base: "font=Tizen font_weight=Regular font_width=Condensed font_size=24 align=center valign=center color=#FF870F ellipsis=1.0"; } style { - name: "main_text_with_photo"; + name: "main_text_big"; base: "font=Tizen font_weight=Regular font_width=Condensed font_size=40 align=center valign=center color=#FFFFFF wrap=mixed ellipsis=1.0"; - tag: "br" "\n"; - tag: "ps" "ps"; - tag: "whitecolor" "+ color=#ffffff"; - tag: "tab" "\t"; } style { - name: "main_text_emergency"; - base: "font=Tizen font_weight=Regular font_width=Condensed font_size=38 align=center valign=center color=#FF870F wrap=mixed ellipsis=1.0"; - tag: "br" "\n"; - tag: "ps" "ps"; - tag: "whitecolor" "+ color=#ffffff"; - tag: "tab" "\t"; + name: "main_text_big_photo"; + base: "font=Tizen font_weight=Regular font_width=Condensed font_size=40 align=center valign=center color=#FFFFFF wrap=mixed ellipsis=1.0"; + } + style { + name: "main_text_big_emergency"; + base: "font=Tizen font_weight=Regular font_width=Condensed font_size=40 align=center valign=center color=#FF870F wrap=mixed ellipsis=1.0"; } } -#define CU_DOT(_name, _ltr_offset, _rtl_offset) \ - image { _name; \ - scale; \ - desc { "default"; \ - fixed: 1 1; \ - align: 0.0 0.5; \ - min: 4 4; \ - max: 4 4; \ - image.normal: "w_call_dot.png"; \ - rel1 { relative: 1.0 0.0; offset: _ltr_offset 0; to: "text_info"; } \ - rel2 { relative: 1.0 1.0; offset: _ltr_offset 0; to: "text_info"; } \ - visible: 0; \ - } \ - desc { "on"; \ - inherit: "default"; \ - color_class: AO031; \ - visible: 1; \ - } \ - desc { "off"; \ - inherit: "default"; \ - color_class: AO031D; \ - visible: 1; \ - } \ - desc { "on_photo"; \ - inherit: "default"; \ - color_class: AO0311; \ - visible: 1; \ - } \ - desc { "off_photo"; \ - inherit: "default"; \ - color_class: AO0311D; \ - visible: 1; \ - } \ - desc { "default_rtl"; \ - inherit: "default"; \ - align: 1.0 0.5; \ - rel1 { relative: 0.0 0.0; offset: _rtl_offset 0; to: "text_info"; } \ - rel2 { relative: 0.0 1.0; offset: _rtl_offset 0; to: "text_info"; } \ - } \ - desc { "rtl_on"; \ - inherit: "default_rtl"; \ - color_class: AO031; \ - visible: 1; \ - } \ - desc { "rtl_off"; \ - inherit: "default_rtl"; \ - color_class: AO031D; \ - visible: 1; \ - } \ - desc { "rtl_on_photo"; \ - inherit: "default_rtl"; \ - color_class: AO0311; \ - visible: 1; \ - } \ - desc { "rtl_off_photo"; \ - inherit: "default_rtl"; \ - color_class: AO0311D; \ - visible: 1; \ - } \ - } -#define CU_TOP_PADDING_1_LINE 0 95 -#define CU_TOP_PADDING_2_LINE 0 95 +#define CU_DOT(_name, _ltr_offset, _rtl_offset) \ + image { _name; \ + scale; \ + desc { "default"; \ + fixed: 1 1; \ + align: 0.0 0.5; \ + min: 4 4; \ + max: 4 4; \ + image.normal: "w_call_dot.png"; \ + rel1 { relative: 1.0 0.0; offset: _ltr_offset 0; to: "text_info"; } \ + rel2 { relative: 1.0 1.0; offset: _ltr_offset 0; to: "text_info"; } \ + visible: 0; \ + } \ + desc { "on"; \ + inherit: "default"; \ + color_class: AO031; \ + visible: 1; \ + } \ + desc { "off"; \ + inherit: "default"; \ + color_class: AO031D; \ + visible: 1; \ + } \ + desc { "on_photo"; \ + inherit: "default"; \ + color_class: AO0311; \ + visible: 1; \ + } \ + desc { "off_photo"; \ + inherit: "default"; \ + color_class: AO0311D; \ + visible: 1; \ + } \ + desc { "default_rtl"; \ + inherit: "default"; \ + align: 1.0 0.5; \ + rel1 { relative: 0.0 0.0; offset: _rtl_offset 0; to: "text_info"; } \ + rel2 { relative: 0.0 1.0; offset: _rtl_offset 0; to: "text_info"; } \ + } \ + desc { "rtl_on"; \ + inherit: "default_rtl"; \ + color_class: AO031; \ + visible: 1; \ + } \ + desc { "rtl_off"; \ + inherit: "default_rtl"; \ + color_class: AO031D; \ + visible: 1; \ + } \ + desc { "rtl_on_photo"; \ + inherit: "default_rtl"; \ + color_class: AO0311; \ + visible: 1; \ + } \ + desc { "rtl_off_photo"; \ + inherit: "default_rtl"; \ + color_class: AO0311D; \ + visible: 1; \ + } \ + } group { "elm/layout/callui/call_info"; images { @@ -135,7 +129,7 @@ group { "elm/layout/callui/call_info"; rel2 { relative: 1.0 1.0; to: "bg"; } color_class: TRANSPARENT; } - desc { "incoming"; + desc { "main_text_big"; inherit: "default"; color_class: AO0242; } @@ -143,32 +137,20 @@ group { "elm/layout/callui/call_info"; spacer { "top.pad"; scale; desc { "default"; - min: 0 95; + min: 0 70; fixed: 0 1; align: 0.5 0.0; rel1 { relative: 0.0 0.0; to: "bg"; } rel2 { relative: 1.0 0.0; to: "bg"; } } - desc { "1line"; - inherit: "default"; - min: 0 119; - } - desc { "incom_1line"; + desc { "centre_1line"; inherit: "default"; min: 0 119; } - desc { "incom_2line"; + desc { "centre_2line"; inherit: "default"; min: 0 95; } - desc { "1line_2text"; - inherit: "default"; - min: 0 99; - } - desc { "2line_2text"; - inherit: "default"; - min: 0 75; - } } spacer { "left.pad"; scale; @@ -228,7 +210,7 @@ group { "elm/layout/callui/call_info"; desc { "photo"; inherit: "default"; text { - style: "call_status_with_photo"; + style: "call_status_photo"; min: 1 0; } } @@ -259,26 +241,21 @@ group { "elm/layout/callui/call_info"; desc { "default"; fixed: 0 1; align: 0.5 0.0; - min: 208 107; - max: 208 107; + min: 208 32; + max: 208 32; rel1 { relative: 1.0 1.0; to_x: "left.pad"; to_y: "zone.text_info.bottom.pad"; } rel2 { relative: 0.0 1.0; to_x: "right.pad"; to_y: "zone.text_info.bottom.pad"; } } - desc { "1line"; + desc { "centre_1line"; inherit: "default"; - min: 208 53; - max: 208 53; + min: 190 52; + max: 190 52; } - desc { "incom_2line"; + desc { "centre_2line"; inherit: "default"; min: 190 107; max: 190 107; } - desc { "incom_1line"; - inherit: "default"; - min: 190 52; - max: 190 52; - } } textblock { "text_1line"; nomouse; @@ -289,14 +266,22 @@ group { "elm/layout/callui/call_info"; rel2.to: "zone.text_1line"; text.style: "main_text"; } - desc { "photo"; - inherit: "default"; - text.style: "main_text_with_photo"; - } desc { "emergency"; inherit: "default"; text.style: "main_text_emergency"; } + desc { "big"; + inherit: "default"; + text.style: "main_text_big"; + } + desc { "big_photo"; + inherit: "default"; + text.style: "main_text_big_photo"; + } + desc { "big_emergency"; + inherit: "default"; + text.style: "main_text_big_emergency"; + } } rect { "ao_text_1line"; mouse; @@ -307,14 +292,28 @@ group { "elm/layout/callui/call_info"; color: 0 0 0 0; } } - spacer { "zone.text_1line.bottom.pad"; - scale; + spacer { "text_2line.top.pad"; desc { "default"; - align: 0.5 1.0; + min: 0 224; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; to: "bg"; } + rel2 { relative: 1.0 0.0; to: "bg"; } + } + desc { "incom"; min: 0 6; + fixed: 0 1; + align: 0.5 1.0; rel1 { relative: 0.0 1.0; to: "zone.text_1line"; } rel2 { relative: 1.0 1.0; to: "zone.text_1line"; } } + desc { "emergency"; + min: 0 208; + fixed: 0 1; + align: 0.5 0.0; + rel1 { relative: 0.0 0.0; to: "bg"; } + rel2 { relative: 1.0 0.0; to: "bg"; } + } } spacer { "zone.text_2line"; scale; @@ -323,8 +322,11 @@ group { "elm/layout/callui/call_info"; align: 0.0 0.0; min: 208 32; max: 208 32; - rel1 { relative: 1.0 1.0; to_x: "left.pad"; to_y: "zone.text_1line.bottom.pad"; } - rel2 { relative: 0.0 1.0; to_x: "right.pad"; to_y: "zone.text_1line.bottom.pad"; } + rel1 { relative: 1.0 1.0; to_x: "left.pad"; to_y: "text_2line.top.pad"; } + rel2 { relative: 0.0 1.0; to_x: "right.pad"; to_y: "text_2line.top.pad"; } + } + desc { "incom"; + inherit: "default"; } } swallow { "text_2line"; @@ -345,7 +347,6 @@ group { "elm/layout/callui/call_info"; color: 0 0 0 0; } } - rect { "event"; mouse; scale; @@ -554,15 +555,7 @@ group { "elm/layout/callui/call_info"; } } program { - signal: "1line"; - source: "top_padding"; - script { - set_state(PART:"top.pad", "1line", 0.0); - set_state(PART:"zone.text_1line", "1line", 0.0); - } - } - program { - signal: "2line"; + signal: "default"; source: "top_padding"; script { set_state(PART:"top.pad", "default", 0.0); @@ -570,76 +563,91 @@ group { "elm/layout/callui/call_info"; } } program { - signal: "incom_1line"; + signal: "centre_1line"; source: "top_padding"; script { - set_state(PART:"top.pad", "incom_1line", 0.0); - set_state(PART:"zone.text_1line", "incom_1line", 0.0); + set_state(PART:"top.pad", "centre_1line", 0.0); + set_state(PART:"zone.text_1line", "centre_1line", 0.0); } } program { - signal: "incom_2line"; + signal: "centre_2line"; source: "top_padding"; script { - set_state(PART:"top.pad", "incom_2line", 0.0); - set_state(PART:"zone.text_1line", "incom_2line", 0.0); + set_state(PART:"top.pad", "centre_2line", 0.0); + set_state(PART:"zone.text_1line", "centre_2line", 0.0); } } program { - signal: "emergency"; - source: "top_padding"; + signal: "default"; + source: "text_1line"; script { - set_state(PART:"top.pad", "default", 0.0); - set_state(PART:"zone.text_1line", "default", 0.0); + set_state(PART:"text_1line", "default", 0.0); + set_state(PART:"text_info", "default", 0.0); } } program { - signal: "2line_2text"; - source: "top_padding"; + signal: "caller_id_enable"; + source: "text_1line"; script { - set_state(PART:"top.pad", "2line_2text", 0.0); - set_state(PART:"text_1line", "default", 0.0); + set_state(PART:"text_1line", "big_photo", 0.0); + set_state(PART:"text_info", "photo", 0.0); } } program { - signal: "1line_2text"; - source: "top_padding"; + signal: "caller_id_disable"; + source: "text_1line"; script { - set_state(PART:"top.pad", "1line_2text", 0.0); - set_state(PART:"zone.text_1line", "1line", 0.0); - set_state(PART:"text_1line", "default", 0.0); + set_state(PART:"text_1line", "big", 0.0); + set_state(PART:"text_info", "default", 0.0); } } program { - signal: "caller_id_enable"; + signal: "emergency"; source: "text_1line"; script { - set_state(PART:"text_1line", "photo", 0.0); - set_state(PART:"text_info", "photo", 0.0); + set_state(PART:"text_1line", "emergency", 0.0); + set_state(PART:"text_info", "default", 0.0); } } program { - signal: "caller_id_disable"; + signal: "big_txt"; source: "text_1line"; script { - set_state(PART:"text_1line", "default", 0.0); + set_state(PART:"text_1line", "big", 0.0); set_state(PART:"text_info", "default", 0.0); } } program { - signal: "emergency"; + signal: "big_txt_emergency"; source: "text_1line"; script { - set_state(PART:"text_1line", "emergency", 0.0); + set_state(PART:"text_1line", "big_emergency", 0.0); set_state(PART:"text_info", "default", 0.0); } } + program { + signal: "default"; + source: "text_2line"; + script { + set_state(PART:"text_2line.top.pad", "default", 0.0); + set_state(PART:"zone.text_2line", "default", 0.0); + } + } + program { + signal: "incom"; + source: "text_2line"; + script { + set_state(PART:"text_2line.top.pad", "main_text_big", 0.0); + set_state(PART:"zone.text_2line", "main_text_big", 0.0); + } + } program { signal: "caller_id_enable"; source: "caller_id"; script { set_int(b_set_photo, 1); - set_state(PART:"caller_id.mask", "incoming", 0.0); + set_state(PART:"caller_id.mask", "main_text_big", 0.0); } } program { diff --git a/edc/images.edc b/edc/images.edc index b68be9c..33a2485 100644 --- a/edc/images.edc +++ b/edc/images.edc @@ -14,6 +14,8 @@ * limitations under the License. */ +#define CU_BEZEL_CUE_ICONS_DIR "/Bezel_interaction_cue" + #define CU_RES_IMAGE(_style, _file_name) \ group { "elm/layout/callui_image/"_style; \ images.image: _file_name COMP; \ @@ -29,15 +31,15 @@ } \ } -CU_RES_IMAGE("bezel_cue_accept_1", "Incoming/w_alert_interaction_cue_l_01.png") -CU_RES_IMAGE("bezel_cue_accept_2", "Incoming/w_alert_interaction_cue_l_02.png") -CU_RES_IMAGE("bezel_cue_accept_3", "Incoming/w_alert_interaction_cue_l_03.png") -CU_RES_IMAGE("bezel_cue_accept_4", "Incoming/w_alert_interaction_cue_l_04.png") +CU_RES_IMAGE("bezel_cue_accept_1", CU_BEZEL_CUE_ICONS_DIR/"bezel_interaction_cue_l_01.png") +CU_RES_IMAGE("bezel_cue_accept_2", CU_BEZEL_CUE_ICONS_DIR/"bezel_interaction_cue_l_02.png") +CU_RES_IMAGE("bezel_cue_accept_3", CU_BEZEL_CUE_ICONS_DIR/"bezel_interaction_cue_l_03.png") +CU_RES_IMAGE("bezel_cue_accept_4", CU_BEZEL_CUE_ICONS_DIR/"bezel_interaction_cue_l_04.png") -CU_RES_IMAGE("bezel_cue_reject_1", "Incoming/w_alert_interaction_cue_r_01.png") -CU_RES_IMAGE("bezel_cue_reject_2", "Incoming/w_alert_interaction_cue_r_02.png") -CU_RES_IMAGE("bezel_cue_reject_3", "Incoming/w_alert_interaction_cue_r_03.png") -CU_RES_IMAGE("bezel_cue_reject_4", "Incoming/w_alert_interaction_cue_r_04.png") +CU_RES_IMAGE("bezel_cue_reject_1", CU_BEZEL_CUE_ICONS_DIR/"bezel_interaction_cue_r_01.png") +CU_RES_IMAGE("bezel_cue_reject_2", CU_BEZEL_CUE_ICONS_DIR/"bezel_interaction_cue_r_02.png") +CU_RES_IMAGE("bezel_cue_reject_3", CU_BEZEL_CUE_ICONS_DIR/"bezel_interaction_cue_r_03.png") +CU_RES_IMAGE("bezel_cue_reject_4", CU_BEZEL_CUE_ICONS_DIR/"bezel_interaction_cue_r_04.png") CU_RES_IMAGE("accept_reject_action_bg", "call_button_bg_accept_reject_press.png") CU_RES_IMAGE("accept", "w_call_incoming_icon_accept.png") diff --git a/edc/images/Bezel_interaction_cue/bezel_interaction_cue_l_01.png b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_l_01.png new file mode 100644 index 0000000..87cfaaa Binary files /dev/null and b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_l_01.png differ diff --git a/edc/images/Bezel_interaction_cue/bezel_interaction_cue_l_02.png b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_l_02.png new file mode 100644 index 0000000..6342aac Binary files /dev/null and b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_l_02.png differ diff --git a/edc/images/Bezel_interaction_cue/bezel_interaction_cue_l_03.png b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_l_03.png new file mode 100644 index 0000000..bd204e1 Binary files /dev/null and b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_l_03.png differ diff --git a/edc/images/Bezel_interaction_cue/bezel_interaction_cue_l_04.png b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_l_04.png new file mode 100644 index 0000000..6845552 Binary files /dev/null and b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_l_04.png differ diff --git a/edc/images/Bezel_interaction_cue/bezel_interaction_cue_r_01.png b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_r_01.png new file mode 100644 index 0000000..8d6ae40 Binary files /dev/null and b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_r_01.png differ diff --git a/edc/images/Bezel_interaction_cue/bezel_interaction_cue_r_02.png b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_r_02.png new file mode 100644 index 0000000..955eff8 Binary files /dev/null and b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_r_02.png differ diff --git a/edc/images/Bezel_interaction_cue/bezel_interaction_cue_r_03.png b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_r_03.png new file mode 100644 index 0000000..f19a064 Binary files /dev/null and b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_r_03.png differ diff --git a/edc/images/Bezel_interaction_cue/bezel_interaction_cue_r_04.png b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_r_04.png new file mode 100644 index 0000000..270f651 Binary files /dev/null and b/edc/images/Bezel_interaction_cue/bezel_interaction_cue_r_04.png differ diff --git a/edc/images/Incoming/w_alert_interaction_cue_l_01.png b/edc/images/Incoming/w_alert_interaction_cue_l_01.png deleted file mode 100644 index 87cfaaa..0000000 Binary files a/edc/images/Incoming/w_alert_interaction_cue_l_01.png and /dev/null differ diff --git a/edc/images/Incoming/w_alert_interaction_cue_l_02.png b/edc/images/Incoming/w_alert_interaction_cue_l_02.png deleted file mode 100644 index 6342aac..0000000 Binary files a/edc/images/Incoming/w_alert_interaction_cue_l_02.png and /dev/null differ diff --git a/edc/images/Incoming/w_alert_interaction_cue_l_03.png b/edc/images/Incoming/w_alert_interaction_cue_l_03.png deleted file mode 100644 index bd204e1..0000000 Binary files a/edc/images/Incoming/w_alert_interaction_cue_l_03.png and /dev/null differ diff --git a/edc/images/Incoming/w_alert_interaction_cue_l_04.png b/edc/images/Incoming/w_alert_interaction_cue_l_04.png deleted file mode 100644 index 6845552..0000000 Binary files a/edc/images/Incoming/w_alert_interaction_cue_l_04.png and /dev/null differ diff --git a/edc/images/Incoming/w_alert_interaction_cue_r_01.png b/edc/images/Incoming/w_alert_interaction_cue_r_01.png deleted file mode 100644 index 8d6ae40..0000000 Binary files a/edc/images/Incoming/w_alert_interaction_cue_r_01.png and /dev/null differ diff --git a/edc/images/Incoming/w_alert_interaction_cue_r_02.png b/edc/images/Incoming/w_alert_interaction_cue_r_02.png deleted file mode 100644 index 955eff8..0000000 Binary files a/edc/images/Incoming/w_alert_interaction_cue_r_02.png and /dev/null differ diff --git a/edc/images/Incoming/w_alert_interaction_cue_r_03.png b/edc/images/Incoming/w_alert_interaction_cue_r_03.png deleted file mode 100644 index f19a064..0000000 Binary files a/edc/images/Incoming/w_alert_interaction_cue_r_03.png and /dev/null differ diff --git a/edc/images/Incoming/w_alert_interaction_cue_r_04.png b/edc/images/Incoming/w_alert_interaction_cue_r_04.png deleted file mode 100644 index 270f651..0000000 Binary files a/edc/images/Incoming/w_alert_interaction_cue_r_04.png and /dev/null differ diff --git a/edc/images/Keypad/numpad_btn_bg.png b/edc/images/Keypad/numpad_btn_bg.png new file mode 100644 index 0000000..ea67bc4 Binary files /dev/null and b/edc/images/Keypad/numpad_btn_bg.png differ diff --git a/edc/images/Keypad/numpad_btn_bg_bottom.png b/edc/images/Keypad/numpad_btn_bg_bottom.png new file mode 100644 index 0000000..e92ef65 Binary files /dev/null and b/edc/images/Keypad/numpad_btn_bg_bottom.png differ diff --git a/edc/images/Keypad/privacy_lock_dial_extension_00.png b/edc/images/Keypad/privacy_lock_dial_extension_00.png new file mode 100644 index 0000000..fa87593 Binary files /dev/null and b/edc/images/Keypad/privacy_lock_dial_extension_00.png differ diff --git a/edc/images/Keypad/privacy_lock_dial_extension_01.png b/edc/images/Keypad/privacy_lock_dial_extension_01.png new file mode 100644 index 0000000..116b098 Binary files /dev/null and b/edc/images/Keypad/privacy_lock_dial_extension_01.png differ diff --git a/edc/images/Keypad/privacy_lock_dial_extension_02.png b/edc/images/Keypad/privacy_lock_dial_extension_02.png new file mode 100644 index 0000000..f9a8c0f Binary files /dev/null and b/edc/images/Keypad/privacy_lock_dial_extension_02.png differ diff --git a/edc/images/Keypad/privacy_lock_dial_extension_03.png b/edc/images/Keypad/privacy_lock_dial_extension_03.png new file mode 100644 index 0000000..c89e702 Binary files /dev/null and b/edc/images/Keypad/privacy_lock_dial_extension_03.png differ diff --git a/edc/images/Keypad/privacy_lock_dial_extension_04.png b/edc/images/Keypad/privacy_lock_dial_extension_04.png new file mode 100644 index 0000000..d9c5e79 Binary files /dev/null and b/edc/images/Keypad/privacy_lock_dial_extension_04.png differ diff --git a/edc/images/Keypad/privacy_lock_dial_extension_05.png b/edc/images/Keypad/privacy_lock_dial_extension_05.png new file mode 100644 index 0000000..b56e648 Binary files /dev/null and b/edc/images/Keypad/privacy_lock_dial_extension_05.png differ diff --git a/edc/images/Keypad/privacy_lock_dial_extension_06.png b/edc/images/Keypad/privacy_lock_dial_extension_06.png new file mode 100644 index 0000000..d4ac293 Binary files /dev/null and b/edc/images/Keypad/privacy_lock_dial_extension_06.png differ diff --git a/edc/images/Keypad/privacy_lock_dial_extension_07.png b/edc/images/Keypad/privacy_lock_dial_extension_07.png new file mode 100644 index 0000000..fa2b05c Binary files /dev/null and b/edc/images/Keypad/privacy_lock_dial_extension_07.png differ diff --git a/edc/images/Keypad/privacy_lock_dial_extension_08.png b/edc/images/Keypad/privacy_lock_dial_extension_08.png new file mode 100644 index 0000000..c12f3f8 Binary files /dev/null and b/edc/images/Keypad/privacy_lock_dial_extension_08.png differ diff --git a/edc/images/Keypad/privacy_lock_dial_extension_09.png b/edc/images/Keypad/privacy_lock_dial_extension_09.png new file mode 100644 index 0000000..90fd0f6 Binary files /dev/null and b/edc/images/Keypad/privacy_lock_dial_extension_09.png differ diff --git a/edc/images/Keypad/privacy_lock_dial_extension_asterisk.png b/edc/images/Keypad/privacy_lock_dial_extension_asterisk.png new file mode 100644 index 0000000..f6dbfaf Binary files /dev/null and b/edc/images/Keypad/privacy_lock_dial_extension_asterisk.png differ diff --git a/edc/images/Keypad/privacy_lock_dial_extension_sharp.png b/edc/images/Keypad/privacy_lock_dial_extension_sharp.png new file mode 100644 index 0000000..c334a0d Binary files /dev/null and b/edc/images/Keypad/privacy_lock_dial_extension_sharp.png differ diff --git a/edc/images/Keypad/w_sip_3x4_btn_ic_on.png b/edc/images/Keypad/w_sip_3x4_btn_ic_on.png new file mode 100644 index 0000000..ce44cd0 Binary files /dev/null and b/edc/images/Keypad/w_sip_3x4_btn_ic_on.png differ diff --git a/edc/images/More_options/w_call_option_icon_keypad.png b/edc/images/More_options/w_call_option_icon_keypad.png new file mode 100644 index 0000000..99ede33 Binary files /dev/null and b/edc/images/More_options/w_call_option_icon_keypad.png differ diff --git a/edc/images/More_options/w_call_option_icon_volume_swap.png b/edc/images/More_options/w_call_option_icon_volume_swap.png new file mode 100644 index 0000000..325c055 Binary files /dev/null and b/edc/images/More_options/w_call_option_icon_volume_swap.png differ diff --git a/edc/images/More_options/w_call_option_icon_volume_unhold.png b/edc/images/More_options/w_call_option_icon_volume_unhold.png new file mode 100644 index 0000000..d787ad0 Binary files /dev/null and b/edc/images/More_options/w_call_option_icon_volume_unhold.png differ diff --git a/edc/images/More_options/w_more_circle_bg.png b/edc/images/More_options/w_more_circle_bg.png new file mode 100644 index 0000000..ad3c959 Binary files /dev/null and b/edc/images/More_options/w_more_circle_bg.png differ diff --git a/edc/images/autocall_forwarding_list_icon_phone.png b/edc/images/autocall_forwarding_list_icon_phone.png deleted file mode 100644 index 471a370..0000000 Binary files a/edc/images/autocall_forwarding_list_icon_phone.png and /dev/null differ diff --git a/edc/images/autocall_forwarding_list_icon_wc1.png b/edc/images/autocall_forwarding_list_icon_wc1.png deleted file mode 100644 index e383402..0000000 Binary files a/edc/images/autocall_forwarding_list_icon_wc1.png and /dev/null differ diff --git a/edc/images/autocall_forwarding_list_st_call.png b/edc/images/autocall_forwarding_list_st_call.png deleted file mode 100644 index de4cae0..0000000 Binary files a/edc/images/autocall_forwarding_list_st_call.png and /dev/null differ diff --git a/edc/images/autocall_forwarding_list_st_phone.png b/edc/images/autocall_forwarding_list_st_phone.png deleted file mode 100644 index 1a67f77..0000000 Binary files a/edc/images/autocall_forwarding_list_st_phone.png and /dev/null differ diff --git a/edc/images/autocall_forwarding_list_st_phone2.png b/edc/images/autocall_forwarding_list_st_phone2.png deleted file mode 100644 index d00fc9b..0000000 Binary files a/edc/images/autocall_forwarding_list_st_phone2.png and /dev/null differ diff --git a/edc/images/autocall_forwarding_list_st_wc1.png b/edc/images/autocall_forwarding_list_st_wc1.png deleted file mode 100644 index 2259dd1..0000000 Binary files a/edc/images/autocall_forwarding_list_st_wc1.png and /dev/null differ diff --git a/edc/images/autocall_forwarding_moresetting_01.png b/edc/images/autocall_forwarding_moresetting_01.png deleted file mode 100644 index b6cd3e5..0000000 Binary files a/edc/images/autocall_forwarding_moresetting_01.png and /dev/null differ diff --git a/edc/images/autocall_forwarding_moresetting_02.png b/edc/images/autocall_forwarding_moresetting_02.png deleted file mode 100644 index 8b309dd..0000000 Binary files a/edc/images/autocall_forwarding_moresetting_02.png and /dev/null differ diff --git a/edc/images/numpad_btn_bg.png b/edc/images/numpad_btn_bg.png deleted file mode 100644 index ea67bc4..0000000 Binary files a/edc/images/numpad_btn_bg.png and /dev/null differ diff --git a/edc/images/numpad_btn_bg_bottom.png b/edc/images/numpad_btn_bg_bottom.png deleted file mode 100644 index e92ef65..0000000 Binary files a/edc/images/numpad_btn_bg_bottom.png and /dev/null differ diff --git a/edc/images/privacy_lock_dial_extension_00.png b/edc/images/privacy_lock_dial_extension_00.png deleted file mode 100644 index fa87593..0000000 Binary files a/edc/images/privacy_lock_dial_extension_00.png and /dev/null differ diff --git a/edc/images/privacy_lock_dial_extension_01.png b/edc/images/privacy_lock_dial_extension_01.png deleted file mode 100644 index 116b098..0000000 Binary files a/edc/images/privacy_lock_dial_extension_01.png and /dev/null differ diff --git a/edc/images/privacy_lock_dial_extension_02.png b/edc/images/privacy_lock_dial_extension_02.png deleted file mode 100644 index f9a8c0f..0000000 Binary files a/edc/images/privacy_lock_dial_extension_02.png and /dev/null differ diff --git a/edc/images/privacy_lock_dial_extension_03.png b/edc/images/privacy_lock_dial_extension_03.png deleted file mode 100644 index c89e702..0000000 Binary files a/edc/images/privacy_lock_dial_extension_03.png and /dev/null differ diff --git a/edc/images/privacy_lock_dial_extension_04.png b/edc/images/privacy_lock_dial_extension_04.png deleted file mode 100644 index d9c5e79..0000000 Binary files a/edc/images/privacy_lock_dial_extension_04.png and /dev/null differ diff --git a/edc/images/privacy_lock_dial_extension_05.png b/edc/images/privacy_lock_dial_extension_05.png deleted file mode 100644 index b56e648..0000000 Binary files a/edc/images/privacy_lock_dial_extension_05.png and /dev/null differ diff --git a/edc/images/privacy_lock_dial_extension_06.png b/edc/images/privacy_lock_dial_extension_06.png deleted file mode 100644 index d4ac293..0000000 Binary files a/edc/images/privacy_lock_dial_extension_06.png and /dev/null differ diff --git a/edc/images/privacy_lock_dial_extension_07.png b/edc/images/privacy_lock_dial_extension_07.png deleted file mode 100644 index fa2b05c..0000000 Binary files a/edc/images/privacy_lock_dial_extension_07.png and /dev/null differ diff --git a/edc/images/privacy_lock_dial_extension_08.png b/edc/images/privacy_lock_dial_extension_08.png deleted file mode 100644 index c12f3f8..0000000 Binary files a/edc/images/privacy_lock_dial_extension_08.png and /dev/null differ diff --git a/edc/images/privacy_lock_dial_extension_09.png b/edc/images/privacy_lock_dial_extension_09.png deleted file mode 100644 index 90fd0f6..0000000 Binary files a/edc/images/privacy_lock_dial_extension_09.png and /dev/null differ diff --git a/edc/images/privacy_lock_dial_extension_asterisk.png b/edc/images/privacy_lock_dial_extension_asterisk.png deleted file mode 100644 index f6dbfaf..0000000 Binary files a/edc/images/privacy_lock_dial_extension_asterisk.png and /dev/null differ diff --git a/edc/images/privacy_lock_dial_extension_sharp.png b/edc/images/privacy_lock_dial_extension_sharp.png deleted file mode 100644 index c334a0d..0000000 Binary files a/edc/images/privacy_lock_dial_extension_sharp.png and /dev/null differ diff --git a/edc/images/w_call_incoming_icon_accept.png b/edc/images/w_call_incoming_icon_accept.png index ae4b0e4..19f07ce 100644 Binary files a/edc/images/w_call_incoming_icon_accept.png and b/edc/images/w_call_incoming_icon_accept.png differ diff --git a/edc/images/w_call_incoming_icon_headset_call_accept.png b/edc/images/w_call_incoming_icon_headset_call_accept.png new file mode 100644 index 0000000..63394c1 Binary files /dev/null and b/edc/images/w_call_incoming_icon_headset_call_accept.png differ diff --git a/edc/images/w_call_incoming_icon_reject.png b/edc/images/w_call_incoming_icon_reject.png index cb15dfd..44ba85c 100644 Binary files a/edc/images/w_call_incoming_icon_reject.png and b/edc/images/w_call_incoming_icon_reject.png differ diff --git a/edc/images/w_call_numeric_btn_cancel.png b/edc/images/w_call_numeric_btn_cancel.png deleted file mode 100644 index 2a117a2..0000000 Binary files a/edc/images/w_call_numeric_btn_cancel.png and /dev/null differ diff --git a/edc/images/w_call_option_icon_device.png b/edc/images/w_call_option_icon_device.png deleted file mode 100644 index f2cc80d..0000000 Binary files a/edc/images/w_call_option_icon_device.png and /dev/null differ diff --git a/edc/images/w_call_option_icon_headset.png b/edc/images/w_call_option_icon_headset.png deleted file mode 100644 index d43b955..0000000 Binary files a/edc/images/w_call_option_icon_headset.png and /dev/null differ diff --git a/edc/images/w_call_option_icon_keypad.png b/edc/images/w_call_option_icon_keypad.png deleted file mode 100644 index 99ede33..0000000 Binary files a/edc/images/w_call_option_icon_keypad.png and /dev/null differ diff --git a/edc/images/w_call_option_icon_mute.png b/edc/images/w_call_option_icon_mute.png deleted file mode 100644 index 3c6e0f8..0000000 Binary files a/edc/images/w_call_option_icon_mute.png and /dev/null differ diff --git a/edc/images/w_call_option_icon_volume_hold.png b/edc/images/w_call_option_icon_volume_hold.png deleted file mode 100644 index 61e0d94..0000000 Binary files a/edc/images/w_call_option_icon_volume_hold.png and /dev/null differ diff --git a/edc/images/w_call_option_icon_volume_swap.png b/edc/images/w_call_option_icon_volume_swap.png deleted file mode 100644 index 325c055..0000000 Binary files a/edc/images/w_call_option_icon_volume_swap.png and /dev/null differ diff --git a/edc/images/w_call_option_icon_volume_tophone.png b/edc/images/w_call_option_icon_volume_tophone.png deleted file mode 100644 index 7b38967..0000000 Binary files a/edc/images/w_call_option_icon_volume_tophone.png and /dev/null differ diff --git a/edc/images/w_call_option_icon_volume_towatch.png b/edc/images/w_call_option_icon_volume_towatch.png deleted file mode 100644 index 7478ff4..0000000 Binary files a/edc/images/w_call_option_icon_volume_towatch.png and /dev/null differ diff --git a/edc/images/w_call_option_icon_volume_transferto.png b/edc/images/w_call_option_icon_volume_transferto.png deleted file mode 100644 index 12243e2..0000000 Binary files a/edc/images/w_call_option_icon_volume_transferto.png and /dev/null differ diff --git a/edc/images/w_call_option_icon_volume_unhold.png b/edc/images/w_call_option_icon_volume_unhold.png deleted file mode 100644 index d787ad0..0000000 Binary files a/edc/images/w_call_option_icon_volume_unhold.png and /dev/null differ diff --git a/edc/images/w_call_toast_show_on_divice_icon.png b/edc/images/w_call_toast_show_on_divice_icon.png deleted file mode 100644 index 145867b..0000000 Binary files a/edc/images/w_call_toast_show_on_divice_icon.png and /dev/null differ diff --git a/edc/images/w_during_icon_volume_02.png b/edc/images/w_during_icon_volume_02.png new file mode 100644 index 0000000..a8ffb78 Binary files /dev/null and b/edc/images/w_during_icon_volume_02.png differ diff --git a/edc/images/w_emergency_icon.png b/edc/images/w_emergency_icon.png deleted file mode 100644 index cb2e077..0000000 Binary files a/edc/images/w_emergency_icon.png and /dev/null differ diff --git a/edc/images/w_more_circle_bg.png b/edc/images/w_more_circle_bg.png deleted file mode 100644 index ad3c959..0000000 Binary files a/edc/images/w_more_circle_bg.png and /dev/null differ diff --git a/edc/images/w_outgoing_icon_contact_add_02.png b/edc/images/w_outgoing_icon_contact_add_02.png new file mode 100644 index 0000000..2755b3a Binary files /dev/null and b/edc/images/w_outgoing_icon_contact_add_02.png differ diff --git a/edc/images/w_outgoing_icon_device_02.png b/edc/images/w_outgoing_icon_device_02.png new file mode 100644 index 0000000..fe984c1 Binary files /dev/null and b/edc/images/w_outgoing_icon_device_02.png differ diff --git a/edc/images/w_outgoing_icon_headset_02.png b/edc/images/w_outgoing_icon_headset_02.png new file mode 100644 index 0000000..4cac962 Binary files /dev/null and b/edc/images/w_outgoing_icon_headset_02.png differ diff --git a/edc/images/w_outgoing_icon_mute.png b/edc/images/w_outgoing_icon_mute.png deleted file mode 100644 index aa4cf4f..0000000 Binary files a/edc/images/w_outgoing_icon_mute.png and /dev/null differ diff --git a/edc/images/w_outgoing_icon_mute_02.png b/edc/images/w_outgoing_icon_mute_02.png new file mode 100644 index 0000000..c4276f0 Binary files /dev/null and b/edc/images/w_outgoing_icon_mute_02.png differ diff --git a/edc/images/w_outgoing_icon_towatch_02.png b/edc/images/w_outgoing_icon_towatch_02.png new file mode 100644 index 0000000..36bc29a Binary files /dev/null and b/edc/images/w_outgoing_icon_towatch_02.png differ diff --git a/edc/images/w_outgoing_icon_volume.png b/edc/images/w_outgoing_icon_volume.png deleted file mode 100644 index aadd32a..0000000 Binary files a/edc/images/w_outgoing_icon_volume.png and /dev/null differ diff --git a/edc/images/w_outgoing_icon_volume_02.png b/edc/images/w_outgoing_icon_volume_02.png new file mode 100644 index 0000000..9e9220f Binary files /dev/null and b/edc/images/w_outgoing_icon_volume_02.png differ diff --git a/edc/images/w_sip_3x4_btn_ic_on.png b/edc/images/w_sip_3x4_btn_ic_on.png deleted file mode 100644 index ce44cd0..0000000 Binary files a/edc/images/w_sip_3x4_btn_ic_on.png and /dev/null differ diff --git a/edc/keypad.edc b/edc/keypad.edc index 3dc5f07..aac6fae 100644 --- a/edc/keypad.edc +++ b/edc/keypad.edc @@ -17,8 +17,8 @@ #define CU_BTN_KEYPAD_PADDING_H 122 group { "elm/layout/callui/keypad"; - images.image: "numpad_btn_bg.png" COMP; - images.image: "numpad_btn_bg_bottom.png" COMP; + images.image: CU_KEYPAD_ICONS_DIR/"numpad_btn_bg.png" COMP; + images.image: CU_KEYPAD_ICONS_DIR/"numpad_btn_bg_bottom.png" COMP; parts { rect { "bg"; @@ -60,7 +60,7 @@ group { "elm/layout/callui/keypad"; desc { "default"; rel1 { relative: 0.0 0.0; to: "bg"; } rel2 { relative: 1.0 1.0; to: "bg"; } - image.normal: "numpad_btn_bg_bottom.png"; + image.normal: CU_KEYPAD_ICONS_DIR/"numpad_btn_bg_bottom.png"; color: 255 255 255 255; min: CU_WIN_W CU_WIN_H; } @@ -126,7 +126,7 @@ group { "elm/layout/callui/keypad"; scale; desc { "default"; rel1 { relative: 1.0 0.0; to: "sp.col3"; } - image.normal: "numpad_btn_bg.png"; + image.normal: CU_KEYPAD_ICONS_DIR/"numpad_btn_bg.png"; min: CU_BTN_KEYPAD_RIGHT_H CU_BTN_KEYPAD_H; max: CU_BTN_KEYPAD_RIGHT_H CU_BTN_KEYPAD_H; color: 255 255 255 255; diff --git a/edc/main_ly.edc b/edc/main_ly.edc index 1dc2391..e87ac93 100644 --- a/edc/main_ly.edc +++ b/edc/main_ly.edc @@ -57,4 +57,3 @@ group { "elm/layout/callui/main"; } } } - diff --git a/edc/more_option.edc b/edc/more_option.edc index bf1d7ca..56a6577 100644 --- a/edc/more_option.edc +++ b/edc/more_option.edc @@ -14,48 +14,34 @@ * limitations under the License. */ -#define CU_MORE_OPT_TXT_TOP_PAD 161 - -#define CU_MORE_OPT_TXT_SMALL_W 112 -#define CU_MORE_OPT_TXT_SMALL_H 36 +#define CU_MORE_OPT_TXT_TOP_PAD 276 #define CU_MORE_OPT_TXT_BIG_W 100 #define CU_MORE_OPT_TXT_BIG_H 39 -#define CU_MORE_OPT_BTN_TOP_X 130 -#define CU_MORE_OPT_BTN_TOP_Y 21 - -#define CU_MORE_OPT_BTN_LEFT_X 21 -#define CU_MORE_OPT_BTN_LEFT_Y 130 +#define CU_MORE_OPT_BTN_ODD_1_X 51 +#define CU_MORE_OPT_BTN_ODD_2_X 209 -#define CU_MORE_OPT_BTN_RIGHT_X 239 -#define CU_MORE_OPT_BTN_RIGHT_Y 130 +#define CU_MORE_OPT_BTN_EVEN_1_X 130 -#define CU_MORE_OPT_BTN_BOTTOM_X 130 -#define CU_MORE_OPT_BTN_BOTTOM_Y 219 +#define CU_MORE_OPT_BTN_Y 102 #define CU_MORE_OPT_BTN_W 100 #define CU_MORE_OPT_BTN_H 135 -#define CU_MORE_OPT_BTN_TOP_REL1 CU_REL_W(CU_MORE_OPT_BTN_TOP_X) CU_REL_H(CU_MORE_OPT_BTN_TOP_Y) -#define CU_MORE_OPT_BTN_TOP_REL2 CU_REL_W((CU_MORE_OPT_BTN_TOP_X + CU_MORE_OPT_BTN_W)) CU_REL_H((CU_MORE_OPT_BTN_TOP_Y + CU_MORE_OPT_BTN_H)) - -#define CU_MORE_OPT_BTN_LEFT_REL1 CU_REL_W(CU_MORE_OPT_BTN_LEFT_X) CU_REL_H(CU_MORE_OPT_BTN_LEFT_Y) -#define CU_MORE_OPT_BTN_LEFT_REL2 CU_REL_W((CU_MORE_OPT_BTN_LEFT_X + CU_MORE_OPT_BTN_W)) CU_REL_H((CU_MORE_OPT_BTN_LEFT_Y + CU_MORE_OPT_BTN_H)) +#define CU_MORE_OPT_BTN_ODD_1_REL1 CU_REL_W(CU_MORE_OPT_BTN_ODD_1_X) CU_REL_H(CU_MORE_OPT_BTN_Y) +#define CU_MORE_OPT_BTN_ODD_1_REL2 CU_REL_W((CU_MORE_OPT_BTN_ODD_1_X + CU_MORE_OPT_BTN_W)) CU_REL_H((CU_MORE_OPT_BTN_Y + CU_MORE_OPT_BTN_H)) -#define CU_MORE_OPT_BTN_RIGHT_REL1 CU_REL_W(CU_MORE_OPT_BTN_RIGHT_X) CU_REL_H(CU_MORE_OPT_BTN_RIGHT_Y) -#define CU_MORE_OPT_BTN_RIGHT_REL2 CU_REL_W((CU_MORE_OPT_BTN_RIGHT_X+CU_MORE_OPT_BTN_W)) CU_REL_H((CU_MORE_OPT_BTN_RIGHT_Y + CU_MORE_OPT_BTN_H)) +#define CU_MORE_OPT_BTN_ODD_2_REL1 CU_REL_W(CU_MORE_OPT_BTN_ODD_2_X) CU_REL_H(CU_MORE_OPT_BTN_Y) +#define CU_MORE_OPT_BTN_ODD_2_REL2 CU_REL_W((CU_MORE_OPT_BTN_ODD_2_X + CU_MORE_OPT_BTN_W)) CU_REL_H((CU_MORE_OPT_BTN_Y + CU_MORE_OPT_BTN_H)) -#define CU_MORE_OPT_BTN_BOTTOM_REL1 CU_REL_W(CU_MORE_OPT_BTN_BOTTOM_X) CU_REL_H(CU_MORE_OPT_BTN_BOTTOM_Y) -#define CU_MORE_OPT_BTN_BOTTOM_REL2 CU_REL_W((CU_MORE_OPT_BTN_BOTTOM_X + CU_MORE_OPT_BTN_W)) CU_REL_H((CU_MORE_OPT_BTN_BOTTOM_Y + CU_MORE_OPT_BTN_H)) +#define CU_MORE_OPT_BTN_EVEN_1_REL1 CU_REL_W(CU_MORE_OPT_BTN_EVEN_1_X) CU_REL_H(CU_MORE_OPT_BTN_Y) +#define CU_MORE_OPT_BTN_EVEN_1_REL2 CU_REL_W((CU_MORE_OPT_BTN_EVEN_1_X + CU_MORE_OPT_BTN_W)) CU_REL_H((CU_MORE_OPT_BTN_Y + CU_MORE_OPT_BTN_H)) styles { style { "more_opt_status_big"; base: "font=Tizen font_weight=Regular font_width=Condensed font_size=30 align=center valign=center color=#4DCFFF ellipsis=1.0"; } - style { "more_opt_status_small"; - base: "font=Tizen font_weight=Regular font_width=Condensed font_size=27 align=center valign=center color=#4DCFFF ellipsis=1.0"; - } } group { "elm/layout/callui/more_option"; @@ -89,59 +75,47 @@ group { "elm/layout/callui/more_option"; rel1 { relative: 0.0 1.0; to_y: "txt.pad.top"; } rel2 { relative: 1.0 1.0; to_y: "txt.pad.top"; } text.style: "more_opt_status_big"; - } - desc { "small"; - inherit: "default"; - min: CU_MORE_OPT_TXT_SMALL_W CU_MORE_OPT_TXT_SMALL_H; - max: CU_MORE_OPT_TXT_SMALL_W CU_MORE_OPT_TXT_SMALL_H; - text.style: "more_opt_status_small"; + text.fit: 1 1; } } - swallow { "swl.top"; + swallow { "swl.slot.1"; scale; desc { "default"; fixed: 1 1; - rel1 { relative: CU_MORE_OPT_BTN_TOP_REL1; to: "bg";} - rel2 { relative: CU_MORE_OPT_BTN_TOP_REL2; to: "bg";} + rel1 { relative: CU_MORE_OPT_BTN_ODD_1_REL1; to: "bg";} + rel2 { relative: CU_MORE_OPT_BTN_ODD_1_REL2; to: "bg";} } - } - swallow { "swl.left"; - scale; - desc { "default"; - fixed: 1 1; - rel1 { relative: CU_MORE_OPT_BTN_LEFT_REL1; to: "bg";} - rel2 { relative: CU_MORE_OPT_BTN_LEFT_REL2; to: "bg";} + desc { "even"; + inherit: "default"; + rel1 { relative: CU_MORE_OPT_BTN_EVEN_1_REL1; to: "bg";} + rel2 { relative: CU_MORE_OPT_BTN_EVEN_1_REL2; to: "bg";} } } - swallow { "swl.right"; + swallow { "swl.slot.2"; scale; desc { "default"; fixed: 1 1; - rel1 { relative: CU_MORE_OPT_BTN_RIGHT_REL1; to: "bg";} - rel2 { relative: CU_MORE_OPT_BTN_RIGHT_REL2; to: "bg";} + rel1 { relative: CU_MORE_OPT_BTN_ODD_2_REL1; to: "bg";} + rel2 { relative: CU_MORE_OPT_BTN_ODD_2_REL2; to: "bg";} } - } - swallow { "swl.bottom"; - scale; - desc { "default"; - fixed: 1 1; - rel1 { relative: CU_MORE_OPT_BTN_BOTTOM_REL1; to: "bg";} - rel2 { relative: CU_MORE_OPT_BTN_BOTTOM_REL2; to: "bg";} + desc { "even"; + inherit: "default"; + hid; } } } programs { program { - signal: "status_txt_big"; - source: ""; - action: STATE_SET "default"; - target: "txt.status"; + signal: "odd"; + source: "more_option"; + action: STATE_SET "even"; + targets: "swl.slot.1" "swl.slot.2"; } program { - signal: "status_txt_small"; - source: ""; - action: STATE_SET "small"; - target: "txt.status"; + signal: "even"; + source: "more_option"; + action: STATE_SET "default"; + targets: "swl.slot.1" "swl.slot.2"; } } } diff --git a/inc/presenters/AccessoryPresenter.h b/inc/presenters/AccessoryPresenter.h index c4c9f38..1cd131a 100644 --- a/inc/presenters/AccessoryPresenter.h +++ b/inc/presenters/AccessoryPresenter.h @@ -22,6 +22,8 @@ #include "ucl/gui/Layout.h" #include "ucl/gui/StyledWidget.h" +#include + #include "types.h" namespace callui { @@ -32,14 +34,16 @@ namespace callui { public: Builder(); Builder &setSoundManager(const ISoundManagerSRef &sm); - Builder &setMuteControlDisabled(bool isDisabled); + Builder &setCallManager(const ICallManagerSRef &cm); + Builder &setRequestExitHandler(const NotiHandler &handler); Builder &setParentWidget(const ucl::ElmWidgetSRef &parentWidget); AccessoryPresenterSRef build(ucl::GuiPresenter &parent) const; private: ISoundManagerSRef m_sm; - bool m_isMuteControlDisabled; + ICallManagerSRef m_cm; ucl::ElmWidgetSRef m_parentWidget; + NotiHandler m_exitHandler; }; public: @@ -47,24 +51,39 @@ namespace callui { ucl::Widget &getWidget(); void hideVolumeControls(); - void setMuteControlDisabled(bool isDisabled); + ucl::Result update(const ICallManagerSRef &cm); + private: + enum class ComponentsMode { + UNDEFINED, + OUTGOING, + DURING, + END + }; private: friend class ucl::ReffedObj; - AccessoryPresenter(ucl::IRefCountObj &rc, - const ISoundManagerSRef &sm); + AccessoryPresenter(ucl::IRefCountObj &rc, const ISoundManagerSRef &sm, + const NotiHandler &handler); ucl::Result prepare(ucl::GuiPresenter &parent, - ucl::ElmWidget &parentWidget, - bool isMuteControlDisabled = false); + ucl::ElmWidget &parentWidget, const ICallManagerSRef &cm); ucl::Result createWidget(ucl::ElmWidget &parent); ucl::Result createSlider(); ucl::Result createVolumeControl(); + ucl::Result createVolumeBtn(); ucl::Result createMuteBtn(); + ucl::Result createBluetoothBtn(); + ucl::Result createAddContactBtn(); + void onVolumeBtnClicked(ucl::Widget &widget, void *eventInfo); void onMuteBtnClicked(ucl::Widget &widget, void *eventInfo); + void onBluetoothBtnClicked(ucl::Widget &widget, void *eventInfo); + void onAddContactBtnClicked(ucl::Widget &widget, void *eventInfo); + + ucl::Result launchContacts(); + ucl::Result launchBluetoothSettings(); void registerCallbacks(); void unregisterCallbacks(); @@ -86,15 +105,30 @@ namespace callui { void updateVolume(int value); + void updateMode(const ICallManagerSRef &cm); + AccessoryPresenter::ComponentsMode getCurrentMode(const ICallManagerSRef &cm); + void setVolumeSliderVisiblity(bool isVisible); + + ucl::Result updateModeRelativeComponents(const ICallManagerSRef &cm); + ucl::Result setActiveCallCompomnents(); + ucl::Result setEndCallCompomnents(const ICallManagerSRef &cm); + private: ucl::LayoutSRef m_widget; ucl::StyledWidgetSRef m_volumeBtn; ucl::StyledWidgetSRef m_muteBtn; + ucl::StyledWidgetSRef m_bluetoothBtn; + ucl::StyledWidgetSRef m_addContactBtn; + SliderSRef m_slider; VolumeControlSRef m_vc; ISoundManagerSRef m_sm; + Ecore_Timer *m_vcTimer; AudioStateType m_audioState; + ComponentsMode m_mode; + std::string m_unsavedPhoneNumber; + NotiHandler m_exitHandler; }; } diff --git a/inc/presenters/CallInfoPresenter.h b/inc/presenters/CallInfoPresenter.h index 6502152..c7bc82c 100644 --- a/inc/presenters/CallInfoPresenter.h +++ b/inc/presenters/CallInfoPresenter.h @@ -79,7 +79,6 @@ namespace callui { std::string generateMainTxt(const ICallInfoSCRef &callInfo); void displayMainTxt(const ICallInfoSCRef &info, const std::string &text) const; - private: ucl::LayoutSRef m_widget; ucl::StyledWidgetSRef m_callerId; diff --git a/inc/presenters/MainPage.h b/inc/presenters/MainPage.h index ce28028..4d9443a 100644 --- a/inc/presenters/MainPage.h +++ b/inc/presenters/MainPage.h @@ -57,18 +57,18 @@ namespace callui { void updateCallMode(); ucl::Result processIncomingCallMode(); - void resetIncomingCallMode(); + ucl::Result processEndCallMode(); ucl::Result processRegularCallModes(); - void resetRegularCallModes(); - - ucl::Result createAcceptRejectPresenter(); - ucl::Result createRejectMsgPresenter(const IRejectMsgProviderSRef &provider); - void RejectMsgStateCb(RejectMsgState state); - void RejectMsgSelectCb(const IRejectMsgSRef &rm); ucl::Result createCallInfoPresenter(CallMode mode); ucl::Result createAccessoryPresenter(); ucl::Result createMoreOptionsPresenter(); + ucl::Result createAcceptRejectPresenter(); + ucl::Result createRejectMsgPresenter( + const IRejectMsgProviderSRef &provider); + + void RejectMsgStateCb(RejectMsgState state); + void RejectMsgSelectCb(const IRejectMsgSRef &rm); ucl::Result createBottomBtn(const ucl::ElmStyle &style); void onBottomBtnClicked(ucl::Widget &widget, void *eventInfo); @@ -88,6 +88,8 @@ namespace callui { ucl::Result createIndicatorPresenter(); ucl::Result createDisplayPresenter(); + void onExitAppRequest(); + // Page virtual void onBackKey() final override; diff --git a/inc/presenters/MoreOptionsPresenter.h b/inc/presenters/MoreOptionsPresenter.h index 2b994b1..a4f4a13 100644 --- a/inc/presenters/MoreOptionsPresenter.h +++ b/inc/presenters/MoreOptionsPresenter.h @@ -70,20 +70,11 @@ namespace callui { const ucl::WidgetEventHandler &handler); void updateSlots(); - void updateTopSlot(); - void updateLeftSlot(); - void updateRightSlot(); - void updateBottomSlot(); - void updateStatusText(); - void updateStatusFontSize(); void onSwapBtnClick(ucl::Widget &sender, void *eventInfo); void onUnholdBtnClick(ucl::Widget &sender, void *eventInfo); - void onHeadsetBtnClick(ucl::Widget &sender, void *eventInfo); - void onPhoneBtnClick(ucl::Widget &sender, void *eventInfo); void onKeypadBtnClick(ucl::Widget &sender, void *eventInfo); - void onGearBtnClick(ucl::Widget &sender, void *eventInfo); void onBackKey(Evas_Object *obj, void *eventInfo); @@ -98,12 +89,8 @@ namespace callui { void stopCallDurationTimer(); Eina_Bool onCallDurationTimerCb(); - ucl::Result launchBluetoothSettings(); - - void onAudioStateChanged(AudioStateType state); - void unsetPanelContent(const ucl::EdjePart &part); - void setPanelContent(ucl::StyledWidgetSRef &widget, + void setPanelContent(ucl::StyledWidget &widget, const ucl::EdjePart &part); void onPageExitRequest(Page &page); @@ -114,10 +101,7 @@ namespace callui { ucl::LayoutSRef m_panelLy; ucl::StyledWidgetSRef m_btnSwap; ucl::StyledWidgetSRef m_btnUnhold; - ucl::StyledWidgetSRef m_btnHeadset; - ucl::StyledWidgetSRef m_btnPhone; ucl::StyledWidgetSRef m_btnKeypad; - ucl::StyledWidgetSRef m_btnGear; PageWRef m_keypad; ICallManagerSRef m_cm; diff --git a/inc/presenters/types.h b/inc/presenters/types.h index 516fc87..eea785e 100644 --- a/inc/presenters/types.h +++ b/inc/presenters/types.h @@ -57,6 +57,8 @@ namespace callui { TOP_PRIORITY }; + using AccessoryBtnMask = int; + UCL_DECLARE_REF_ALIASES(Page); UCL_DECLARE_REF_ALIASES(MainPage); diff --git a/res/edje/theme.edc b/res/edje/theme.edc index 5fe6371..54d389b 100644 --- a/res/edje/theme.edc +++ b/res/edje/theme.edc @@ -22,7 +22,9 @@ #define CU_REL_W(val) (val/CU_WIN_W) #define CU_REL_H(val) (val/CU_WIN_H) -#define CU_ACCESSORY_SOUND_BTN_SIZE 50 86 +#define CU_ACCESSORY_SOUND_BTN_SIZE 60 60 + +#define CU_KEYPAD_ICONS_DIR "/Keypad" collections { base_scale: 1.3; diff --git a/src/presenters/AccessoryPresenter.cpp b/src/presenters/AccessoryPresenter.cpp index 90c39f7..75240b2 100644 --- a/src/presenters/AccessoryPresenter.cpp +++ b/src/presenters/AccessoryPresenter.cpp @@ -16,12 +16,21 @@ #include "presenters/AccessoryPresenter.h" +#include "ucl/appfw/types.h" + #include "model/ISoundManager.h" +#include "model/ICallManager.h" +#include "model/IActiveCall.h" +#include "model/IEndCall.h" +#include "model/ICallInfo.h" + #include "view/VolumeControl.h" #include "resources.h" #include "common.h" +#define CU_APP_CONTROL_MIME_CONTACT "application/vnd.tizen.contact" + namespace callui { namespace { namespace impl { using namespace ucl; @@ -30,11 +39,15 @@ namespace callui { namespace { namespace impl { {"layout", "callui", "accessory"}; constexpr EdjePart PART_SWL_VOLUME_SLIDER {"swl.volume_control"}; - constexpr EdjePart PART_SWL_SOUND {"swl.sound"}; - constexpr EdjePart PART_SWL_MUTE {"swl.mute"}; + + constexpr EdjePart PART_SWL_SLOT1 {"swl.slot.1"}; + constexpr EdjePart PART_SWL_SLOT2 {"swl.slot.2"}; + constexpr EdjePart PART_SWL_SLOT3 {"swl.slot.3"}; constexpr ElmStyle STYLE_BTN_VOLUME {"callui/volume"}; constexpr ElmStyle STYLE_BTN_MUTE {"callui/mute"}; + constexpr ElmStyle STYLE_BTN_BT {"callui/bluetooth"}; + constexpr ElmStyle STYLE_BTN_ADD_CONTACT {"callui/add_contact"}; constexpr EdjeSignal SIGNAL_TURN_ON {"turn.on"}; constexpr EdjeSignal SIGNAL_TURN_OFF {"turn.off"}; @@ -44,8 +57,7 @@ namespace callui { using namespace ucl; - AccessoryPresenter::Builder::Builder(): - m_isMuteControlDisabled(false) + AccessoryPresenter::Builder::Builder() { } @@ -57,9 +69,16 @@ namespace callui { } AccessoryPresenter::Builder & - AccessoryPresenter::Builder::setMuteControlDisabled(bool isDisabled) + AccessoryPresenter::Builder::setCallManager(const ICallManagerSRef &cm) + { + m_cm = cm; + return *this; + } + + AccessoryPresenter::Builder & + AccessoryPresenter::Builder::setRequestExitHandler(const NotiHandler &handler) { - m_isMuteControlDisabled = isDisabled; + m_exitHandler = handler; return *this; } @@ -74,22 +93,26 @@ namespace callui { AccessoryPresenterSRef AccessoryPresenter::Builder::build(GuiPresenter &parent) const { - if (!m_sm || !m_parentWidget) { + if (!m_sm || !m_cm || !m_parentWidget) { LOG_RETURN_VALUE(RES_FAIL, {}, "Main params are not set"); } - auto result = makeShared(m_sm); - FAIL_RETURN_VALUE(result->prepare(parent, *m_parentWidget, m_isMuteControlDisabled), + auto result = makeShared(m_sm, m_exitHandler); + FAIL_RETURN_VALUE(result->prepare(parent, *m_parentWidget, m_cm), {}, "result->prepare() failed!"); + return result; } AccessoryPresenter::AccessoryPresenter(IRefCountObj &rc, - const ISoundManagerSRef &sm): + const ISoundManagerSRef &sm, + const NotiHandler &handler): GuiPresenter(rc), m_sm(sm), m_vcTimer(nullptr), - m_audioState(m_sm->getAudioState()) + m_audioState(m_sm->getAudioState()), + m_mode(ComponentsMode::UNDEFINED), + m_exitHandler(handler) { } @@ -100,8 +123,7 @@ namespace callui { } Result AccessoryPresenter::prepare(GuiPresenter &parent, - ElmWidget &parentWidget, - bool isMuteControlDisabled) + ElmWidget &parentWidget, const ICallManagerSRef &cm) { FAIL_RETURN(GuiPresenter::prepare(parent), "Presenter::prepare() failed"); @@ -111,38 +133,136 @@ namespace callui { FAIL_RETURN(createVolumeControl(), "createVolumeControl() failed"); - FAIL_RETURN(createVolumeBtn(), "createVolumeBtn() failed"); - - FAIL_RETURN(createMuteBtn(), "createMuteBtn() failed"); + updateVolume(m_sm->getVolume()); registerCallbacks(); - updateVolume(m_sm->getVolume()); + updateMode(cm); - setMuteControlDisabled(isMuteControlDisabled); + FAIL_RETURN(updateModeRelativeComponents(cm), "updateComponents() failed"); return RES_OK; } - Widget &AccessoryPresenter::getWidget() + void AccessoryPresenter::updateMode(const ICallManagerSRef &cm) { - return *m_widget; + m_mode = getCurrentMode(cm); } - void AccessoryPresenter::hideVolumeControls() + AccessoryPresenter::ComponentsMode AccessoryPresenter::getCurrentMode( + const ICallManagerSRef &cm) { - stopVCTimer(); - hide(*m_vc); + auto active = cm->getActiveCall(); + auto held = cm->getHeldCall(); + auto end = cm->getEndCall(); + + if (active && active->isDialingMode()) { + return ComponentsMode::OUTGOING; + } else if (active || held) { + return ComponentsMode::DURING; + } else if (end) { + return ComponentsMode::END; + } + return ComponentsMode::UNDEFINED; + } + + void AccessoryPresenter::setVolumeSliderVisiblity(bool isVisible) + { + if (isVisible) { + m_widget->setContent(*m_slider, impl::PART_SWL_VOLUME_SLIDER); + show(*m_slider); + } else { + m_widget->unsetContent(impl::PART_SWL_VOLUME_SLIDER); + hide(*m_slider); + } + } + + Result AccessoryPresenter::update(const ICallManagerSRef &cm) + { + auto curMode = getCurrentMode(cm); + if (m_mode == curMode) { + LOG_RETURN(RES_OK, "Mode is the same. No need to update"); + } + m_mode = curMode; + + FAIL_RETURN(updateModeRelativeComponents(cm), "updateComponents() failed"); + + return RES_OK; + } + + Result AccessoryPresenter::updateModeRelativeComponents( + const ICallManagerSRef &cm) + { + m_volumeBtn.reset(); + m_muteBtn.reset(); + m_bluetoothBtn.reset(); + m_addContactBtn.reset(); + m_unsavedPhoneNumber.clear(); + + setVolumeSliderVisiblity(m_mode != ComponentsMode::END); + + switch (m_mode) { + case ComponentsMode::OUTGOING: + case ComponentsMode::DURING: + return setActiveCallCompomnents(); + case ComponentsMode::END: + return setEndCallCompomnents(cm); + default: + return RES_OK; + } + return RES_OK; } - void AccessoryPresenter::setMuteControlDisabled(bool isDisabled) + Result AccessoryPresenter::setActiveCallCompomnents() { - if (isDisabled) { + FAIL_RETURN(createVolumeBtn(), "createVolumeBtn() failed"); + m_widget->setContent(*m_volumeBtn, impl::PART_SWL_SLOT1); + + FAIL_RETURN(createMuteBtn(), "createMuteBtn create failed"); + m_widget->setContent(*m_muteBtn, impl::PART_SWL_SLOT3); + + FAIL_RETURN(createBluetoothBtn(), "createBluetoothBtn() failed"); + m_widget->setContent(*m_bluetoothBtn, impl::PART_SWL_SLOT2); + + if (m_mode == ComponentsMode::OUTGOING) { disable(*m_muteBtn); } else { enable(*m_muteBtn); - updateMuteBtn(m_sm->getMuteState()); } + + return RES_OK; + } + + Result AccessoryPresenter::setEndCallCompomnents(const ICallManagerSRef &cm) + { + auto endCall = cm->getEndCall(); + if (!endCall) { + FAIL_RETURN(RES_FAIL, "endCall is NULL"); + } + auto callInfo = endCall->getInfo(); + if (!callInfo) { + FAIL_RETURN(RES_FAIL, "callInfo is NULL"); + } + if (!(callInfo->isEmergency()) + && !(callInfo->getConferenceMemberCount() > 1) + && !(callInfo->getContactInfo())) { + FAIL_RETURN(createAddContactBtn(), "createAddContactBtn() failed"); + m_widget->setContent(*m_addContactBtn, impl::PART_SWL_SLOT2); + m_unsavedPhoneNumber = callInfo->getPhoneNumber(); + } + return RES_OK; + } + + + Widget &AccessoryPresenter::getWidget() + { + return *m_widget; + } + + void AccessoryPresenter::hideVolumeControls() + { + stopVCTimer(); + hide(*m_vc); } Result AccessoryPresenter::createWidget(ElmWidget &parent) @@ -166,7 +286,6 @@ namespace callui { if (!m_slider) { LOG_RETURN(RES_FAIL, "Slider::build() failed"); } - m_widget->setContent(*m_slider, impl::PART_SWL_VOLUME_SLIDER); return RES_OK; @@ -211,7 +330,6 @@ namespace callui { m_volumeBtn->addEventHandler(BTN_CLICKED, WEAK_DELEGATE(AccessoryPresenter::onVolumeBtnClicked, asWeak(*this))); - m_widget->setContent(*m_volumeBtn, impl::PART_SWL_SOUND); show(*m_volumeBtn); return RES_OK; @@ -229,12 +347,51 @@ namespace callui { WEAK_DELEGATE(AccessoryPresenter::onMuteBtnClicked, asWeak(*this))); - m_widget->setContent(*m_muteBtn, impl::PART_SWL_MUTE); show(*m_muteBtn); return RES_OK; } + Result AccessoryPresenter::createBluetoothBtn() + { + Evas_Object *eo = elm_button_add(*m_widget); + if (!eo) { + LOG_RETURN(RES_FAIL, "eo is NULL"); + } + m_bluetoothBtn = makeShared(eo, true); + m_bluetoothBtn->setStyle(impl::STYLE_BTN_BT); + m_bluetoothBtn->addEventHandler(BTN_CLICKED, + WEAK_DELEGATE(AccessoryPresenter::onBluetoothBtnClicked, + asWeak(*this))); + + show(*m_bluetoothBtn); + + (m_audioState == AudioStateType::BT) ? + m_bluetoothBtn->emit(impl::SIGNAL_TURN_ON) : + m_bluetoothBtn->emit(impl::SIGNAL_TURN_OFF); + if (!m_sm->isBluetoothSupported()) { + disable(*m_bluetoothBtn); + } + + return RES_OK; + } + + Result AccessoryPresenter::createAddContactBtn() + { + Evas_Object *eo = elm_button_add(*m_widget); + if (!eo) { + LOG_RETURN(RES_FAIL, "eo is NULL"); + } + m_addContactBtn = makeShared(eo, true); + m_addContactBtn->setStyle(impl::STYLE_BTN_ADD_CONTACT); + m_addContactBtn->addEventHandler(BTN_CLICKED, + WEAK_DELEGATE(AccessoryPresenter::onAddContactBtnClicked, + asWeak(*this))); + show(*m_addContactBtn); + + return RES_OK; + } + void AccessoryPresenter::onVolumeBtnClicked(Widget &widget, void *eventInfo) { if (!isActive()) { @@ -256,6 +413,82 @@ namespace callui { m_sm->setMuteState(!m_sm->getMuteState()); } + void AccessoryPresenter::onBluetoothBtnClicked(Widget &widget, + void *eventInfo) + { + if (m_audioState == AudioStateType::BT) { + auto res = m_sm->setBluetoothState(false); + if (res != RES_OK && res != RES_NOT_CONNECTED) { + FAIL_RETURN_VOID(res, "setBluetoothState(false) failed"); + } + } else { + auto res = m_sm->setBluetoothState(true); + if (res == RES_NOT_CONNECTED) { + FAIL_RETURN_VOID(launchBluetoothSettings(), + "launchBluetoothSettings() failed"); + } else { + FAIL_RETURN_VOID(res, "setBluetoothState(true) failed"); + } + } + } + + Result AccessoryPresenter::launchBluetoothSettings() + { + AutoAppCtrl appCtrl; + + FAIL_RETURN(util::getNz(app_control_create, appCtrl), + "app_control_create() failed!"); + + FAIL_RETURN(util::call(app_control_set_app_id, + appCtrl, "org.tizen.bluetooth"), + "app_control_set_app_id() failed!"); + + FAIL_RETURN(util::call(app_control_add_extra_data, + appCtrl, "launch-type", "call"), + "app_control_add_extra_data() failed!"); + + FAIL_RETURN(util::call(app_control_send_launch_request, + appCtrl, nullptr, nullptr), + "app_control_send_launch_request() failed!"); + + return RES_OK; + } + + Result AccessoryPresenter::launchContacts() + { + AutoAppCtrl appCtrl; + + FAIL_RETURN(util::getNz(app_control_create, appCtrl), + "app_control_create() failed!"); + + FAIL_RETURN(util::call(app_control_set_operation, + appCtrl, APP_CONTROL_OPERATION_ADD), + "app_control_set_app_id() failed!"); + + FAIL_RETURN(util::call(app_control_set_mime, + appCtrl, CU_APP_CONTROL_MIME_CONTACT), + "app_control_set_app_id() failed!"); + + FAIL_RETURN(util::call(app_control_add_extra_data, + appCtrl, APP_CONTROL_DATA_PHONE, m_unsavedPhoneNumber.c_str()), + "app_control_add_extra_data() failed!"); + + FAIL_RETURN(util::call(app_control_send_launch_request, + appCtrl, nullptr, nullptr), + "app_control_send_launch_request() failed!"); + + return RES_OK; + } + + void AccessoryPresenter::onAddContactBtnClicked(Widget &widget, void *eventInfo) + { + launchContacts(); + + if (m_exitHandler) { + m_exitHandler(); + } + } + void AccessoryPresenter::registerCallbacks() { addRotaryEventHandler(CALLBACK_A( @@ -400,6 +633,12 @@ namespace callui { m_slider->setMaxValue(maxVol); updateVolume(m_sm->getVolume()); + + if (m_bluetoothBtn) { + (m_audioState == AudioStateType::BT) ? + m_bluetoothBtn->emit(impl::SIGNAL_TURN_ON) : + m_bluetoothBtn->emit(impl::SIGNAL_TURN_OFF); + } } } @@ -430,12 +669,18 @@ namespace callui { void AccessoryPresenter::onMuteStateChanged(bool isMuted) { + if (!m_muteBtn) { + return; + } if (!elm_object_disabled_get(*m_muteBtn)) updateMuteBtn(isMuted); } void AccessoryPresenter::updateMuteBtn(bool isMuted) { + if (!m_muteBtn) { + return; + } isMuted ? m_muteBtn->emit(impl::SIGNAL_TURN_ON) : m_muteBtn->emit(impl::SIGNAL_TURN_OFF); } diff --git a/src/presenters/CallInfoPresenter.cpp b/src/presenters/CallInfoPresenter.cpp index ab1932b..09030ba 100644 --- a/src/presenters/CallInfoPresenter.cpp +++ b/src/presenters/CallInfoPresenter.cpp @@ -35,53 +35,60 @@ namespace callui { namespace { namespace impl { using namespace ucl; constexpr int SUB_TXT_WIDTH = 208; - constexpr int MAIN_TXT_WIDTH_SIMPLE = 208; - constexpr int MAIN_TXT_WIDTH_INCOM = 190; + constexpr int INCOM_MAIN_TXT_WIDTH = 190; constexpr int SLIDE_LABEL_DURATION_KOEFF = 8; + const char *CU_BIG_FONT_STYLE = "Tizen:style=Condensed"; + constexpr int CU_BIG_FONT_SIZE = 40; + constexpr LayoutTheme LAYOUT_CALLER_INFO_WIDGET {"layout", "callui", "call_info"}; constexpr ElmStyle STYLE_SLIDING_LABEL {"slide_roll"}; - constexpr EdjeSignal SIGN_EMERGENCY_MODE {"emergency"}; + constexpr EdjePart PART_TXT_MAIN {"text_1line"}; + constexpr EdjePart PART_SWL_CALLER_ID {"caller_id"}; + constexpr EdjePart PART_SWL_2LINE {"text_2line"}; constexpr EdjeSignal SIGN_RESET {"reset"}; - - constexpr EdjeSignal SIGN_CALLER_ID_DISABLE {"caller_id_disable"}; - constexpr EdjeSignal SIGN_CALLER_ID_ENABLE {"caller_id_enable"}; - - constexpr EdjeSignal SIGN_INCOM_1LINE {"incom_1line"}; - constexpr EdjeSignal SIGN_INCOM_2LINE {"incom_2line"}; - - constexpr EdjeSignal SIGN_1LINE {"1line"}; - constexpr EdjeSignal SIGN_1LINE_2TXT {"1line_2text"}; - constexpr EdjeSignal SIGN_2LINE {"2line"}; - constexpr EdjeSignal SIGN_2LINE_2TXT {"2line_2text"}; + constexpr EdjeSignal SIGN_DEFAULT {"default"}; + constexpr EdjeSignal SIGN_CID_ENABLE {"caller_id_enable"}; + constexpr EdjeSignal SIGN_CID_DISABLE {"caller_id_disable"}; + constexpr EdjeSignal SIGN_EMERGENCY {"emergency"}; + constexpr EdjeSignal SIGN_EMERGENCY_BIG_TXT {"big_txt_emergency"}; + constexpr EdjeSignal SIGN_BIG_TXT {"big_txt"}; + constexpr EdjeSignal SIGN_CENTRE_1LINE {"centre_1line"}; + constexpr EdjeSignal SIGN_CENTRE_2LINE {"centre_2line"}; + constexpr EdjeSignal SIGN_INCOMING {"incoming"}; constexpr EdjeSignalSrc SRC_TOP_PAD {"top_padding"}; constexpr EdjeSignalSrc SRC_TXT_1LINE {"text_1line"}; - + constexpr EdjeSignalSrc SRC_TXT_2LINE {"text_2line"}; constexpr EdjeSignalSrc SRC_CALLER_ID {"caller_id"}; - constexpr EdjePart PART_TXT_MAIN {"text_1line"}; + const TString STR_LABEL_SUB_CID_ENABLE{ + "%s" + ""}; - constexpr EdjePart PART_SWL_CALLER_ID {"caller_id"}; - constexpr EdjePart PART_SWL_2LINE {"text_2line"}; + const TString STR_LABEL_SUB_DEFAULT_STYLE{ + "%s" + ""}; - const TString STR_LABEL_CID_ENABLE{ - "%s"}; - const TString STR_LABEL_CID_DISABLE{ - "%s"}; + const TString STR_LABEL_SUB_ON_HOLD{ + "%s" + ""}; - int getTextBlockActualWidth(const Evas_Object *obj) + int getTextWidth(ElmWidget &parent, const char *fontStyle, + int fontSize, const std::string &text) { - if (!obj) { - LOG_RETURN_VALUE(RES_INVALID_ARGUMENTS, 0, "Evas object is NULL"); - } - int resWidth = 0; - evas_object_textblock_size_native_get(obj, &resWidth, NULL); - return resWidth; + auto eoText = evas_object_text_add(evas_object_evas_get(parent)); + evas_object_text_font_set(eoText, fontStyle, fontSize); + evas_object_text_style_set(eoText, EVAS_TEXT_STYLE_PLAIN); + evas_object_text_text_set(eoText, text.c_str()); + + auto size = evas_object_text_horiz_width_without_ellipsis_get(eoText); + evas_object_del(eoText); + return size; } }}} @@ -327,16 +334,20 @@ namespace callui { if (!eo) { LOG_RETURN(RES_FAIL, "elm_label_add() failed!"); } + + TString txtStyle = impl::STR_LABEL_SUB_DEFAULT_STYLE; + if (m_mode == CallMode::DURING) { + txtStyle = impl::STR_LABEL_SUB_ON_HOLD; + } else if (m_callerId) { + txtStyle = impl::STR_LABEL_SUB_CID_ENABLE; + } + m_label = makeShared(eo, true); m_label->setStyle(impl::STYLE_SLIDING_LABEL); - m_label->setText((m_callerId) ? - impl::STR_LABEL_CID_ENABLE.format(text.c_str()) : - impl::STR_LABEL_CID_DISABLE.format(text.c_str())); + m_label->setText(txtStyle.format(text.c_str())); - elm_label_slide_mode_set(*m_label, - ELM_LABEL_SLIDE_MODE_AUTO); - elm_label_wrap_width_set(*m_label, - ELM_SCALE_SIZE(impl::SUB_TXT_WIDTH)); + elm_label_slide_mode_set(*m_label,ELM_LABEL_SLIDE_MODE_AUTO); + elm_label_wrap_width_set(*m_label,ELM_SCALE_SIZE(impl::SUB_TXT_WIDTH)); double duration = (static_cast(text.size())) / impl::SLIDE_LABEL_DURATION_KOEFF; @@ -377,7 +388,7 @@ namespace callui { Result CallInfoPresenter::updateCallerId() { m_callerId.reset(); - m_widget->emit(impl::SIGN_CALLER_ID_DISABLE,impl::SRC_CALLER_ID); + m_widget->emit(impl::SIGN_CID_DISABLE,impl::SRC_CALLER_ID); if (m_mode == CallMode::INCOMING) { @@ -398,7 +409,7 @@ namespace callui { FAIL_RETURN(createCallerIdImage(callerIdPath), "createCallerIdImage() failed"); - m_widget->emit(impl::SIGN_CALLER_ID_ENABLE, impl::SRC_CALLER_ID); + m_widget->emit(impl::SIGN_CID_ENABLE, impl::SRC_CALLER_ID); } return RES_OK; @@ -435,6 +446,12 @@ namespace callui { FAIL_RETURN(createLabel(subTxt), "createLabel() failed"); } + if (m_mode == CallMode::INCOMING) { + m_widget->emit(impl::SIGN_INCOMING, impl::SRC_TXT_2LINE); + } else { + m_widget->emit(impl::SIGN_DEFAULT, impl::SRC_TXT_2LINE); + } + return RES_OK; } @@ -477,61 +494,53 @@ namespace callui { { m_widget->setText(text.c_str(), impl::PART_TXT_MAIN); - const Evas_Object *tempEo = edje_object_part_object_get( - elm_layout_edje_get(*m_widget), impl::PART_TXT_MAIN.name); - - if (tempEo) { - - int lineWidth = m_incomCallInfo ? - impl::MAIN_TXT_WIDTH_INCOM : - impl::MAIN_TXT_WIDTH_SIMPLE; - bool isMainTxtSingleLine = - (impl::getTextBlockActualWidth(tempEo) <= lineWidth); - - m_widget->emit(impl::SIGN_CALLER_ID_DISABLE, - impl::SRC_TXT_1LINE); - - if (info->isEmergency()) { - m_widget->emit(impl::SIGN_EMERGENCY_MODE, - impl::SRC_TXT_1LINE); + if (m_mode == CallMode::INCOMING) { + // Font size and color + if (m_callerId) { + m_widget->emit(impl::SIGN_CID_ENABLE, impl::SRC_TXT_1LINE); + } else { + m_widget->emit(impl::SIGN_CID_DISABLE, impl::SRC_TXT_1LINE); } - - if (m_mode == CallMode::INCOMING) { - if (m_callerId) { - m_widget->emit(impl::SIGN_CALLER_ID_ENABLE, - impl::SRC_TXT_1LINE); - } else { - m_widget->emit(impl::SIGN_CALLER_ID_DISABLE, - impl::SRC_TXT_1LINE); - } - if (isMainTxtSingleLine) { - m_widget->emit(impl::SIGN_INCOM_1LINE, - impl::SRC_TOP_PAD); + // Info text top padding + if (impl::getTextWidth(*m_widget, + impl::CU_BIG_FONT_STYLE, + impl::CU_BIG_FONT_SIZE, + text) <= impl::INCOM_MAIN_TXT_WIDTH) { + m_widget->emit(impl::SIGN_CENTRE_1LINE, impl::SRC_TOP_PAD); + } else { + m_widget->emit(impl::SIGN_CENTRE_2LINE, impl::SRC_TOP_PAD); + } + return; + } else if (m_mode == CallMode::END) { + if (info->isEmergency() + || info->getContactInfo() + || (info->getConferenceMemberCount() > 1)) { + // Font size and color + if (info->isEmergency()) { + m_widget->emit(impl::SIGN_EMERGENCY_BIG_TXT, impl::SRC_TXT_1LINE); } else { - m_widget->emit(impl::SIGN_INCOM_2LINE, - impl::SRC_TOP_PAD); + m_widget->emit(impl::SIGN_BIG_TXT, impl::SRC_TXT_1LINE); } - - } else { - if (isMainTxtSingleLine) { - if (m_isSubTxtEnable) { - m_widget->emit(impl::SIGN_1LINE_2TXT, - impl::SRC_TOP_PAD); - } else { - m_widget->emit(impl::SIGN_1LINE, - impl::SRC_TOP_PAD); - } + // Info text top padding + if (impl::getTextWidth(*m_widget, + impl::CU_BIG_FONT_STYLE, + impl::CU_BIG_FONT_SIZE, + text) <= impl::SUB_TXT_WIDTH) { + m_widget->emit(impl::SIGN_CENTRE_1LINE, impl::SRC_TOP_PAD); } else { - if (m_isSubTxtEnable) { - m_widget->emit(impl::SIGN_2LINE_2TXT, - impl::SRC_TOP_PAD); - } else { - m_widget->emit(impl::SIGN_2LINE, - impl::SRC_TOP_PAD); - } + m_widget->emit(impl::SIGN_CENTRE_2LINE, impl::SRC_TOP_PAD); } + return; } } + // Font size and color + if (info->isEmergency()) { + m_widget->emit(impl::SIGN_EMERGENCY, impl::SRC_TXT_1LINE); + } else { + m_widget->emit(impl::SIGN_DEFAULT, impl::SRC_TXT_1LINE); + } + // Info text top padding + m_widget->emit(impl::SIGN_DEFAULT, impl::SRC_TOP_PAD); } Result CallInfoPresenter::updateMainTxt() diff --git a/src/presenters/MainPage.cpp b/src/presenters/MainPage.cpp index dc6fce8..0ce8909 100644 --- a/src/presenters/MainPage.cpp +++ b/src/presenters/MainPage.cpp @@ -204,20 +204,24 @@ namespace callui { Result MainPage::processIncomingCallMode() { - auto incom = m_cm->getIncomingCall(); - if (!incom) { + m_bottomBtn.reset(); + m_moreOptionsPrs.reset(); + m_accessoryPrs.reset(); + + auto call = m_cm->getIncomingCall(); + if (!call) { LOG_RETURN(RES_FAIL, "incom is NULL"); } - auto provider = incom->getRejectMsgProvider(); + FAIL_RETURN(createAcceptRejectPresenter(), + "createAcceptRejectPresenter() failed!"); + + auto provider = call->getRejectMsgProvider(); if (!provider) { ELOG("Reject message provider is NULL"); } - FAIL_RETURN(createAcceptRejectPresenter(), - "createAcceptRejectPresenter() failed!"); - - if (!isUnknownCaller(*incom->getInfo()) + if (!isUnknownCaller(*call->getInfo()) && (provider && provider->getMsgCount() > 0)) { m_rmLy = Layout::Builder(). setTheme(impl::LAYOUT_REJECT_MSG_WIDGET). @@ -241,8 +245,11 @@ namespace callui { return RES_OK; } - void MainPage::resetIncomingCallMode() + Result MainPage::processEndCallMode() { + m_bottomBtn.reset(); + m_moreOptionsPrs.reset(); + m_rmPrs.reset(); m_acceptRejectPrs.reset(); m_rmLy.reset(); @@ -250,10 +257,25 @@ namespace callui { if (m_indicator) { m_indicator->udapteIncomingCallMode(false); } + + FAIL_RETURN(createAccessoryPresenter(), + "createAccessoryPresenter() failed"); + + startEndCallTimer(); + + return RES_OK; } Result MainPage::processRegularCallModes() { + m_rmPrs.reset(); + m_acceptRejectPrs.reset(); + m_rmLy.reset(); + + if (m_indicator) { + m_indicator->udapteIncomingCallMode(false); + } + FAIL_RETURN(createAccessoryPresenter(), "createAccessoryPresenter() failed"); FAIL_RETURN(createMoreOptionsPresenter(), @@ -264,13 +286,6 @@ namespace callui { return RES_OK; } - void MainPage::resetRegularCallModes() - { - m_bottomBtn.reset(); - m_accessoryPrs.reset(); - m_moreOptionsPrs.reset(); - } - void MainPage::updateCallMode() { auto incom = m_cm->getIncomingCall(); @@ -406,21 +421,22 @@ namespace callui { requestExit(); return; } + FAIL_RETURN_VOID(showWindow(), "showWindow failed!"); - if (m_mode == CallMode::INCOMING) { - resetRegularCallModes(); + switch (m_mode) { + case CallMode::INCOMING: FAIL_RETURN_VOID(processIncomingCallMode(), "processIncomingCall() failed!"); - } else { - resetIncomingCallMode(); - if (m_mode == CallMode::END) { - resetRegularCallModes(); - startEndCallTimer(); - } else { - FAIL_RETURN_VOID(processRegularCallModes(), - "processRegularCallModes() failed!"); - } + break; + case CallMode::END: + FAIL_RETURN_VOID(processEndCallMode(), + "processEndCallMode() failed!"); + break; + default: + FAIL_RETURN_VOID(processRegularCallModes(), + "processRegularCallModes() failed!"); + break; } FAIL_RETURN_VOID(createCallInfoPresenter(m_mode), @@ -506,18 +522,24 @@ namespace callui { return RES_OK; } + void MainPage::onExitAppRequest() + { + requestExit(); + } + Result MainPage::createAccessoryPresenter() { if (m_accessoryPrs) { ILOG("Already exists. No need to create new one. Just update."); - m_accessoryPrs->setMuteControlDisabled( - detectMuteControlDisableState()); + m_accessoryPrs->update(m_cm); return RES_OK; } m_accessoryPrs = AccessoryPresenter::Builder(). - setMuteControlDisabled(detectMuteControlDisableState()). setSoundManager(m_call->getSoundManager()). + setCallManager(m_cm). + setRequestExitHandler(WEAK_DELEGATE(MainPage::onExitAppRequest, + asWeak(*this))). setParentWidget(m_widget). build(*this); diff --git a/src/presenters/MoreOptionsPresenter.cpp b/src/presenters/MoreOptionsPresenter.cpp index bbb0e1c..6a98eac 100644 --- a/src/presenters/MoreOptionsPresenter.cpp +++ b/src/presenters/MoreOptionsPresenter.cpp @@ -48,20 +48,16 @@ namespace callui { namespace { namespace impl { constexpr ElmStyle STYLE_BTN_SWAP {"callui/swap"}; constexpr ElmStyle STYLE_BTN_UNHOLD {"callui/unhold"}; - constexpr ElmStyle STYLE_BTN_HEADSET {"callui/headset"}; - constexpr ElmStyle STYLE_BTN_PHONE {"callui/phone"}; constexpr ElmStyle STYLE_BTN_KEYPAD {"callui/keypad"}; - constexpr ElmStyle STYLE_BTN_GEAR {"callui/gear"}; - - constexpr EdjePart PART_SWL_PANEL_LY_TOP {"swl.top"}; - constexpr EdjePart PART_SWL_PANEL_LY_LEFT {"swl.left"}; - constexpr EdjePart PART_SWL_PANEL_LY_RIGHT {"swl.right"}; - constexpr EdjePart PART_SWL_PANEL_LY_BOTTOM {"swl.bottom"}; + constexpr EdjePart PART_SWL_SLOT1 {"swl.slot.1"}; + constexpr EdjePart PART_SWL_SLOT2 {"swl.slot.2"}; constexpr EdjePart PART_TXT_STATUS {"txt.status"}; - constexpr EdjeSignal SIGNAL_STATUS_TXT_BIG {"status_txt_big"}; - constexpr EdjeSignal SIGNAL_STATUS_TXT_SMALL {"status_txt_small"}; + constexpr EdjeSignal SIGNAL_ODD {"odd"}; + constexpr EdjeSignal SIGNAL_EVEN {"even"}; + + constexpr EdjeSignalSrc SIGNAL_SRC_MORE_OPTION {"more_option"}; }}} @@ -143,9 +139,6 @@ namespace callui { sendActivate(*m_widget); } - m_sm->removeAudioStateHandler(DELEGATE( - MoreOptionsPresenter::onAudioStateChanged, this)); - if (const auto keypad = m_keypad.lock()) { keypad->exitNoTransition(); } @@ -165,9 +158,6 @@ namespace callui { FAIL_RETURN(createButtons(), "createButtons() failed!"); - m_sm->addAudioStateHandler(DELEGATE( - MoreOptionsPresenter::onAudioStateChanged, this)); - update(); deactivateBy(m_widget.get()); @@ -177,11 +167,6 @@ namespace callui { return RES_OK; } - void MoreOptionsPresenter::onAudioStateChanged(AudioStateType state) - { - updateLeftSlot(); - } - Result MoreOptionsPresenter::createWidget(ElmWidget &parent) { m_widget = Layout::Builder(). @@ -235,56 +220,25 @@ namespace callui { void MoreOptionsPresenter::updateSlots() { - updateTopSlot(); - updateLeftSlot(); - updateRightSlot(); - updateBottomSlot(); - } + unsetPanelContent(impl::PART_SWL_SLOT1); + unsetPanelContent(impl::PART_SWL_SLOT2); - void MoreOptionsPresenter::updateTopSlot() - { auto active = m_cm->getActiveCall(); auto held = m_cm->getHeldCall(); - unsetPanelContent(impl::PART_SWL_PANEL_LY_TOP); - - if (active) { - if (held) { - setPanelContent(m_btnSwap, impl::PART_SWL_PANEL_LY_TOP); - } - } else if (held) { - setPanelContent(m_btnUnhold, impl::PART_SWL_PANEL_LY_TOP); - } else { - LOG_RETURN_VOID(RES_FAIL, "Undefined state"); - } - } - - void MoreOptionsPresenter::updateLeftSlot() - { - unsetPanelContent(impl::PART_SWL_PANEL_LY_LEFT); + if (held) { + m_panelLy->emit(impl::SIGNAL_EVEN, impl::SIGNAL_SRC_MORE_OPTION); - if (m_sm->getAudioState() != AudioStateType::BT) { - setPanelContent(m_btnHeadset, impl::PART_SWL_PANEL_LY_LEFT); - if (!m_sm->isBluetoothSupported()) { - disable(*m_btnHeadset); + if (active) { + setPanelContent(*m_btnSwap, impl::PART_SWL_SLOT1); + } else { + setPanelContent(*m_btnUnhold, impl::PART_SWL_SLOT1); } + setPanelContent(*m_btnKeypad, impl::PART_SWL_SLOT2); } else { - setPanelContent(m_btnGear, impl::PART_SWL_PANEL_LY_LEFT); - } - } + m_panelLy->emit(impl::SIGNAL_ODD, impl::SIGNAL_SRC_MORE_OPTION); - void MoreOptionsPresenter::updateRightSlot() - { - if (!m_panelLy->getContent(impl::PART_SWL_PANEL_LY_RIGHT)) { - setPanelContent(m_btnPhone, impl::PART_SWL_PANEL_LY_RIGHT); - disable(*m_btnPhone); - } - } - - void MoreOptionsPresenter::updateBottomSlot() - { - if (!m_panelLy->getContent(impl::PART_SWL_PANEL_LY_BOTTOM)) { - setPanelContent(m_btnKeypad, impl::PART_SWL_PANEL_LY_BOTTOM); + setPanelContent(*m_btnKeypad, impl::PART_SWL_SLOT1); } } @@ -306,22 +260,6 @@ namespace callui { LOG_RETURN(RES_FAIL, "Create Unhold button failed!"); } - // Headset - m_btnHeadset = createButton(impl::STYLE_BTN_HEADSET, STR_MORE_HEADSET, - WEAK_DELEGATE(MoreOptionsPresenter::onHeadsetBtnClick, - asWeak(*this))); - if (!m_btnHeadset) { - LOG_RETURN(RES_FAIL, "Create Headset button failed!"); - } - - // Phone - m_btnPhone = createButton(impl::STYLE_BTN_PHONE, STR_MORE_PHONE, - WEAK_DELEGATE(MoreOptionsPresenter::onPhoneBtnClick, - asWeak(*this))); - if (!m_btnPhone) { - LOG_RETURN(RES_FAIL, "Create Phone button failed!"); - } - // Keypad m_btnKeypad = createButton(impl::STYLE_BTN_KEYPAD, STR_MORE_KEYPAD, WEAK_DELEGATE(MoreOptionsPresenter::onKeypadBtnClick, @@ -330,14 +268,6 @@ namespace callui { LOG_RETURN(RES_FAIL, "Create Keypad button failed!"); } - // Gear - m_btnGear = createButton(impl::STYLE_BTN_GEAR, STR_MORE_GEAR, - WEAK_DELEGATE(MoreOptionsPresenter::onGearBtnClick, - asWeak(*this))); - if (!m_btnGear) { - LOG_RETURN(RES_FAIL, "Create Gear button failed!"); - } - return RES_OK; } @@ -359,24 +289,6 @@ namespace callui { FAIL_RETURN_VOID(held->unhold(), "unhold() failed"); } - void MoreOptionsPresenter::onHeadsetBtnClick(Widget &sender, void *eventInfo) - { - auto res = m_sm->setBluetoothState(true); - - if (res == RES_NOT_CONNECTED) { - FAIL_RETURN_VOID(launchBluetoothSettings(), - "launchBluetoothSettings() failed"); - } else { - FAIL_RETURN_VOID(res, - "setBluetoothState() failed"); - } - } - - void MoreOptionsPresenter::onPhoneBtnClick(Widget &sender, void *eventInfo) - { - ELOG("Not implemented"); - } - void MoreOptionsPresenter::onKeypadBtnClick(Widget &sender, void *eventInfo) { KeypadPage::Builder builder; @@ -397,11 +309,6 @@ namespace callui { page.exit(); } - void MoreOptionsPresenter::onGearBtnClick(Widget &sender, void *eventInfo) - { - FAIL_RETURN_VOID(m_sm->setBluetoothState(false),"setBluetoothState() failed"); - } - StyledWidgetSRef MoreOptionsPresenter::createButton( const ElmStyle &style, const TString &txt, @@ -473,11 +380,9 @@ namespace callui { if (held && !active) { m_panelLy->setText(STR_ON_HOLD, impl::PART_TXT_STATUS); - m_panelLy->emit(impl::SIGNAL_STATUS_TXT_BIG); } else if (active) { if (active->isDialingMode()) { m_panelLy->setText(STR_DIALING_CALL, impl::PART_TXT_STATUS); - m_panelLy->emit(impl::SIGNAL_STATUS_TXT_BIG); return; } auto info = active->getInfo(); @@ -487,7 +392,6 @@ namespace callui { m_info = info; m_duration = info->getDuration(); setCallDuration(m_duration, *m_panelLy, impl::PART_TXT_STATUS); - updateStatusFontSize(); FAIL_RETURN_VOID(startCallDurationTimer(), "startTimer() failed!"); @@ -496,15 +400,6 @@ namespace callui { } } - void MoreOptionsPresenter::updateStatusFontSize() - { - if (m_duration.tm_hour > 0) { - m_panelLy->emit(impl::SIGNAL_STATUS_TXT_SMALL); - } else { - m_panelLy->emit(impl::SIGNAL_STATUS_TXT_BIG); - } - } - Eina_Bool MoreOptionsPresenter::onCallDurationTimerCb() { const auto info = m_info.lock(); @@ -519,7 +414,6 @@ namespace callui { tmp, *m_panelLy, impl::PART_TXT_STATUS); - updateStatusFontSize(); return ECORE_CALLBACK_RENEW; } @@ -547,28 +441,6 @@ namespace callui { } } - Result MoreOptionsPresenter::launchBluetoothSettings() - { - AutoAppCtrl appCtrl; - - FAIL_RETURN(util::getNz(app_control_create, appCtrl), - "app_control_create() failed!"); - - FAIL_RETURN(util::call(app_control_set_app_id, - appCtrl, "org.tizen.bluetooth"), - "app_control_set_app_id() failed!"); - - FAIL_RETURN(util::call(app_control_add_extra_data, - appCtrl, "launch-type", "call"), - "app_control_add_extra_data() failed!"); - - FAIL_RETURN(util::call(app_control_send_launch_request, - appCtrl, nullptr, nullptr), - "app_control_send_launch_request() failed!"); - - return RES_OK; - } - void MoreOptionsPresenter::unsetPanelContent(const EdjePart &part) { auto *eo = m_panelLy->unsetContent(part); @@ -577,9 +449,9 @@ namespace callui { } } - void MoreOptionsPresenter::setPanelContent(StyledWidgetSRef &widget, const EdjePart &part) + void MoreOptionsPresenter::setPanelContent(StyledWidget &widget, const EdjePart &part) { - m_panelLy->setContent(*widget, part); - show(*widget); + m_panelLy->setContent(widget, part); + show(widget); } }