From b9a037ea154a14b53ebe8200574d29f72d7e7a89 Mon Sep 17 00:00:00 2001 From: Olliver Schinagl Date: Fri, 19 Jun 2015 13:29:09 +0200 Subject: Add widget handling and exporting to checkboxes Signed-off-by: Olliver Schinagl --- src/eulogium_item_list.c | 16 +++++++++++++--- src/eulogium_item_list.h | 1 + 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/eulogium_item_list.c b/src/eulogium_item_list.c index de0f270..98cb461 100644 --- a/src/eulogium_item_list.c +++ b/src/eulogium_item_list.c @@ -10,10 +10,10 @@ #include #include +#include "eulogium_item_list.h" #include "eulogium_private.h" #include "gettext.h" -#include "eulogium_item_list.h" Evas_Object *eulogium_item_list_add(Evas_Object *parent) { @@ -31,6 +31,13 @@ Evas_Object *eulogium_item_list_add(Evas_Object *parent) return list; } +static void _item_destroy_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Evas_Object **_widget = data; + + *_widget = NULL; +} + static Evas_Object *_item_new(Evas_Object *parent, Evas_Object *icon, char const *label, struct list_item *item, Evas_Smart_Cb func, const void *data) { @@ -41,7 +48,6 @@ static Evas_Object *_item_new(Evas_Object *parent, Evas_Object *icon, char const if (!item) /* If no button type is passed (file-list for ex.) use the default 'button' entry */ item = &dummy; - switch (item->type) { case LIST_ITEM_RADIO: it = elm_radio_add(parent); @@ -49,7 +55,7 @@ static Evas_Object *_item_new(Evas_Object *parent, Evas_Object *icon, char const /* elm_object_style_set(it, "list"); */ case LIST_ITEM_CHECK: it = elm_check_add(parent); - /* elm_check_pointer_set(it, &item->value); */ + elm_check_state_pointer_set(it, &item->state); /* elm_object_style_set(it, "list"); */ break; case LIST_ITEM_BUTTON: @@ -71,6 +77,10 @@ static Evas_Object *_item_new(Evas_Object *parent, Evas_Object *icon, char const evas_object_size_hint_weight_set(it, EVAS_HINT_EXPAND, 0); evas_object_size_hint_align_set(it, EVAS_HINT_FILL, 0); evas_object_show(it); + item->_widget = it; + evas_object_event_callback_add(it, EVAS_CALLBACK_DEL, _item_destroy_cb, &item->_widget); + if (evas_alloc_error() != EVAS_ALLOC_ERROR_NONE) + EINA_LOG_CRIT("Callback registering failed! Problems ensured!\n"); return it; } diff --git a/src/eulogium_item_list.h b/src/eulogium_item_list.h index 84168a5..77e40d8 100644 --- a/src/eulogium_item_list.h +++ b/src/eulogium_item_list.h @@ -24,6 +24,7 @@ struct list_item { Eina_Bool state; int value; }; + Evas_Object *_widget; }; Evas_Object *eulogium_item_list_add(Evas_Object *parent); -- cgit v0.12