summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Kurzberg <i.kurtsberg@samsung.com>2017-02-21 10:42:12 +0200
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>2017-02-22 04:23:57 -0800
commit1aa462f718486a0f23c6b6d90c05462d1265d879 (patch)
tree2c1b193867e55c8bd18b2fb4d6f85ca54076f7a7
parente693b1ca5851040b14fbcb41520175fba4fa453c (diff)
downloadalarm-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.h4
-rw-r--r--alarm-app/res/alert/edje/AlertLayout.h36
-rw-r--r--alarm-app/res/alert/edje/alert-layout.edc8
-rw-r--r--alarm-app/src/Alert/AlertView.cpp64
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();