Show mixer popup when changing the volume via keybindings.

SVN revision: 53347
This commit is contained in:
Miculcy Brian 2010-10-13 10:36:04 +00:00
parent 6781f88655
commit da963d78d9
2 changed files with 53 additions and 6 deletions

View File

@ -486,6 +486,9 @@ _mixer_popup_del(E_Mixer_Instance *inst)
inst->ui.table = NULL;
inst->ui.button = NULL;
inst->popup = NULL;
if (inst->popup_timer)
ecore_timer_del(inst->popup_timer);
inst->popup_timer = NULL;
}
static void
@ -598,6 +601,37 @@ _mixer_popup_new(E_Mixer_Instance *inst)
_mixer_popup_input_window_create(inst);
}
static void
_mixer_popup_timer_new(E_Mixer_Instance *inst)
{
if (inst->popup)
{
if (inst->popup_timer)
{
ecore_timer_del(inst->popup_timer);
inst->popup_timer = ecore_timer_add(1.0, _mixer_popup_timer_cb, inst);
}
}
else
{
_mixer_popup_new(inst);
inst->popup_timer = ecore_timer_add(1.0, _mixer_popup_timer_cb, inst);
}
}
static Eina_Bool
_mixer_popup_timer_cb(void *data)
{
E_Mixer_Instance *inst;
inst = data;
if (inst->popup)
_mixer_popup_del(inst);
inst->popup_timer = NULL;
return ECORE_CALLBACK_CANCEL;
}
static void
_mixer_menu_cb_post(void *data, E_Menu *menu __UNUSED__)
{
@ -978,8 +1012,12 @@ _mixer_cb_volume_increase(E_Object *obj __UNUSED__, const char *params __UNUSED_
if (!ctxt->conf)
return;
if (ctxt->default_instance)
_mixer_volume_increase(ctxt->default_instance);
if (!ctxt->default_instance)
return;
_mixer_popup_timer_new(ctxt->default_instance);
_mixer_volume_increase(ctxt->default_instance);
}
static void
@ -994,8 +1032,11 @@ _mixer_cb_volume_decrease(E_Object *obj __UNUSED__, const char *params __UNUSED_
if (!ctxt->conf)
return;
if (ctxt->default_instance)
_mixer_volume_decrease(ctxt->default_instance);
if (!ctxt->default_instance)
return;
_mixer_popup_timer_new(ctxt->default_instance);
_mixer_volume_decrease(ctxt->default_instance);
}
static void
@ -1010,8 +1051,11 @@ _mixer_cb_volume_mute(E_Object *obj __UNUSED__, const char *params __UNUSED__)
if (!ctxt->conf)
return;
if (ctxt->default_instance)
_mixer_toggle_mute(ctxt->default_instance);
if (!ctxt->default_instance)
return;
_mixer_popup_timer_new(ctxt->default_instance);
_mixer_toggle_mute(ctxt->default_instance);
}
static E_Config_Dialog *

View File

@ -29,6 +29,7 @@ typedef struct E_Mixer_Instance
{
E_Gadcon_Client *gcc;
E_Gadcon_Popup *popup;
Ecore_Timer *popup_timer;
E_Menu *menu;
struct
@ -81,6 +82,8 @@ E_Config_Dialog *e_mixer_config_dialog_new(E_Container *con, E_Mixer_Gadget_Conf
E_Dialog *e_mixer_app_dialog_new(E_Container *con, void (*func)(E_Dialog *dialog, void *data), void *data);
int e_mixer_app_dialog_select(E_Dialog *dialog, const char *card_name, const char *channel_name);
static void _mixer_popup_timer_new(E_Mixer_Instance *inst);
static Eina_Bool _mixer_popup_timer_cb(void *data);
int e_mixer_update(E_Mixer_Instance *inst);
const char *e_mixer_theme_path(void);