From d678d7b45b9208066761903b3c62b70784c41e96 Mon Sep 17 00:00:00 2001 From: Stephen Houston Date: Wed, 4 Mar 2015 16:29:21 -0600 Subject: [PATCH] Ephoto: Combine settings and about dialog. Read Authors from file. --- Makefile.am | 3 + src/bin/ephoto.h | 1 - src/bin/ephoto_config.c | 160 +++++++++++++++++++++++++------- src/bin/ephoto_single_browser.c | 10 -- src/bin/ephoto_thumb_browser.c | 11 --- 5 files changed, 127 insertions(+), 58 deletions(-) diff --git a/Makefile.am b/Makefile.am index a02c518..3bbf2e9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -70,3 +70,6 @@ endif EXTRA_DIST = README AUTHORS COPYING autogen.sh ephoto.spec ACLOCAL_AMFLAGS = -I m4 + +filesdir = $(datadir)/ephoto/ +files_DATA = AUTHORS COPYING diff --git a/src/bin/ephoto.h b/src/bin/ephoto.h index a9f5f39..818957c 100644 --- a/src/bin/ephoto.h +++ b/src/bin/ephoto.h @@ -41,7 +41,6 @@ Eina_Bool ephoto_config_init(Ephoto *em); void ephoto_config_save(Ephoto *em); void ephoto_config_free(Ephoto *em); void ephoto_config_window(Ephoto *em); -void ephoto_about_window(Ephoto *em); Evas_Object *ephoto_single_browser_add(Ephoto *ephoto, Evas_Object *parent); void ephoto_single_browser_entry_set(Evas_Object *obj, Ephoto_Entry *entry); diff --git a/src/bin/ephoto_config.c b/src/bin/ephoto_config.c index 928f690..b62f622 100644 --- a/src/bin/ephoto_config.c +++ b/src/bin/ephoto_config.c @@ -75,9 +75,9 @@ ephoto_config_free(Ephoto *ephoto) static void _close(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Evas_Object *o = data; + Ephoto *ephoto = data; - evas_object_del(o); + evas_object_del(ephoto->config->window); } static void @@ -100,22 +100,19 @@ _hv_select(void *data EINA_UNUSED, Evas_Object *obj, void *event_info) elm_object_text_set(obj, elm_object_item_text_get(event_info)); } -void -ephoto_config_window(Ephoto *ephoto) +static Evas_Object * +_add_slideshow_config(Evas_Object *parent, Ephoto *ephoto) { - Evas_Object *win, *scroller, *box, *hbox, *table, *spinner, *hoversel, *ic, *button, *label; + Evas_Object *box, *scroller, *table, *label, *spinner, *hoversel, *hbox, *ic, *button; const Eina_List *l; const char *transition; - win = elm_win_inwin_add(ephoto->win); - evas_object_show(win); - - box = elm_box_add(win); + box = elm_box_add(parent); elm_box_horizontal_set(box, EINA_FALSE); 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); - scroller = elm_scroller_add(win); + scroller = elm_scroller_add(box); evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_box_pack_end(box, scroller); @@ -154,7 +151,7 @@ ephoto_config_window(Ephoto *ephoto) evas_object_show(label); hoversel = elm_hoversel_add(table); - elm_hoversel_hover_parent_set(hoversel, win); + elm_hoversel_hover_parent_set(hoversel, box); EINA_LIST_FOREACH(elm_slideshow_transitions_get(ephoto->slideshow), l, transition) elm_hoversel_item_add(hoversel, transition, NULL, 0, _hv_select, transition); elm_hoversel_item_add(hoversel, "None", NULL, 0, _hv_select, NULL); @@ -172,7 +169,7 @@ ephoto_config_window(Ephoto *ephoto) elm_box_pack_end(box, hbox); evas_object_show(hbox); - ic = elm_icon_add(box); + ic = elm_icon_add(hbox); evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); elm_icon_standard_set(ic, "stock_save"); @@ -183,58 +180,90 @@ ephoto_config_window(Ephoto *ephoto) elm_box_pack_end(hbox, button); evas_object_show(button); - ic = elm_icon_add(box); + ic = elm_icon_add(hbox); evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); elm_icon_standard_set(ic, "stock_close"); button = elm_button_add(hbox); elm_object_text_set(button, "Cancel"); elm_object_part_content_set(button, "icon", ic); - evas_object_smart_callback_add(button, "clicked", _close, win); + evas_object_smart_callback_add(button, "clicked", _close, ephoto); elm_box_pack_end(hbox, button); evas_object_show(button); - ephoto->config->window = win; - elm_win_inwin_content_set(win, box); - evas_object_show(box); + return box; } -void -ephoto_about_window(Ephoto *ephoto) +static Evas_Object * +_add_about_config(Evas_Object *parent, Ephoto *ephoto) { - Evas_Object *win, *scroller, *box, *ic, *button, *label; + Evas_Object *box, *scroller, *ic, *button, *label; + Eina_Strbuf *sbuf = eina_strbuf_new(); + FILE *f; - win = elm_win_inwin_add(ephoto->win); - evas_object_show(win); - - box = elm_box_add(win); + box = elm_box_add(parent); elm_box_horizontal_set(box, EINA_FALSE); 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); - scroller = elm_scroller_add(win); + scroller = elm_scroller_add(box); evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_box_pack_end(box, scroller); evas_object_show(scroller); - label = elm_label_add(box); + label = elm_label_add(scroller); evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_object_text_set(label, - "About Ephoto
" + eina_strbuf_append_printf(sbuf, "About Ephoto
" "Ephoto is a comprehensive image viewer based on the EFL.
" "For more information, please visit the Ephoto project page on the Enlightenment wiki:
" "https://phab.enlightenment.org/w/projects/ephoto
" "Ephoto's source can be found through Enlightenment's git:
" "http://git.enlightenment.org/apps/ephoto.git
" "
" - "Authors:
" - "Stephen \"okra\" Houston - Project Manager/Lead Developer
" - "Gustavo Sverzut Barbieri
" - "Otavio Pontes
" - "Daniel Juyung Seo
" - "And others.
"); + "Authors:
"); + f = fopen(PACKAGE_DATA_DIR "/AUTHORS", "r"); + if (f) + { + char buf[PATH_MAX]; + while (fgets(buf, sizeof(buf), f)) + { + int len; + + len = strlen(buf); + if (len > 0) + { + if (buf[len - 1] == '\n') + { + buf[len - 1] = 0; + len--; + } + if (len > 0) + { + char *p; + + do + { + p = strchr(buf, '<'); + if (p) *p = 0; + } + while (p); + do + { + p = strchr(buf, '>'); + if (p) *p = 0; + } + while (p); + eina_strbuf_append_printf(sbuf, "%s
", buf); + } + if (len == 0) + eina_strbuf_append_printf(sbuf, "
"); + } + } + fclose(f); + } + elm_object_text_set(label, eina_strbuf_string_get(sbuf)); elm_object_content_set(scroller, label); evas_object_show(label); @@ -245,12 +274,71 @@ ephoto_about_window(Ephoto *ephoto) button = elm_button_add(box); elm_object_text_set(button, "Close"); elm_object_part_content_set(button, "icon", ic); - evas_object_smart_callback_add(button, "clicked", _close, win); + evas_object_smart_callback_add(button, "clicked", _close, ephoto); elm_box_pack_end(box, button); evas_object_show(button); - elm_win_inwin_content_set(win, box); + return box; +} + +static void +_show_page(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Elm_Object_Item *it = data; + + elm_naviframe_item_promote(it); +} + +void +ephoto_config_window(Ephoto *ephoto) +{ + Evas_Object *win, *box, *toolbar, *pager, *slideshow, *about; + Elm_Object_Item *sit, *ait; + const Eina_List *l; + const char *transition; + + win = elm_win_inwin_add(ephoto->win); + evas_object_show(win); + + box = elm_box_add(win); + elm_box_horizontal_set(box, EINA_FALSE); + 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); + + toolbar = elm_toolbar_add(win); + elm_toolbar_horizontal_set(toolbar, EINA_TRUE); + elm_toolbar_homogeneous_set(toolbar, EINA_TRUE); + elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_SCROLL); + elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE); + evas_object_size_hint_weight_set(toolbar, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(toolbar, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_pack_end(box, toolbar); + evas_object_show(toolbar); + + pager = elm_naviframe_add(win); + elm_naviframe_prev_btn_auto_pushed_set(pager, EINA_FALSE); + evas_object_size_hint_weight_set + (pager, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_fill_set + (pager, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_pack_end(box, pager); + evas_object_show(pager); + + slideshow = _add_slideshow_config(pager, ephoto); + sit = elm_naviframe_item_push(pager, NULL, NULL, NULL, slideshow, "overlap"); + elm_naviframe_item_title_enabled_set(sit, EINA_FALSE, EINA_FALSE); + elm_toolbar_item_append(toolbar, "stock_media-play", "Slideshow", _show_page, sit); + + about = _add_about_config(pager, ephoto); + ait = elm_naviframe_item_insert_after(pager, sit, NULL, NULL, NULL, about, "overlap"); + elm_naviframe_item_title_enabled_set(ait, EINA_FALSE, EINA_FALSE); + elm_toolbar_item_append(toolbar, "help-about", "About", _show_page, ait); + + elm_naviframe_item_promote(sit); + + ephoto->config->window = win; + elm_win_inwin_content_set(win, box); } static int diff --git a/src/bin/ephoto_single_browser.c b/src/bin/ephoto_single_browser.c index dcf9f54..9b66609 100644 --- a/src/bin/ephoto_single_browser.c +++ b/src/bin/ephoto_single_browser.c @@ -1265,15 +1265,6 @@ _settings(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED ephoto_config_window(sb->ephoto); } -static void -_about(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ephoto_Single_Browser *sb = data; - - if (sb->ephoto) - ephoto_about_window(sb->ephoto); -} - static void _key_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) { @@ -1467,7 +1458,6 @@ ephoto_single_browser_add(Ephoto *ephoto, Evas_Object *parent) icon = elm_toolbar_item_append(sb->bar, "stock_media-play", "Slideshow", _slideshow, sb); icon = elm_toolbar_item_append(sb->bar, "emblem-system", "Settings", _settings, sb); - icon = elm_toolbar_item_append(sb->bar, "help-about", "About", _about, sb); elm_box_pack_end(sb->main, sb->bar); evas_object_show(sb->bar); diff --git a/src/bin/ephoto_thumb_browser.c b/src/bin/ephoto_thumb_browser.c index f59f85c..a2e1007 100644 --- a/src/bin/ephoto_thumb_browser.c +++ b/src/bin/ephoto_thumb_browser.c @@ -346,15 +346,6 @@ _settings(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED ephoto_config_window(tb->ephoto); } -static void -_about(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ephoto_Thumb_Browser *tb = data; - - if (tb->ephoto) - ephoto_about_window(tb->ephoto); -} - static void _ephoto_dir_show_folders(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { @@ -403,7 +394,6 @@ _ephoto_dir_hide_folders(void *data, Evas_Object *obj EINA_UNUSED, void *event_i evas_object_data_set(min, "max", max); elm_toolbar_item_append(tb->vbar, "stock_media-play", "Slideshow", _slideshow, tb); elm_toolbar_item_append(tb->vbar, "emblem-system", "Settings", _settings, tb); - elm_toolbar_item_append(tb->vbar, "help-about", "About", _about, tb); elm_box_pack_end(tb->bleftbox, tb->vbar); evas_object_show(tb->vbar); @@ -816,7 +806,6 @@ ephoto_thumb_browser_add(Ephoto *ephoto, Evas_Object *parent) evas_object_data_set(min, "max", max); elm_toolbar_item_append(tb->bar, "stock_media-play", "Slideshow", _slideshow, tb); elm_toolbar_item_append(tb->bar, "emblem-system", "Settings", _settings, tb); - elm_toolbar_item_append(tb->bar, "help-about", "About", _about, tb); elm_box_pack_end(tb->leftbox, tb->bar); evas_object_show(tb->bar);