1 #include "e_mod_main.h"
3 extern const char _e_mixer_Name[];
5 struct _E_Config_Dialog_Data
11 struct mixer_config_ui_general
20 _find_default_instance_index(E_Mixer_Module_Context *ctxt)
25 for (i = 0, l = ctxt->instances; l; l = l->next, i++)
26 if (l->data == ctxt->default_instance)
33 _create_data(E_Config_Dialog *dialog)
35 E_Config_Dialog_Data *cfdata;
36 E_Mixer_Module_Context *ctxt;
38 cfdata = E_NEW(E_Config_Dialog_Data, 1);
43 cfdata->default_instance = _find_default_instance_index(ctxt);
49 _free_data(E_Config_Dialog *dialog, E_Config_Dialog_Data *cfdata)
51 E_Mixer_Module_Context *ctxt = dialog->data;
53 ctxt->conf_dialog = NULL;
59 _basic_apply(E_Config_Dialog *dialog, E_Config_Dialog_Data *cfdata)
61 E_Mixer_Module_Context *ctxt = dialog->data;
62 ctxt->default_instance = eina_list_nth(ctxt->instances,
63 cfdata->default_instance);
64 if (ctxt->default_instance)
66 E_Mixer_Module_Config *conf;
70 if (conf->default_gc_id)
71 eina_stringshare_del(conf->default_gc_id);
73 id = ctxt->default_instance->gcc->cf->id;
74 conf->default_gc_id = eina_stringshare_add(id);
81 _basic_create_general(E_Config_Dialog *dialog, Evas *evas, E_Config_Dialog_Data *cfdata)
83 struct mixer_config_ui_general *ui = &cfdata->ui.general;
84 E_Mixer_Module_Context *ctxt = dialog->data;
89 ui->frame = e_widget_framelist_add(evas, _("General Settings"), 0);
91 label = e_widget_label_add(evas, _("Mixer to use for global actions:"));
92 e_widget_framelist_object_append(ui->frame, label);
94 ui->radio = e_widget_radio_group_new(&cfdata->default_instance);
95 for (i = 0, l = ctxt->instances; l; l = l->next, i++)
97 E_Mixer_Instance *inst;
98 E_Mixer_Gadget_Config *conf;
101 const char *card_name;
106 card_name = e_mixer_system_get_card_name(conf->card);
107 snprintf(name, sizeof(name), "%s: %s", card_name, conf->channel_name);
108 eina_stringshare_del(card_name);
110 o = e_widget_radio_add(evas, name, i, ui->radio);
111 e_widget_framelist_object_append(ui->frame, o);
114 e_widget_list_object_append(cfdata->ui.list, ui->frame, 1, 1, 0.5);
118 cb_mixer_app_del(E_Dialog *dialog __UNUSED__, void *data)
120 E_Mixer_Module_Context *ctxt = data;
121 ctxt->mixer_dialog = NULL;
125 cb_mixer_call(void *data, void *data2 __UNUSED__)
127 E_Mixer_Module_Context *ctxt = data;
130 if (ctxt->mixer_dialog)
132 e_dialog_show(ctxt->mixer_dialog);
136 con = e_container_current_get(e_manager_current_get());
137 ctxt->mixer_dialog = e_mixer_app_dialog_new(con, cb_mixer_app_del, ctxt);
141 _basic_create_mixer_call(E_Config_Dialog *dialog, Evas *evas, E_Config_Dialog_Data *cfdata)
145 button = e_widget_button_add(evas, _("Launch mixer..."), NULL,
146 cb_mixer_call, dialog->data, NULL);
147 e_widget_list_object_append(cfdata->ui.list, button, 0, 0, 0.0);
151 _basic_create(E_Config_Dialog *dialog, Evas *evas, E_Config_Dialog_Data *cfdata)
156 cfdata->ui.list = e_widget_list_add(evas, 0, 0);
157 _basic_create_general(dialog, evas, cfdata);
158 _basic_create_mixer_call(dialog, evas, cfdata);
159 return cfdata->ui.list;
163 e_mixer_config_module_dialog_new(E_Container *con, E_Mixer_Module_Context *ctxt)
165 E_Config_Dialog *dialog;
166 E_Config_Dialog_View *view;
168 if (e_config_dialog_find(_e_mixer_Name, "extensions/mixer"))
171 view = E_NEW(E_Config_Dialog_View, 1);
175 view->create_cfdata = _create_data;
176 view->free_cfdata = _free_data;
177 view->basic.create_widgets = _basic_create;
178 view->basic.apply_cfdata = _basic_apply;
180 dialog = e_config_dialog_new(con, _("Mixer Module Settings"),
181 _e_mixer_Name, "extensions/mixer",
182 e_mixer_theme_path(), 0, view, ctxt);