summaryrefslogtreecommitdiffstats
path: root/src/eulogium.c
diff options
context:
space:
mode:
authorOlliver Schinagl <o.schinagl@ultimaker.com>2015-06-09 08:55:19 (GMT)
committerOlliver Schinagl <o.schinagl@ultimaker.com>2015-06-12 05:30:15 (GMT)
commit1b5dfeceb5bde0eba7e2e7767980ce292ce5b1a8 (patch)
treef6972ab3b29c7c075d00d41142b2d64a41d25608 /src/eulogium.c
parentaae7b5859a07cb737f311a6be39f1c6dc3bf5004 (diff)
downloadeulogium-1b5dfeceb5bde0eba7e2e7767980ce292ce5b1a8.zip
eulogium-1b5dfeceb5bde0eba7e2e7767980ce292ce5b1a8.tar.gz
eulogium-1b5dfeceb5bde0eba7e2e7767980ce292ce5b1a8.tar.bz2
Hack to add checkboxes to menu entries, this needs to be re-written to properly set the end-component of the button
Signed-off-by: Olliver Schinagl <o.schinagl@ultimaker.com>
Diffstat (limited to 'src/eulogium.c')
-rw-r--r--src/eulogium.c87
1 files changed, 67 insertions, 20 deletions
diff --git a/src/eulogium.c b/src/eulogium.c
index ae9f999..ddd860b 100644
--- a/src/eulogium.c
+++ b/src/eulogium.c
@@ -473,7 +473,7 @@ static struct menu_def menu_settings_network = {
}, {
.icon = NULL,
.label = "WiFi",
- .end = NULL,
+ .end = EINA_TRUE,
.footer = NULL,
.footer_alt = NULL,
.func = NULL,
@@ -1586,97 +1586,137 @@ Evas_Object *eulogium_button_list_add(Evas_Object *parent)
return list;
}
+Evas_Object *_eulogium_item_new(Evas_Object *obj, const char *label, Evas_Object *icon,
+ Evas_Object *end, Evas_Smart_Cb func, const void *data)
+{
+ return obj;
+}
+
Evas_Object *eulogium_button_list_prepend(Evas_Object *list, const char *label, Evas_Object *icon,
- Evas_Smart_Cb func, const void *data)
+ Evas_Object *end, 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_list");
+ Evas_Object *item;
Evas_Object *button;
if ((!box) && (!list))
return NULL;
- button = elm_button_add(box);
+ item = elm_box_add(box);
+ elm_box_horizontal_set(item, EINA_TRUE);
+
+ button = elm_button_add(item);
+ elm_box_pack_start(item, button);
if (label)
elm_object_text_set(button, _(label));
if (icon)
elm_object_part_content_set(button, "icon", icon);
+ if (end)
+ elm_box_pack_end(item, end);
+ // elm_object_part_content_set(button, "end", end); /* TODO fix this via style */
if (func)
evas_object_smart_callback_add(button, "clicked", func, data);
evas_object_show(button);
if (l)
- l = eina_list_prepend(l, button);
+ l = eina_list_prepend(l, item);
else
- l = eina_list_prepend(NULL, button);
+ l = eina_list_prepend(NULL, item);
evas_object_data_set(list, "eulogium_list", l);
evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0);
+ 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);
return button;
}
Evas_Object *eulogium_button_list_append(Evas_Object *list, const char *label, Evas_Object *icon,
- Evas_Smart_Cb func, const void *data)
+ Evas_Object *end, 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_list");
+ Evas_Object *item;
Evas_Object *button;
if ((!box) && (!list))
return NULL;
- button = elm_button_add(box);
+ item = elm_box_add(box);
+ elm_box_horizontal_set(item, EINA_TRUE);
+
+ button = elm_button_add(item);
+ elm_box_pack_start(item, button);
if (label)
elm_object_text_set(button, _(label));
if (icon)
elm_object_part_content_set(button, "icon", icon);
+ if (end)
+ elm_box_pack_end(item, end);
+ // elm_object_part_content_set(button, "end", end);
if (func)
evas_object_smart_callback_add(button, "clicked", func, data);
evas_object_show(button);
if (l)
- l = eina_list_append(l, button);
+ l = eina_list_append(l, item);
else
- l = eina_list_append(NULL, button);
+ l = eina_list_append(NULL, item);
evas_object_data_set(list, "eulogium_list", l);
evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0);
+ 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);
return button;
}
Evas_Object *eulogium_button_list_sorted_insert(Evas_Object *list, const char *label, Evas_Object *icon,
- Evas_Smart_Cb func, const void *data, Eina_Compare_Cb cmp_func)
+ Evas_Object *end, 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_list");
- Evas_Object *button; /* item */
+ Evas_Object *item;
+ Evas_Object *button;
if ((!box) && (!list))
return NULL;
- button = elm_button_add(box);
+ item = elm_box_add(box);
+ elm_box_horizontal_set(item, EINA_TRUE);
+
+ button = elm_button_add(item);
+ elm_box_pack_start(item, button);
if (label)
elm_object_text_set(button, _(label));
if (icon)
elm_object_part_content_set(button, "icon", icon);
+ if (end)
+ elm_box_pack_end(item, end);
+ // elm_object_part_content_set(button, "end", end);
if (data)
- evas_object_data_set(button, "sort_data", data);
+ evas_object_data_set(item, "sort_data", data);
if (func)
evas_object_smart_callback_add(button, "clicked", func, data);
evas_object_show(button);
if (l)
- l = eina_list_sorted_insert(l, cmp_func, button);
+ l = eina_list_sorted_insert(l, cmp_func, item);
else
- l = eina_list_sorted_insert(NULL, cmp_func, button);
+ l = eina_list_sorted_insert(NULL, cmp_func, item);
evas_object_data_set(list, "eulogium_list", l);
evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, 0);
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, 0);
+ 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);
return button;
}
@@ -2142,7 +2182,7 @@ static void _cb_populate_filelist(const char *name, const char *path, void *data
filelist_entry = malloc(sizeof(struct _filelist_entry_data));
filelist_entry->filelist = filelist;
filelist_entry->filepath = filepath;
- eulogium_button_list_sorted_insert(filelist->list, name, icon, _cb_select_file, filelist_entry, _cb_dirfile_sort);
+ eulogium_button_list_sorted_insert(filelist->list, name, icon, NULL, _cb_select_file, filelist_entry, _cb_dirfile_sort);
// evas_object_smart_callback_add(item, "focused", _update_footer_focus_cb, &menu->entry[i]);
// evas_object_smart_callback_add(item, "unfocused", _update_footer_unfocus_cb, &menu->entry[i]);
// evas_object_smart_callback_add(list, "longpressed", _cb_filelist_filedetails, NULL); /* TODO, popup? */
@@ -2206,16 +2246,15 @@ static void _menu_generate_filelist(struct eulogium_data *eulogium, Evas_Object
icon = elm_icon_add(list);
elm_icon_standard_set(icon, "user-home");
- eulogium_button_list_prepend(list, "Return", icon, _cb_content_prev_set, eulogium);
evas_object_show(icon);
+ eulogium_button_list_prepend(list, "Return", icon, NULL, _cb_content_prev_set, eulogium);
/* XXX TODO: when we pop the filelist from the stack, who calls elm_list_free();? */
}
static void _menu_generate_menulist(struct eulogium_data *eulogium, Evas_Object *list, struct menu_entry_def *entry)
{
int i;
- Evas_Object *icon;
- Evas_Object *item;
+ Evas_Object *item, *icon, *end;
for (i = 0; entry[i].label != NULL; i++) {
if (entry[i].icon) {
@@ -2225,7 +2264,15 @@ static void _menu_generate_menulist(struct eulogium_data *eulogium, Evas_Object
} else {
icon = NULL;
}
- item = eulogium_button_list_append(list, entry[i].label, icon, entry[i].func, eulogium); /*XXX TODO pass data from struct */
+ if (entry[i].end) {
+ end = elm_check_add(list); /* XXX don't add this here, we add this if the backend has this feature. */
+ elm_check_state_set(end, EINA_TRUE);
+ elm_object_focus_allow_set(end, EINA_FALSE);
+ evas_object_show(end);
+ } else {
+ end = NULL;
+ }
+ item = eulogium_button_list_append(list, entry[i].label, icon, end, entry[i].func, eulogium); /*XXX TODO pass data from struct */
entry[i].data = eulogium->footer; /* XXX ugly-ness keeps adding. The footer widget should not be passed like this :( */
evas_object_smart_callback_add(item, "focused", _update_menu_footer_focus_cb, &entry[i]);
evas_object_smart_callback_add(item, "unfocused", _update_menu_footer_unfocus_cb, &entry[i]);