TizenRefApp-8677 [Call UI] Implement KeypadPage functionality 20/134920/13
authorIgor Kuksiuk <i.kuksiuk@partner.samsung.com>
Tue, 20 Jun 2017 08:43:26 +0000 (11:43 +0300)
committerIgor Olshevskyi <i.olshevskyi@samsung.com>
Fri, 23 Jun 2017 12:36:43 +0000 (15:36 +0300)
Change-Id: I81c8594f6a21f0c7a3a43fda49d93fbce212bfd6

21 files changed:
.gitignore
edc/buttons.edc
edc/images/numpad_btn_bg.png [new file with mode: 0644]
edc/images/numpad_btn_bg_bottom.png [new file with mode: 0644]
edc/images/privacy_lock_dial_extension_00.png [new file with mode: 0644]
edc/images/privacy_lock_dial_extension_01.png [new file with mode: 0644]
edc/images/privacy_lock_dial_extension_02.png [new file with mode: 0644]
edc/images/privacy_lock_dial_extension_03.png [new file with mode: 0644]
edc/images/privacy_lock_dial_extension_04.png [new file with mode: 0644]
edc/images/privacy_lock_dial_extension_05.png [new file with mode: 0644]
edc/images/privacy_lock_dial_extension_06.png [new file with mode: 0644]
edc/images/privacy_lock_dial_extension_07.png [new file with mode: 0644]
edc/images/privacy_lock_dial_extension_08.png [new file with mode: 0644]
edc/images/privacy_lock_dial_extension_09.png [new file with mode: 0644]
edc/images/privacy_lock_dial_extension_asterisk.png [new file with mode: 0644]
edc/images/privacy_lock_dial_extension_sharp.png [new file with mode: 0644]
edc/images/w_sip_3x4_btn_ic_on.png [new file with mode: 0644]
edc/keypad.edc
inc/presenters/KeypadPage.h
src/presenters/KeypadPage.cpp
src/presenters/MoreOptionsPresenter.cpp

index e2e9729f4dc4ccc1585ec0b8c65f4d9b9b2851c3..5827b40d427bfbfc46dfe7fde1e6aee8d0f98435 100644 (file)
@@ -2,9 +2,11 @@
 .package-stamp
 .rds_delta
 .sdk_delta.info
+.cproject
 .sign/
 .settings/
 Debug/
 Release/
 SA_Report/
 crash-info/
+.vscode/
index f20f2d78b54dec69a752e62e076ff72e64effd3d..298ab68f8ac6f90373d681d033be5777767a3b13 100644 (file)
 
 #define CU_BTN_MORE_OPT_TXT_SIZE            100 32
 
