summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/eulogium.c84
1 files changed, 63 insertions, 21 deletions
diff --git a/src/eulogium.c b/src/eulogium.c
index de60bd1..56ecfc3 100644
--- a/src/eulogium.c
+++ b/src/eulogium.c
@@ -485,12 +485,64 @@ Evas_Object *eulogium_multi_text_menu(struct eulogium_data *eulogium, Evas_Objec
return eulogium_split_screen(parent, _top, _bottom);
}
+struct _multi_screen_next_cb_data {
+ struct eulogium_data *eulogium;
+ struct multi_screen_data *screen_data;
+ uint_fast8_t pagenum;
+ Eina_Bool pageindex;
+};
+
+static void _eulogium_multi_screen_next_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ Evas_Object *content;
+ struct eulogium_data *eulogium = ((struct _multi_screen_next_cb_data *)data)->eulogium;
+ uint_fast8_t pagenum = ((struct _multi_screen_next_cb_data *)data)->pagenum;
+ Eina_Bool pageindex = ((struct _multi_screen_next_cb_data *)data)->pageindex;
+ struct multi_screen_data *screen_data = ((struct _multi_screen_next_cb_data *)data)->screen_data;
+
+ if (pagenum >= screen_data->count) {
+ Elm_Object_Item *item;
+
+ item = elm_naviframe_bottom_item_get(eulogium->layout);
+ if (item)
+ elm_naviframe_item_pop_to(item);
+ /* XXX what else? */
+ } else {
+ content = eulogium_multi_screen_menu(eulogium, eulogium->layout, screen_data, pagenum, pageindex);
+ if (content)
+ elm_naviframe_item_simple_push(eulogium->layout, content);
+ /* XXX what else? */
+ }
+ free(data);
+}
+
Evas_Object *eulogium_multi_screen_menu(struct eulogium_data *eulogium, Evas_Object *parent, struct multi_screen_data *screen_data, uint_fast8_t pagenum, Eina_Bool pageindex)
{
Evas_Object *object;
Evas_Object *_top, *_bottom;
+ struct _multi_screen_next_cb_data *multi_screen_next_cb_data;
char buf[6];
+ _top = elm_box_add(parent);
+ evas_object_show(_top);
+
+ if (screen_data->count == 0) {
+ printf("Tut tut, we can't have a count of 0!\n"); /* TODO proper debugging infra */
+ return NULL;
+ }
+
+ if (pagenum >= screen_data->count)
+ pagenum = screen_data->count - 1;
+
+ if (pageindex) {
+ object = elm_label_add(_top);
+ snprintf(buf, sizeof(buf), "%d/%d", pagenum + 1, screen_data->count);
+ elm_object_text_set(object, buf);
+ evas_object_show(object);
+ evas_object_size_hint_align_set(object, 1.0, 0);
+ elm_box_pack_end(_top, object);
+ }
+
#if 0
printf("%s\n", screen->text);
printf("%s\n", screen->text);
@@ -507,41 +559,31 @@ Evas_Object *eulogium_multi_screen_menu(struct eulogium_data *eulogium, Evas_Obj
break;
}
#endif
- _top = elm_box_add(parent);
- evas_object_show(_top);
-
- if (pagenum >= screen_data->count)
- pagenum = screen_data->count - 1;
-
- if (pageindex) {
- object = elm_label_add(_top);
- snprintf(buf, sizeof(buf), "%d/%d", pagenum + 1, screen_data->count);
- elm_object_text_set(object, buf);
- evas_object_show(object);
- evas_object_size_hint_align_set(object, 1.0, 0);
- elm_box_pack_end(_top, object);
- }
-
_bottom = elm_box_add(parent);
elm_box_horizontal_set(_bottom, EINA_TRUE);
evas_object_show(_bottom);
- if (screen_data->screen[0].prev_button) {
+ multi_screen_next_cb_data = malloc(sizeof(struct _multi_screen_next_cb_data));
+ multi_screen_next_cb_data->eulogium = eulogium;
+ multi_screen_next_cb_data->screen_data = screen_data;
+ multi_screen_next_cb_data->pagenum = pagenum + 1;
+ multi_screen_next_cb_data->pageindex = EINA_TRUE;
+
+ if (screen_data->screen[pagenum].prev_button) {
object = elm_button_add(parent);
evas_object_size_hint_align_set(object, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(object, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_text_set(object, screen_data->screen[0].prev_button);
+ elm_object_text_set(object, screen_data->screen[pagenum].prev_button);
evas_object_smart_callback_add(object, "clicked", _cb_content_prev_set, eulogium);
evas_object_show(object);
elm_box_pack_end(_bottom, object);
- printf("Button created\n");
}
- if (screen_data->screen[0].next_button) {
+ if (screen_data->screen[pagenum].next_button) {
object = elm_button_add(parent);
evas_object_size_hint_align_set(object, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_size_hint_weight_set(object, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_text_set(object, screen_data->screen[0].next_button);
-// evas_object_smart_callback_add(_bottom, "clicked", _eulogium_multi_text_next_cb, multi_text_next_cb_data);
+ elm_object_text_set(object, screen_data->screen[pagenum].next_button);
+ evas_object_smart_callback_add(object, "clicked", _eulogium_multi_screen_next_cb, multi_screen_next_cb_data);
evas_object_show(object);
elm_box_pack_end(_bottom, object);
}