Enlightenment CVS committal Author : urandom Project : e_modules Module : mixer
Dir : e_modules/mixer Modified Files: e_mod_main.c Log Message: middle clicking on the icon now also does the muting =================================================================== RCS file: /cvs/e/e_modules/mixer/e_mod_main.c,v retrieving revision 1.45 retrieving revision 1.46 diff -u -3 -r1.45 -r1.46 --- e_mod_main.c 16 Sep 2006 13:05:25 -0000 1.45 +++ e_mod_main.c 22 Sep 2006 10:08:00 -0000 1.46 @@ -1,3 +1,6 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ #include <e.h> #include "e_mod_main.h" #include "e_mod_types.h" @@ -23,6 +26,8 @@ /* Module Protos */ static void _mixer_simple_volume_change(Mixer *mixer, Config_Item *ci, double val); static void _mixer_volume_change(Mixer *mixer, Config_Item *ci, int channel_id, double val); +static void _mixer_simple_mute_toggle(Mixer *mixer, Config_Item *ci); +static void _mixer_mute_toggle(Mixer *mixer, Config_Item *ci, int channel_id); static Config_Item *_mixer_config_item_get (void *data, const char *id); static void _mixer_menu_cb_post (void *data, E_Menu *m); static void _mixer_menu_cb_configure (void *data, E_Menu *m, E_Menu_Item *mi); @@ -210,6 +215,15 @@ evas_event_feed_mouse_up(inst->gcc->gadcon->evas, ev->button, EVAS_BUTTON_NONE, ev->timestamp, NULL); } + else if (ev->button == 2) + { + Config_Item *ci; + + ci = _mixer_config_item_get(inst->mixer, inst->gcc->id); + if (!ci) return; + + _mixer_simple_mute_toggle(inst->mixer, ci); + } else if (ev->button == 1) { if (ev->flags == EVAS_BUTTON_DOUBLE_CLICK) @@ -547,6 +561,52 @@ } } +/* Mutes the main channel */ +static void +_mixer_simple_mute_toggle(Mixer *mixer, Config_Item *ci) +{ + if (!mixer) return; + if (!ci) return; + + _mixer_mute_toggle(mixer, ci, ci->channel_id); +} + +/* Mute the given channel */ +static void +_mixer_mute_toggle(Mixer *mixer, Config_Item *ci, int channel_id) +{ + int m; + Mixer_Win_Simple *win; + + if (!ci) return; + if (!mixer) return; + if (!mixer->mix_sys) return; + if (!mixer->mix_sys->get_mute) return; + if (!mixer->mix_sys->set_mute) return; + if (!mixer->mix_sys->get_volume) return; + + win = mixer->simple_win; + m = mixer->mix_sys->get_mute(ci->card_id, channel_id); + m = m ? 0 : 1; + mixer->mix_sys->set_mute(ci->card_id, ci->channel_id, m); + if (m) + { + edje_object_signal_emit(mixer->base, "muted", ""); + if (win) { + edje_object_signal_emit(e_slider_edje_object_get(win->slider), + "e,state,disabled", "e"); + } + } + else + { + edje_object_signal_emit(mixer->base, "medium", ""); + if (win) { + edje_object_signal_emit(e_slider_edje_object_get(win->slider), + "e,state,enabled", "e"); + } + } +} + /* Makes the simple window containing the slider pop up */ static void _mixer_window_simple_pop_up(Instance *inst) @@ -866,36 +926,14 @@ Mixer_Win_Simple *win; Mixer *mixer; Config_Item *ci; - double val; - int m; if (!(win = data)) return; mixer = win->mixer; - if (!mixer) return; - if (!mixer->mix_sys) return; - if (!mixer->mix_sys->set_mute) return; - if (!mixer->mix_sys->get_volume) return; - ci = _mixer_config_item_get(mixer, mixer->inst->gcc->id); if (!ci) return; - m = e_widget_check_checked_get(win->check); - mixer->mix_sys->set_mute(ci->card_id, ci->channel_id, m); - if (m) - { - edje_object_signal_emit(mixer->base, "muted", ""); - e_slider_value_set(win->slider, 1.0); - edje_object_signal_emit(e_slider_edje_object_get(win->slider), - "e,state,disabled", "e"); - } - else - { - edje_object_signal_emit(mixer->base, "medium", ""); - e_slider_value_set(win->slider, 0.5); - edje_object_signal_emit(e_slider_edje_object_get(win->slider), - "e,state,enabled", "e"); - } + _mixer_simple_mute_toggle(mixer, ci); } /* Called when the mouse moves over the input window */ ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs