WOOOO OPAQUE STRUCTS WITHOUT ACCESSORS
[framework/uifw/edbus.git] / src / lib / notification / E_Notify.h
1 #ifndef E_NOTIFY_H
2 #define E_NOTIFY_H
3
4 #include <Eina.h>
5 #include <Evas.h>
6 #include <E_DBus.h>
7
8 /**
9  * @defgroup ENotify_Group ENotify
10  *
11  * @{
12  */
13
14
15 /* notifications */
16 typedef struct E_Notification_Image E_Notification_Image;
17 typedef struct E_Notification E_Notification;
18 typedef struct E_Notification_Action E_Notification_Action;
19
20 typedef enum E_Notification_Urgency E_Notification_Urgency;
21 typedef enum E_Notification_Hint_Type E_Notification_Hint_Type;
22 typedef enum E_Notification_Closed_Reason E_Notification_Closed_Reason;
23
24 /* method returns */
25 typedef struct E_Notification_Return_Notify E_Notification_Return_Notify;
26 typedef struct E_Notification_Return_Get_Capabilities E_Notification_Return_Get_Capabilities;
27 typedef struct E_Notification_Return_Get_Server_Information E_Notification_Return_Get_Server_Information;
28
29
30 /* signal events */
31 typedef struct E_Notification_Event_Action_Invoked E_Notification_Event_Action_Invoked;
32 typedef struct E_Notification_Event_Notification_Closed E_Notification_Event_Notification_Closed;
33
34 /* enums */
35
36 enum E_Notification_Urgency
37 {
38   E_NOTIFICATION_URGENCY_LOW,
39   E_NOTIFICATION_URGENCY_NORMAL,
40   E_NOTIFICATION_URGENCY_CRITICAL
41 };
42
43 enum E_Notification_Closed_Reason
44 {
45   E_NOTIFICATION_CLOSED_EXPIRED,
46   E_NOTIFICATION_CLOSED_DISMISSED,
47   E_NOTIFICATION_CLOSED_REQUESTED,
48   E_NOTIFICATION_CLOSED_UNDEFINED
49 };
50
51 enum E_Notification_Hint_Type
52 {
53   E_NOTIFICATION_HINT_URGENCY        = 0x1,
54   E_NOTIFICATION_HINT_CATEGORY       = 0x2,
55   E_NOTIFICATION_HINT_DESKTOP        = 0x4,
56   E_NOTIFICATION_HINT_SOUND_FILE     = 0x8,
57   E_NOTIFICATION_HINT_SUPPRESS_SOUND = 0x10,
58   E_NOTIFICATION_HINT_XY             = 0x20,
59   E_NOTIFICATION_HINT_IMAGE_DATA     = 0x40
60 };
61
62 /* client method returns */
63 struct E_Notification_Return_Notify
64 {
65   unsigned int notification_id;
66   E_Notification *notification;
67 };
68
69 struct E_Notification_Return_Get_Capabilities
70 {
71   Eina_List *capabilities;
72 };
73
74 struct E_Notification_Return_Get_Server_Information
75 {
76   const char *name;
77   const char *vendor;
78   const char *version;
79   const char *spec_version;
80 };
81
82 /* signals */
83 struct E_Notification_Event_Notification_Closed
84 {
85   unsigned int notification_id;
86   E_Notification_Closed_Reason reason;
87 };
88
89 struct E_Notification_Event_Action_Invoked
90 {
91   unsigned int notification_id;
92   char *action_id;
93 };
94
95 #ifdef __cplusplus
96 extern "C" {
97 #endif
98
99    EAPI int e_notification_init();
100    EAPI int e_notification_shutdown();
101
102 /* client */
103    EAPI void e_notification_send(E_Notification *n, E_DBus_Callback_Func func, void *data);
104    EAPI void e_notification_get_capabilities(E_DBus_Callback_Func func, void *data);
105    EAPI void e_notification_get_server_information(E_DBus_Callback_Func func, void *data);
106
107
108 /* Notifications */
109
110    EAPI E_Notification *e_notification_new();
111    EAPI void e_notification_ref(E_Notification *n);
112    EAPI void e_notification_unref(E_Notification *n);
113    EAPI void e_notification_free(E_Notification *n);
114
115    EAPI E_Notification *e_notification_full_new(const char *app_name,
116                                                 unsigned int replaces_id,
117                                                 const char *app_icon,
118                                                 const char *summary,
119                                                 const char *body,
120                                                 int expire_timeout);
121
122 /* notification mutators */
123    EAPI void e_notification_id_set(E_Notification *note, unsigned int id);
124    EAPI void e_notification_app_name_set(E_Notification *n, const char *app_name);
125    EAPI void e_notification_app_icon_set(E_Notification *n, const char *app_icon);
126    EAPI void e_notification_summary_set(E_Notification *n, const char *summary);
127    EAPI void e_notification_body_set(E_Notification *n, const char *body);
128    EAPI void e_notification_replaces_id_set(E_Notification *n, int replaces_id);
129    EAPI void e_notification_timeout_set(E_Notification *n, int timeout);
130    EAPI void e_notification_closed_set(E_Notification *note, unsigned char closed);
131
132 /* notification accessors */
133    EAPI unsigned int e_notification_id_get(E_Notification *note);
134    EAPI const char *e_notification_app_name_get(E_Notification *n);
135    EAPI const char *e_notification_app_icon_get(E_Notification *n);
136    EAPI const char *e_notification_summary_get(E_Notification *n);
137    EAPI const char *e_notification_body_get(E_Notification *n);
138    EAPI int e_notification_replaces_id_get(E_Notification *note);
139    EAPI int e_notification_timeout_get(E_Notification *note);
140    EAPI unsigned char e_notification_closed_get(E_Notification *note);
141
142 /* actions */
143    EAPI void e_notification_action_add(E_Notification *n, const char *action_id, const char *action_name);
144    EAPI Eina_List *e_notification_actions_get(E_Notification *n);
145    EAPI const char *e_notification_action_id_get(E_Notification_Action *a);
146    EAPI const char *e_notification_action_name_get(E_Notification_Action *a);
147
148 /* hint mutators */
149    EAPI void e_notification_hint_urgency_set(E_Notification *n, char urgency);
150    EAPI void e_notification_hint_category_set(E_Notification *n, const char *category);
151    EAPI void e_notification_hint_desktop_set(E_Notification *n, const char *desktop);
152    EAPI void e_notification_hint_sound_file_set(E_Notification *n, const char *sound_file);
153    EAPI void e_notification_hint_suppress_sound_set(E_Notification *n, char suppress_sound);
154    EAPI void e_notification_hint_xy_set(E_Notification *n, int x, int y);
155    EAPI void e_notification_hint_image_data_set(E_Notification *n, E_Notification_Image *image);
156
157 /* hint accessors */
158    EAPI char  e_notification_hint_urgency_get(E_Notification *n);
159    EAPI const char *e_notification_hint_category_get(E_Notification *n);
160    EAPI const char *e_notification_hint_desktop_get(E_Notification *n);
161    EAPI const char *e_notification_hint_sound_file_get(E_Notification *n);
162    EAPI char  e_notification_hint_suppress_sound_get(E_Notification *n);
163    EAPI int   e_notification_hint_xy_get(E_Notification *n, int *x, int *y);
164    EAPI E_Notification_Image *e_notification_hint_image_data_get(E_Notification *n);
165    EAPI E_Notification_Image *e_notification_hint_icon_data_get(E_Notification *n);
166
167 /* image hint */
168    EAPI E_Notification_Image *e_notification_image_new();
169    EAPI void e_notification_image_free(E_Notification_Image *img);
170    EAPI Evas_Object *e_notification_image_evas_object_add(Evas *evas, E_Notification_Image *img);
171
172 #ifdef __cplusplus
173 }
174 #endif
175
176 /**
177  * @}
178  */
179
180 #endif