evas_object_del(data);
}
+static void
+_popup_dismiss_btn_cb(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ elm_popup_dismiss(data);
+}
+
static void
_popup_align_cb(void *data, Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
elm_object_focus_set(btn, EINA_TRUE);
}
+static void
+_popup_center_title_text_1button_hide_effect_cb(void *data, Evas_Object *obj EINA_UNUSED,
+ void *event_info EINA_UNUSED)
+{
+ Evas_Object *popup;
+ Evas_Object *btn;
+
+ popup = elm_popup_add(data);
+ elm_popup_scrollable_set(popup, is_popup_scroll);
+
+ // popup text
+ elm_object_text_set(popup, "This Popup has title area, content area and "
+ "action area set, action area has one button Close");
+ // popup title
+ elm_object_part_text_set(popup, "title,text", "Title");
+
+ // popup buttons
+ btn = elm_button_add(popup);
+ elm_object_text_set(btn, "Close");
+ elm_object_part_content_set(popup, "button1", btn);
+ evas_object_smart_callback_add(popup, "dismissed", _response_cb, NULL);
+ evas_object_smart_callback_add(btn, "clicked", _popup_dismiss_btn_cb, popup);
+
+ // popup show should be called after adding all the contents and the buttons
+ // of popup to set the focus into popup's contents correctly.
+ evas_object_show(popup);
+}
+
static void
_focus_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
{
elm_list_item_append(list, "popup with content only",
NULL, NULL, _popup_content_only_cb,
win);
+ elm_list_item_append(list, "popup-center-title + text + 1 button + hide effect", NULL,
+ NULL, _popup_center_title_text_1button_hide_effect_cb, win);
elm_list_go(list);
evas_object_show(list);
_timeout_cb(void *data, Eo *obj EINA_UNUSED,
const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED);
+static Eina_Bool
+_hide_effect_finished_cb(void *data, Eo *obj EINA_UNUSED,
+ const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED);
+
static const Elm_Action key_actions[] = {
{"move", _key_action_move},
{NULL, NULL}
EO_CALLBACKS_ARRAY_DEFINE(_notify_cb,
{ ELM_NOTIFY_EVENT_BLOCK_CLICKED, _block_clicked_cb },
- { ELM_NOTIFY_EVENT_TIMEOUT, _timeout_cb }
+ { ELM_NOTIFY_EVENT_TIMEOUT, _timeout_cb },
+ { ELM_NOTIFY_EVENT_DISMISSED, _hide_effect_finished_cb }
);
static void _on_content_del(void *data, Evas *e, Evas_Object *obj, void *event_info);
return EINA_TRUE;
}
+static Eina_Bool
+_hide_effect_finished_cb(void *data,
+ Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ eo_do(data, eo_event_callback_call(ELM_POPUP_EVENT_DISMISSED, NULL));
+
+ return EINA_TRUE;
+}
+
+
static Evas_Object *
_access_object_get(const Evas_Object *obj, const char* part)
{
return pd->scroll;
}
+EOLIAN static void
+_elm_popup_dismiss(Eo *obj EINA_UNUSED, Elm_Popup_Data *pd)
+{
+ elm_layout_signal_emit(pd->main_layout, "elm,state,hide", "elm");
+ elm_notify_dismiss(pd->notify);
+}
+
static void
_elm_popup_class_constructor(Eo_Class *klass)
{
sd->had_hidden = EINA_TRUE;
evas_object_hide(sd->notify);
if (!sd->allow_events) evas_object_hide(sd->block_events);
+ eo_do_super(data, MY_CLASS, evas_obj_smart_hide());
+ eo_do(data, eo_event_callback_call(ELM_NOTIFY_EVENT_DISMISSED, NULL));
}
EOLIAN static void
_calc(obj);
}
+EOLIAN static void
+_elm_notify_dismiss(Eo *obj EINA_UNUSED, Elm_Notify_Data *sd)
+{
+ elm_layout_signal_emit(sd->block_events, "elm,state,hide", "elm");
+ edje_object_signal_emit(sd->notify, "elm,state,hide", "elm");
+}
+
+
EOLIAN static void
_elm_notify_align_get(Eo *obj EINA_UNUSED, Elm_Notify_Data *sd, double *horizontal, double *vertical)
{
timeout: double; [[The timeout in seconds]]
}
}
+ dismiss {
+ [[Dismiss a notify object.]]
+ }
}
implements {
class.constructor;
events {
block,clicked;
timeout;
+ dismissed;
}
}
@in data: const(void)* @optional; [[Data passed to $func above.]]
}
}
+ dismiss {
+ [[Dismiss a Popup object.]]
+ }
}
implements {
class.constructor;
item,unfocused;
language,changed;
access,changed;
+ dismissed;
}
}