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);
#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 */
#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;
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;
}
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)
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)
{
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) {
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();