tizen 2.3 release
[apps/livebox/livebox-viewer.git] / dynamicbox_viewer / include / dynamicbox_internal.h
1 /*
2  * Copyright 2013  Samsung Electronics Co., Ltd
3  *
4  * Licensed under the Flora License, Version 1.1 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://floralicense.org/license/
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 struct cb_info {
18     dynamicbox_ret_cb cb;
19     void *data;
20 };
21
22 extern void dbox_invoke_event_handler(struct dynamicbox *handler, dynamicbox_event_type_e event);
23 extern void dbox_invoke_fault_handler(dynamicbox_fault_type_e type, const char *pkgname, const char *filename, const char *function);
24
25 extern struct dynamicbox_common *dbox_find_common_handle(const char *pkgname, const char *filename);
26 extern struct dynamicbox *dbox_new_dynamicbox(const char *pkgname, const char *id, double timestamp, const char *cluster, const char *category);
27 extern struct dynamicbox_common *dbox_find_common_handle_by_timestamp(double timestamp);
28
29 extern int dbox_set_group(struct dynamicbox_common *common, const char *cluster, const char *category);
30 extern void dbox_set_size(struct dynamicbox_common *common, int w, int h);
31 extern void dbox_set_gbarsize(struct dynamicbox_common *common, int w, int h);
32 extern void dbox_set_default_gbarsize(struct dynamicbox_common *common, int w, int h);
33 extern int dbox_set_content(struct dynamicbox_common *common, const char *content);
34 extern int dbox_set_title(struct dynamicbox_common *handler, const char *title);
35 extern void dbox_set_auto_launch(struct dynamicbox_common *handler, const char *auto_launch);
36 extern void dbox_set_id(struct dynamicbox_common *handler, const char *id);
37 extern void dbox_set_size_list(struct dynamicbox_common *handler, int size_list);
38 extern void dbox_set_priority(struct dynamicbox_common *handler, double priority);
39 extern int dbox_set_dbox_fb(struct dynamicbox_common *handler, const char *filename);
40 extern int dbox_set_gbar_fb(struct dynamicbox_common *handler, const char *filename);
41 extern struct fb_info *dbox_get_gbar_fb(struct dynamicbox_common *handler);
42 extern struct fb_info *dbox_get_dbox_fb(struct dynamicbox_common *handler);
43 extern void dbox_set_user(struct dynamicbox_common *handler, int user);
44 extern void dbox_set_pinup(struct dynamicbox_common *handler, int pinup);
45 extern void dbox_set_text_dbox(struct dynamicbox_common *handler);
46 extern void dbox_set_text_gbar(struct dynamicbox_common *handler);
47 extern int dbox_text_dbox(struct dynamicbox_common *handler);
48 extern int dbox_text_gbar(struct dynamicbox_common *handler);
49 extern void dbox_set_period(struct dynamicbox_common *handler, double period);
50 extern void dbox_set_update_mode(struct dynamicbox_common *handler, int active_mode);
51 extern void dbox_set_filename(struct dynamicbox_common *handler, const char *filename);
52 extern void dbox_unlink_filename(struct dynamicbox_common *common);
53 extern void dbox_set_alt_icon(struct dynamicbox_common *handler, const char *icon);
54 extern void dbox_set_alt_name(struct dynamicbox_common *handle, const char *name);
55 extern int dbox_destroy_common_handle(struct dynamicbox_common *common);
56 extern struct dynamicbox_common *dbox_create_common_handle(struct dynamicbox *handle, const char *pkgname, const char *cluster, const char *category);
57 extern int dbox_sync_gbar_fb(struct dynamicbox_common *common);
58 extern int dbox_sync_dbox_fb(struct dynamicbox_common *common);
59 extern int dbox_common_unref(struct dynamicbox_common *common, struct dynamicbox *handle);
60 extern int dbox_common_ref(struct dynamicbox_common *common, struct dynamicbox *handle);
61 extern struct dynamicbox_common *dbox_find_sharable_common_handle(const char *pkgname, const char *content, int w, int h, const char *cluster, const char *category);
62 extern struct dynamicbox *dbox_find_dbox_in_show(struct dynamicbox_common *common);
63 extern struct dynamicbox *dbox_get_dbox_nth(struct dynamicbox_common *common, int nth);
64 extern void *dbox_remove_event_handler(dynamicbox_event_handler_cb dbox_cb);
65 extern int dbox_add_event_handler(dynamicbox_event_handler_cb dbox_cb, void *data);
66 extern int dbox_add_fault_handler(dynamicbox_fault_handler_cb dbox_cb, void *data);
67 extern void *dbox_remove_fault_handler(dynamicbox_fault_handler_cb dbox_cb);
68 extern struct cb_info *dbox_create_cb_info(dynamicbox_ret_cb cb, void *data);
69 extern void dbox_destroy_cb_info(struct cb_info *info);
70
71 extern struct dynamicbox *dbox_ref(struct dynamicbox *handler);
72 extern struct dynamicbox *dbox_unref(struct dynamicbox *handler, int destroy_common);
73 extern int dbox_send_delete(struct dynamicbox *handler, int type, dynamicbox_ret_cb cb, void *data);
74 extern int dbox_delete_all(void);
75
76 typedef enum dynamicbox_state {
77     DBOX_STATE_CREATE = 0xBEEFbeef,
78     DBOX_STATE_DELETE = 0xDEADdead, /* Delete only for this client */
79     DBOX_STATE_DESTROYED = 0x00DEAD00
80 } dynamicbox_state_e;
81
82 struct dynamicbox_common {
83     dynamicbox_state_e state;
84
85     struct dlist *dynamicbox_list;
86     int refcnt;
87
88     char *cluster;
89     char *category;
90
91     char *pkgname;
92     char *id;
93
94     char *content;
95     char *title;
96     char *filename;
97
98     double timestamp;
99
100     struct alt_info {
101         char *icon;
102         char *name;
103     } alt;
104
105     dynamicbox_delete_type_e delete_type;
106
107     int is_user;
108     int is_gbar_created;
109     int is_pinned_up;
110     int is_active_update;
111     dynamicbox_visible_state_e visible;
112
113     struct {
114         dynamicbox_dbox_type_e type;
115         struct fb_info *fb;
116
117         int size_list;
118
119         int width;
120         int height;
121         double priority;
122
123         char *auto_launch;
124         double period;
125         int pinup_supported;
126         int mouse_event;
127
128         /* For the filtering event */
129         double x;
130         double y;
131
132         /* For the extra buffer */
133         unsigned int *extra_buffer;
134         int last_extra_buffer_idx;
135
136         /* Lock */
137         dynamicbox_lock_info_t lock;
138
139         /* For damaged region */
140         struct dynamicbox_damage_region last_damage;
141     } dbox;
142
143     struct {
144         dynamicbox_gbar_type_e type;
145         struct fb_info *fb;
146
147         int width;
148         int height;
149
150         int default_width;
151         int default_height;
152
153         /* For the filtering event */
154         double x;
155         double y;
156
157         /* For the extra buffer */
158         unsigned int *extra_buffer;
159         int last_extra_buffer_idx;
160
161         /* Lock */
162         dynamicbox_lock_info_t lock;
163
164         /* For damaged region */
165         struct dynamicbox_damage_region last_damage;
166     } gbar;
167
168     int nr_of_sizes;
169
170     struct requested_flag {
171         unsigned int created:1;
172         unsigned int deleted:1;
173         unsigned int pinup:1;
174         unsigned int group_changed:1;
175         unsigned int period_changed:1;
176         unsigned int size_changed:1;
177         unsigned int gbar_created:1;
178         unsigned int gbar_destroyed:1;
179         unsigned int update_mode:1;
180         unsigned int access_event:1;
181         unsigned int key_event:1;
182
183         /*!
184          * \note
185          * Reserved
186          */
187         unsigned int reserved:21;
188     } request;
189 };
190
191 struct job_item {
192     struct dynamicbox *handle;
193     dynamicbox_ret_cb cb;
194     int ret;
195     void *data;
196 };
197
198 struct dynamicbox {
199     dynamicbox_state_e state;
200
201     int refcnt;
202     int paused_updating;
203
204     dynamicbox_visible_state_e visible;
205     struct dynamicbox_common *common;
206
207     void *data;
208
209     struct callback_table {
210         struct dynamicbox_script_operators dbox_ops;
211         struct dynamicbox_script_operators gbar_ops;
212
213         struct created {
214             dynamicbox_ret_cb cb;
215             void *data;
216         } created;
217
218         struct deleted {
219             dynamicbox_ret_cb cb;
220             void *data;
221         } deleted;
222
223         struct pinup {
224             dynamicbox_ret_cb cb;
225             void *data;
226         } pinup;
227
228         struct group_changed {
229             dynamicbox_ret_cb cb;
230             void *data;
231         } group_changed;
232
233         struct period_changed {
234             dynamicbox_ret_cb cb;
235             void *data;
236         } period_changed;
237
238         struct size_changed {
239             dynamicbox_ret_cb cb;
240             void *data;
241         } size_changed;
242
243         struct gbar_created {
244             dynamicbox_ret_cb cb;
245             void *data;
246         } gbar_created;
247
248         struct gbar_destroyed {
249             dynamicbox_ret_cb cb;
250             void *data;
251         } gbar_destroyed;
252
253         struct update_mode {
254             dynamicbox_ret_cb cb;
255             void *data;
256         } update_mode;
257
258         struct access_event {
259             dynamicbox_ret_cb cb;
260             void *data;
261         } access_event;
262
263         struct key_event {
264             dynamicbox_ret_cb cb;
265             void *data;
266         } key_event;
267     } cbs;
268 };
269
270 /* End of a file */