#pragma once
#include <Elementary.h>
+#include <efl_extension.h>
#include <exception/Exception.h>
#include "Po.h"
: PopupCheck(parent, msg)
{}
~PopupCheckWearable() {}
-
+ static Eina_Bool rotaryChangedCb(void *data, Evas_Object *, Eext_Rotary_Event_Info *info) {
+ Evas_Object *scroller = (Evas_Object *)data;
+ Evas_Coord sx, sy, sw, sh, y, h;
+ elm_scroller_region_get(scroller, &sx, &sy, &sw, &sh);
+ evas_object_geometry_get(scroller, NULL, &y, NULL, &h);
+
+ if (info->direction == EEXT_ROTARY_DIRECTION_CLOCKWISE) {
+ if (sy + (sh/2) <= y + sh + h)
+ elm_scroller_region_bring_in(scroller, sx, sy+(sh/2), sw, sh);
+ else if (sy < y + sh + h)
+ elm_scroller_region_bring_in(scroller, sx, y + sh + h, sw, sh);
+ } else {
+ if (sy - (sh/2) >= 0)
+ elm_scroller_region_bring_in(scroller, sx, sy-(sh/2), sw, sh);
+ else if (sy > 0)
+ elm_scroller_region_bring_in(scroller, sx, 0, sw, sh);
+ }
+ return EINA_TRUE;
+ }
virtual void create() {
elm_object_style_set(m_popup, "circle");
elm_object_part_text_set(m_layout, "elm.text.title", Po::getPopupTitleMsg().c_str());
elm_object_content_set(m_popup, m_layout);
- m_layoutInner = elm_layout_add(m_layout);
+ m_scroller = elm_scroller_add(m_layout);
+ elm_scroller_policy_set(m_scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+ evas_object_size_hint_weight_set(m_scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(m_scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_object_part_content_set(m_layout, "elm.swallow.content", m_scroller);
+
+ m_layoutInner = elm_layout_add(m_scroller);
if (m_layoutInner == nullptr) {
ALOGE("EFL : Failed to add layout");
throw Exception("Enlightenment failed");
}
elm_layout_file_set(m_layoutInner, RES_DIR"/popup_custom.edj", "popup_checkview_internal");
evas_object_size_hint_weight_set(m_layoutInner, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_part_content_set(m_layout, "elm.swallow.content", m_layoutInner);
+ elm_object_content_set(m_scroller, m_layoutInner);
+
+ eext_rotary_object_event_callback_add(m_scroller, rotaryChangedCb, m_scroller);
+ eext_rotary_object_event_activated_set(m_scroller, EINA_TRUE);
m_content = elm_label_add(m_layoutInner);
if (m_content == nullptr) {
Evas_Object *m_content = nullptr;
Evas_Object *m_layout = nullptr;
Evas_Object *m_layoutInner = nullptr;
+ Evas_Object *m_scroller = nullptr;
};
} /* namespace Notification */