diff options
author | Eugene Kurzberg <i.kurtsberg@samsung.com> | 2017-02-21 10:42:12 +0200 |
---|---|---|
committer | Gerrit Code Review <gerrit@review.vlan103.tizen.org> | 2017-02-22 04:23:57 -0800 |
commit | 1aa462f718486a0f23c6b6d90c05462d1265d879 (patch) | |
tree | 2c1b193867e55c8bd18b2fb4d6f85ca54076f7a7 | |
parent | e693b1ca5851040b14fbcb41520175fba4fa453c (diff) | |
download | alarm-1aa462f718486a0f23c6b6d90c05462d1265d879.tar.gz alarm-1aa462f718486a0f23c6b6d90c05462d1265d879.tar.bz2 alarm-1aa462f718486a0f23c6b6d90c05462d1265d879.zip |
TizenRefApp-8028 Implement Snooze functionality in the Alert
Change-Id: I95dbd21930087711c31857f43360267620a81572
Signed-off-by: Eugene Kurzberg <i.kurtsberg@samsung.com>
-rw-r--r-- | alarm-app/inc/Alert/AlertView.h | 4 | ||||
-rw-r--r-- | alarm-app/res/alert/edje/AlertLayout.h | 36 | ||||
-rw-r--r-- | alarm-app/res/alert/edje/alert-layout.edc | 8 | ||||
-rw-r--r-- | alarm-app/src/Alert/AlertView.cpp | 64 |
4 files changed, 83 insertions, 29 deletions
diff --git a/alarm-app/inc/Alert/AlertView.h b/alarm-app/inc/Alert/AlertView.h index 76f0085..4e64834 100644 --- a/alarm-app/inc/Alert/AlertView.h +++ b/alarm-app/inc/Alert/AlertView.h @@ -40,11 +40,15 @@ namespace Alert virtual Evas_Object *onCreate(Evas_Object *parent) override; virtual void onNavigation(bool isCurrent) override; virtual void onPageAttached(Ui::NavigatorPage *page) override; + virtual bool onBackPressed() override; Evas_Object *createButton(Evas_Object *parent, const char *iconPath, Elm_Color_RGBA color, const char *pressSignal, const char *unpressSignal); + Evas_Object *createDismissButton(Evas_Object *parent); + Evas_Object *createSnoozeButton(Evas_Object *parent); Eina_Bool onRotaryEvent(Evas_Object *obj, Eext_Rotary_Event_Info *eventInfo); + void onCancel(); void onDismissClicked(Evas_Object *button, void *eventInfo); void onSnoozeClicked(Evas_Object *button, void *eventInfo); static void onButtonPressed(const char *signal, Evas_Object *button, void *eventInfo); diff --git a/alarm-app/res/alert/edje/AlertLayout.h b/alarm-app/res/alert/edje/AlertLayout.h index 27cf050..8f4fb65 100644 --- a/alarm-app/res/alert/edje/AlertLayout.h +++ b/alarm-app/res/alert/edje/AlertLayout.h @@ -19,25 +19,31 @@ #include "AlertPath.h" -#define LAYOUT_ALERT "alert" -#define PART_TIME "text.time" -#define PART_ORIG_TIME "text.orig_time" -#define PART_BUTTON_DISMISS "swallow.button_dismiss" -#define PART_BUTTON_SNOOZE "swallow.button_snooze" +#define LAYOUT_ALERT "alert" +#define PART_TIME "text.time" +#define PART_ORIG_TIME "text.orig_time" +#define PART_BUTTON_DISMISS "swallow.button_dismiss" +#define PART_BUTTON_SNOOZE "swallow.button_snooze" -#define SIGNAL_BUTTON_PRESS "state,pressed" -#define SIGNAL_BUTTON_UNPRESS "state,unpressed" +#define COLOR_CLASS_DISMISS_VISIBLE "dismiss_visible" +#define COLOR_CLASS_DISMISS_HIDDEN "dismiss_hidden" -#define SIGNAL_DISMISS_SHOW "state,dismiss,default" -#define SIGNAL_DISMISS_HIDE "state,dismiss,hidden" +#define COLOR_CLASS_SNOOZE_VISIBLE "snooze_visible" +#define COLOR_CLASS_SNOOZE_HIDDEN "snooze_hidden" -#define SIGNAL_SNOOZE_SHOW "state,snooze,default" -#define SIGNAL_SNOOZE_HIDE "state,snooze,hidden" +#define SIGNAL_BUTTON_PRESS "state,pressed" +#define SIGNAL_BUTTON_UNPRESS "state,unpressed" -#define TIME_TEXT_SIZE 30 -#define ORIG_TIME_TEXT_SIZE 22 +#define SIGNAL_DISMISS_SHOW "state,dismiss,default" +#define SIGNAL_DISMISS_HIDE "state,dismiss,hidden" -#define COLOR_BUTTON_DISMISS 222, 11, 0, 255 -#define COLOR_BUTTON_SNOOZE 255, 208, 0, 255 +#define SIGNAL_SNOOZE_SHOW "state,snooze,default" +#define SIGNAL_SNOOZE_HIDE "state,snooze,hidden" + +#define TIME_TEXT_SIZE 30 +#define ORIG_TIME_TEXT_SIZE 22 + +#define COLOR_BUTTON_DISMISS 222, 11, 0 +#define COLOR_BUTTON_SNOOZE 255, 208, 0 #endif /* ALERT_LAYOUT_H */ diff --git a/alarm-app/res/alert/edje/alert-layout.edc b/alarm-app/res/alert/edje/alert-layout.edc index b2af5cc..253577b 100644 --- a/alarm-app/res/alert/edje/alert-layout.edc +++ b/alarm-app/res/alert/edje/alert-layout.edc @@ -124,22 +124,22 @@ collections { desc { "default"; rel1 { to_x: "image.arrow4_left"; to_y: "image.arrow1_left"; } rel2 { to_x: "image.arrow1_left"; to_y: "image.arrow4_left"; } - color: 222 11 0 255; + color_class: "layout/"LAYOUT_ALERT"/"COLOR_CLASS_DISMISS_VISIBLE; } desc { "hidden"; inherit: "default"; - color: 222 11 0 0; + color_class: "layout/"LAYOUT_ALERT"/"COLOR_CLASS_DISMISS_HIDDEN; } } rect { "rect.arrows_right.clipper"; desc { "default"; rel1.to: "image.arrow1_right"; rel2.to: "image.arrow4_right"; - color: 255 208 0 255; + color_class: "layout/"LAYOUT_ALERT"/"COLOR_CLASS_SNOOZE_VISIBLE; } desc { "hidden"; inherit: "default"; - color: 255 208 0 0; + color_class: "layout/"LAYOUT_ALERT"/"COLOR_CLASS_SNOOZE_HIDDEN; } } spacer { "spacer.left"; scale; diff --git a/alarm-app/src/Alert/AlertView.cpp b/alarm-app/src/Alert/AlertView.cpp index 6ecc380..1129403 100644 --- a/alarm-app/src/Alert/AlertView.cpp +++ b/alarm-app/src/Alert/AlertView.cpp @@ -19,9 +19,12 @@ #include "Common/Model/AlarmConsumer.h" #include "App/Path.h" +#include "Ui/Window.h" #include "Utils/Callback.h" #include "AlertLayout.h" +#define SNOOZE_MAX_COUNT 3 + using namespace Alert; using namespace Common; using namespace Common::Model; @@ -44,17 +47,19 @@ Evas_Object *AlertView::onCreate(Evas_Object *parent) elm_object_part_text_set(layout, PART_TIME, formatTime(m_Alarm.getDate(), TIME_TEXT_SIZE)); } - m_DismissButton = createButton(layout, PATH_ICON_DISMISS, { COLOR_BUTTON_DISMISS }, - SIGNAL_SNOOZE_HIDE, SIGNAL_SNOOZE_SHOW); - elm_object_part_content_set(layout, PART_BUTTON_DISMISS, m_DismissButton); - evas_object_smart_callback_add(m_DismissButton, "clicked", - makeCallback(&AlertView::onDismissClicked), this); + elm_object_part_content_set(layout, PART_BUTTON_DISMISS, createDismissButton(layout)); + if (m_Alarm.getSnoozeCount() < SNOOZE_MAX_COUNT) { + elm_object_part_content_set(layout, PART_BUTTON_SNOOZE, createSnoozeButton(layout)); + } - m_SnoozeButton = createButton(layout, PATH_ICON_SNOOZE, { COLOR_BUTTON_SNOOZE }, - SIGNAL_DISMISS_HIDE, SIGNAL_DISMISS_SHOW); - elm_object_part_content_set(layout, PART_BUTTON_SNOOZE, m_SnoozeButton); - evas_object_smart_callback_add(m_SnoozeButton, "clicked", - makeCallback(&AlertView::onSnoozeClicked), this); + elm_object_color_class_color_set(layout, COLOR_CLASS_DISMISS_VISIBLE, + COLOR_BUTTON_DISMISS, m_DismissButton ? 255 : 0); + elm_object_color_class_color_set(layout, COLOR_CLASS_DISMISS_HIDDEN, + COLOR_BUTTON_DISMISS, 0); + elm_object_color_class_color_set(layout, COLOR_CLASS_SNOOZE_VISIBLE, + COLOR_BUTTON_SNOOZE, m_SnoozeButton ? 255 : 0); + elm_object_color_class_color_set(layout, COLOR_CLASS_SNOOZE_HIDDEN, + COLOR_BUTTON_SNOOZE, 0); return layout; } @@ -62,6 +67,9 @@ Evas_Object *AlertView::onCreate(Evas_Object *parent) void AlertView::onNavigation(bool isCurrent) { eext_rotary_object_event_activated_set(getEvasObject(), isCurrent); + if (!isCurrent && !elm_win_focus_get(findParent<Ui::Window>()->getEvasObject())) { + onCancel(); + } } void AlertView::onPageAttached(Ui::NavigatorPage *page) @@ -69,6 +77,12 @@ void AlertView::onPageAttached(Ui::NavigatorPage *page) page->setStyle("empty"); } +bool AlertView::onBackPressed() +{ + onCancel(); + return false; +} + Evas_Object *AlertView::createButton(Evas_Object *parent, const char *iconPath, Elm_Color_RGBA color, const char *pressSignal, const char *unpressSignal) { @@ -91,6 +105,24 @@ Evas_Object *AlertView::createButton(Evas_Object *parent, const char *iconPath, return button; } +Evas_Object *AlertView::createDismissButton(Evas_Object *parent) +{ + m_DismissButton = createButton(parent, PATH_ICON_DISMISS, { COLOR_BUTTON_DISMISS, 255 }, + SIGNAL_SNOOZE_HIDE, SIGNAL_SNOOZE_SHOW); + evas_object_smart_callback_add(m_DismissButton, "clicked", + makeCallback(&AlertView::onDismissClicked), this); + return m_DismissButton; +} + +Evas_Object *AlertView::createSnoozeButton(Evas_Object *parent) +{ + m_SnoozeButton = createButton(parent, PATH_ICON_SNOOZE, { COLOR_BUTTON_SNOOZE, 255 }, + SIGNAL_DISMISS_HIDE, SIGNAL_DISMISS_SHOW); + evas_object_smart_callback_add(m_SnoozeButton, "clicked", + makeCallback(&AlertView::onSnoozeClicked), this); + return m_SnoozeButton; +} + Eina_Bool AlertView::onRotaryEvent(Evas_Object *obj, Eext_Rotary_Event_Info *eventInfo) { if (eventInfo->direction == EEXT_ROTARY_DIRECTION_CLOCKWISE) { @@ -103,12 +135,24 @@ Eina_Bool AlertView::onRotaryEvent(Evas_Object *obj, Eext_Rotary_Event_Info *eve return EINA_TRUE; } +void AlertView::onCancel() +{ + if (m_Alarm.getSnoozeCount() < SNOOZE_MAX_COUNT) { + m_Alarm.snooze(); + } else { + m_Alarm.dismiss(); + } + AlarmConsumer::getInstance().updateAlarm(m_Alarm, nullptr); + getPage()->close(); +} + void AlertView::onDismissClicked(Evas_Object *button, void *eventInfo) { m_Alarm.dismiss(); AlarmConsumer::getInstance().updateAlarm(m_Alarm, nullptr); getPage()->close(); } + void AlertView::onSnoozeClicked(Evas_Object *button, void *eventInfo) { m_Alarm.snooze(); |