From bc3e1fd94fc50e43fafe55c12f2cd6a13bff99e0 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 27 Jan 2014 12:28:35 -0500 Subject: [PATCH] feature: add fileman option to clamp video size for video previews T102 --- src/bin/e_widget_filepreview.c | 24 ++++++++++++++++++++++++ src/modules/fileman/e_fwin.c | 1 + src/modules/fileman/e_mod_config.c | 9 +++++++++ src/modules/fileman/e_mod_main.c | 1 + src/modules/fileman/e_mod_main.h | 1 + 5 files changed, 36 insertions(+) diff --git a/src/bin/e_widget_filepreview.c b/src/bin/e_widget_filepreview.c index 2b7d45daa..98ed445ab 100644 --- a/src/bin/e_widget_filepreview.c +++ b/src/bin/e_widget_filepreview.c @@ -45,6 +45,7 @@ struct _E_Widget_Data Eina_Bool prev_is_txt : 1; Eina_Bool prev_is_font : 1; Eina_Bool prev_is_video : 1; + Eina_Bool clamp_video : 1; }; static void _e_wid_fprev_preview_update(void *data, Evas_Object *obj, void *event_info); @@ -254,6 +255,18 @@ _e_wid_fprev_preview_video_position(E_Widget_Data *wd, Evas_Object *obj, void *e e_widget_size_min_set(wd->obj, mw, mh); } +static void +_e_wid_fprev_preview_video_resize(E_Widget_Data *wd, Evas_Object *obj, void *event_info __UNUSED__) +{ + int w, h, mw, mh; + + emotion_object_size_get(obj, &w, &h); + + if (!wd->clamp_video) return; + e_widget_size_min_get(wd->o_preview_preview, &mw, &mh); + e_table_pack_options_set(wd->o_preview_preview, 1, 1, 1, 1, 0.5, 0.5, mw, mh, w, h); +} + static void _e_wid_fprev_preview_video_opened(E_Widget_Data *wd, Evas_Object *obj, void *event_info __UNUSED__) { @@ -322,6 +335,7 @@ _e_wid_fprev_preview_video_widgets(E_Widget_Data *wd) e_widget_table_object_append(wd->o_preview_properties_table, wd->o_preview_preview, 0, 0, 2, 2, 1, 1, 1, 1); + evas_object_smart_callback_add(o, "frame_resize", (Evas_Smart_Cb)_e_wid_fprev_preview_video_resize, wd); evas_object_smart_callback_add(o, "length_change", (Evas_Smart_Cb)_e_wid_fprev_preview_video_opened, wd); evas_object_smart_callback_add(o, "frame_decode", (Evas_Smart_Cb)_e_wid_fprev_preview_video_position, wd); @@ -1237,3 +1251,13 @@ e_widget_filepreview_filemode_force(Evas_Object *obj) _e_wid_fprev_preview_file_widgets(wd, 0, 0, 0); } +EAPI void +e_widget_filepreview_clamp_video_set(Evas_Object *obj, Eina_Bool clamp) +{ + E_Widget_Data *wd; + + EINA_SAFETY_ON_NULL_RETURN(obj); + wd = e_widget_data_get(obj); + EINA_SAFETY_ON_NULL_RETURN(wd); + wd->clamp_video = !!clamp; +} diff --git a/src/modules/fileman/e_fwin.c b/src/modules/fileman/e_fwin.c index bf94dbbf2..cdb1b3679 100644 --- a/src/modules/fileman/e_fwin.c +++ b/src/modules/fileman/e_fwin.c @@ -848,6 +848,7 @@ _e_fwin_icon_popup(void *data) list = e_widget_list_add(e_comp_get(zone)->evas, 0, 0); o = e_widget_filepreview_add(e_comp_get(zone)->evas, mw, mh, 0); + e_widget_filepreview_clamp_video_set(o, fileman_config->tooltip.clamp_size); e_widget_filepreview_path_set(o, buf, fwin->popup_icon->mime); e_widget_list_object_append(list, o, 1, 0, 0.5); e_widget_size_min_get(list, &mw, &mh); diff --git a/src/modules/fileman/e_mod_config.c b/src/modules/fileman/e_mod_config.c index 6ec2c71a5..036598ed7 100644 --- a/src/modules/fileman/e_mod_config.c +++ b/src/modules/fileman/e_mod_config.c @@ -28,6 +28,8 @@ struct _E_Config_Dialog_Data double delay; double size; Eina_Bool enable; + Eina_Bool clamp_size; + Evas_Object *check_clamp_size; Evas_Object *delay_slider_text; Evas_Object *delay_slider; Evas_Object *size_slider_text; @@ -158,6 +160,7 @@ _fill_data(E_Config_Dialog_Data *cfdata) cfdata->tooltip.delay = fileman_config->tooltip.delay; cfdata->tooltip.size = fileman_config->tooltip.size; cfdata->tooltip.enable = fileman_config->tooltip.enable; + cfdata->tooltip.clamp_size = fileman_config->tooltip.clamp_size; cfdata->selection.windows_modifiers = fileman_config->selection.windows_modifiers; cfdata->list.sort.dirs.first = fileman_config->list.sort.dirs.first; cfdata->list.sort.extension = fileman_config->list.sort.extension; @@ -201,6 +204,7 @@ _basic_apply(E_Config_Dialog *cfd __UNUSED__, fileman_config->tooltip.delay = cfdata->tooltip.delay; fileman_config->tooltip.size = cfdata->tooltip.size; fileman_config->tooltip.enable = cfdata->tooltip.enable; + fileman_config->tooltip.clamp_size = cfdata->tooltip.clamp_size; fileman_config->selection.windows_modifiers = cfdata->selection.windows_modifiers; fileman_config->list.sort.dirs.first = cfdata->list.sort.dirs.first; fileman_config->list.sort.dirs.last = !(cfdata->list.sort.dirs.first); @@ -248,6 +252,7 @@ _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, (fileman_config->tooltip.delay != cfdata->tooltip.delay) || (fileman_config->tooltip.size != cfdata->tooltip.size) || (fileman_config->tooltip.enable != cfdata->tooltip.enable) || + (fileman_config->tooltip.clamp_size != cfdata->tooltip.clamp_size) || (fileman_config->selection.windows_modifiers != cfdata->selection.windows_modifiers) || (fileman_config->list.sort.dirs.first != cfdata->list.sort.dirs.first) || (fileman_config->list.sort.dirs.last != !(cfdata->list.sort.dirs.first)) || @@ -283,6 +288,7 @@ _tooltip_changed(void *data, Evas_Object *obj __UNUSED__) { E_Config_Dialog_Data *cfdata = data; + e_widget_disabled_set(cfdata->tooltip.check_clamp_size, !cfdata->tooltip.enable); e_widget_disabled_set(cfdata->tooltip.delay_slider_text, !cfdata->tooltip.enable); e_widget_disabled_set(cfdata->tooltip.delay_slider, !cfdata->tooltip.enable); e_widget_disabled_set(cfdata->tooltip.size_slider_text, !cfdata->tooltip.enable); @@ -459,6 +465,9 @@ _basic_create(E_Config_Dialog *cfd __UNUSED__, (int*)&(cfdata->tooltip.enable)); e_widget_on_change_hook_set(ob, _tooltip_changed, cfdata); e_widget_list_object_append(o, ob, 1, 1, 0.5); + cfdata->tooltip.check_clamp_size = ob = e_widget_check_add(evas, _("Clamp video size"), + (int*)&(cfdata->tooltip.clamp_size)); + e_widget_list_object_append(o, ob, 1, 1, 0.5); cfdata->tooltip.delay_slider_text = ob = e_widget_label_add(evas, _("Tooltip delay")); e_widget_list_object_append(o, ob, 1, 1, 0.5); cfdata->tooltip.delay_slider = ob = e_widget_slider_add(evas, 1, 0, _("%1.1f"), 0.0, 5.0, 0.5, 0, diff --git a/src/modules/fileman/e_mod_main.c b/src/modules/fileman/e_mod_main.c index 2ade38014..ee634b4b2 100644 --- a/src/modules/fileman/e_mod_main.c +++ b/src/modules/fileman/e_mod_main.c @@ -260,6 +260,7 @@ _e_mod_fileman_config_load(void) E_CONFIG_VAL(D, T, tooltip.delay, DOUBLE); E_CONFIG_VAL(D, T, tooltip.size, DOUBLE); E_CONFIG_VAL(D, T, tooltip.enable, UCHAR); + E_CONFIG_VAL(D, T, tooltip.clamp_size, UCHAR); E_CONFIG_VAL(D, T, view.spring_delay, INT); E_CONFIG_VAL(D, T, view.toolbar_orient, UINT); E_CONFIG_LIST(D, T, paths, paths_edd); diff --git a/src/modules/fileman/e_mod_main.h b/src/modules/fileman/e_mod_main.h index ea36267e3..c9c4a9dbf 100644 --- a/src/modules/fileman/e_mod_main.h +++ b/src/modules/fileman/e_mod_main.h @@ -46,6 +46,7 @@ struct _Config double delay; double size; Eina_Bool enable; + Eina_Bool clamp_size; } tooltip; /* display of icons */ struct