.package-stamp
.rds_delta
.sdk_delta.info
+.cproject
.sign/
.settings/
Debug/
Release/
SA_Report/
crash-info/
+.vscode/
#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 { \
} \
}
+#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")
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")
-/*
+ /*
* 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;
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
+}
#include "types.h"
+#include "model/ISoundManager.h"
+
namespace callui {
class KeypadPage final : public Page {
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;
};
}
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
return *this;
}
+ KeypadPage::Builder &KeypadPage::Builder::setSoundManager(const ISoundManagerSRef &sm)
+ {
+ m_sm = sm;
+ return *this;
+ }
+
KeypadPageSRef KeypadPage::Builder::build(
const ExitRequestHandler onExitRequest) const
{
"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)
{
// 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;
+ }
+ }
}
{
if (!m_panelLy->getContent(impl::PART_SWL_PANEL_LY_BOTTOM)) {
setPanelContent(m_btnKeypad, impl::PART_SWL_PANEL_LY_BOTTOM);
- disable(*m_btnKeypad);
}
}
} 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)