Initialize Tizen 2.3
[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.1 (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://floralicense.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 //#define USE_DIALOGUE_STYLE    // new style has bug\r
22 \r
23 #include <stdio.h>\r
24 #include <stdbool.h>\r
25 \r
26 #include <Elementary.h>\r
27 #include <ui-gadget-module.h>\r
28 #include <vconf.h>\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_file_name(char *path)\r
53 {\r
54         if (NULL == path || '\0' == path[0]) {\r
55                 return NULL;    /* invalid arguement */\r
56         }\r
57         char *p = strrchr(path, '/');\r
58         if (!p) {\r
59                 return (char *)g_strdup(path);  /*  cannot find '/' */\r
60         }\r
61         if ('\0' == p[1]) {\r
62                 return NULL;    /* end with '/' */\r
63         }\r
64         return (char *)g_strdup(p + 1);\r
65 }\r
66 \r
67 static char *_gallery_get_menu_elm_text(int param)\r
68 {\r
69         char *text = NULL;\r
70 \r
71         switch(param)\r
72         {\r
73                 case GALLERY_MAIN_MENU_TIME:\r
74                         text = SGUG_TR_PESF;\r
75                         break;\r
76 \r
77                 case GALLERY_MAIN_MENU_REPEAT:\r
78                         text = SGUG_TR_REPEAT;\r
79                         break;\r
80 \r
81                 case GALLERY_MAIN_MENU_SHUFFLE:\r
82                         text = SGUG_TR_SHUFFLE;\r
83                         break;\r
84 \r
85                 case GALLERY_MAIN_MENU_TITLE:\r
86                         text = SGUG_TR_SLIDESHOW;\r
87                         break;\r
88                 default:\r
89                         break;\r
90         }\r
91 \r
92         return text;\r
93 }\r
94 \r
95 static int _gallery_get_time_radio_value(void)\r
96 {\r
97         int radio_value = 0;\r
98         double time_value = 0;\r
99 \r
100         gallery_key_init_current_time(&time_value);\r
101 \r
102         for(radio_value = 0; radio_value < GALLERY_SUB_TIME_COUNT; radio_value++)\r
103         {\r
104                 if(abs(time_value - gallery_key_get_time_vconf_value(radio_value)) < MAX_PRECISION)\r
105                         break;\r
106         }\r
107 \r
108         return radio_value;\r
109 }\r
110 \r
111 static char *_gallery_get_menu_time_text(void)\r
112 {\r
113         int radio_value = 0;\r
114         radio_value =_gallery_get_time_radio_value();\r
115 \r
116         return gallery_key_time_menu_get(radio_value);\r
117 }\r
118 \r
119 static char *_gallery_get_menu_sub_elm_text(int param)\r
120 {\r
121         char *text = NULL;\r
122 \r
123         switch(param)\r
124         {\r
125                 case GALLERY_MAIN_MENU_TIME:\r
126                         text = _gallery_get_menu_time_text();\r
127                         break;\r
128                 default:\r
129                         break;\r
130         }\r
131 \r
132         return text;\r
133 }\r
134 \r
135 static char *\r
136 _gallery_genlist_text_get(void *data, Evas_Object *obj, const char *part)\r
137 {\r
138         gallery_retv_if(!part, NULL);\r
139 \r
140         int param = (int )data;\r
141 \r
142         char *txt = NULL;\r
143         int input_len = 0;\r
144         input_len = strlen(part);\r
145 \r
146         if (input_len == strlen("elm.text.1") && strncmp(part, "elm.text.1", input_len) == 0 )\r
147         {\r
148                 txt = _gallery_get_menu_elm_text(param);\r
149         }\r
150         else if (input_len == strlen("elm.text.2") && strncmp(part, "elm.text.2", input_len) == 0 )\r
151         {\r
152                 txt = _gallery_get_menu_sub_elm_text(param);\r
153         }\r
154         else if (input_len == strlen("elm.text") && strncmp(part, "elm.text", input_len) == 0 )\r
155         {\r
156                 txt = _gallery_get_menu_elm_text(param);\r
157         }\r
158 \r
159         if(txt)\r
160                 return strdup(txt);\r
161         else\r
162                 return NULL;\r
163 }\r
164 \r
165 static char *\r
166 _gallery_expand_common_text_get(const char *part, void *data, gallery_main_menu_item_t mitem)\r
167 {\r
168         gallery_retv_if(!part, NULL);\r
169 \r
170         int param = (int )data;\r
171         char *txt = NULL;\r
172         int input_len = 0;\r
173 \r
174         input_len = strlen(part);\r
175 \r
176         if (input_len == strlen("elm.text") && strncmp(part, "elm.text", input_len) == 0 )\r
177         {\r
178                 switch(mitem)\r
179                 {\r
180                         case GALLERY_MAIN_MENU_TIME:\r
181                                 txt = gallery_key_time_menu_get(param);\r
182                                 break;\r
183                         default:\r
184                                 break;\r
185                 }\r
186 \r
187                 if(txt)\r
188                         return strdup(txt);\r
189         }\r
190 \r
191         return NULL;\r
192 }\r
193 \r
194 static char *\r
195 _gallery_time_text_get(void *data, Evas_Object *obj, const char *part)\r
196 {\r
197         gallery_retv_if(!part, NULL);\r
198 \r
199         return _gallery_expand_common_text_get(part, data, GALLERY_MAIN_MENU_TIME);\r
200 }\r
201 \r
202 static Evas_Object*\r
203 _gallery_expand_common_icon_get(Evas_Object *obj, const char *part, int param, int radio_value, Evas_Object *radio_group)\r
204 {\r
205         gallery_retv_if(!part, NULL);\r
206         gallery_retv_if(!obj, NULL);\r
207 \r
208         if (strncmp(part, "elm.icon", strlen(part)) == 0 )\r
209         {\r
210                 Evas_Object *radio_btn = elm_radio_add(obj);\r
211                 evas_object_propagate_events_set(radio_btn, EINA_TRUE);\r
212                 elm_radio_state_value_set(radio_btn, param);\r
213                 elm_radio_group_add(radio_btn, radio_group);\r
214                 elm_radio_value_set(radio_group, radio_value);\r
215                 evas_object_show(radio_btn);\r
216 \r
217                 return radio_btn;\r
218         }\r
219 \r
220         return NULL;\r
221 }\r
222 \r
223 static Evas_Object*\r
224 _gallery_time_content_get(void *data, Evas_Object *obj, const char *part)\r
225 {\r
226         gallery_retv_if(!part, NULL);\r
227 \r
228         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
229         gallery_retvm_if(!ugd, NULL, "INVALID param");\r
230 \r
231         int radio_value = 0;\r
232         radio_value = _gallery_get_time_radio_value();\r
233 \r
234         return _gallery_expand_common_icon_get(obj, part, (int )data, radio_value, ugd->radio_group);\r
235 }\r
236 \r
237 static void\r
238 _gallery_genlist_icon_cb(void *data,  Evas_Object *obj, void *event_info)\r
239 {\r
240         gallery_ret_if(!data);\r
241         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
242 \r
243         int state = 0;\r
244         int index = (int )data;\r
245 \r
246         bool bState = false;\r
247 \r
248         if (index == GALLERY_MAIN_MENU_REPEAT)\r
249         {\r
250                 bState = elm_check_state_get(ugd->repeat_btn);\r
251 \r
252                 if (gallery_key_set_repeat_state(bState))\r
253                 {\r
254                         gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
255                 }\r
256         }\r
257         else if(index == GALLERY_MAIN_MENU_SHUFFLE)\r
258         {\r
259                 bState = elm_check_state_get(ugd->shuffle_btn);\r
260 \r
261                 if(gallery_key_set_shuffle_state(bState))\r
262                 {\r
263                         gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
264                 }\r
265         }\r
266 }\r
267 \r
268 static Evas_Object *_gallery_create_check(Evas_Object *obj, struct ug_data *ugd, int index, Init_State_Func func, int *state)\r
269 {\r
270         gallery_retvm_if(!obj, NULL, "obj is NULL");\r
271         gallery_retvm_if(!ugd, NULL, "ugd is NULL");\r
272         gallery_retvm_if(!state, NULL, "state is NULL");\r
273 \r
274         if(func && state)\r
275                 func(state);\r
276 \r
277         Evas_Object *check = NULL;\r
278         check  = elm_check_add(obj);\r
279         evas_object_data_set(check, "ugd", ugd);\r
280         elm_check_state_set( check, (bool)*state);\r
281         elm_object_style_set(check, "on&off");\r
282         evas_object_propagate_events_set(check, EINA_FALSE);\r
283         evas_object_smart_callback_add(check, "changed", _gallery_genlist_icon_cb, (void *)index);\r
284 \r
285         return check;\r
286 }\r
287 \r
288 static Evas_Object*\r
289 _gallery_genlist_icon_get(void *data, Evas_Object *obj, const char *part)\r
290 {\r
291         gallery_retv_if(!data, NULL);\r
292         gallery_retv_if(!part, NULL);\r
293 \r
294         struct ug_data *ugd = NULL;\r
295 \r
296         ugd = evas_object_data_get(obj, "ugd");\r
297         gallery_retvm_if(!ugd, NULL, "INVALID param");\r
298 \r
299         int index = (int )data;\r
300         Evas_Object *check = NULL;\r
301 \r
302         if (strncmp(part, "elm.icon", strlen(part)) == 0)\r
303         {\r
304                 if (index == GALLERY_MAIN_MENU_REPEAT)\r
305                 {\r
306                         ugd->repeat_state = (int)gallery_key_get_repeat_state();\r
307                         check = _gallery_create_check(obj, ugd, index, NULL, &ugd->repeat_state);\r
308                         ugd->repeat_btn = check;\r
309                 }\r
310                 else if(index == GALLERY_MAIN_MENU_SHUFFLE)\r
311                 {\r
312                         ugd->shuffle_state = (int)gallery_key_get_shuffle_state();\r
313                         check = _gallery_create_check(obj, ugd, index, NULL, &ugd->shuffle_state);\r
314                         ugd->shuffle_btn = check;\r
315                 }\r
316         }\r
317 \r
318         return check;\r
319 }\r
320 \r
321 \r
322 static void\r
323 _gallery_time_select_cb(void *data, Evas_Object *obj, void *event_info)\r
324 {\r
325         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
326         gallery_ret_if(!ugd);\r
327 \r
328         int param = (int )data;\r
329         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
330 \r
331         int index = GALLERY_MAIN_MENU_TIME;\r
332 \r
333         elm_genlist_item_selected_set(item, EINA_FALSE);\r
334 \r
335         if(gallery_key_set_current_time(gallery_key_get_time_vconf_value(param)))\r
336         {\r
337                 gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
338         }\r
339 \r
340         elm_radio_value_set(ugd->radio_group, param);\r
341         elm_genlist_item_update(ugd->gl_it[index]);\r
342 \r
343 }\r
344 \r
345 static void\r
346 _gallery_genlist_con(void *data, Evas_Object *obj, void *event_info)\r
347 {\r
348         gallery_ret_if(!event_info);\r
349 \r
350         Elm_Object_Item *item = event_info;\r
351         elm_genlist_item_subitems_clear(item);\r
352 }\r
353 \r
354 static void\r
355 _gallery_genlist_time_select_cb(void *data, Evas_Object *obj, void *event_info)\r
356 {\r
357         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
358         gallery_ret_if(!ugd);\r
359 \r
360         gallery_info("_gallery_genlist_time_select_cb");\r
361 \r
362         int index = 0;\r
363         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
364 \r
365         elm_genlist_item_selected_set(item, EINA_FALSE);\r
366 \r
367         Evas_Object *gl = elm_object_item_widget_get(item);\r
368 \r
369         ugd->check_time_itc.item_style = "dialogue/1text.1icon.3";\r
370         ugd->check_time_itc.func.text_get = _gallery_time_text_get;\r
371         ugd->check_time_itc.func.content_get = _gallery_time_content_get;\r
372         ugd->check_time_itc.func.state_get = NULL;\r
373         ugd->check_time_itc.func.del = NULL;\r
374 \r
375         ugd->radio_group = elm_radio_add(gl);\r
376         for (index = 0; gallery_key_time_menu_get(index); index++)\r
377         {\r
378                 elm_genlist_item_append(gl,&ugd->check_time_itc, (void *)index, item,\r
379                                 ELM_GENLIST_ITEM_NONE, _gallery_time_select_cb,  (void *)index);\r
380         }\r
381 \r
382 }\r
383 \r
384 static void\r
385 _gallery_genlist_exp(void *data, Evas_Object *obj, void *event_info)\r
386 {\r
387         gallery_ret_if(!obj);\r
388 \r
389         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
390         gallery_ret_if(!ugd);\r
391 \r
392         gallery_info("_gallery_genlist_exp");\r
393 \r
394         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
395 \r
396         elm_genlist_item_selected_set(item, EINA_FALSE);\r
397 \r
398         if(item == ugd->gl_it[GALLERY_MAIN_MENU_TIME])\r
399         {\r
400                 _gallery_genlist_time_select_cb(data, obj, event_info);\r
401         }\r
402 }\r
403 static void\r
404 _gallery_genlist_realized(void *data, Evas_Object *obj, void *event_info)\r
405 {\r
406         gallery_ret_if(!obj);\r
407         gallery_ret_if(!event_info);\r
408 \r
409         struct ug_data *ugd = (struct ug_data *)data;\r
410         gallery_ret_if(!ugd);\r
411 \r
412         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
413 \r
414         int i = 0;\r
415         for(i=0; i<GALLERY_MAIN_MENU_ITEM_MAX; i++)\r
416         {\r
417                 if(ugd->gl_it[i] == item)\r
418                         break;\r
419         }\r
420         if(i == GALLERY_MAIN_MENU_ITEM_MAX)\r
421         {\r
422                 gallery_info("extended style");\r
423                 elm_object_item_signal_emit(item, "elm,state,center", "");\r
424                 return;\r
425         }\r
426 \r
427         int index = (int)elm_object_item_data_get(item);\r
428 \r
429         if(index-1 == GALLERY_MAIN_MENU_TITLE)\r
430         {\r
431                 elm_object_item_signal_emit(item, "elm,state,top", "");\r
432         }\r
433         else if(index+1 == GALLERY_MAIN_MENU_ITEM_MAX)\r
434         {\r
435                 elm_object_item_signal_emit(item, "elm,state,bottom", "");\r
436         }\r
437         else\r
438         {\r
439                 elm_object_item_signal_emit(item, "elm,state,center", "");\r
440         }\r
441 }\r
442 \r
443 static void\r
444 _gallery_main_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,\r
445                              void *priv)\r
446 {\r
447         gallery_ret_if(priv == NULL);\r
448         gallery_ret_if(ug == NULL);\r
449         Evas_Object *base = NULL;\r
450         gallery_info("_gallery_main_layout_ug_cb");\r
451 \r
452         base = (Evas_Object *) ug_get_layout(ug);\r
453         if (!base)\r
454                 return;\r
455 \r
456         switch (mode) {\r
457                 case UG_MODE_FULLVIEW:\r
458                         evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
459                         elm_win_resize_object_add(ug_get_window(), base);\r
460                         evas_object_show(base);\r
461                         break;\r
462                 default:\r
463                         break;\r
464         }\r
465         gallery_info("end _gallery_main_layout_ug_cb");\r
466 }\r
467 \r
468 \r
469 static void\r
470 _gallery_genlist_select_cb(void *data, Evas_Object *obj, void *event_info)\r
471 {\r
472         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
473         gallery_ret_if(!ugd);\r
474 \r
475         int param = (int )data;\r
476 \r
477         bool expand_state = false;\r
478         bool bState = false;\r
479 \r
480         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
481 \r
482         elm_genlist_item_selected_set(item, EINA_FALSE);\r
483 \r
484         if(param == GALLERY_MAIN_MENU_TIME)\r
485         {\r
486                 expand_state = elm_genlist_item_expanded_get(item);\r
487                 elm_genlist_item_expanded_set(item, !expand_state);\r
488         }\r
489         else if(param == GALLERY_MAIN_MENU_REPEAT)\r
490         {\r
491                 bState = !gallery_key_get_repeat_state();\r
492 \r
493                 if (gallery_key_set_repeat_state(bState))\r
494                 {\r
495                         gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
496                 }\r
497 \r
498                 elm_check_state_set(ugd->repeat_btn, bState);\r
499         }\r
500         else if(param == GALLERY_MAIN_MENU_SHUFFLE)\r
501         {\r
502                 bState = !gallery_key_get_shuffle_state();\r
503 \r
504                 if(gallery_key_set_shuffle_state(bState))\r
505                 {\r
506                         gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
507                 }\r
508 \r
509                 elm_check_state_set(ugd->shuffle_btn,bState);\r
510         }\r
511 }\r
512 \r
513 static Evas_Object *\r
514 _gallery_genlist_items_add (Evas_Object *parent, struct ug_data *ugd)\r
515 {\r
516         Evas_Object *main_genlist;\r
517         Elm_Object_Item *sep;\r
518 \r
519         int index = 0;\r
520 \r
521         main_genlist = elm_genlist_add(parent);\r
522 \r
523 #ifdef USE_DIALOGUE_STYLE\r
524         elm_object_style_set(main_genlist, "dialogue");\r
525 #else\r
526         evas_object_smart_callback_add(main_genlist, "realized", _gallery_genlist_realized, ugd);\r
527 #endif\r
528 \r
529         evas_object_size_hint_weight_set(main_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
530         evas_object_size_hint_align_set(main_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
531         evas_object_propagate_events_set(main_genlist, EINA_FALSE);\r
532 \r
533         ugd->genlist = main_genlist;\r
534 \r
535         evas_object_data_set(ugd->genlist, "ugd", ugd);\r
536 \r
537         ugd->title_itc.item_style = "dialogue/title";\r
538         ugd->title_itc.func.text_get = _gallery_genlist_text_get;\r
539         ugd->title_itc.func.content_get = NULL;\r
540         ugd->title_itc.func.state_get = NULL;\r
541         ugd->title_itc.func.del = NULL;\r
542 \r
543         ugd->expandable_itc.item_style = "dialogue/2text.3/expandable";\r
544         ugd->expandable_itc.func.text_get = _gallery_genlist_text_get;\r
545         ugd->expandable_itc.func.content_get = NULL;\r
546         ugd->expandable_itc.func.state_get = NULL;\r
547         ugd->expandable_itc.func.del = NULL;\r
548 \r
549         ugd->txt_icon_itc.item_style = "dialogue/1text.1icon";\r
550         ugd->txt_icon_itc.func.text_get = _gallery_genlist_text_get;\r
551         ugd->txt_icon_itc.func.content_get = _gallery_genlist_icon_get;\r
552         ugd->txt_icon_itc.func.state_get = NULL;\r
553         ugd->txt_icon_itc.func.del = NULL;\r
554 \r
555         ugd->two_txt_icon_itc.item_style = "dialogue/2text.1icon.6";\r
556         ugd->two_txt_icon_itc.func.text_get = _gallery_genlist_text_get;\r
557         ugd->two_txt_icon_itc.func.content_get = _gallery_genlist_icon_get;\r
558         ugd->two_txt_icon_itc.func.state_get = NULL;\r
559         ugd->two_txt_icon_itc.func.del = NULL;\r
560 \r
561         ugd->seperator_itc.item_style = "dialogue/separator";\r
562         ugd->seperator_itc.func.text_get = NULL;\r
563         ugd->seperator_itc.func.content_get = NULL;\r
564         ugd->seperator_itc.func.state_get = NULL;\r
565         ugd->seperator_itc.func.del = NULL;\r
566 \r
567         ugd->seperator_end_itc.item_style = "dialogue/separator";\r
568         ugd->seperator_end_itc.func.text_get = NULL;\r
569         ugd->seperator_end_itc.func.content_get = NULL;\r
570         ugd->seperator_end_itc.func.state_get = NULL;\r
571         ugd->seperator_end_itc.func.del = NULL;\r
572 \r
573         sep = elm_genlist_item_append(main_genlist, &ugd->seperator_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);\r
574         elm_genlist_item_select_mode_set(sep, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\r
575 \r
576         for (index = GALLERY_MAIN_MENU_TITLE; index < GALLERY_MAIN_MENU_ITEM_MAX; index++)\r
577         {\r
578                 //expandable genlist\r
579                 if (index == GALLERY_MAIN_MENU_TIME)\r
580                 {\r
581                         ugd->gl_it[index] = elm_genlist_item_append(main_genlist, &ugd->expandable_itc,\r
582                                                                     (void *)index, NULL,\r
583                                                                     ELM_GENLIST_ITEM_TREE,\r
584                                                                     _gallery_genlist_select_cb,\r
585                                                                     (void *)index);\r
586                 }\r
587                 // repeat&shuffle 1txt .1icon\r
588                 else if (index == GALLERY_MAIN_MENU_REPEAT ||\r
589                          index == GALLERY_MAIN_MENU_SHUFFLE)\r
590                 {\r
591                         ugd->gl_it[index] = elm_genlist_item_append(main_genlist, &ugd->txt_icon_itc,\r
592                                                                     (void *)index, NULL,\r
593                                                                     ELM_GENLIST_ITEM_NONE,\r
594                                                                     _gallery_genlist_select_cb,\r
595                                                                     (void *)index);\r
596                 }\r
597         }\r
598 \r
599         sep = elm_genlist_item_append(main_genlist, &ugd->seperator_end_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);\r
600         elm_genlist_item_select_mode_set(sep, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\r
601 \r
602         evas_object_smart_callback_add(main_genlist, "expanded", _gallery_genlist_exp, ugd);\r
603         evas_object_smart_callback_add(main_genlist, "contracted", _gallery_genlist_con, ugd);\r
604 \r
605         return main_genlist;\r
606 }\r
607 \r
608 \r
609 static Evas_Object *\r
610 _gallery_create_fullview(Evas_Object *parent, struct ug_data *ugd)\r
611 {\r
612         gallery_retv_if(!parent, NULL);\r
613 \r
614         Evas_Object *layout;\r
615         layout = elm_layout_add(parent);\r
616         gallery_retv_if( layout == NULL, NULL );\r
617 \r
618         Eina_Bool ret = EINA_FALSE;\r
619 \r
620         const char *profile = elm_config_profile_get();\r
621         if (!strcmp(profile,"mobile"))\r
622         {\r
623                 ret = elm_layout_theme_set(layout, "layout", "application", "default");\r
624                 gallery_debug("layout/application/default");\r
625         }\r
626         else if (!strcmp(profile,"desktop"))\r
627         {\r
628                 ret = elm_layout_theme_set(layout, "layout", "application", "noindicator");\r
629                 gallery_debug("layout/application/noindicator");\r
630         }\r
631 \r
632         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
633 \r
634         return layout;\r
635 }\r
636 \r
637 static Evas_Object*\r
638 _gallery_create_naviframe(Evas_Object* parent)\r
639 {\r
640         gallery_retv_if(!parent, NULL);\r
641 \r
642         Evas_Object *naviframe = NULL;\r
643         naviframe = elm_naviframe_add( parent );\r
644         elm_object_part_content_set( parent, "elm.swallow.content", naviframe );\r
645         evas_object_show(naviframe);\r
646 \r
647         return naviframe;\r
648 }\r
649 \r
650 static Evas_Object *_gallery_create_bg(Evas_Object *parent)\r
651 {\r
652         Evas_Object *bg = elm_bg_add(parent);\r
653         evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
654         elm_object_part_content_set(parent, "elm.swallow.bg", bg);\r
655         evas_object_show(bg);\r
656 \r
657     return bg;\r
658 }\r
659 \r
660 static void *\r
661 _on_create(ui_gadget_h ug, enum ug_mode mode, service_h data, void *priv)\r
662 {\r
663         gallery_retvm_if(!ug, NULL, "ug is NULL, check it !!");\r
664         gallery_retvm_if(!priv, NULL, "priv is NULL, check it !!");\r
665 \r
666         Evas_Object *parent = NULL;\r
667         struct ug_data *ugd = NULL;\r
668 \r
669         ugd = (struct ug_data *)priv;\r
670         ugd->ug = ug;\r
671 \r
672         /* Bind text domain for internalization */\r
673         bindtextdomain("ug-setting-gallery-efl" , "/usr/ug/res/locale");\r
674 \r
675         parent = (Evas_Object *)ug_get_parent_layout(ug);\r
676         gallery_retvm_if(parent == NULL, NULL, "parent layout is NULL");\r
677 \r
678         if (mode == UG_MODE_FULLVIEW)\r
679         {\r
680                 ugd->main_layout = _gallery_create_fullview(parent, ugd);\r
681         }\r
682         else\r
683         {\r
684                 gallery_info("It is not UG_MODE_FULLVIEW");\r
685                 return NULL;\r
686         }\r
687 \r
688         ugd->bg = _gallery_create_bg(ugd->main_layout);\r
689 \r
690         if(ugd->main_layout)\r
691         {\r
692                 ugd->naviframe = _gallery_create_naviframe(ugd->main_layout);\r
693                 evas_object_data_set(ugd->naviframe, "ugd", ugd);\r
694         }\r
695 \r
696         ugd->genlist = _gallery_genlist_items_add(ugd->naviframe,ugd);\r
697 \r
698         //evas_object_data_set(ugd->genlist, "ugd", ugd);\r
699 \r
700         ugd->backbtn = elm_button_add(ugd->naviframe);\r
701         evas_object_smart_callback_add(ugd->backbtn, "clicked", _gallery_quit_cb, ugd);\r
702         elm_object_style_set(ugd->backbtn, "naviframe/end_btn/default");\r
703 \r
704         elm_naviframe_item_push(ugd->naviframe, SGUG_TR_GALLERY, ugd->backbtn,\r
705                                 NULL, ugd->genlist, NULL);\r
706 \r
707         evas_object_show(ugd->main_layout);\r
708 \r
709         return ugd->main_layout;\r
710 }\r
711 \r
712 static void\r
713 _on_message(ui_gadget_h ug, service_h msg, service_h data, void *priv)\r
714 {\r
715 }\r
716 \r
717 static void\r
718 _on_event(ui_gadget_h ug, enum ug_event event, service_h data, void *priv)\r
719 {\r
720         //struct ug_data *ugd = (struct ug_data *)priv;\r
721 \r
722         switch (event) {\r
723         case UG_EVENT_LOW_MEMORY:\r
724                 break;\r
725         case UG_EVENT_LOW_BATTERY:\r
726                 break;\r
727         case UG_EVENT_LANG_CHANGE:\r
728                 break;\r
729         case UG_EVENT_ROTATE_PORTRAIT:\r
730                 break;\r
731         case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:\r
732                 break;\r
733         case UG_EVENT_ROTATE_LANDSCAPE:\r
734                 break;\r
735         case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:\r
736                 break;\r
737         default:\r
738                 break;\r
739         }\r
740 }\r
741 \r
742 static void\r
743 _on_start(ui_gadget_h ug, service_h data, void *priv)\r
744 {\r
745 }\r
746 \r
747 static void\r
748 _on_pause(ui_gadget_h ug, service_h data, void *priv)\r
749 {\r
750 \r
751 }\r
752 \r
753 static void\r
754 _on_resume(ui_gadget_h ug, service_h data, void *priv)\r
755 {\r
756 \r
757 }\r
758 \r
759 static void\r
760 _on_destroy(ui_gadget_h ug, service_h data, void *priv)\r
761 {\r
762         struct ug_data *ugd;\r
763 \r
764         gallery_retm_if(!ug, "ug is NULL, check it !!");\r
765         gallery_retm_if(!priv, "priv is NULL, check it !!");\r
766 \r
767         ugd = priv;\r
768         if(ugd->main_layout)\r
769         {\r
770                 evas_object_del(ugd->main_layout);\r
771                 ugd->main_layout = NULL;\r
772         }\r
773 }\r
774 \r
775 static void\r
776 _on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h data, void *priv)\r
777 {\r
778 \r
779 }\r
780 \r
781 UG_MODULE_API int\r
782 UG_MODULE_INIT(struct ug_module_ops *ops)\r
783 {\r
784         gallery_retvm_if(!ops, -1, "ops is NULL");\r
785 \r
786         struct ug_data *ugd = NULL;\r
787         ugd = calloc(1, sizeof(struct ug_data));\r
788         gallery_retvm_if(!ugd, -1, "ugd is NULL");\r
789 \r
790         ops->create = _on_create;\r
791         ops->start = _on_start;\r
792         ops->pause = _on_pause;\r
793         ops->resume = _on_resume;\r
794         ops->destroy = _on_destroy;\r
795         ops->message = _on_message;\r
796         ops->key_event = _on_key_event;\r
797         ops->event = _on_event;\r
798         ops->priv = ugd;\r
799         ops->opt = UG_OPT_INDICATOR_ENABLE;\r
800 \r
801         return 0;\r
802 }\r
803 \r
804 UG_MODULE_API int setting_plugin_reset(service_h data, void *priv)\r
805 {\r
806         gallery_info("Reset the settings start");\r
807 \r
808         int ret = 0;\r
809         ret += gallery_key_set_current_time(DEFAULT_TIMER);\r
810         ret += gallery_key_set_repeat_state(DEFAULT_REPEAT);\r
811         ret += gallery_key_set_shuffle_state(DEFAULT_SHUFFLE);\r
812         gallery_info("Finished");\r
813 \r
814         return ret;\r
815 }\r
816 \r
817 UG_MODULE_API void\r
818 UG_MODULE_EXIT(struct ug_module_ops *ops)\r
819 {\r
820         gallery_retm_if(!ops, "ops is NULL");\r
821 \r
822         struct ug_data *ugd;\r
823 \r
824         ugd = ops->priv;\r
825         if (ugd)\r
826         {\r
827                 free(ugd);\r
828         }\r
829 }\r