summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorOlliver Schinagl <o.schinagl@ultimaker.com>2015-06-16 06:41:03 (GMT)
committerOlliver Schinagl <o.schinagl@ultimaker.com>2015-06-16 06:41:03 (GMT)
commit00a7149100b41db93f4a10e91ae8fd88c988fc11 (patch)
treecf28781372195882e61fd32cd61a73cfe1088c56 /src
parentb592886761be60f58dbde84abe3b16d384bc6ba8 (diff)
downloadeulogium-00a7149100b41db93f4a10e91ae8fd88c988fc11.zip
eulogium-00a7149100b41db93f4a10e91ae8fd88c988fc11.tar.gz
eulogium-00a7149100b41db93f4a10e91ae8fd88c988fc11.tar.bz2
[griffin.hmi] define buttons, checkboxes and radio button for internal list widget
Signed-off-by: Olliver Schinagl <o.schinagl@ultimaker.com>
Diffstat (limited to 'src')
-rw-r--r--src/eulogium_item_list.c100
-rw-r--r--src/eulogium_item_list.h20
2 files changed, 78 insertions, 42 deletions
diff --git a/src/eulogium_item_list.c b/src/eulogium_item_list.c
index 7522634..de0f270 100644
--- a/src/eulogium_item_list.c
+++ b/src/eulogium_item_list.c
@@ -32,109 +32,131 @@ Evas_Object *eulogium_item_list_add(Evas_Object *parent)
}
static Evas_Object *_item_new(Evas_Object *parent, Evas_Object *icon, char const *label,
- Eina_Bool *check, Evas_Smart_Cb func, const void *data)
+ struct list_item *item, Evas_Smart_Cb func, const void *data)
{
- Evas_Object *item;
-
- if (check) {
- item = elm_check_add(parent);
- /* elm_check_pointer_set(item, check); */
- /* elm_object_style_set(item, "list"); */
- } else {
- item = elm_button_add(parent);
- elm_object_style_set(item, "list");
+ Evas_Object *it;
+ const char *cb = "changed";
+ struct list_item dummy = {.type = LIST_ITEM_BUTTON};
+
+ 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);
+ /* elm_radio_pointer_set(it, &item->state); */
+ /* elm_object_style_set(it, "list"); */
+ case LIST_ITEM_CHECK:
+ it = elm_check_add(parent);
+ /* elm_check_pointer_set(it, &item->value); */
+ /* elm_object_style_set(it, "list"); */
+ break;
+ case LIST_ITEM_BUTTON:
+ cb = "clicked";
+ it = elm_button_add(parent);
+ elm_object_style_set(it, "list");
+ break;
+ default:
+ return NULL;
}
if (label)
- elm_object_text_set(item, _(label));
+ elm_object_text_set(it, _(label));
if (icon)
- elm_object_part_content_set(item, "icon", icon);
+ elm_object_part_content_set(it, "icon", icon);
if (data)
- evas_object_data_set(item, "sort_data", data);
+ evas_object_data_set(it, "sort_data", data);
if (func)
- evas_object_smart_callback_add(item, check ? "changed" : "clicked", func, data);
- evas_object_size_hint_weight_set(item, EVAS_HINT_EXPAND, 0);
- evas_object_size_hint_align_set(item, EVAS_HINT_FILL, 0);
- evas_object_show(item);
+ evas_object_smart_callback_add(it, cb, func, data);
+ 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);
- return item;
+ return it;
}
Evas_Object *eulogium_item_list_prepend(Evas_Object *list, Evas_Object *icon,
- char const *label, Eina_Bool *check,
+ char const *label, struct list_item *item,
Evas_Smart_Cb func, const void *data)
{
Evas_Object *box = evas_object_data_get(list, "content");
Eina_List *l = evas_object_data_get(list, "eulogium_item_list");
- Evas_Object *item;
+ Evas_Object *it;
if ((!box) && (!list))
return NULL;
- item = _item_new(box, icon, label, check, func, data);
+ it = _item_new(box, icon, label, item, func, data);
+ if (!it)
+ return NULL;
if (l)
- l = eina_list_prepend(l, item);
+ l = eina_list_prepend(l, it);
else
- l = eina_list_prepend(NULL, item);
+ l = eina_list_prepend(NULL, it);
evas_object_data_set(list, "eulogium_item_list", l);
- return item;
+ return it;
}
Evas_Object *eulogium_item_list_append(Evas_Object *list, Evas_Object *icon,
- char const *label, Eina_Bool *check,
+ char const *label, struct list_item *item,
Evas_Smart_Cb func, const void *data)
{
Evas_Object *box = evas_object_data_get(list, "content");
Eina_List *l = evas_object_data_get(list, "eulogium_item_list");
- Evas_Object *item;
+ Evas_Object *it;
if ((!box) && (!list))
return NULL;
- item = _item_new(box, icon, label, check, func, data);
+ it = _item_new(box, icon, label, item, func, data);
+ if (!it)
+ return NULL;
if (l)
- l = eina_list_append(l, item);
+ l = eina_list_append(l, it);
else
- l = eina_list_append(NULL, item);
+ l = eina_list_append(NULL, it);
evas_object_data_set(list, "eulogium_item_list", l);
- return item;
+ return it;
}
Evas_Object *eulogium_item_list_sorted_insert(Evas_Object *list, Evas_Object *icon,
- char const *label, Eina_Bool *check,
+ char const *label, struct list_item *item,
Evas_Smart_Cb func, const void *data,
Eina_Compare_Cb cmp_func)
{
Evas_Object *box = evas_object_data_get(list, "content");
Eina_List *l = evas_object_data_get(list, "eulogium_item_list");
- Evas_Object *item;
+ Evas_Object *it;
if ((!box) && (!list))
return NULL;
- item = _item_new(box, icon, label, check, func, data);
+ it = _item_new(box, icon, label, item, func, data);
+ if (!it)
+ return NULL;
if (l)
- l = eina_list_sorted_insert(l, cmp_func, item);
+ l = eina_list_sorted_insert(l, cmp_func, it);
else
- l = eina_list_sorted_insert(NULL, cmp_func, item);
+ l = eina_list_sorted_insert(NULL, cmp_func, it);
evas_object_data_set(list, "eulogium_item_list", l);
- return item;
+ return it;
}
void eulogium_item_list_go(Evas_Object *list)
{
Evas_Object *box = evas_object_data_get(list, "content");
Eina_List *l, *item_list = evas_object_data_get(list, "eulogium_item_list");
- Evas_Object *item;
+ Evas_Object *it;
if ((!box) && (!list))
return;
- EINA_LIST_FOREACH(item_list, l, item)
- elm_box_pack_end(box, item);
+ EINA_LIST_FOREACH(item_list, l, it)
+ elm_box_pack_end(box, it);
}
diff --git a/src/eulogium_item_list.h b/src/eulogium_item_list.h
index 182b053..84168a5 100644
--- a/src/eulogium_item_list.h
+++ b/src/eulogium_item_list.h
@@ -12,15 +12,29 @@
#include <Elementary.h>
+enum item_type {
+ LIST_ITEM_BUTTON,
+ LIST_ITEM_CHECK,
+ LIST_ITEM_RADIO,
+};
+
+struct list_item {
+ enum item_type type;
+ union {
+ Eina_Bool state;
+ int value;
+ };
+};
+
Evas_Object *eulogium_item_list_add(Evas_Object *parent);
Evas_Object *eulogium_item_list_prepend(Evas_Object *list, Evas_Object *icon,
- char const *label, Eina_Bool *check,
+ char const *label, struct list_item *item,
Evas_Smart_Cb func, const void *data);
Evas_Object *eulogium_item_list_append(Evas_Object *list, Evas_Object *icon,
- char const *label, Eina_Bool *check,
+ char const *label, struct list_item *item,
Evas_Smart_Cb func, const void *data);
Evas_Object *eulogium_item_list_sorted_insert(Evas_Object *list, Evas_Object *icon,
- char const *label, Eina_Bool *check,
+ char const *label, struct list_item *item,
Evas_Smart_Cb func, const void *data,
Eina_Compare_Cb cmp_func);
void eulogium_item_list_go(Evas_Object *list);