f390985ac28342174670ae09e33d99c466f7cc26
[framework/uifw/e17.git] / src / modules / mixer / e_mod_main.h
1 #ifndef E_MOD_MAIN_H
2 #define E_MOD_MAIN_H
3
4 #include "config.h"
5 #include "e_mod_system.h"
6 #include <e.h>
7
8 #define MOD_CONF_VERSION 3
9
10 typedef struct E_Mixer_Gadget_Config
11 {
12    int lock_sliders;
13    int show_locked;
14    int keybindings_popup;
15    const char *card;
16    const char *channel_name;
17    const char *id;
18    E_Config_Dialog *dialog;
19    struct E_Mixer_Instance *instance;
20 } E_Mixer_Gadget_Config;
21
22 typedef struct E_Mixer_Module_Config
23 {
24    int version;
25    const char *default_gc_id;
26    Eina_Hash *gadgets;
27 } E_Mixer_Module_Config;
28
29 typedef struct E_Mixer_Instance
30 {
31    E_Gadcon_Client *gcc;
32    E_Gadcon_Popup *popup;
33    Ecore_Timer *popup_timer;
34    E_Menu *menu;
35
36    struct
37    {
38       Evas_Object *gadget;
39       Evas_Object *label;
40       Evas_Object *left;
41       Evas_Object *right;
42       Evas_Object *mute;
43       Evas_Object *table;
44       Evas_Object *button;
45       struct
46       {
47          Ecore_X_Window win;
48          Ecore_Event_Handler *mouse_up;
49          Ecore_Event_Handler *key_down;
50       } input;
51    } ui;
52
53    E_Mixer_System *sys;
54    E_Mixer_Channel *channel;
55    E_Mixer_Channel_State mixer_state;
56    E_Mixer_Gadget_Config *conf;
57 } E_Mixer_Instance;
58
59 typedef struct E_Mixer_Module_Context
60 {
61    E_Config_DD *module_conf_edd;
62    E_Config_DD *gadget_conf_edd;
63    E_Mixer_Module_Config *conf;
64    E_Config_Dialog *conf_dialog;
65    E_Mixer_Instance *default_instance;
66    Eina_List *instances;
67    E_Dialog *mixer_dialog;
68    struct st_mixer_actions
69    {
70       E_Action *incr;
71       E_Action *decr;
72       E_Action *mute;
73    } actions;
74 } E_Mixer_Module_Context;
75
76 EAPI extern E_Module_Api e_modapi;
77 EAPI void *e_modapi_init(E_Module *m);
78 EAPI int e_modapi_shutdown(E_Module *m);
79 EAPI int e_modapi_save(E_Module *m);
80
81 E_Config_Dialog *e_mixer_config_module_dialog_new(E_Container *con, E_Mixer_Module_Context *ctxt);
82 E_Config_Dialog *e_mixer_config_dialog_new(E_Container *con, E_Mixer_Gadget_Config *conf);
83 E_Dialog *e_mixer_app_dialog_new(E_Container *con, void (*func)(E_Dialog *dialog, void *data), void *data);
84 int e_mixer_app_dialog_select(E_Dialog *dialog, const char *card_name, const char *channel_name);
85
86 int e_mixer_update(E_Mixer_Instance *inst);
87 const char *e_mixer_theme_path(void);
88
89 #endif