From 6d07f4aba906c57076189a19600ddf131d19dfb4 Mon Sep 17 00:00:00 2001 From: Olliver Schinagl Date: Thu, 2 Apr 2015 22:37:09 +0200 Subject: rework screens so they are fixed split Signed-off-by: Olliver Schinagl --- src/eulogium.c | 164 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- src/eulogium.h | 5 +- 2 files changed, 156 insertions(+), 13 deletions(-) diff --git a/src/eulogium.c b/src/eulogium.c index 29bf86f..dd7e3ae 100644 --- a/src/eulogium.c +++ b/src/eulogium.c @@ -87,6 +87,45 @@ static void _cb_eulogium_exit(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUS elm_exit(); } +Evas_Object *eulogium_split_screen(Evas_Object *parent, Evas_Object *top, Evas_Object *bottom) +{ + Evas_Object *box; + Evas_Object *object; + + box = elm_box_add(parent); + evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(box); + + evas_object_size_hint_align_set(top, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(top, 0, 48); + evas_object_show(top); + elm_box_pack_end(box, top); + +#if 0 /* FIXME use themed seperator */ + object = elm_separator_add(eulogium->layout); + elm_separator_horizontal_set(object, EINA_TRUE); + evas_object_show(object); + elm_table_pack(table, object, 1, 5, 1, 1); +#else + object = evas_object_rectangle_add(evas_object_evas_get(parent)); + evas_object_color_set(object, 0x33, 0x99, 0xff, 0xff); + evas_object_size_hint_min_set(object, 1, 0); + evas_object_size_hint_padding_set(object, 3, 6, 1, 1); + evas_object_size_hint_align_set(object, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(object, 0, 2); + evas_object_show(object); + elm_box_pack_end(box, object); +#endif + + evas_object_size_hint_align_set(bottom, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(bottom, 0, 14); + evas_object_show(bottom); + elm_box_pack_end(box, bottom); + + return box; +} + Evas_Object *eulogium_print_progress(struct eulogium_data *eulogium) { Evas_Object *table; @@ -98,14 +137,13 @@ Evas_Object *eulogium_print_progress(struct eulogium_data *eulogium) evas_object_size_hint_align_set(table, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_table_homogeneous_set(table, EINA_FALSE); - eulogium->print.time = elm_label_add(table); - elm_object_text_set(eulogium->print.time, "Calculating remaining print time ..."); - elm_label_slide_mode_set(eulogium->print.time, ELM_LABEL_SLIDE_MODE_AUTO); - elm_label_slide_duration_set(eulogium->print.time, 8); - elm_object_style_set(eulogium->print.time, "slide_bounce"); - evas_object_size_hint_align_set(eulogium->print.time, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(eulogium->print.time); - elm_table_pack(table, eulogium->print.time, 0, 0, 3, 1); + eulogium->print.status = elm_label_add(table); + elm_object_text_set(eulogium->print.status, "Print time: ...\nPrint status unknown."); + elm_label_slide_mode_set(eulogium->print.status, ELM_LABEL_SLIDE_MODE_NONE); + evas_object_size_hint_align_set(eulogium->print.status, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(eulogium->print.status); + elm_table_pack(table, eulogium->print.status, 0, 0, 3, 1); +#if 0 eulogium->print.status = elm_label_add(table); elm_object_text_set(eulogium->print.status, "Print status unknown."); @@ -115,7 +153,7 @@ Evas_Object *eulogium_print_progress(struct eulogium_data *eulogium) evas_object_size_hint_align_set(eulogium->print.status, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_show(eulogium->print.status); elm_table_pack(table, eulogium->print.status, 0, 1, 3, 1); - +#endif object = elm_label_add(table); elm_object_text_set(object, eulogium->print.name); elm_label_slide_mode_set(object, ELM_LABEL_SLIDE_MODE_AUTO); @@ -125,7 +163,8 @@ Evas_Object *eulogium_print_progress(struct eulogium_data *eulogium) evas_object_show(object); elm_table_pack(table, object, 0, 2, 3, 1); - eulogium->print.progress = elm_progressbar_add(table); /* TODO: depending on i18n sig, change inverted */ + if (!eulogium->print.progress) + eulogium->print.progress = elm_progressbar_add(table); /* TODO: depending on i18n sig, change inverted */ elm_progressbar_horizontal_set(eulogium->print.progress, EINA_TRUE); elm_progressbar_pulse_set(eulogium->print.progress, EINA_FALSE); /* TODO: pulse = time-unknown/pause */ elm_progressbar_pulse(eulogium->print.progress, EINA_FALSE); @@ -361,8 +400,89 @@ Evas_Object *eulogium_print_menu(struct eulogium_data *eulogium, char *filepath) evas_object_show(box); return box; +} + +struct multi_text { + uint_fast8_t count; + const char *text[]; }; +Evas_Object *eulogium_multi_text_menu(Evas_Object *parent, struct multi_text *data, const uint_fast8_t i) +{ + Evas_Object *object; + Evas_Object *_top, *_bottom; + char buf[6]; + + _top = elm_box_add(parent); + evas_object_show(_top); + + object = elm_label_add(_top); + snprintf(buf, sizeof(buf), "%d/%d", i, 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); + + object = elm_label_add(_top); + elm_object_text_set(object, data->text[i]); + evas_object_show(object); + elm_box_pack_end(_top, object); + + _bottom = elm_button_add(parent); + elm_object_text_set(_bottom, "BUTTON"); + evas_object_smart_callback_add(_bottom, "clicked", NULL, NULL); + evas_object_show(_bottom); + + return eulogium_split_screen(parent, _top, _bottom); +} + +Evas_Object *eulogium_tripple_button_menu(Evas_Object *parent, const struct button_def *left, const struct button_def *right, const struct button_def *bottom) +{ + Evas_Object *object; + Evas_Object *_top, *_bottom; + + _top = elm_box_add(parent); + elm_box_horizontal_set(_top, EINA_TRUE); + evas_object_size_hint_weight_set(_top, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(_top); + + object = elm_button_add(_top); + elm_object_text_set(object, left->text); + evas_object_smart_callback_add(object, "clicked", left->cb.func, left->cb.data); + evas_object_show(object); + elm_box_pack_end(_top, object); + +#if 0 /* FIXME use themed seperator */ + object = elm_separator_add(table); + elm_separator_horizontal_set(object, EINA_TRUE); + evas_object_show(object); + elm_table_pack(table, object, 1, 0, 1, 1); +#else + object = evas_object_rectangle_add(_top); + evas_object_color_set(object, 0x33, 0x99, 0xff, 0xff); + evas_object_size_hint_min_set(object, 1, 0); + evas_object_size_hint_padding_set(object, 1, 1, 1, 1); + evas_object_size_hint_align_set(object, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(object); + elm_box_pack_end(_top, object); +#endif + + object = elm_button_add(_top); + elm_object_text_set(object, right->text); + evas_object_smart_callback_add(object, "clicked", right->cb.func, right->cb.data); + evas_object_show(object); + elm_box_pack_end(_top, object); + + _bottom = elm_button_add(parent); + elm_object_text_set(_bottom, bottom->text); + evas_object_smart_callback_add(_bottom, "clicked", bottom->cb.func, bottom->cb.data); + evas_object_show(_bottom); + + return eulogium_split_screen(parent, _top, _bottom); +} + +#if 0 Evas_Object *eulogium_tripple_button_menu(struct eulogium_data *eulogium, const struct button_def *left, const struct button_def *right, const struct button_def *bottom) { @@ -423,6 +543,7 @@ Evas_Object *eulogium_tripple_button_menu(struct eulogium_data *eulogium, evas_object_show(table); return table; } +#endif static void _cb_button_main_print(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) { @@ -465,6 +586,21 @@ static struct button_def but_main_maintanance = { .data = NULL, }; +static struct multi_text data = { + .text = { + "line1
" + "line2
" + "line3
", + "test
test
test
test
test", + "line2", + "line3", + "line4", + NULL, + }, + .count = 5, + +}; + Evas_Object *eulogium_main_menu(Evas_Object *window, struct eulogium_data *eulogium) { Evas_Object *content; @@ -475,7 +611,8 @@ Evas_Object *eulogium_main_menu(Evas_Object *window, struct eulogium_data *eulog //elm_naviframe_item_title_enabled_set(eulogium->layout, EINA_FALSE, EINA_TRUE); // elm_naviframe_item_title_visible_set(eulogium->layout, EINA_FALSE); - content = eulogium_tripple_button_menu(eulogium, &but_main_print, &but_main_material, &but_main_maintanance); +// content = eulogium_tripple_button_menu(eulogium->layout, &but_main_print, &but_main_material, &but_main_maintanance); + content = eulogium_multi_text_menu(eulogium->layout, &data, 0); if (!content) return NULL; elm_naviframe_item_simple_push(eulogium->layout, content); @@ -486,6 +623,11 @@ Evas_Object *eulogium_main_menu(Evas_Object *window, struct eulogium_data *eulog static void eulogium_setup(struct eulogium_data *eulogium) { eulogium->print.name = NULL; + eulogium->print.file = NULL; + eulogium->print.progress = NULL; + eulogium->print.time = NULL; + eulogium->print.status = NULL; + eulogium->print.material = 0.0; eulogium_button_cb_data_set(&but_main_print, eulogium); eulogium_button_cb_data_set(&but_main_material, eulogium); eulogium_button_cb_data_set(&but_main_maintanance, eulogium); diff --git a/src/eulogium.h b/src/eulogium.h index f9c9282..038090f 100644 --- a/src/eulogium.h +++ b/src/eulogium.h @@ -6,7 +6,7 @@ struct print_data { Evas_Object *progress; Evas_Object *status; - Evas_Object *time; + unsigned int *time; const char *file; const char *name; float material; @@ -38,7 +38,8 @@ void eulogium_button_cb_data_set(struct button_def *button, void *data); void eulogium_button_data_set(struct button_def *button, void *data); Evas_Object *eulogium_main_menu(Evas_Object *window, struct eulogium_data *eulogium); -Evas_Object *eulogium_tripple_button_menu(struct eulogium_data *eulogium, const struct button_def *left, const struct button_def *right, const struct button_def *bottom); +Evas_Object *eulogium_split_screen(Evas_Object *parent, Evas_Object *top, Evas_Object *bottom); +Evas_Object *eulogium_tripple_button_menu(Evas_Object *parent, const struct button_def *left, const struct button_def *right, const struct button_def *bottom); Evas_Object *eulogium_print_menu(struct eulogium_data *eulogium, char *filepath); Evas_Object *eulogium_print_progress(struct eulogium_data *eulogium); -- cgit v0.12