ctrl+q now required to quit, F1 toggles overlays

This commit is contained in:
zmike 2014-01-18 21:50:07 -05:00
parent ddf6af2851
commit 48d33793a7
1 changed files with 52 additions and 10 deletions

62
empc.c
View File

@ -26,6 +26,7 @@ static Evas_Object *win = NULL;
static Evas_Object *bg = NULL;
static Evas_Object *layout = NULL;
static Eina_Bool overlays_locked = EINA_FALSE;
static Evas_Object *queue_list = NULL;
static Evas_Object *controls = NULL;
static Ecore_Timer *queue_list_hide_timer = NULL;
@ -65,6 +66,15 @@ queue_list_hide(void *d EINA_UNUSED)
return EINA_FALSE;
}
static void
queue_list_show(void)
{
queue_list_hiding = EINA_FALSE;
evas_object_show(queue_list);
queue_list_state = EINA_TRUE;
elm_object_signal_emit(layout, "empc,playlist,show", "empc");
}
static void
controls_hidden(void *d EINA_UNUSED, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
{
@ -80,6 +90,15 @@ controls_hide(void *d EINA_UNUSED)
return EINA_FALSE;
}
static void
controls_show(void)
{
controls_hiding = EINA_FALSE;
evas_object_show(controls);
controls_state = EINA_TRUE;
elm_object_signal_emit(layout, "empc,controls,show", "empc");
}
static void
title_changed(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
{
@ -511,15 +530,13 @@ queue_list_mouse_in(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const
{
E_FREE_FUNC(queue_list_hide_timer, ecore_timer_del);
if (queue_list_state && (!queue_list_hiding)) return;
queue_list_hiding = EINA_FALSE;
evas_object_show(queue_list);
queue_list_state = EINA_TRUE;
elm_object_signal_emit(layout, "empc,playlist,show", "empc");
queue_list_show();
}
static void
queue_list_mouse_out(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
{
if (overlays_locked) return;
if (!queue_list_hide_timer)
queue_list_hide_timer = ecore_timer_add(HIDE_TIMEOUT, queue_list_hide, NULL);
}
@ -529,15 +546,13 @@ controls_mouse_in(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const ch
{
E_FREE_FUNC(controls_hide_timer, ecore_timer_del);
if (controls_state && (!controls_hiding)) return;
controls_hiding = EINA_FALSE;
evas_object_show(controls);
controls_state = EINA_TRUE;
elm_object_signal_emit(layout, "empc,controls,show", "empc");
controls_show();
}
static void
controls_mouse_out(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
{
if (overlays_locked) return;
if (!controls_hide_timer)
controls_hide_timer = ecore_timer_add(HIDE_TIMEOUT, controls_hide, NULL);
}
@ -545,8 +560,26 @@ controls_mouse_out(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const c
static void
key_down(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, Evas_Event_Key_Down *ev)
{
if (!strcmp(ev->keyname, "q"))
if ((!strcmp(ev->keyname, "q")) && evas_key_modifier_is_set(ev->modifiers, "Control"))
ecore_main_loop_quit();
else if (!strcmp(ev->keyname, "F1"))
{
overlays_locked = !overlays_locked;
if (overlays_locked)
{
E_FREE_FUNC(queue_list_hide_timer, ecore_timer_del);
E_FREE_FUNC(controls_hide_timer, ecore_timer_del);
if (!controls_state)
controls_show();
if (!queue_list_state)
queue_list_show();
}
else
{
controls_hide(NULL);
queue_list_hide(NULL);
}
}
}
int
@ -577,7 +610,16 @@ main(int argc, char *argv[])
win = elm_win_add(NULL, "empc", ELM_WIN_BASIC);
elm_win_title_set(win, "empc");
elm_win_autodel_set(win, 1);
1 | evas_object_key_grab(win, "q", 0, 0, 1);
{
Evas_Modifier_Mask ctrl, shift, alt;
Evas *e = evas_object_evas_get(win);
ctrl = evas_key_modifier_mask_get(e, "Control");
shift = evas_key_modifier_mask_get(e, "Shift");
alt = evas_key_modifier_mask_get(e, "Alt");
1 | evas_object_key_grab(win, "q", 0, ctrl, 1);
1 | evas_object_key_grab(win, "F1", 0, 0, 1);
}
evas_object_event_callback_add(win, EVAS_CALLBACK_KEY_DOWN, (Evas_Object_Event_Cb)key_down, NULL);
layout = elm_layout_add(win);