+#define CU_BTN_KEYPAD_H                     59
+#define CU_BTN_KEYPAD_LEFT_H                105
+#define CU_BTN_KEYPAD_CENTER_H              86
+#define CU_BTN_KEYPAD_RIGHT_H               80
+#define CU_BTN_KEYPAD_ZERO_H                192
+#define CU_BTN_KEYPAD_SPEAKER_H             166
+
+
 #define CU_BTN_INCOM_CALL(_name, _icon, _bg_cc, _effect_cc, _icon_norm_cc, _icon_pressed_cc) \
 group { "elm/button/base/"_name; \
        script { \
@@ -958,6 +966,168 @@ 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; \
+               parts { \
+                       image { "bg"; \
+                               scale; \
+                               desc { "default"; \
+                                       image.normal: "numpad_btn_bg.png"; \
+                                       color: 255 255 255 255; \
+                                       min: _size_x _size_y; \
+                                       max: _size_x _size_y; \
+                               } \
+                               desc { "press"; \
+                                       inherit: "default"; \
+                                       color: 255 255 255 127; \
+                               } \
+                       } \
+                       image { "img"; \
+                               scale; \
+                               desc { "default"; \
+                                       rel1 { relative: 0 0; to: "bg"; } \
+                                       rel2 { relative: 1 1; to: "bg"; } \
+                                       image.normal: _image; \
+                                       color: 255 255 255 255; \
+                               } \
+                       } \
+                       rect { "event"; \
+                               scale; \
+                               mouse; \
+                               desc { "default"; \
+                                       rel1 { relative: 0 0; to: "bg"; } \
+                                       rel2 { relative: 1 1; to: "bg"; } \
+                                       color: 0 0 0 0; \
+                               } \
+                               desc { "disabled"; \
+                                       inherit: "default"; \
+                                       hid; \
+                               } \
+                       } \
+               } \
+               programs { \
+                       program { "mouse_down"; \
+                               signal: "mouse_down"; \
+                               source: _button_name; \
+                               action: STATE_SET "press"; \
+                               target: "bg"; \
+                       } \
+                       program { "mouse_up"; \
+                               signal: "mouse_up"; \
+                               source: _button_name; \
+                               action: STATE_SET "default"; \
+                               target: "bg"; \
+                       } \
+                       program { "disable"; \
+                               signal: "elm,state,disabled"; \
+                               source: "elm"; \
+                               action: STATE_SET "disabled"; \
+                               target: "event"; \
+                       } \
+                       program { "enable"; \
+                               signal: "elm,state,enabled"; \
+                               source: "elm"; \
+                               action: STATE_SET "default"; \
+                               target: "event"; \
+                       } \
+                       program { "mouse_down_elm"; \
+                               signal: "mouse,down,1"; \
+                               source: "event"; \
+                               action: SIGNAL_EMIT "elm,action,press" ""; \
+                               after: "mouse_down"; \
+                       } \
+                       program { "mouse_up_elm"; \
+                               signal: "mouse,up,1"; \
+                               source: "event"; \
+                               action: SIGNAL_EMIT "elm,action,unpress" ""; \
+                               after: "mouse_up"; \
+                       } \
+               } \
+       }
+
+group { "elm/button/base/callui/keypad_speaker";
+       images.image: "numpad_btn_bg.png" COMP;
+       images.image: "w_sip_3x4_btn_ic_on.png" COMP;
+
+       parts {
+               image { "bg";
+                       scale;
+                       desc { "default";
+                               image.normal: "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;
+                       }
+                       desc { "press";
+                               inherit: "default";
+                               color: 255 255 255 127;
+                       }
+               }
+               image { "pic";
+                       scale;
+                       desc { "default";
+                               image.normal: "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;
+                       }
+               }
+               rect { "event";
+                       scale;
+                       mouse;
+                       desc { "default";
+                               rel1 { relative: 0 0; to: "bg"; }
+                               rel2 { relative: 1 1; to: "bg"; }
+                               color: 0 0 0 0;
+                       }
+                       desc { "disabled";
+                               inherit: "default";
+                               color: 0 0 0 255;
+                               hid;
+                       }
+               }
+       }
+       programs {
+               program { "mouse_down";
+                       signal: "mouse_down";
+                       source: "speaker_button";
+                       action: STATE_SET "press";
+                       target: "bg";
+               }
+               program { "mouse_up";
+                       signal: "mouse_up";
+                       source: "speaker_button";
+                       action: STATE_SET "default";
+                       target: "bg";
+               }
+               program { "disable";
+                       signal: "elm,state,disabled";
+                       source: "elm";
+                       action: STATE_SET "disabled";
+                       target: "event";
+               }
+               program { "enable";
+                       signal: "elm,state,enabled";
+                       source: "elm";
+                       action: STATE_SET "default";
+                       target: "event";
+               }
+               program { "mouse_down_elm";
+                       signal: "mouse,down,1";
+                       source: "event";
+                       action: SIGNAL_EMIT "elm,action,press" "";
+                       after: "mouse_down";
+               }
+               program { "mouse_up_elm";
+                       signal: "mouse,up,1";
+                       source: "event";
+                       action: SIGNAL_EMIT "elm,action,unpress" "";
+                       after: "mouse_up";
+               }
+       }
+}
 
 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")
@@ -977,3 +1147,39 @@ 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_KEYPAD("callui/keypad_one", CU_BTN_KEYPAD_LEFT_H, CU_BTN_KEYPAD_H,
+       "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_BTN_KEYPAD("callui/keypad_three", CU_BTN_KEYPAD_CENTER_H, CU_BTN_KEYPAD_H,
+       "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_BTN_KEYPAD("callui/keypad_five", CU_BTN_KEYPAD_CENTER_H, CU_BTN_KEYPAD_H,
+       "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_BTN_KEYPAD("callui/keypad_asterix", CU_BTN_KEYPAD_RIGHT_H, CU_BTN_KEYPAD_H,
+       "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_BTN_KEYPAD("callui/keypad_eight", CU_BTN_KEYPAD_CENTER_H, CU_BTN_KEYPAD_H,
+       "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_BTN_KEYPAD("callui/keypad_sharp", CU_BTN_KEYPAD_RIGHT_H, CU_BTN_KEYPAD_H,
+       "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")
diff --git a/edc/images/numpad_btn_bg.png b/edc/images/numpad_btn_bg.png
new file mode 100644 (file)
index 0000000..ea67bc4
Binary files /dev/null and b/edc/images/numpad_btn_bg.png differ
diff --git a/edc/images/numpad_btn_bg_bottom.png b/edc/images/numpad_btn_bg_bottom.png
new file mode 100644 (file)
index 0000000..e92ef65
Binary files /dev/null and b/edc/images/numpad_btn_bg_bottom.png differ
diff --git a/edc/images/privacy_lock_dial_extension_00.png b/edc/images/privacy_lock_dial_extension_00.png
new file mode 100644 (file)
index 0000000..fa87593
Binary files /dev/null and b/edc/images/privacy_lock_dial_extension_00.png differ
diff --git a/edc/images/privacy_lock_dial_extension_01.png b/edc/images/privacy_lock_dial_extension_01.png
new file mode 100644 (file)
index 0000000..116b098
Binary files /dev/null and b/edc/images/privacy_lock_dial_extension_01.png differ
diff --git a/edc/images/privacy_lock_dial_extension_02.png b/edc/images/privacy_lock_dial_extension_02.png
new file mode 100644 (file)
index 0000000..f9a8c0f
Binary files /dev/null and b/edc/images/privacy_lock_dial_extension_02.png differ
diff --git a/edc/images/privacy_lock_dial_extension_03.png b/edc/images/privacy_lock_dial_extension_03.png
new file mode 100644 (file)
index 0000000..c89e702
Binary files /dev/null and b/edc/images/privacy_lock_dial_extension_03.png differ
diff --git a/edc/images/privacy_lock_dial_extension_04.png b/edc/images/privacy_lock_dial_extension_04.png
new file mode 100644 (file)
index 0000000..d9c5e79
Binary files /dev/null and b/edc/images/privacy_lock_dial_extension_04.png differ
diff --git a/edc/images/privacy_lock_dial_extension_05.png b/edc/images/privacy_lock_dial_extension_05.png
new file mode 100644 (file)
index 0000000..b56e648
Binary files /dev/null and b/edc/images/privacy_lock_dial_extension_05.png differ
diff --git a/edc/images/privacy_lock_dial_extension_06.png b/edc/images/privacy_lock_dial_extension_06.png
new file mode 100644 (file)
index 0000000..d4ac293
Binary files /dev/null and b/edc/images/privacy_lock_dial_extension_06.png differ
diff --git a/edc/images/privacy_lock_dial_extension_07.png b/edc/images/privacy_lock_dial_extension_07.png
new file mode 100644 (file)
index 0000000..fa2b05c
Binary files /dev/null and b/edc/images/privacy_lock_dial_extension_07.png differ
diff --git a/edc/images/privacy_lock_dial_extension_08.png b/edc/images/privacy_lock_dial_extension_08.png
new file mode 100644 (file)
index 0000000..c12f3f8
Binary files /dev/null and b/edc/images/privacy_lock_dial_extension_08.png differ
diff --git a/edc/images/privacy_lock_dial_extension_09.png b/edc/images/privacy_lock_dial_extension_09.png
new file mode 100644 (file)
index 0000000..90fd0f6
Binary files /dev/null and b/edc/images/privacy_lock_dial_extension_09.png differ
diff --git a/edc/images/privacy_lock_dial_extension_asterisk.png b/edc/images/privacy_lock_dial_extension_asterisk.png
new file mode 100644 (file)
index 0000000..f6dbfaf
Binary files /dev/null and b/edc/images/privacy_lock_dial_extension_asterisk.png differ
diff --git a/edc/images/privacy_lock_dial_extension_sharp.png b/edc/images/privacy_lock_dial_extension_sharp.png
new file mode 100644 (file)
index 0000000..c334a0d
Binary files /dev/null and b/edc/images/privacy_lock_dial_extension_sharp.png differ
diff --git a/edc/images/w_sip_3x4_btn_ic_on.png b/edc/images/w_sip_3x4_btn_ic_on.png
new file mode 100644 (file)
index 0000000..ce44cd0
Binary files /dev/null and b/edc/images/w_sip_3x4_btn_ic_on.png differ
index 696b9886a5668c273401c3247d20396c0d361bbb..3dc5f07f274d82a3b6dcac477bdf27ec68ad64b6 100644 (file)
@@ -1,4 +1,4 @@
-/*
+ /*
  * Copyright 2017 Samsung Electronics Co., Ltd
  *
  * Licensed under the Flora License, Version 1.1 (the "License");
  * limitations under the License.
  */
 
+#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;
+
        parts {
                rect { "bg";
                        scale;
@@ -22,5 +27,248 @@ group { "elm/layout/callui/keypad";
                                color: 0 0 0 255;
                        }
                }
+               spacer { "label.bg.padding";
+                       scale;
+                       desc { "default";
+                               min: 0 71;
+                               max: -1 71;
+                               fixed: 0 1;
+                               align: 0.5 0.0;
+                       }
+               }
+               spacer { "label.bg";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 0.5 1.0; to: "label.bg.padding"; }
+                               rel2 { relative: 0.5 1.0; to: "label.bg.padding"; }
+                               min: 286 42;
+                               fixed: 1 1;
+                               align: 0.5 0.0;
+                       }
+               }
+               swallow { "swl.entry";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 0.0 0.0; to: "label.bg"; }
+                               rel2 { relative: 1.0 1.0; to: "label.bg"; }
+                               align: 1 0;
+                               fixed: 1 1;
+                       }
+               }
+               image { "numpad_btn_bg_bottom.bg";
+                       scale;
+                       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";
+                               color: 255 255 255 255;
+                               min: CU_WIN_W CU_WIN_H;
+                       }
+               }
+               swallow { "swl.one";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 0.0 CU_BTN_KEYPAD_PADDING_H/CU_WIN_H; to: "bg"; }
+                               min: CU_BTN_KEYPAD_LEFT_H CU_BTN_KEYPAD_H;
+                               max: CU_BTN_KEYPAD_LEFT_H CU_BTN_KEYPAD_H;
+                               align: 0.0 0.0;
+                       }
+               }
+               spacer { "sp.col1";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to: "swl.one"; }
+                               min: 1 CU_BTN_KEYPAD_H;
+                               max: 1 CU_BTN_KEYPAD_H;
+                               fixed: 1 1;
+                               align: 0.0 0.0;
+                       }
+               }
+               swallow { "swl.two";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to: "sp.col1"; }
+                               min: CU_BTN_KEYPAD_CENTER_H CU_BTN_KEYPAD_H;
+                               max: CU_BTN_KEYPAD_CENTER_H CU_BTN_KEYPAD_H;
+                               align: 0.0 0.0;
+                       }
+               }
+               spacer { "sp.col2";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to: "swl.two"; }
+                               min: 1 CU_BTN_KEYPAD_H;
+                               max: 1 CU_BTN_KEYPAD_H;
+                               fixed: 1 1;
+                               align: 0.0 0.0;
+                       }
+               }
+               swallow { "swl.three";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to: "sp.col2"; }
+                               min: CU_BTN_KEYPAD_CENTER_H CU_BTN_KEYPAD_H;
+                               max: CU_BTN_KEYPAD_CENTER_H CU_BTN_KEYPAD_H;
+                               align: 0.0 0.0;
+                       }
+               }
+               spacer { "sp.col3";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to: "swl.three"; }
+                               min: 1 CU_BTN_KEYPAD_H;
+                               max: 1 CU_BTN_KEYPAD_H;
+                               fixed: 1 1;
+                               align: 0.0 0.0;
+                       }
+               }
+               image { "dummy_button.bg";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to: "sp.col3"; }
+                               image.normal: "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;
+                               align: 0.0 0.0;
+                       }
+               }
+               spacer { "sp.row2";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 0.0 1.0; to: "swl.one"; }
+                               min: 1 1;
+                               max: -1 1;
+                               fixed: 1 1;
+                               align: 0.5 0.0;
+                       }
+               }
+               swallow { "swl.four";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 0.0 1.0; to: "sp.row2"; }
+                               min: CU_BTN_KEYPAD_LEFT_H CU_BTN_KEYPAD_H;
+                               max: CU_BTN_KEYPAD_LEFT_H CU_BTN_KEYPAD_H;
+                               align: 0.0 0.0;
+                       }
+               }
+               swallow { "swl.five";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to_x: "swl.two"; }
+                               rel1 { relative: 0.0 1.0; to_y: "sp.row2"; }
+                               min: CU_BTN_KEYPAD_CENTER_H CU_BTN_KEYPAD_H;
+                               max: CU_BTN_KEYPAD_CENTER_H CU_BTN_KEYPAD_H;
+                               align: 0.0 0.0;
+                       }
+               }
+               swallow { "swl.six";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to_x: "swl.three"; }
+                               rel1 { relative: 0.0 1.0; to_y: "sp.row2"; }
+                               min: CU_BTN_KEYPAD_CENTER_H CU_BTN_KEYPAD_H;
+                               max: CU_BTN_KEYPAD_CENTER_H CU_BTN_KEYPAD_H;
+                               align: 0.0 0.0;
+                       }
+               }
+               swallow { "swl.asterix";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to_x: "dummy_button.bg"; }
+                               rel1 { relative: 0.0 1.0; to_y: "sp.row2"; }
+                               min: CU_BTN_KEYPAD_RIGHT_H CU_BTN_KEYPAD_H;
+                               max: CU_BTN_KEYPAD_RIGHT_H CU_BTN_KEYPAD_H;
+                               align: 0.0 0.0;
+                       }
+               }
+               spacer { "sp.row3";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 0.0 1.0; to: "swl.four"; }
+                               min: 1 1;
+                               max: -1 1;
+                               fixed: 1 1;
+                               align: 0.5 0.0;
+                       }
+               }
+               swallow { "swl.seven";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to_x: "swl.four"; }
+                               rel1 { relative: 0.0 1.0; to_y: "sp.row3"; }
+                               min: CU_BTN_KEYPAD_LEFT_H CU_BTN_KEYPAD_H;
+                               max: CU_BTN_KEYPAD_LEFT_H CU_BTN_KEYPAD_H;
+                               align: 0.0 0.0;
+                       }
+               }
+               swallow { "swl.eight";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to_x: "swl.five"; }
+                               rel1 { relative: 0.0 1.0; to_y: "sp.row3"; }
+                               min: CU_BTN_KEYPAD_CENTER_H CU_BTN_KEYPAD_H;
+                               max: CU_BTN_KEYPAD_CENTER_H CU_BTN_KEYPAD_H;
+                               align: 0.0 0.0;
+                       }
+               }
+               swallow { "swl.nine";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to_x: "swl.six"; }
+                               rel1 { relative: 0.0 1.0; to_y: "sp.row3"; }
+                               min: CU_BTN_KEYPAD_CENTER_H CU_BTN_KEYPAD_H;
+                               max: CU_BTN_KEYPAD_CENTER_H CU_BTN_KEYPAD_H;
+                               align: 0.0 0.0;
+                       }
+               }
+               swallow { "swl.sharp";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to_x: "swl.asterix"; }
+                               rel1 { relative: 0.0 1.0; to_y: "sp.row3"; }
+                               min: CU_BTN_KEYPAD_RIGHT_H CU_BTN_KEYPAD_H;
+                               max: CU_BTN_KEYPAD_RIGHT_H CU_BTN_KEYPAD_H;
+                               align: 0.0 0.0;
+                       }
+               }
+               spacer { "sp.row4";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 0.0 1.0; to: "swl.seven"; }
+                               min: 1 1;
+                               max: -1 1;
+                               fixed: 1 1;
+                               align: 0.5 0.0;
+                       }
+               }
+               swallow { "swl.zero";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 0.0 1.0; to: "sp.row4"; }
+                               min: CU_BTN_KEYPAD_ZERO_H CU_BTN_KEYPAD_H;
+                               max: CU_BTN_KEYPAD_ZERO_H CU_BTN_KEYPAD_H;
+                               align: 0.0 0.0;
+                       }
+               }
+               spacer { "sp.zero";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to: "swl.zero"; }
+                               min: 1 CU_BTN_KEYPAD_H;
+                               max: 1 CU_BTN_KEYPAD_H;
+                               fixed: 1 1;
+                               align: 0.0 0.0;
+                       }
+               }
+               swallow { "swl.speaker";
+                       scale;
+                       desc { "default";
+                               rel1 { relative: 1.0 0.0; to: "sp.zero"; }
+                               min: CU_BTN_KEYPAD_SPEAKER_H CU_BTN_KEYPAD_H;
+                               max: CU_BTN_KEYPAD_SPEAKER_H CU_BTN_KEYPAD_H;
+                               align: 0.0 0.0;
+                       }
+               }
        }
