Enlightenment CVS committal Author : devilhorns Project : e_modules Module : mixer
Dir : e_modules/mixer Modified Files: e_mod_config.c e_mod_main.c e_mod_main.h Log Message: Highly modified patch from Janne Julkunen for launching an external mixer app. =================================================================== RCS file: /cvs/e/e_modules/mixer/e_mod_config.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- e_mod_config.c 12 Sep 2006 17:36:43 -0000 1.15 +++ e_mod_config.c 3 Oct 2006 03:39:15 -0000 1.16 @@ -2,8 +2,6 @@ #include "e_mod_main.h" #include "e_mod_types.h" -//#define DEBUG 1 - struct _E_Config_Dialog_Data { Evas_Object *list; @@ -11,6 +9,9 @@ int card_id; int channel_id; int mode; + + char *app; + int use_app; }; /* Protos */ @@ -28,7 +29,7 @@ E_Config_Dialog_View *v; E_Container *con; char buf[4096]; - + mixer = data; v = E_NEW(E_Config_Dialog_View, 1); @@ -38,7 +39,9 @@ v->free_cfdata = _free_data; v->basic.apply_cfdata = _basic_apply_data; v->basic.create_widgets = _basic_create_widgets; - + v->advanced.apply_cfdata = NULL; + v->advanced.create_widgets = NULL; + snprintf(buf, sizeof(buf), "%s/module.eap", e_module_dir_get(mixer_config->module)); @@ -54,6 +57,9 @@ cfdata->card_id = ci->card_id; cfdata->channel_id = ci->channel_id; cfdata->mode = ci->mode; + cfdata->use_app = ci->use_app; + if (ci->app != NULL) + cfdata->app = strdup(ci->app); } static void * @@ -79,7 +85,7 @@ static Evas_Object * _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) { - Evas_Object *o, *ob, *of; + Evas_Object *o, *ob, *of, *ot; Evas_List *cards, *chans; Config_Item *ci; E_Radio_Group *cg, *mg, *dg; @@ -88,17 +94,14 @@ ci = cfd->data; o = e_widget_list_add(evas, 0, 0); - #ifdef DEBUG - of = e_widget_framelist_add(evas, _("Display Mode"), 0); - dg = e_widget_radio_group_new(&cfdata->mode); - ob = e_widget_radio_add(evas, _("Simple Mode"), SIMPLE_MODE, dg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Full Mode"), FULL_MODE, dg); - e_widget_framelist_object_append(of, ob); - ob = e_widget_radio_add(evas, _("Shelf Mode"), ONEFANG_MODE, dg); - e_widget_framelist_object_append(of, ob); - e_widget_list_object_append(o, of, 1, 1, 0.5); - #endif + + ot = e_widget_frametable_add(evas, _("Mixer Application"), 1); + ob = e_widget_check_add(evas, _("Launch Mixer App"), &(cfdata->use_app)); + e_widget_frametable_object_append(ot, ob, 0, 0, 1, 1, 1, 0, 1, 0); + ob = e_widget_entry_add(evas, &cfdata->app); + e_widget_frametable_object_append(ot, ob, 0, 1, 1, 1, 1, 0, 1, 0); + + e_widget_list_object_append(o, ot, 1, 1, 0.5); if (!mixer->mix_sys->cards) { @@ -106,12 +109,10 @@ mixer->mix_sys->cards = mixer->mix_sys->get_cards(); } - if (mixer->mix_sys->cards) + if ((mixer->mix_sys->cards) && (evas_list_count(mixer->mix_sys->cards) > 1)) { of = e_widget_framelist_add(evas, _("Available Cards"), 0); cg = e_widget_radio_group_new(&cfdata->card_id); - ob = e_widget_radio_add(evas, _("Unknown"), 0, cg); - e_widget_framelist_object_append(of, ob); for (cards = mixer->mix_sys->cards; cards; cards = cards->next) { card = cards->data; @@ -121,7 +122,7 @@ } e_widget_list_object_append(o, of, 1, 1, 0.5); } - + if ((mixer->mix_sys->get_card) && (ci->card_id != 0)) { card = mixer->mix_sys->get_card(ci->card_id); @@ -132,8 +133,6 @@ { of = e_widget_framelist_add(evas, _("Available Mixers"), 0); mg = e_widget_radio_group_new(&cfdata->channel_id); - ob = e_widget_radio_add(evas, _("Unknown"), 0, mg); - e_widget_framelist_object_append(of, ob); for (chans = card->channels; chans; chans = chans->next) { Mixer_Channel *chan; @@ -147,6 +146,7 @@ } } } + return o; } @@ -160,6 +160,10 @@ ci->card_id = cfdata->card_id; ci->channel_id = cfdata->channel_id; ci->mode = cfdata->mode; + ci->use_app = cfdata->use_app; + if (ci->app) evas_stringshare_del(ci->app); + if (cfdata->app != NULL) + ci->app = evas_stringshare_add(cfdata->app); e_config_save_queue(); return 1; =================================================================== RCS file: /cvs/e/e_modules/mixer/e_mod_main.c,v retrieving revision 1.47 retrieving revision 1.48 diff -u -3 -r1.47 -r1.48 --- e_mod_main.c 3 Oct 2006 02:18:04 -0000 1.47 +++ e_mod_main.c 3 Oct 2006 03:39:15 -0000 1.48 @@ -24,10 +24,11 @@ static Evas_Object *_gc_icon (Evas * evas); /* 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 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); @@ -37,17 +38,17 @@ static void _mixer_system_init (void *data); static void _mixer_system_shutdown (void *data); -static void _mixer_window_simple_pop_up (Instance *inst); -static void _mixer_window_simple_pop_down (Instance *inst); +static void _mixer_window_simple_pop_up (Instance *inst); +static void _mixer_window_simple_pop_down (Instance *inst); static int _mixer_window_simple_timer_up_cb (void *data); static int _mixer_window_simple_timer_down_cb (void *data); -static void _mixer_window_simple_changed_cb (void *data, Evas_Object *obj, void *event_info); -static void _mixer_window_simple_mute_cb (void *data, Evas_Object *obj, void *event_info); +static void _mixer_window_simple_changed_cb (void *data, Evas_Object *obj, void *event_info); +static void _mixer_window_simple_mute_cb (void *data, Evas_Object *obj, void *event_info); -static int _mixer_window_simple_mouse_move_cb (void *data, int type, void *event); -static int _mixer_window_simple_mouse_down_cb (void *data, int type, void *event); -static int _mixer_window_simple_mouse_up_cb (void *data, int type, void *event); -static int _mixer_window_simple_mouse_wheel_cb (void *data, int type, void *event); +static int _mixer_window_simple_mouse_move_cb (void *data, int type, void *event); +static int _mixer_window_simple_mouse_down_cb (void *data, int type, void *event); +static int _mixer_window_simple_mouse_up_cb (void *data, int type, void *event); +static int _mixer_window_simple_mouse_wheel_cb (void *data, int type, void *event); /* Private vars */ static E_Config_DD *conf_edd = NULL; @@ -182,9 +183,13 @@ { Instance *inst; Evas_Event_Mouse_Down *ev; + Config_Item *ci; inst = data; if (!inst) return; + + ci = _mixer_config_item_get(inst->mixer, inst->gcc->id); + if (!ci) return; ev = event_info; if ((ev->button == 3) && (!mixer_config->menu)) @@ -216,27 +221,18 @@ 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); - } + _mixer_simple_mute_toggle(inst->mixer, ci); else if (ev->button == 1) { if (ev->flags == EVAS_BUTTON_DOUBLE_CLICK) { - /* Call full mixer window. - For now just call simple till this mode is made */ - _mixer_window_simple_pop_up(inst); + if ((ci->use_app) && (ci->app != NULL)) + ecore_exe_run(ci->app, NULL); + else + _mixer_window_simple_pop_up(inst); } else if (ev->flags == EVAS_BUTTON_NONE) - { - /* Call a simple window */ - _mixer_window_simple_pop_up(inst); - } + _mixer_window_simple_pop_up(inst); } } @@ -312,6 +308,7 @@ ci->card_id = 0; ci->channel_id = 0; ci->mode = SIMPLE_MODE; + ci->app = NULL; } else if (mixer->mix_sys) { @@ -324,6 +321,7 @@ ci->card_id = 0; ci->channel_id = 0; ci->mode = SIMPLE_MODE; + ci->app = NULL; mixer_config->items = evas_list_append(mixer_config->items, ci); return ci; } @@ -335,6 +333,7 @@ ci->card_id = 0; ci->channel_id = 0; ci->mode = SIMPLE_MODE; + ci->app = NULL; mixer_config->items = evas_list_append(mixer_config->items, ci); return ci; } @@ -356,7 +355,6 @@ } } - ci->mode = SIMPLE_MODE; mixer_config->items = evas_list_append(mixer_config->items, ci); return ci; } @@ -431,6 +429,8 @@ E_CONFIG_VAL(D, T, card_id, INT); E_CONFIG_VAL(D, T, channel_id, INT); E_CONFIG_VAL(D, T, mode, INT); + E_CONFIG_VAL(D, T, app, STR); + E_CONFIG_VAL(D, T, use_app, INT); conf_edd = E_CONFIG_DD_NEW("Mixer_Config", Config); #undef T @@ -450,6 +450,8 @@ ci->card_id = 0; ci->channel_id = 0; ci->mode = SIMPLE_MODE; + ci->app = NULL; + ci->use_app = 0; mixer_config->items = evas_list_append(mixer_config->items, ci); } @@ -483,6 +485,7 @@ mixer_config->items = evas_list_remove_list(mixer_config->items, mixer_config->items); if (ci->id) evas_stringshare_del(ci->id); + if (ci->app) evas_stringshare_del(ci->app); E_FREE(ci); } @@ -533,7 +536,7 @@ static void _mixer_volume_change(Mixer *mixer, Config_Item *ci, int channel_id, double val) { - int m; + int m; if (!mixer) return; if (!mixer->mix_sys) return; @@ -742,10 +745,8 @@ "e,state,disabled", "e"); } else - { - edje_object_signal_emit(e_slider_edje_object_get(win->slider), - "e,state,enabled", "e"); - } + edje_object_signal_emit(e_slider_edje_object_get(win->slider), + "e,state,enabled", "e"); } } } =================================================================== RCS file: /cvs/e/e_modules/mixer/e_mod_main.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- e_mod_main.h 12 Sep 2006 12:17:47 -0000 1.6 +++ e_mod_main.h 3 Oct 2006 03:39:15 -0000 1.7 @@ -20,6 +20,9 @@ int card_id; int channel_id; int mode; + + const char *app; + int use_app; }; EAPI extern E_Module_Api e_modapi; ------------------------------------------------------------------------- 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