#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"; }
}
}
}
* 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
}
-#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; \
} \
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"; \
} \
} \
} \
+ 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,*"; \
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"; \
} \
} \
}
#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 { \
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"; \
#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; \
}
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;
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;
}
}
-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")
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 {
rel2 { relative: 1.0 1.0; to: "bg"; }
color_class: TRANSPARENT;
}
- desc { "incoming";
+ desc { "main_text_big";
inherit: "default";
color_class: AO0242;
}
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;
desc { "photo";
inherit: "default";
text {
- style: "call_status_with_photo";
+ style: "call_status_photo";
min: 1 0;
}
}
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;
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;
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;
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";
color: 0 0 0 0;
}
}
-
rect { "event";
mouse;
scale;
}
}
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);
}
}
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 {
* 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; \
} \
}
-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")
#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";
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;
}
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;
* 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";
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";
}
}
}
#include "ucl/gui/Layout.h"
#include "ucl/gui/StyledWidget.h"
+#include <app_control.h>
+
#include "types.h"
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:
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>;
- 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();
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;
};
}
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;
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);
ucl::Result createIndicatorPresenter();
ucl::Result createDisplayPresenter();
+ void onExitAppRequest();
+
// Page
virtual void onBackKey() final override;
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);
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);
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;
TOP_PRIORITY
};
+ using AccessoryBtnMask = int;
+
UCL_DECLARE_REF_ALIASES(Page);
UCL_DECLARE_REF_ALIASES(MainPage);
#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;
#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;
{"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"};
using namespace ucl;
- AccessoryPresenter::Builder::Builder():
- m_isMuteControlDisabled(false)
+ AccessoryPresenter::Builder::Builder()
{
}
}
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;
}
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<AccessoryPresenter>(m_sm);
- FAIL_RETURN_VALUE(result->prepare(parent, *m_parentWidget, m_isMuteControlDisabled),
+ auto result = makeShared<AccessoryPresenter>(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)
{
}
}
Result AccessoryPresenter::prepare(GuiPresenter &parent,
- ElmWidget &parentWidget,
- bool isMuteControlDisabled)
+ ElmWidget &parentWidget, const ICallManagerSRef &cm)
{
FAIL_RETURN(GuiPresenter::prepare(parent), "Presenter::prepare() failed");
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)
if (!m_slider) {
LOG_RETURN(RES_FAIL, "Slider::build() failed");
}
-
m_widget->setContent(*m_slider, impl::PART_SWL_VOLUME_SLIDER);
return RES_OK;
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;
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<StyledWidget>(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<StyledWidget>(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()) {
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(
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);
+ }
}
}
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);
}
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{
+ "<align=center><color=#ffffff99><font_size=24>%s"
+ "</color></font_size></align>"};
- constexpr EdjePart PART_SWL_CALLER_ID {"caller_id"};
- constexpr EdjePart PART_SWL_2LINE {"text_2line"};
+ const TString STR_LABEL_SUB_DEFAULT_STYLE{
+ "<align=center><color=#ffffff99><font_size=24>%s"
+ "</color></font_size></align>"};
- const TString STR_LABEL_CID_ENABLE{
- "<align=center><color=#ffffff99><font_size=24>%s</color></font_size></align>"};
- const TString STR_LABEL_CID_DISABLE{
- "<align=center><color=#ffffff99><font_size=24>%s</color></font_size></align>"};
+ const TString STR_LABEL_SUB_ON_HOLD{
+ "<align=center><color=#4dcfffff><font_size=24>%s"
+ "</color></font_size></align>"};
- 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;
}
}}}
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<StyledWidget>(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<double>(text.size())) /
impl::SLIDE_LABEL_DURATION_KOEFF;
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) {
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;
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;
}
{
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()
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).
return RES_OK;
}
- void MainPage::resetIncomingCallMode()
+ Result MainPage::processEndCallMode()
{
+ m_bottomBtn.reset();
+ m_moreOptionsPrs.reset();
+
m_rmPrs.reset();
m_acceptRejectPrs.reset();
m_rmLy.reset();
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(),
return RES_OK;
}
- void MainPage::resetRegularCallModes()
- {
- m_bottomBtn.reset();
- m_accessoryPrs.reset();
- m_moreOptionsPrs.reset();
- }
-
void MainPage::updateCallMode()
{
auto incom = m_cm->getIncomingCall();
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),
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);
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"};
}}}
sendActivate(*m_widget);
}
- m_sm->removeAudioStateHandler(DELEGATE(
- MoreOptionsPresenter::onAudioStateChanged, this));
-
if (const auto keypad = m_keypad.lock()) {
keypad->exitNoTransition();
}
FAIL_RETURN(createButtons(), "createButtons() failed!");
- m_sm->addAudioStateHandler(DELEGATE(
- MoreOptionsPresenter::onAudioStateChanged, this));
-
update();
deactivateBy(m_widget.get());
return RES_OK;
}
- void MoreOptionsPresenter::onAudioStateChanged(AudioStateType state)
- {
- updateLeftSlot();
- }
-
Result MoreOptionsPresenter::createWidget(ElmWidget &parent)
{
m_widget = Layout::Builder().
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);
}
}
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,
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;
}
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;
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,
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();
m_info = info;
m_duration = info->getDuration();
setCallDuration(m_duration, *m_panelLy, impl::PART_TXT_STATUS);
- updateStatusFontSize();
FAIL_RETURN_VOID(startCallDurationTimer(), "startTimer() failed!");
}
}
- 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();
tmp,
*m_panelLy,
impl::PART_TXT_STATUS);
- updateStatusFontSize();
return ECORE_CALLBACK_RENEW;
}
}
}
- 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);
}
}
- 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);
}
}