-}
\ No newline at end of file
+}
index c00eb23586716fb9bafb5e51da049cd1654d5963..e5618131e535ef62118868eda168fef691f495de 100644 (file)
@@ -24,6 +24,8 @@
 
 #include "types.h"
 
+#include "model/ISoundManager.h"
+
 namespace callui {
 
        class KeypadPage final : public Page {
@@ -33,22 +35,42 @@ namespace callui {
                        Builder();
                        ~Builder();
                        Builder &setNaviframe(const ucl::NaviframeSRef &navi);
+                       Builder &setSoundManager(const ISoundManagerSRef &sm);
                        KeypadPageSRef build(const ExitRequestHandler onExitRequest) const;
                private:
+                       ISoundManagerSRef m_sm;
                        ucl::NaviframeSRef m_navi;
                };
 
        private:
                friend class ucl::ReffedObj<KeypadPage>;
                KeypadPage(ucl::IRefCountObj &rc,
+                               const ISoundManagerSRef &sm,
                                const ucl::NaviframeSRef &navi,
                                const ExitRequestHandler onExitRequest);
                virtual ~KeypadPage();
 
                ucl::Result doPrepare(ucl::NaviItem &item);
 
+               void onBtnPressed(ucl::Widget &widget, void *eventInfo);
+               void onBtnUnpressed(ucl::Widget &widget, void *eventInfo);
+
+               ucl::Result createWidget();
+               ucl::Result createEntry();
+               ucl::Result createButtons();
+
+               //sound manager-> play dtmf for digit
+               void startDtmf(const unsigned char digit);
+               //sound manager-> stop dtmf if still playing
+               void stopDtmf();
+
        private:
                ucl::LayoutSRef m_widget;
+               ucl::ElmWidgetSRef m_entry;
+
+               //sound manager usage
+               ISoundManagerSRef m_sm;
+               bool m_smInUse;
        };
 }
 
