summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/eulogium.c183
-rw-r--r--src/eulogium.h7
2 files changed, 96 insertions, 94 deletions
diff --git a/src/eulogium.c b/src/eulogium.c
index 2432ca2..0408651 100644
--- a/src/eulogium.c
+++ b/src/eulogium.c
@@ -138,7 +138,7 @@ Evas_Object *eulogium_print_progress(struct eulogium_data *eulogium)
elm_table_homogeneous_set(table, EINA_FALSE);
eulogium->print.status = elm_label_add(table);
- elm_object_text_set(eulogium->print.status, "Print time: ...\nPrint status unknown.");
+ elm_object_text_set(eulogium->print.status, "Print time: ...<br>Print 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);
@@ -330,7 +330,7 @@ static void _cb_populate_filelist(const char *name, const char *path, void *data
elm_icon_standard_set(icon, "file");
elm_image_resizable_set(icon, EINA_FALSE, EINA_FALSE);
- filelist_sort = malloc(sizeof(struct _filelist_sort));
+ filelist_sort = malloc(sizeof(struct _filelist_sort)); /* never freed, memleak! XXX */
filelist_sort->eulogium = eulogium;
filelist_sort->filepath = filepath;
list_item = elm_list_item_sorted_insert(list, name, icon, NULL, _cb_select_file, filelist_sort, _cb_dirfile_sort);
@@ -402,32 +402,49 @@ Evas_Object *eulogium_print_menu(struct eulogium_data *eulogium, char *filepath)
return box;
}
-struct multi_text {
- uint_fast8_t count;
- const char *text[];
+struct _multi_text_next_cb_data {
+ struct eulogium_data *eulogium;
+ struct multi_text *txtdata;
+ uint_fast8_t pagenum;
+ Eina_Bool pageindex;
};
-Evas_Object *eulogium_multi_text_menu(struct eulogium_data *eulogium, Evas_Object *parent, struct multi_text *data, const uint_fast8_t pagenum, Eina_Bool pageindex)
+static void _eulogium_multi_text_next_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ Evas_Object *content;
+ struct eulogium_data *eulogium = ((struct _multi_text_next_cb_data *)data)->eulogium;
+ uint_fast8_t pagenum = ((struct _multi_text_next_cb_data *)data)->pagenum;
+ Eina_Bool pageindex = ((struct _multi_text_next_cb_data *)data)->pageindex;
+ struct multi_text *txtdata = ((struct _multi_text_next_cb_data *)data)->txtdata;
+
+ if (pagenum >= txtdata->count) {
+ Elm_Object_Item *item;
+
+ item = elm_naviframe_bottom_item_get(eulogium->layout);
+ if (item)
+ elm_naviframe_item_pop_to(item);
+ } else {
+ content = eulogium_multi_text_menu(eulogium, eulogium->layout, NULL, txtdata, pagenum, pageindex);
+ elm_naviframe_item_simple_push(eulogium->layout, content);
+ }
+}
+
+Evas_Object *eulogium_multi_text_menu(struct eulogium_data *eulogium, Evas_Object *parent, struct button_def *button, struct multi_text *txtdata, uint_fast8_t pagenum, Eina_Bool pageindex)
{
Evas_Object *object;
Evas_Object *_top, *_bottom;
- int i;
char buf[6];
+ struct _multi_text_next_cb_data *multi_text_next_cb_data;
- if (pagenum < 1)
- i = 0;
- else if (pagenum >= data->count)
- i = data->count - 1;
- else
- i = pagenum - 1;
-
+ if (pagenum >= txtdata->count)
+ pagenum = txtdata->count - 1;
_top = elm_box_add(parent);
evas_object_show(_top);
if (pageindex) {
object = elm_label_add(_top);
- snprintf(buf, sizeof(buf), "%d/%d", i + 1, data->count);
+ snprintf(buf, sizeof(buf), "%d/%d", pagenum + 1, txtdata->count);
elm_object_text_set(object, buf);
evas_object_show(object);
evas_object_size_hint_align_set(object, 1.0, 0);
@@ -435,13 +452,19 @@ Evas_Object *eulogium_multi_text_menu(struct eulogium_data *eulogium, Evas_Objec
}
object = elm_label_add(_top);
- elm_object_text_set(object, data->text[i]);
+ elm_object_text_set(object, txtdata->text[pagenum]);
evas_object_show(object);
elm_box_pack_end(_top, object);
+ multi_text_next_cb_data = malloc(sizeof(struct _multi_text_next_cb_data)); /* XXX never freed; memleak */
+ multi_text_next_cb_data->eulogium = eulogium;
+ multi_text_next_cb_data->txtdata = txtdata;
+ multi_text_next_cb_data->pagenum = pagenum + 1;
+ multi_text_next_cb_data->pageindex = EINA_TRUE;
+
_bottom = elm_button_add(parent);
- elm_object_text_set(_bottom, "BUTTON");
- evas_object_smart_callback_add(_bottom, "clicked", NULL, NULL);
+ elm_object_text_set(_bottom, button ? button->text : "NEXT");
+ evas_object_smart_callback_add(_bottom, "clicked", _eulogium_multi_text_next_cb, multi_text_next_cb_data);
evas_object_show(_bottom);
return eulogium_split_screen(parent, _top, _bottom);
@@ -492,69 +515,6 @@ Evas_Object *eulogium_tripple_button_menu(Evas_Object *parent, const struct butt
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)
-{
- Evas_Object *table;
- Evas_Object *object;
-
- table = elm_table_add(eulogium->layout);
- elm_table_homogeneous_set(table, EINA_FALSE);
-
- object = elm_button_add(table);
- 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_table_pack(table, object, 0, 0, 1, 1);
-
-#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(table);
- 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_table_pack(table, object, 1, 0, 1, 1);
-#endif
-
- object = elm_button_add(table);
- 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_table_pack(table, object, 2, 0, 1, 1);
-
-#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, 0, 1, 3, 1);
-#else
- object = evas_object_rectangle_add(table);
- evas_object_color_set(object, 0x33, 0x99, 0xff, 0xff);
- evas_object_size_hint_min_set(object, 0, 1);
- 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_table_pack(table, object, 0, 1, 3, 1);
-#endif
-
- object = elm_button_add(table);
- elm_object_text_set(object, bottom->text);
- evas_object_smart_callback_add(object, "clicked", bottom->cb.func, bottom->cb.data);
- evas_object_show(object);
- elm_table_pack(table, object, 0, 2, 3, 1);
-
- 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)
{
struct eulogium_data *eulogium = data;
@@ -596,19 +556,46 @@ static struct button_def but_main_maintanance = {
.data = NULL,
};
-static struct multi_text data = {
+static struct button_def but_mat_change = {
+ .text = "CHANGE",
+ .cb = {
+ .func = &_cb_eulogium_button,
+ .data = NULL,
+ .info = "material change button pressed",
+ },
+ .data = NULL,
+};
+
+static struct button_def but_mat_settings = {
+ .text = "SETTINGS",
+ .cb = {
+ .func = &_cb_eulogium_button,
+ .data = NULL,
+ .info = "material change button pressed",
+ },
+ .data = NULL,
+};
+
+static struct button_def but_mat_return = {
+ .text = "RETURN",
+ .cb = {
+ .func = &_cb_eulogium_button,
+ .data = NULL,
+ .info = "material return button pressed",
+ },
+ .data = NULL,
+};
+
+static struct multi_text txtdata = {
.text = {
- "line1<br>"
- "line1<br>"
- "line1<br>",
+ "Welcome<br>"
+ "to your new Ultimaker",
"line2<br>test<br>test<br>test<br>test<br>test",
- "line3",
- "line4",
- "line5",
+ "Level the bed!",
+ "Nauw n00b",
+ "Lets Print!",
NULL,
},
- .count = 5,
-
};
Evas_Object *eulogium_main_menu(Evas_Object *window, struct eulogium_data *eulogium)
@@ -618,20 +605,30 @@ Evas_Object *eulogium_main_menu(Evas_Object *window, struct eulogium_data *eulog
eulogium->layout = elm_naviframe_add(window);
if (!eulogium->layout)
return NULL;
- //elm_naviframe_item_title_enabled_set(eulogium->layout, EINA_FALSE, EINA_TRUE);
+ elm_naviframe_prev_btn_auto_pushed_set(eulogium->layout, EINA_FALSE);
+// elm_naviframe_item_title_enabled_set(eulogium->layout, EINA_TRUE, EINA_TRUE);
// elm_naviframe_item_title_visible_set(eulogium->layout, EINA_FALSE);
-// content = eulogium_tripple_button_menu(eulogium->layout, &but_main_print, &but_main_material, &but_main_maintanance);
- content = eulogium_multi_text_menu(eulogium, eulogium->layout, &data, 1, EINA_TRUE);
+ content = eulogium_tripple_button_menu(eulogium->layout, &but_main_print, &but_main_material, &but_main_maintanance);
if (!content)
return NULL;
elm_naviframe_item_simple_push(eulogium->layout, content);
+// if (firstrunwiz) {
+ content = eulogium_multi_text_menu(eulogium, eulogium->layout, NULL, &txtdata, 0, EINA_TRUE);
+ if (!content)
+ return NULL;
+ elm_naviframe_item_simple_push(eulogium->layout, content);
return eulogium->layout;
}
static void eulogium_setup(struct eulogium_data *eulogium)
{
+ /* XXX this is very ugly */
+ txtdata.count = 0;
+ while (txtdata.text[txtdata.count])
+ txtdata.count++;
+
eulogium->print.name = NULL;
eulogium->print.file = NULL;
eulogium->print.progress = NULL;
diff --git a/src/eulogium.h b/src/eulogium.h
index b0dfb20..1f7154e 100644
--- a/src/eulogium.h
+++ b/src/eulogium.h
@@ -31,6 +31,11 @@ struct button_def {
void *data;
};
+struct multi_text {
+ uint_fast8_t count;
+ const char *text[];
+};
+
void eulogium_print_file_set(struct eulogium_data *eulogium, char *filepath);
void eulogium_button_cb_set(struct button_def *button, struct button_cb *cb);
@@ -42,6 +47,6 @@ Evas_Object *eulogium_split_screen(Evas_Object *parent, Evas_Object *top, Evas_O
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);
-Evas_Object *eulogium_multi_text_menu(Evas_Object *parent, struct multi_text *data, const uint_fast8_t pagenum, Eina_Bool pageindex);
+Evas_Object *eulogium_multi_text_menu(struct eulogium_data *eulogium, Evas_Object *parent, struct multi_text *data, const uint_fast8_t pagenum, Eina_Bool pageindex);
#endif /* _EULOGIUM_H */