initial upload
[apps/home/ug-setting-gallery-efl.git] / src / ug-setting-gallery.c
1 /*\r
2  * Copyright 2012  Samsung Electronics Co., Ltd\r
3  *\r
4  * Licensed under the Flora License, Version 1.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *        http://www.tizenopensource.org/license\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 #ifndef UG_MODULE_API\r
18 #define UG_MODULE_API __attribute__ ((visibility("default")))\r
19 #endif\r
20 \r
21 \r
22 #include <stdio.h>\r
23 #include <stdbool.h>\r
24 \r
25 #include <Elementary.h>\r
26 #include <ui-gadget-module.h>\r
27 #include <vconf.h>\r
28 \r
29 \r
30 #include "sg-keys.h"\r
31 #include "sg-debug.h"\r
32 #include "ug-setting-gallery.h"\r
33 \r
34 #define MAX_PRECISION   0.1\r
35 \r
36 typedef int (*Init_State_Func) (int *data);\r
37 \r
38 static void\r
39 _gallery_quit_cb(void *data, Evas_Object *obj, void *event_info)\r
40 {\r
41         gallery_ret_if(!data);\r
42 \r
43         struct ug_data *ugd;\r
44         ugd = (struct ug_data *)data;\r
45 \r
46         if(ugd->ug)\r
47         {\r
48                 ug_destroy_me(ugd->ug);\r
49         }\r
50 }\r
51 \r
52 static char *_gallery_get_menu_elm_text(int param)\r
53 {\r
54         char *text = NULL;\r
55 \r
56         switch(param)\r
57         {\r
58                 case GALLERY_MAIN_MENU_TIME:\r
59                         text = SGUG_TR_PESF;\r
60                         break;\r
61 \r
62                 case GALLERY_MAIN_MENU_REPEAT:\r
63                         text = SGUG_TR_REPEAT;\r
64                         break;\r
65 \r
66                 case GALLERY_MAIN_MENU_SHUFFLE:\r
67                         text = SGUG_TR_SHUFFLE;\r
68                         break;\r
69 \r
70                 case GALLERY_MAIN_MENU_TITLE:\r
71                         text = SGUG_TR_SLIDESHOW;\r
72                         break;\r
73 \r
74                 default:\r
75                         break;\r
76         }\r
77 \r
78         return text;\r
79 }\r
80 \r
81 static int _gallery_get_time_radio_value(void)\r
82 {\r
83         int radio_value = 0;\r
84         double time_value = 0;\r
85 \r
86         gallery_key_init_current_time(&time_value);\r
87 \r
88         for(radio_value = 0; radio_value < GALLERY_SUB_TIME_COUNT; radio_value++)\r
89         {\r
90                 if(abs(time_value - gallery_key_get_time_vconf_value(radio_value)) < MAX_PRECISION)\r
91                         break;\r
92         }\r
93 \r
94         return radio_value;\r
95 }\r
96 \r
97 static char *_gallery_get_menu_time_text(void)\r
98 {\r
99         int radio_value = 0;\r
100         radio_value =_gallery_get_time_radio_value();\r
101 \r
102         return gallery_key_time_menu_get(radio_value);\r
103 }\r
104 \r
105 static char *_gallery_get_menu_sub_elm_text(int param)\r
106 {\r
107         char *text = NULL;\r
108 \r
109         switch(param)\r
110         {\r
111                 case GALLERY_MAIN_MENU_TIME:\r
112                         text = _gallery_get_menu_time_text();\r
113                         break;\r
114 \r
115                 default:\r
116                         break;\r
117         }\r
118 \r
119         return text;\r
120 }\r
121 \r
122 static char *\r
123 _gallery_genlist_text_get(void *data, Evas_Object *obj, const char *part)\r
124 {\r
125         gallery_retv_if(!part, NULL);\r
126 \r
127         int param = (int )data;\r
128 \r
129         char *txt = NULL;\r
130         int input_len = 0;\r
131         input_len = strlen(part);\r
132 \r
133         if (input_len == strlen("elm.text.1") && strncmp(part, "elm.text.1", input_len) == 0 )\r
134         {\r
135                 txt = _gallery_get_menu_elm_text(param);\r
136         }\r
137         else if (input_len == strlen("elm.text.2") && strncmp(part, "elm.text.2", input_len) == 0 )\r
138         {\r
139                 txt = _gallery_get_menu_sub_elm_text(param);\r
140         }\r
141         else if (input_len == strlen("elm.text") && strncmp(part, "elm.text", input_len) == 0 )\r
142         {\r
143                 txt = _gallery_get_menu_elm_text(param);\r
144         }\r
145 \r
146         if(txt)\r
147                 return strdup(txt);\r
148         else\r
149                 return NULL;\r
150 }\r
151 \r
152 static char *\r
153 _gallery_expand_common_text_get(const char *part, void *data, gallery_main_menu_item_t mitem)\r
154 {\r
155         gallery_retv_if(!part, NULL);\r
156 \r
157         int param = (int )data;\r
158         char *txt = NULL;\r
159         int input_len = 0;\r
160 \r
161         input_len = strlen(part);\r
162 \r
163         if (input_len == strlen("elm.text") && strncmp(part, "elm.text", input_len) == 0 )\r
164         {\r
165                 switch(mitem)\r
166                 {\r
167                         case GALLERY_MAIN_MENU_TIME:\r
168                                 txt = gallery_key_time_menu_get(param);\r
169                                 break;\r
170 \r
171                         default:\r
172                                 break;\r
173                 }\r
174 \r
175                 if(txt)\r
176                         return strdup(txt);\r
177         }\r
178 \r
179         return NULL;\r
180 }\r
181 \r
182 static char *\r
183 _gallery_time_text_get(void *data, Evas_Object *obj, const char *part)\r
184 {\r
185         gallery_retv_if(!part, NULL);\r
186 \r
187         return _gallery_expand_common_text_get(part, data, GALLERY_MAIN_MENU_TIME);\r
188 }\r
189 \r
190 \r
191 static Evas_Object*\r
192 _gallery_expand_common_icon_get(Evas_Object *obj, const char *part, int param, int radio_value, Evas_Object *radio_group)\r
193 {\r
194         gallery_retv_if(!part, NULL);\r
195         gallery_retv_if(!obj, NULL);\r
196 \r
197         if (strncmp(part, "elm.icon", strlen(part)) == 0 )\r
198         {\r
199                 Evas_Object *radio_btn = elm_radio_add(obj);\r
200                 evas_object_propagate_events_set(radio_btn, EINA_TRUE);\r
201                 elm_radio_state_value_set(radio_btn, param);\r
202                 elm_radio_group_add(radio_btn, radio_group);\r
203                 elm_radio_value_set(radio_group, radio_value);\r
204                 evas_object_show(radio_btn);\r
205 \r
206                 return radio_btn;\r
207         }\r
208 \r
209         return NULL;\r
210 }\r
211 \r
212 static Evas_Object*\r
213 _gallery_time_content_get(void *data, Evas_Object *obj, const char *part)\r
214 {\r
215         gallery_retv_if(!part, NULL);\r
216 \r
217         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
218         gallery_retvm_if(!ugd, NULL, "INVALID param");\r
219 \r
220         int radio_value = 0;\r
221         radio_value = _gallery_get_time_radio_value();\r
222 \r
223         return _gallery_expand_common_icon_get(obj, part, (int )data, radio_value, ugd->radio_group);\r
224 }\r
225 \r
226 static void\r
227 _gallery_genlist_icon_cb(void *data,  Evas_Object *obj, void *event_info)\r
228 {\r
229         gallery_ret_if(!data);\r
230         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
231 \r
232         int state = 0;\r
233         int index = (int )data;\r
234 \r
235         if (index == GALLERY_MAIN_MENU_REPEAT)\r
236         {\r
237                 gallery_key_init_repeat_state(&state);\r
238 \r
239                 if (gallery_key_set_repeat_state(!state))\r
240                 {\r
241                         gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
242                 }\r
243         }\r
244         else if(index == GALLERY_MAIN_MENU_SHUFFLE)\r
245         {\r
246                 gallery_key_init_shuffle_state(&state);\r
247 \r
248                 if(gallery_key_set_shuffle_state(!state))\r
249                 {\r
250                         gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
251                 }\r
252         }\r
253 \r
254 }\r
255 \r
256 static Evas_Object *_gallery_create_check(Evas_Object *obj, struct ug_data *ugd, int index, Init_State_Func func, int *state)\r
257 {\r
258         gallery_retvm_if(!obj, NULL, "obj is NULL");\r
259         gallery_retvm_if(!ugd, NULL, "ugd is NULL");\r
260         gallery_retvm_if(!state, NULL, "state is NULL");\r
261 \r
262         if(func && state)\r
263                 func(state);\r
264 \r
265         Evas_Object *check = NULL;\r
266         check  = elm_check_add(obj);\r
267         evas_object_data_set(check, "ugd", ugd);\r
268         elm_check_state_set( check, (bool)*state);\r
269         elm_object_style_set(check, "on&off");\r
270         evas_object_propagate_events_set(check, EINA_FALSE);\r
271         evas_object_smart_callback_add(check, "changed", _gallery_genlist_icon_cb, (void *)index);\r
272 \r
273         return check;\r
274 }\r
275 \r
276 static Evas_Object*\r
277 _gallery_genlist_icon_get(void *data, Evas_Object *obj, const char *part)\r
278 {\r
279         gallery_retv_if(!data, NULL);\r
280         gallery_retv_if(!part, NULL);\r
281 \r
282         struct ug_data *ugd = NULL;\r
283 \r
284         ugd = evas_object_data_get(obj, "ugd");\r
285         gallery_retvm_if(!ugd, NULL, "INVALID param");\r
286 \r
287         int index = (int )data;\r
288         Evas_Object *check = NULL;\r
289 \r
290         if (strncmp(part, "elm.icon", strlen(part)) == 0)\r
291         {\r
292                 if (index == GALLERY_MAIN_MENU_REPEAT)\r
293                 {\r
294                         check = _gallery_create_check(obj, ugd, index, gallery_key_init_repeat_state, &ugd->repeat_state);\r
295                         ugd->repeat_btn = check;\r
296                 }\r
297                 else if(index == GALLERY_MAIN_MENU_SHUFFLE)\r
298                 {\r
299                         check = _gallery_create_check(obj, ugd, index, gallery_key_init_shuffle_state, &ugd->shuffle_state);\r
300                         ugd->shuffle_btn = check;\r
301                 }\r
302 \r
303         }\r
304 \r
305         return check;\r
306 }\r
307 \r
308 static void\r
309 _gallery_time_select_cb(void *data, Evas_Object *obj, void *event_info)\r
310 {\r
311         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
312         gallery_ret_if(!ugd);\r
313 \r
314         int param = (int )data;\r
315         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
316 \r
317         int index = GALLERY_MAIN_MENU_TIME;\r
318 \r
319         elm_genlist_item_selected_set(item, EINA_FALSE);\r
320 \r
321         if(gallery_key_set_current_time(gallery_key_get_time_vconf_value(param)))\r
322         {\r
323                 gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
324         }\r
325 \r
326         elm_radio_value_set(ugd->radio_group, param);\r
327         elm_genlist_item_update(ugd->gl_it[index]);\r
328 \r
329 }\r
330 \r
331 static void\r
332 _gallery_genlist_con(void *data, Evas_Object *obj, void *event_info)\r
333 {\r
334         gallery_ret_if(!event_info);\r
335 \r
336         Elm_Object_Item *item = event_info;\r
337         elm_genlist_item_subitems_clear(item);\r
338 }\r
339 \r
340 static void\r
341 _gallery_genlist_time_select_cb(void *data, Evas_Object *obj, void *event_info)\r
342 {\r
343         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
344         gallery_ret_if(!ugd);\r
345 \r
346         int index = 0;\r
347         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
348 \r
349         elm_genlist_item_selected_set(item, EINA_FALSE);\r
350 \r
351         Evas_Object *gl = elm_object_item_widget_get(item);\r
352 \r
353         ugd->check_time_itc.item_style = "dialogue/1text.1icon/expandable2";\r
354         ugd->check_time_itc.func.text_get = _gallery_time_text_get;\r
355         ugd->check_time_itc.func.content_get = _gallery_time_content_get;\r
356         ugd->check_time_itc.func.state_get = NULL;\r
357         ugd->check_time_itc.func.del = NULL;\r
358 \r
359         ugd->radio_group = elm_radio_add(gl);\r
360         for (index = 0; gallery_key_time_menu_get(index); index++)\r
361         {\r
362                 elm_genlist_item_append(gl,&ugd->check_time_itc, (void *)index, item,\r
363                                 ELM_GENLIST_ITEM_NONE, _gallery_time_select_cb,  (void *)index);\r
364         }\r
365 \r
366 }\r
367 \r
368 static void\r
369 _gallery_genlist_exp(void *data, Evas_Object *obj, void *event_info)\r
370 {\r
371         gallery_ret_if(!obj);\r
372 \r
373         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
374         gallery_ret_if(!ugd);\r
375 \r
376         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
377 \r
378         elm_genlist_item_selected_set(item, EINA_FALSE);\r
379 \r
380         if(item == ugd->gl_it[GALLERY_MAIN_MENU_TIME])\r
381         {\r
382                 _gallery_genlist_time_select_cb(data, obj, event_info);\r
383         }\r
384 }\r
385 \r
386 static void\r
387 _gallery_genlist_select_cb(void *data, Evas_Object *obj, void *event_info)\r
388 {\r
389         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
390         gallery_ret_if(!ugd);\r
391 \r
392         int param = (int )data;\r
393 \r
394         int icon_state = 0;\r
395         bool expand_state = false;\r
396 \r
397         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
398 \r
399         elm_genlist_item_selected_set(item, EINA_FALSE);\r
400 \r
401         if(param == GALLERY_MAIN_MENU_TIME)\r
402         {\r
403                 expand_state = elm_genlist_item_expanded_get(item);\r
404                 elm_genlist_item_expanded_set(item, !expand_state);\r
405         }\r
406         else if(param == GALLERY_MAIN_MENU_REPEAT)\r
407         {\r
408                 gallery_key_init_repeat_state(&icon_state);\r
409                 icon_state = !icon_state;\r
410 \r
411                 if(gallery_key_set_repeat_state(icon_state))\r
412                 {\r
413                         gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
414                 }\r
415 \r
416                 elm_check_state_set(ugd->repeat_btn, (bool)icon_state);\r
417         }\r
418         else if(param == GALLERY_MAIN_MENU_SHUFFLE)\r
419         {\r
420                 gallery_key_init_shuffle_state(&icon_state);\r
421                 icon_state = !icon_state;\r
422 \r
423                 if(gallery_key_set_shuffle_state(icon_state))\r
424                 {\r
425                         gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
426                 }\r
427 \r
428                 elm_check_state_set(ugd->shuffle_btn,(bool)icon_state);\r
429         }\r
430 }\r
431 \r
432 static Evas_Object *\r
433 _gallery_genlist_items_add (Evas_Object *parent, struct ug_data *ugd)\r
434 {\r
435         Evas_Object *main_genlist;\r
436         Elm_Object_Item *sep;\r
437 \r
438         int index = 0;\r
439 \r
440         main_genlist = elm_genlist_add(parent);\r
441 \r
442         elm_object_style_set(main_genlist, "dialogue");\r
443 \r
444         evas_object_size_hint_weight_set(main_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
445         evas_object_size_hint_align_set(main_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
446 \r
447         ugd->genlist = main_genlist;\r
448 \r
449         ugd->title_itc.item_style = "dialogue/title";\r
450         ugd->title_itc.func.text_get = _gallery_genlist_text_get;\r
451         ugd->title_itc.func.content_get = NULL;\r
452         ugd->title_itc.func.state_get = NULL;\r
453         ugd->title_itc.func.del = NULL;\r
454 \r
455         ugd->expandable_itc.item_style = "dialogue/2text.3/expandable";\r
456         ugd->expandable_itc.func.text_get = _gallery_genlist_text_get;\r
457         ugd->expandable_itc.func.content_get = NULL;\r
458         ugd->expandable_itc.func.state_get = NULL;\r
459         ugd->expandable_itc.func.del = NULL;\r
460 \r
461         ugd->txt_icon_itc.item_style = "dialogue/1text.1icon";\r
462         ugd->txt_icon_itc.func.text_get = _gallery_genlist_text_get;\r
463         ugd->txt_icon_itc.func.content_get = _gallery_genlist_icon_get;\r
464         ugd->txt_icon_itc.func.state_get = NULL;\r
465         ugd->txt_icon_itc.func.del = NULL;\r
466 \r
467         ugd->seperator_itc.item_style = "grouptitle.dialogue.seperator";\r
468         ugd->seperator_itc.func.text_get = NULL;\r
469         ugd->seperator_itc.func.content_get = NULL;\r
470         ugd->seperator_itc.func.state_get = NULL;\r
471         ugd->seperator_itc.func.del = NULL;\r
472 \r
473         ugd->seperator_end_itc.item_style = "dialogue/separator/end";\r
474         ugd->seperator_end_itc.func.text_get = NULL;\r
475         ugd->seperator_end_itc.func.content_get = NULL;\r
476         ugd->seperator_end_itc.func.state_get = NULL;\r
477         ugd->seperator_end_itc.func.del = NULL;\r
478 \r
479         sep = elm_genlist_item_append(main_genlist, &ugd->seperator_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);\r
480         elm_genlist_item_select_mode_set(sep, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\r
481 \r
482         for (index = GALLERY_MAIN_MENU_TITLE; index < GALLERY_MAIN_MENU_ITEM_MAX; index++)\r
483         {\r
484                 //expandable genlist\r
485                 if (index == GALLERY_MAIN_MENU_TIME)\r
486                 {\r
487                         ugd->gl_it[index] = elm_genlist_item_append(main_genlist, &ugd->expandable_itc,\r
488                                                                     (void *)index, NULL,\r
489                                                                     ELM_GENLIST_ITEM_TREE,\r
490                                                                     _gallery_genlist_select_cb,\r
491                                                                     (void *)index);\r
492                 }\r
493                 // repeat&shuffle 1txt .1icon\r
494                 else if (index == GALLERY_MAIN_MENU_REPEAT ||\r
495                          index == GALLERY_MAIN_MENU_SHUFFLE)\r
496                 {\r
497                         ugd->gl_it[index] = elm_genlist_item_append(main_genlist, &ugd->txt_icon_itc,\r
498                                                                     (void *)index, NULL,\r
499                                                                     ELM_GENLIST_ITEM_NONE,\r
500                                                                     _gallery_genlist_select_cb,\r
501                                                                     (void *)index);\r
502                 }\r
503         }\r
504 \r
505         sep = elm_genlist_item_append(main_genlist, &ugd->seperator_end_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);\r
506         elm_genlist_item_select_mode_set(sep, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\r
507 \r
508         evas_object_smart_callback_add(main_genlist, "expanded", _gallery_genlist_exp, ugd);\r
509         evas_object_smart_callback_add(main_genlist, "contracted", _gallery_genlist_con, ugd);\r
510 \r
511         return main_genlist;\r
512 }\r
513 \r
514 \r
515 static Evas_Object *\r
516 _gallery_create_fullview(Evas_Object *parent, struct ug_data *ugd)\r
517 {\r
518         gallery_retv_if(!parent, NULL);\r
519 \r
520         Evas_Object *base;\r
521         base = elm_layout_add(parent);\r
522         gallery_retv_if( base == NULL, NULL );\r
523 \r
524         elm_layout_theme_set(base, "layout", "application", "default");\r
525         edje_object_signal_emit(_EDJ(base), "elm,state,show,indicator", "elm");\r
526         elm_object_part_content_set(base, "elm.swallow.bg", ugd->bg);\r
527 \r
528         return base;\r
529 }\r
530 \r
531 static Evas_Object*\r
532 _gallery_create_naviframe(Evas_Object* parent)\r
533 {\r
534         gallery_retv_if(!parent, NULL);\r
535 \r
536         Evas_Object *naviframe = NULL;\r
537         naviframe = elm_naviframe_add( parent );\r
538         elm_object_part_content_set( parent, "elm.swallow.content", naviframe );\r
539         evas_object_show(naviframe);\r
540 \r
541         return naviframe;\r
542 }\r
543 \r
544 static Evas_Object *_gallery_create_bg(Evas_Object *parent)\r
545 {\r
546         Evas_Object *bg = elm_bg_add(parent);\r
547         evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
548         elm_win_resize_object_add(parent, bg);\r
549         evas_object_show(bg);\r
550 \r
551     return bg;\r
552 }\r
553 \r
554 static void *\r
555 _on_create(ui_gadget_h ug, enum ug_mode mode, service_h data, void *priv)\r
556 {\r
557         gallery_retvm_if(!ug, NULL, "ug is NULL, check it !!");\r
558         gallery_retvm_if(!priv, NULL, "priv is NULL, check it !!");\r
559 \r
560         Evas_Object *parent = NULL;\r
561         struct ug_data *ugd = NULL;\r
562 \r
563         ugd = (struct ug_data *)priv;\r
564         ugd->ug = ug;\r
565 \r
566         /* Bind text domain for internalization */\r
567         bindtextdomain("ug-setting-gallery-efl" , "/opt/ug/res/locale");\r
568 \r
569         parent = (Evas_Object *)ug_get_parent_layout(ug);\r
570         gallery_retvm_if(parent == NULL, NULL, "parent layout is NULL");\r
571 \r
572         ugd->bg = _gallery_create_bg(parent);\r
573 \r
574         if (mode == UG_MODE_FULLVIEW)\r
575         {\r
576                 ugd->main_layout = _gallery_create_fullview(parent, ugd);\r
577         }\r
578         else\r
579         {\r
580                 ugd->main_layout = NULL;\r
581         }\r
582 \r
583         if(ugd->main_layout)\r
584         {\r
585                 ugd->naviframe = _gallery_create_naviframe(ugd->main_layout);\r
586                 evas_object_data_set(ugd->naviframe, "ugd", ugd);\r
587         }\r
588 \r
589         ugd->genlist = _gallery_genlist_items_add(ugd->naviframe,ugd);\r
590 \r
591         evas_object_data_set(ugd->genlist, "ugd", ugd);\r
592 \r
593         ugd->backbtn = elm_button_add(ugd->naviframe);\r
594         evas_object_smart_callback_add(ugd->backbtn, "clicked", _gallery_quit_cb, ugd);\r
595         elm_naviframe_item_push(ugd->naviframe, SGUG_TR_GALLERY, ugd->backbtn,\r
596                                 NULL, ugd->genlist, NULL);\r
597         elm_object_style_set(ugd->backbtn, "naviframe/end_btn/default");\r
598 \r
599         evas_object_show(ugd->main_layout);\r
600 \r
601         return ugd->main_layout;\r
602 }\r
603 \r
604 static void\r
605 _on_message(ui_gadget_h ug, service_h msg, service_h data, void *priv)\r
606 {\r
607 }\r
608 \r
609 static void\r
610 _on_event(ui_gadget_h ug, enum ug_event event, service_h data, void *priv)\r
611 {\r
612         //struct ug_data *ugd = (struct ug_data *)priv;\r
613 \r
614         switch (event) {\r
615         case UG_EVENT_LOW_MEMORY:\r
616                 break;\r
617         case UG_EVENT_LOW_BATTERY:\r
618                 break;\r
619         case UG_EVENT_LANG_CHANGE:\r
620                 break;\r
621         case UG_EVENT_ROTATE_PORTRAIT:\r
622                 break;\r
623         case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:\r
624                 break;\r
625         case UG_EVENT_ROTATE_LANDSCAPE:\r
626                 break;\r
627         case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:\r
628                 break;\r
629         default:\r
630                 break;\r
631         }\r
632 }\r
633 \r
634 static void\r
635 _on_start(ui_gadget_h ug, service_h data, void *priv)\r
636 {\r
637 }\r
638 \r
639 static void\r
640 _on_pause(ui_gadget_h ug, service_h data, void *priv)\r
641 {\r
642 \r
643 }\r
644 \r
645 static void\r
646 _on_resume(ui_gadget_h ug, service_h data, void *priv)\r
647 {\r
648 \r
649 }\r
650 \r
651 static void\r
652 _on_destroy(ui_gadget_h ug, service_h data, void *priv)\r
653 {\r
654         struct ug_data *ugd;\r
655 \r
656         gallery_retm_if(!ug, "ug is NULL, check it !!");\r
657         gallery_retm_if(!priv, "priv is NULL, check it !!");\r
658 \r
659         ugd = priv;\r
660         if(ugd->main_layout)\r
661         {\r
662                 evas_object_del(ugd->main_layout);\r
663                 ugd->main_layout = NULL;\r
664         }\r
665 }\r
666 \r
667 static void\r
668 _on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h data, void *priv)\r
669 {\r
670 \r
671 }\r
672 \r
673 UG_MODULE_API int\r
674 UG_MODULE_INIT(struct ug_module_ops *ops)\r
675 {\r
676         gallery_retvm_if(!ops, -1, "ops is NULL");\r
677 \r
678         struct ug_data *ugd = NULL;\r
679         ugd = calloc(1, sizeof(struct ug_data));\r
680         gallery_retvm_if(!ugd, -1, "ugd is NULL");\r
681 \r
682         ops->create = _on_create;\r
683         ops->start = _on_start;\r
684         ops->pause = _on_pause;\r
685         ops->resume = _on_resume;\r
686         ops->destroy = _on_destroy;\r
687         ops->message = _on_message;\r
688         ops->key_event = _on_key_event;\r
689         ops->event = _on_event;\r
690         ops->priv = ugd;\r
691         ops->opt = UG_OPT_INDICATOR_PORTRAIT_ONLY;\r
692 \r
693         return 0;\r
694 }\r
695 \r
696 UG_MODULE_API int setting_plugin_reset(service_h data, void *priv)\r
697 {\r
698         gallery_info("Reset the settings start");\r
699 \r
700         int ret = 0;\r
701         ret += gallery_key_set_current_time(DEFAULT_TIMER);\r
702         ret += gallery_key_set_repeat_state(DEFAULT_REPEAT);\r
703         ret += gallery_key_set_shuffle_state(DEFAULT_SHUFFLE);\r
704 \r
705         gallery_info("Finished");\r
706 \r
707         return ret;\r
708 }\r
709 \r
710 UG_MODULE_API void\r
711 UG_MODULE_EXIT(struct ug_module_ops *ops)\r
712 {\r
713         gallery_retm_if(!ops, "ops is NULL");\r
714 \r
715         struct ug_data *ugd;\r
716 \r
717         ugd = ops->priv;\r
718         if (ugd)\r
719         {\r
720                 free(ugd);\r
721         }\r
722 }\r
723 \r