index e1460b3408362dfba71bea3ccd608badf17e1538..c88d26f7b57c4af897b852a1d285d06c022f9d6b 100644 (file)
@@ -25,10 +25,61 @@ namespace callui { namespace { namespace impl {
        constexpr LayoutTheme LAYOUT_KEYPAD_WIDGET
                {"layout", "callui", "keypad"};
 
+       constexpr EdjePart PART_SWL_ENTRY {"swl.entry"};
+
+       constexpr SmartEvent BTN_PRESSED {"pressed"};
+       constexpr SmartEvent BTN_UNPRESSED {"unpressed"};
+
+       constexpr EoDataKey BTN_DATA_KEY {"btnData"};
+
+       enum {
+               KEYPAD_BTN_MAX_COUNT = 13
+       };
+
+       enum class OperationType {
+               DTMF,
+               VOLUME
+       };
+
+       struct ButtonInfo {
+               OperationType type;
+               const char *str;
+               ElmStyle style;
+               EdjePart swlPart;
+       };
+
+       static ButtonInfo buttonsInfo[KEYPAD_BTN_MAX_COUNT] =
+       {
+               { OperationType::DTMF, "1",
+                       ElmStyle {"callui/keypad_one"}, EdjePart {"swl.one"} },
+               { OperationType::DTMF, "2",
+                       ElmStyle {"callui/keypad_two"}, EdjePart {"swl.two"} },
+               { OperationType::DTMF, "3",
+                       ElmStyle {"callui/keypad_three"}, EdjePart {"swl.three"} },
+               { OperationType::DTMF, "4",
+                       ElmStyle {"callui/keypad_four"}, EdjePart {"swl.four"} },
+               { OperationType::DTMF, "5",
+                       ElmStyle {"callui/keypad_five"}, EdjePart {"swl.five"} },
+               { OperationType::DTMF, "6",
+                       ElmStyle {"callui/keypad_six"}, EdjePart {"swl.six"} },
+               { OperationType::DTMF, "7",
+                       ElmStyle {"callui/keypad_seven"}, EdjePart {"swl.seven"} },
+               { OperationType::DTMF, "8",
+                       ElmStyle {"callui/keypad_eight"}, EdjePart {"swl.eight"} },
+               { OperationType::DTMF, "9",
+                       ElmStyle {"callui/keypad_nine"}, EdjePart {"swl.nine"} },
+               { OperationType::DTMF, "0",
+                       ElmStyle {"callui/keypad_zero"}, EdjePart {"swl.zero"} },
+               { OperationType::DTMF, "#",
+                       ElmStyle {"callui/keypad_sharp"}, EdjePart {"swl.sharp"} },
+               { OperationType::DTMF, "*",
+                       ElmStyle {"callui/keypad_asterix"}, EdjePart {"swl.asterix"} },
+               { OperationType::VOLUME, "",
+                       ElmStyle {"callui/keypad_speaker"}, EdjePart {"swl.speaker"} }
+       };
 }}}
 
 namespace callui {
-
        using namespace ucl;
 
        // KeypadPage::Builder
@@ -48,6 +99,12 @@ namespace callui {
                return *this;
        }
 
+       KeypadPage::Builder &KeypadPage::Builder::setSoundManager(const ISoundManagerSRef &sm)
+       {
+               m_sm = sm;
+               return *this;
+       }
+
        KeypadPageSRef KeypadPage::Builder::build(
                        const ExitRequestHandler onExitRequest) const
        {
@@ -60,7 +117,7 @@ namespace callui {
                                        "m_navi is NULL");
                }
 
-               auto result = makeShared<KeypadPage>(m_navi, onExitRequest);
+               auto result = makeShared<KeypadPage>(m_sm, m_navi, onExitRequest);
 
                FAIL_RETURN_VALUE(result->prepare([&result](NaviItem &item)
                                {
@@ -74,31 +131,141 @@ namespace callui {
        // KeypadPage
 
        KeypadPage::KeypadPage(IRefCountObj &rc,
+                       const ISoundManagerSRef &sm,
                        const NaviframeSRef &navi,
                        const ExitRequestHandler onExitRequest):
-               Page(rc, navi, onExitRequest)
+               Page(rc, navi, onExitRequest),
+               m_sm(sm),
+               m_smInUse(false)
        {
        }
 
        KeypadPage::~KeypadPage()
        {
+               stopDtmf();
+       }
+
+       void KeypadPage::onBtnPressed(Widget &widget, void *eventInfo)
+       {
+               impl::ButtonInfo *btn = static_cast<impl::ButtonInfo*>(widget.getData(impl::BTN_DATA_KEY));
+               ILOG("button pressed: %c", btn->str);
+
+               if (btn->type == impl::OperationType::DTMF) {
+                       elm_entry_entry_append(*m_entry, btn->str);
+                       elm_entry_cursor_end_set(*m_entry);
+                       startDtmf(*(btn->str));
+               }
+
+               if (btn->type == impl::OperationType::VOLUME) {
+                       //volume control
+               }
+       }
+
+       void KeypadPage::onBtnUnpressed(Widget &widget, void *eventInfo)
+       {
+               impl::ButtonInfo *btn = static_cast<impl::ButtonInfo*>(widget.getData(impl::BTN_DATA_KEY));
+               ILOG("button unpressed: %c", btn->str);
+               stopDtmf();
        }
 
        Result KeypadPage::doPrepare(NaviItem &item)
+       {
+               FAIL_RETURN(createWidget(), "createWidget() failed!");
+
+               FAIL_RETURN(createEntry(), "createEntry() failed!");
+
+               FAIL_RETURN(createButtons(), "createButtons() failed!");
+
+               item = getNaviframe().push(*m_widget);
+               if (!item) {
+                       LOG_RETURN(RES_FAIL, "Naviframe::push() failed!");
+               }
+
+               return RES_OK;
+       }
+
+       Result KeypadPage::createWidget()
        {
                m_widget = Layout::Builder().
                                setTheme(impl::LAYOUT_KEYPAD_WIDGET).
                                setIsOwner(true).
                                build(getNaviframe());
+
                if (!m_widget) {
                        LOG_RETURN(RES_FAIL, "Layout::build() failed!");
                }
 
-               item = getNaviframe().push(*m_widget);
-               if (!item) {
-                       LOG_RETURN(RES_FAIL, "Naviframe::push() failed!");
+               return RES_OK;
+       }
+
+       ucl::Result KeypadPage::createEntry()
+       {
+               Evas_Object *entry = elm_entry_add(*m_widget);
+               if(!entry) {
+                       LOG_RETURN(RES_FAIL, "elm_entry_add() failed!");
+               }
+               m_entry = makeShared<ElmWidget>(entry, true);
+
+               static Elm_Entry_Filter_Accept_Set digitsFilterData;
+
+               digitsFilterData.accepted = "0123456789*#";
+               digitsFilterData.rejected = nullptr;
+
+               elm_entry_single_line_set(entry, EINA_TRUE);
+               elm_entry_editable_set(entry, EINA_FALSE);
+               elm_entry_scrollable_set(entry, EINA_TRUE);
+               elm_entry_markup_filter_append(entry,
+                               elm_entry_filter_accept_set, &digitsFilterData);
+
+               m_widget->setContent(entry, impl::PART_SWL_ENTRY);
+               show(*m_entry);
+
+               return RES_OK;
+       }
+
+       ucl::Result KeypadPage::createButtons()
+       {
+               Evas_Object *button;
+               StyledWidgetSRef buttonSRef;
+
+               for (int i = 0; i < impl::KEYPAD_BTN_MAX_COUNT; ++i) {
+                       button = elm_button_add(*m_widget);
+
+                       if(!button) {
+                               LOG_RETURN(RES_FAIL, "elm_button_add() failed!");
+                       }
+
+                       buttonSRef = makeShared<StyledWidget>(button);
+                       buttonSRef->setData(impl::BTN_DATA_KEY, &(impl::buttonsInfo[i]));
+                       buttonSRef->setStyle(impl::buttonsInfo[i].style);
+
+                       buttonSRef->addEventHandler(impl::BTN_PRESSED,
+                                       WEAK_DELEGATE(KeypadPage::onBtnPressed,
+                                                       asWeak(*this)));
+
+                       buttonSRef->addEventHandler(impl::BTN_UNPRESSED,
+                                       WEAK_DELEGATE(KeypadPage::onBtnUnpressed,
+                                                       asWeak(*this)));
+
+                       m_widget->setContent(button, impl::buttonsInfo[i].swlPart);
+                       show(*buttonSRef);
                }
+
                return RES_OK;
        }
 
+       void KeypadPage::startDtmf(const unsigned char digit)
+       {
+               stopDtmf();
+               m_smInUse = true;
+               m_sm->startDtmf(digit);
+       }
+
+       void KeypadPage::stopDtmf()
+       {
+               if(m_smInUse) {
+                       m_sm->stopDtmf();
+                       m_smInUse = false;
+               }
+       }
 }
index 91b3ee6dea21e851310cf2c287438d88199271dd..60ce2014cada07931e271771a775b1a523088a1e 100644 (file)
@@ -285,7 +285,6 @@ namespace callui {
        {
                if (!m_panelLy->getContent(impl::PART_SWL_PANEL_LY_BOTTOM)) {
                        setPanelContent(m_btnKeypad, impl::PART_SWL_PANEL_LY_BOTTOM);
-                       disable(*m_btnKeypad);
                }
        }
 
@@ -386,9 +385,10 @@ namespace callui {
                } else {
                        LOG_RETURN_VOID(RES_FAIL, "Naviframe is NULL");
                }
-               m_keypad = builder.build(
-                               WEAK_DELEGATE(MoreOptionsPresenter::onPageExitRequest,
-                                               asWeak(this)));
+               m_keypad = builder.setSoundManager(m_sm)
+                       .build(WEAK_DELEGATE(
+                                       MoreOptionsPresenter::onPageExitRequest,
+                                       asWeak(*this)));
        }
 
        void MoreOptionsPresenter::onPageExitRequest(Page &page)