enlightenment/src/modules/shot/e_mod_delay.c

99 lines
2.9 KiB
C

#include "e_mod_main.h"
static Evas_Object *delay_win = NULL;
static double delay = 5.0;
static void
_cb_delay(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
{
delay = elm_slider_value_get(obj);
}
static void
_win_delete_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *info EINA_UNUSED)
{
// E_FREE_FUNC(delay_win, evas_object_del);
delay_win = NULL;
}
static void
_cb_ok(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *info EINA_UNUSED)
{
E_Action *a = e_action_find("shot_delay");
E_FREE_FUNC(delay_win, evas_object_del);
if (a)
{
char buf[128];
snprintf(buf, sizeof(buf), "%i", (int)(delay * 1000.0));
a->func.go(NULL, buf);
}
}
static void
_cb_cancel(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *info EINA_UNUSED)
{
E_FREE_FUNC(delay_win, evas_object_del);
}
void
win_delay(void)
{
Evas_Object *o, *o_bg, *o_bx, *o_sl;
if (delay_win) return;
delay_win = o = elm_win_add(NULL, NULL, ELM_WIN_DIALOG_BASIC);
elm_win_title_set(o, _("Select action to take with screenshot"));
evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, _win_delete_cb, NULL);
ecore_evas_name_class_set(e_win_ee_get(o), "E", "_shot_dialog");
o_bg = o = elm_layout_add(delay_win);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(delay_win, o);
e_theme_edje_object_set(o, "base/theme/dialog", "e/widgets/dialog/main");
evas_object_show(o);
o_sl = o = elm_slider_add(delay_win);
elm_slider_span_size_set(o, 240);
elm_object_text_set(o, _("Delay"));
elm_slider_indicator_show_set(o, EINA_FALSE);
elm_slider_unit_format_set(o, _("%1.1f sec"));
elm_slider_min_max_set(o, 1, 60);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, 1.0);
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_part_content_set(o_bg, "e.swallow.content", o);
evas_object_show(o);
evas_object_smart_callback_add(o, "delay,changed", _cb_delay, NULL);
elm_slider_value_set(o_sl, delay);
o_bx = o = elm_box_add(delay_win);
elm_box_horizontal_set(o, EINA_TRUE);
elm_box_homogeneous_set(o, EINA_TRUE);
elm_object_part_content_set(o_bg, "e.swallow.buttons", o);
evas_object_show(o);
o = elm_button_add(delay_win);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_text_set(o, _("OK"));
elm_box_pack_end(o_bx, o);
evas_object_show(o);
evas_object_smart_callback_add(o, "clicked", _cb_ok, NULL);
o = elm_button_add(delay_win);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_text_set(o, _("Cancel"));
elm_box_pack_end(o_bx, o);
evas_object_show(o);
evas_object_smart_callback_add(o, "clicked", _cb_cancel, NULL);
evas_object_show(delay_win);
}
void
delay_abort(void)
{
E_FREE_FUNC(delay_win, evas_object_del);
}