Preferences dialog. Users can change the slideshow parameters, and tell ephoto to start from the last remembered dir, if it was started with no arguments
SVN revision: 52464v-1.6.0
parent
574483bb47
commit
ca05627df0
11 changed files with 270 additions and 89 deletions
After Width: | Height: | Size: 3.7 KiB |
@ -0,0 +1,153 @@ |
||||
#include "ephoto.h" |
||||
|
||||
static void _ephoto_preferences_pager_switch(void *data, Evas_Object *obj, void *event_info); |
||||
static void _ephoto_preferences_hide(void *data, Evas_Object *obj, void *event_info); |
||||
static void _ephoto_preferences_item_change(void *data, Evas_Object *obj, void *event_info); |
||||
static void _ephoto_preferences_slideshow_transition(void *data, Evas_Object *obj, void *event_info); |
||||
|
||||
void |
||||
ephoto_show_preferences(Ephoto *em) |
||||
{ |
||||
if (!em->prefs_win) |
||||
{ |
||||
Evas_Object *o, *tb, *box, *pager, *pg1, *pg2, *pg3; |
||||
const Eina_List *transitions, *l; |
||||
const char *transition; |
||||
|
||||
em->prefs_win = o = elm_win_inwin_add(em->win); |
||||
elm_object_style_set(o, "minimal"); |
||||
|
||||
box = elm_box_add(em->prefs_win); |
||||
evas_object_show(box);
|
||||
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
||||
elm_win_inwin_content_set(o, box); |
||||
|
||||
tb = elm_toolbar_add(box); |
||||
elm_toolbar_homogenous_set(tb, EINA_FALSE); |
||||
evas_object_size_hint_align_set(tb, EVAS_HINT_FILL, 0.5); |
||||
|
||||
elm_box_pack_end(box, tb); |
||||
evas_object_show(tb); |
||||
|
||||
pager = elm_pager_add(box); |
||||
|
||||
pg1 = elm_box_add(pager); |
||||
evas_object_size_hint_weight_set(pg1, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
||||
evas_object_show(pg1); |
||||
elm_pager_content_push(pager, pg1); |
||||
elm_toolbar_item_add(tb, NULL, "General", _ephoto_preferences_pager_switch, pg1); |
||||
|
||||
o = elm_check_add(pg1); |
||||
elm_check_label_set(o, "Remember last used directory"); |
||||
elm_check_state_set(o, em->config->remember_directory); |
||||
evas_object_data_set(o, "config", "remember_directory"); |
||||
evas_object_smart_callback_add(o, "changed", |
||||
_ephoto_preferences_item_change, em); |
||||
elm_box_pack_end(pg1, o); |
||||
evas_object_show(o); |
||||
|
||||
elm_box_pack_end(box, pager); |
||||
evas_object_show(pager); |
||||
|
||||
pg2 = elm_table_add(pager); |
||||
evas_object_size_hint_weight_set(pg2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
||||
evas_object_show(pg2); |
||||
elm_pager_content_push(pager, pg2); |
||||
elm_toolbar_item_add(tb, NULL, "Slideshow", _ephoto_preferences_pager_switch, pg2); |
||||
|
||||
o = elm_label_add(pg2); |
||||
elm_label_label_set(o, "Delay:"); |
||||
evas_object_show(o); |
||||
elm_table_pack(pg2, o, 0, 0, 1, 1); |
||||
|
||||
o = elm_spinner_add(pg2); |
||||
elm_spinner_label_format_set(o, "%1.1f seconds"); |
||||
elm_spinner_step_set(o, 0.1); |
||||
elm_spinner_min_max_set(o, 1.0, 10.0); |
||||
elm_spinner_value_set(o, em->config->slideshow_timeout); |
||||
evas_object_data_set(o, "config", "slideshow_timeout"); |
||||
evas_object_smart_callback_add(o, "delay,changed", |
||||
_ephoto_preferences_item_change, em); |
||||
evas_object_show(o); |
||||
elm_table_pack(pg2, o, 1, 0, 1, 1); |
||||
|
||||
o = elm_label_add(pg2); |
||||
elm_label_label_set(o, "Transition:"); |
||||
evas_object_show(o); |
||||
elm_table_pack(pg2, o, 0, 1, 1, 1); |
||||
|
||||
/* XXX: The page cannot be the parent, since
|
||||
* the items will be clipped to it */ |
||||
o = elm_hoversel_add(em->win); |
||||
elm_hoversel_label_set(o, em->config->slideshow_transition); |
||||
transitions = elm_slideshow_transitions_get(em->slideshow); |
||||
EINA_LIST_FOREACH(transitions, l, transition) |
||||
{ |
||||
elm_hoversel_item_add(o, transition, NULL, ELM_ICON_NONE, _ephoto_preferences_slideshow_transition, em); |
||||
} |
||||
evas_object_show(o); |
||||
elm_table_pack(pg2, o, 1, 1, 1, 1); |
||||
|
||||
pg3 = elm_box_add(pager); |
||||
evas_object_size_hint_weight_set(pg3, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); |
||||
evas_object_show(pg3); |
||||
elm_pager_content_push(pager, pg3); |
||||
elm_toolbar_item_add(tb, NULL, "External Editor", _ephoto_preferences_pager_switch, pg3); |
||||
|
||||
o = elm_button_add(box); |
||||
elm_button_label_set(o, "Close"); |
||||
evas_object_size_hint_align_set(o, 1.0, 0.5); |
||||
evas_object_smart_callback_add(o, "clicked", _ephoto_preferences_hide, em); |
||||
elm_box_pack_end(box, o); |
||||
evas_object_show(o); |
||||
|
||||
elm_toolbar_item_select_first(tb); |
||||
elm_pager_content_promote(pager, pg1); |
||||
} |
||||
|
||||
elm_win_inwin_activate(em->prefs_win); |
||||
} |
||||
|
||||
static void |
||||
_ephoto_preferences_pager_switch(void *data, Evas_Object *obj, void *event_info) |
||||
{ |
||||
Evas_Object *o = data; |
||||
/* XXX: Useful function, but not currently exported as public */ |
||||
Evas_Object *pager = elm_widget_parent_get(o); |
||||
|
||||
elm_pager_content_promote(pager, o); |
||||
} |
||||
|
||||
static void |
||||
_ephoto_preferences_item_change(void *data, Evas_Object *obj, void *event_info) |
||||
{ |
||||
Ephoto *em = data; |
||||
const char *key = evas_object_data_get(obj, "config"); |
||||
|
||||
if (!strcmp(key, "remember_directory")) |
||||
em->config->remember_directory = elm_check_state_get(obj); |
||||
else if (!strcmp(key, "slideshow_timeout")) |
||||
em->config->slideshow_timeout = elm_spinner_value_get(obj); |
||||
|
||||
ephoto_config_save(em, EINA_FALSE); |
||||
} |
||||
|
||||
static void |
||||
_ephoto_preferences_slideshow_transition(void *data, Evas_Object *obj, void *event_info) |
||||
{ |
||||
Ephoto *em = data; |
||||
Elm_Hoversel_Item *it = event_info; |
||||
const char *transition = elm_hoversel_item_label_get(it); |
||||
|
||||
elm_hoversel_label_set(obj, transition); |
||||
em->config->slideshow_transition = transition; |
||||
ephoto_config_save(em, EINA_FALSE); |
||||
} |
||||
|
||||
static void |
||||
_ephoto_preferences_hide(void *data, Evas_Object *obj, void *event_info) |
||||
{ |
||||
Ephoto *em = data; |
||||
|
||||
evas_object_hide(em->prefs_win); |
||||
} |
Loading…
Reference in new issue