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);
76 conf->desktop_notification = ctxt->desktop_notification;
83 _basic_create_general(E_Config_Dialog *dialog, Evas *evas, E_Config_Dialog_Data *cfdata)
85 struct mixer_config_ui_general *ui = &cfdata->ui.general;
86 E_Mixer_Module_Context *ctxt = dialog->data;
87 Evas_Object *label, *chk;
91 ui->frame = e_widget_framelist_add(evas, _("General Settings"), 0);
93 label = e_widget_label_add(evas, _("Mixer to use for global actions:"));
94 e_widget_framelist_object_append(ui->frame, label);
96 ui->radio = e_widget_radio_group_new(&cfdata->default_instance);
97 for (i = 0, l = ctxt->instances; l; l = l->next, i++)
99 E_Mixer_Instance *inst;
100 E_Mixer_Gadget_Config *conf;
103 const char *card_name;
108 card_name = e_mixer_system_get_card_name(conf->card);
109 snprintf(name, sizeof(name), "%s: %s", card_name, conf->channel_name);
110 eina_stringshare_del(card_name);
112 o = e_widget_radio_add(evas, name, i, ui->radio);
113 e_widget_framelist_object_append(ui->frame, o);
117 e_widget_list_object_append(cfdata->ui.list, ui->frame, 1, 1, 0.5);
118 chk = e_widget_check_add(evas, _("Diplay desktop notifications on volume change"), &ctxt->desktop_notification);
119 e_widget_check_checked_set(chk, ctxt->conf->desktop_notification);
121 e_widget_disabled_set(chk, EINA_TRUE);
123 e_widget_list_object_append(cfdata->ui.list, chk, 1, 1, 0.5);
127 cb_mixer_app_del(E_Dialog *dialog __UNUSED__, void *data)
129 E_Mixer_Module_Context *ctxt = data;
130 ctxt->mixer_dialog = NULL;
134 cb_mixer_call(void *data, void *data2 __UNUSED__)
136 E_Mixer_Module_Context *ctxt = data;
139 if (ctxt->mixer_dialog)
141 e_dialog_show(ctxt->mixer_dialog);
145 con = e_container_current_get(e_manager_current_get());
146 ctxt->mixer_dialog = e_mixer_app_dialog_new(con, cb_mixer_app_del, ctxt);
150 _basic_create_mixer_call(E_Config_Dialog *dialog, Evas *evas, E_Config_Dialog_Data *cfdata)
154 button = e_widget_button_add(evas, _("Launch mixer..."), NULL,
155 cb_mixer_call, dialog->data, NULL);
156 e_widget_list_object_append(cfdata->ui.list, button, 0, 0, 0.0);
160 _basic_create(E_Config_Dialog *dialog, Evas *evas, E_Config_Dialog_Data *cfdata)
165 cfdata->ui.list = e_widget_list_add(evas, 0, 0);
166 _basic_create_general(dialog, evas, cfdata);
167 _basic_create_mixer_call(dialog, evas, cfdata);
168 return cfdata->ui.list;
172 e_mixer_config_module_dialog_new(E_Container *con, E_Mixer_Module_Context *ctxt)
174 E_Config_Dialog *dialog;
175 E_Config_Dialog_View *view;
177 if (e_config_dialog_find(_e_mixer_Name, "extensions/mixer"))
180 view = E_NEW(E_Config_Dialog_View, 1);
184 view->create_cfdata = _create_data;
185 view->free_cfdata = _free_data;
186 view->basic.create_widgets = _basic_create;
187 view->basic.apply_cfdata = _basic_apply;
189 dialog = e_config_dialog_new(con, _("Mixer Module Settings"),
190 _e_mixer_Name, "extensions/mixer",
191 e_mixer_theme_path(), 0, view, ctxt);