update for beta release
[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_CONFIG_FILE_EPOCH 0x0000
9 #define MOD_CONFIG_FILE_GENERATION 0x0003
10 #define MOD_CONFIG_FILE_VERSION                                 \
11   ((MOD_CONFIG_FILE_EPOCH << 16) | MOD_CONFIG_FILE_GENERATION)
12
13 typedef struct E_Mixer_Gadget_Config
14 {
15    int lock_sliders;
16    int show_locked;
17    int keybindings_popup;
18    const char *card;
19    const char *channel_name;
20    const char *id;
21    E_Config_Dialog *dialog;
22    struct E_Mixer_Instance *instance;
23 } E_Mixer_Gadget_Config;
24
25 typedef struct E_Mixer_Module_Config
26 {
27    int version;
28    const char *default_gc_id;
29    Eina_Hash *gadgets;
30    int desktop_notification;
31 } E_Mixer_Module_Config;
32
33 typedef struct E_Mixer_Instance
34 {
35    E_Gadcon_Client *gcc;
36    E_Gadcon_Popup *popup;
37    Ecore_Timer *popup_timer;
38    E_Menu *menu;
39
40    struct
41    {
42       Evas_Object *gadget;
43       Evas_Object *label;
44       Evas_Object *left;
45       Evas_Object *right;
46       Evas_Object *mute;
47       Evas_Object *table;
48       Evas_Object *button;
49       struct
50       {
51          Ecore_X_Window win;
52          Ecore_Event_Handler *mouse_up;
53          Ecore_Event_Handler *key_down;
54       } input;
55    } ui;
56
57    E_Mixer_System *sys;
58    E_Mixer_Channel *channel;
59    E_Mixer_Channel_State mixer_state;
60    E_Mixer_Gadget_Config *conf;
61 } E_Mixer_Instance;
62
63 typedef struct E_Mixer_Module_Context
64 {
65    E_Config_DD *module_conf_edd;
66    E_Config_DD *gadget_conf_edd;
67    E_Mixer_Module_Config *conf;
68    E_Config_Dialog *conf_dialog;
69    E_Mixer_Instance *default_instance;
70    Eina_List *instances;
71    E_Dialog *mixer_dialog;
72    struct st_mixer_actions
73    {
74       E_Action *incr;
75       E_Action *decr;
76       E_Action *mute;
77    } actions;
78    int desktop_notification;
79 } E_Mixer_Module_Context;
80
81 typedef int (*E_Mixer_Volume_Set_Cb)(E_Mixer_System *, E_Mixer_Channel *, int, int);
82 typedef int (*E_Mixer_Volume_Get_Cb)(E_Mixer_System *, E_Mixer_Channel *, int *, int *);
83 typedef int (*E_Mixer_Mute_Get_Cb)(E_Mixer_System *, E_Mixer_Channel *, int *);
84 typedef int (*E_Mixer_Mute_Set_Cb)(E_Mixer_System *, E_Mixer_Channel *, int);
85 typedef int (*E_Mixer_State_Get_Cb)(E_Mixer_System *, E_Mixer_Channel *, E_Mixer_Channel_State *);
86 typedef int (*E_Mixer_Capture_Cb)(E_Mixer_System *, E_Mixer_Channel *);
87 typedef void *(*E_Mixer_Cb)();
88
89 EAPI extern E_Module_Api e_modapi;
90 EAPI void *e_modapi_init(E_Module *m);
91 EAPI int e_modapi_shutdown(E_Module *m);
92 EAPI int e_modapi_save(E_Module *m);
93
94 E_Config_Dialog *e_mixer_config_module_dialog_new(E_Container *con, E_Mixer_Module_Context *ctxt);
95 E_Config_Dialog *e_mixer_config_dialog_new(E_Container *con, E_Mixer_Gadget_Config *conf);
96 E_Dialog *e_mixer_app_dialog_new(E_Container *con, void (*func)(E_Dialog *dialog, void *data), void *data);
97 int e_mixer_app_dialog_select(E_Dialog *dialog, const char *card_name, const char *channel_name);
98
99 int e_mixer_update(E_Mixer_Instance *inst);
100 void e_mixer_default_setup(void);
101 void e_mixer_pulse_setup(void);
102 const char *e_mixer_theme_path(void);
103
104 void e_mod_mixer_pulse_ready(Eina_Bool);
105 void e_mod_mixer_pulse_update(void);
106
107 extern Eina_Bool _mixer_using_default;
108 extern E_Mixer_Volume_Get_Cb e_mod_mixer_volume_get;
109 extern E_Mixer_Volume_Set_Cb e_mod_mixer_volume_set;
110 extern E_Mixer_Mute_Get_Cb e_mod_mixer_mute_get;
111 extern E_Mixer_Mute_Set_Cb e_mod_mixer_mute_set;
112 extern E_Mixer_Capture_Cb e_mod_mixer_mutable_get;
113 extern E_Mixer_State_Get_Cb e_mod_mixer_state_get;
114 extern E_Mixer_Capture_Cb e_mod_mixer_capture_get;
115 extern E_Mixer_Cb e_mod_mixer_new;
116 extern E_Mixer_Cb e_mod_mixer_del;
117 extern E_Mixer_Cb e_mod_mixer_channel_default_name_get;
118 extern E_Mixer_Cb e_mod_mixer_channel_get_by_name;
119 extern E_Mixer_Cb e_mod_mixer_channel_name_get;
120 extern E_Mixer_Cb e_mod_mixer_channel_del;
121 extern E_Mixer_Cb e_mod_mixer_channel_free;
122 extern E_Mixer_Cb e_mod_mixer_channels_free;
123 extern E_Mixer_Cb e_mod_mixer_channels_get;
124 extern E_Mixer_Cb e_mod_mixer_channels_names_get;
125 extern E_Mixer_Cb e_mod_mixer_card_name_get;
126 extern E_Mixer_Cb e_mod_mixer_cards_get;
127 extern E_Mixer_Cb e_mod_mixer_cards_free;
128 extern E_Mixer_Cb e_mod_mixer_card_default_get;
129 #endif