a3975c981a8e5d6c2c46a41dcf557798b0f318b6
[apps/core/preloaded/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://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         if (index == GALLERY_MAIN_MENU_REPEAT)\r
247         {\r
248                 gallery_key_init_repeat_state(&state);\r
249 \r
250                 if (gallery_key_set_repeat_state(!state))\r
251                 {\r
252                         gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
253                 }\r
254         }\r
255         else if(index == GALLERY_MAIN_MENU_SHUFFLE)\r
256         {\r
257                 gallery_key_init_shuffle_state(&state);\r
258 \r
259                 if(gallery_key_set_shuffle_state(!state))\r
260                 {\r
261                         gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
262                 }\r
263         }\r
264 }\r
265 \r
266 static Evas_Object *_gallery_create_check(Evas_Object *obj, struct ug_data *ugd, int index, Init_State_Func func, int *state)\r
267 {\r
268         gallery_retvm_if(!obj, NULL, "obj is NULL");\r
269         gallery_retvm_if(!ugd, NULL, "ugd is NULL");\r
270         gallery_retvm_if(!state, NULL, "state is NULL");\r
271 \r
272         if(func && state)\r
273                 func(state);\r
274 \r
275         Evas_Object *check = NULL;\r
276         check  = elm_check_add(obj);\r
277         evas_object_data_set(check, "ugd", ugd);\r
278         elm_check_state_set( check, (bool)*state);\r
279         elm_object_style_set(check, "on&off");\r
280         evas_object_propagate_events_set(check, EINA_FALSE);\r
281         evas_object_smart_callback_add(check, "changed", _gallery_genlist_icon_cb, (void *)index);\r
282 \r
283         return check;\r
284 }\r
285 \r
286 static Evas_Object*\r
287 _gallery_genlist_icon_get(void *data, Evas_Object *obj, const char *part)\r
288 {\r
289         gallery_retv_if(!data, NULL);\r
290         gallery_retv_if(!part, NULL);\r
291 \r
292         struct ug_data *ugd = NULL;\r
293 \r
294         ugd = evas_object_data_get(obj, "ugd");\r
295         gallery_retvm_if(!ugd, NULL, "INVALID param");\r
296 \r
297         int index = (int )data;\r
298         Evas_Object *check = NULL;\r
299 \r
300         if (strncmp(part, "elm.icon", strlen(part)) == 0)\r
301         {\r
302                 if (index == GALLERY_MAIN_MENU_REPEAT)\r
303                 {\r
304                         check = _gallery_create_check(obj, ugd, index, gallery_key_init_repeat_state, &ugd->repeat_state);\r
305                         ugd->repeat_btn = check;\r
306                 }\r
307                 else if(index == GALLERY_MAIN_MENU_SHUFFLE)\r
308                 {\r
309                         check = _gallery_create_check(obj, ugd, index, gallery_key_init_shuffle_state, &ugd->shuffle_state);\r
310                         ugd->shuffle_btn = check;\r
311                 }\r
312         }\r
313 \r
314         return check;\r
315 }\r
316 \r
317 \r
318 static void\r
319 _gallery_time_select_cb(void *data, Evas_Object *obj, void *event_info)\r
320 {\r
321         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
322         gallery_ret_if(!ugd);\r
323 \r
324         int param = (int )data;\r
325         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
326 \r
327         int index = GALLERY_MAIN_MENU_TIME;\r
328 \r
329         elm_genlist_item_selected_set(item, EINA_FALSE);\r
330 \r
331         if(gallery_key_set_current_time(gallery_key_get_time_vconf_value(param)))\r
332         {\r
333                 gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
334         }\r
335 \r
336         elm_radio_value_set(ugd->radio_group, param);\r
337         elm_genlist_item_update(ugd->gl_it[index]);\r
338 \r
339 }\r
340 \r
341 static void\r
342 _gallery_genlist_con(void *data, Evas_Object *obj, void *event_info)\r
343 {\r
344         gallery_ret_if(!event_info);\r
345 \r
346         Elm_Object_Item *item = event_info;\r
347         elm_genlist_item_subitems_clear(item);\r
348 }\r
349 \r
350 static void\r
351 _gallery_genlist_time_select_cb(void *data, Evas_Object *obj, void *event_info)\r
352 {\r
353         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
354         gallery_ret_if(!ugd);\r
355 \r
356         gallery_info("_gallery_genlist_time_select_cb");\r
357 \r
358         int index = 0;\r
359         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
360 \r
361         elm_genlist_item_selected_set(item, EINA_FALSE);\r
362 \r
363         Evas_Object *gl = elm_object_item_widget_get(item);\r
364 \r
365         ugd->check_time_itc.item_style = "dialogue/1text.1icon.3";\r
366         ugd->check_time_itc.func.text_get = _gallery_time_text_get;\r
367         ugd->check_time_itc.func.content_get = _gallery_time_content_get;\r
368         ugd->check_time_itc.func.state_get = NULL;\r
369         ugd->check_time_itc.func.del = NULL;\r
370 \r
371         ugd->radio_group = elm_radio_add(gl);\r
372         for (index = 0; gallery_key_time_menu_get(index); index++)\r
373         {\r
374                 elm_genlist_item_append(gl,&ugd->check_time_itc, (void *)index, item,\r
375                                 ELM_GENLIST_ITEM_NONE, _gallery_time_select_cb,  (void *)index);\r
376         }\r
377 \r
378 }\r
379 \r
380 static void\r
381 _gallery_genlist_exp(void *data, Evas_Object *obj, void *event_info)\r
382 {\r
383         gallery_ret_if(!obj);\r
384 \r
385         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
386         gallery_ret_if(!ugd);\r
387 \r
388         gallery_info("_gallery_genlist_exp");\r
389 \r
390         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
391 \r
392         elm_genlist_item_selected_set(item, EINA_FALSE);\r
393 \r
394         if(item == ugd->gl_it[GALLERY_MAIN_MENU_TIME])\r
395         {\r
396                 _gallery_genlist_time_select_cb(data, obj, event_info);\r
397         }\r
398 }\r
399 static void\r
400 _gallery_genlist_realized(void *data, Evas_Object *obj, void *event_info)\r
401 {\r
402         gallery_ret_if(!obj);\r
403         gallery_ret_if(!event_info);\r
404 \r
405         struct ug_data *ugd = (struct ug_data *)data;\r
406         gallery_ret_if(!ugd);\r
407 \r
408         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
409 \r
410         int index = (int)elm_object_item_data_get(item);\r
411 \r
412         if(index-1 == GALLERY_MAIN_MENU_TITLE)\r
413         {\r
414                 elm_object_item_signal_emit(item, "elm,state,top", "");\r
415         }\r
416         else if(index+1 == GALLERY_MAIN_MENU_ITEM_MAX)\r
417         {\r
418                 elm_object_item_signal_emit(item, "elm,state,bottom", "");\r
419         }\r
420         else\r
421         {\r
422                 elm_object_item_signal_emit(item, "elm,state,center", "");\r
423         }\r
424 }\r
425 \r
426 static void\r
427 _gallery_main_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,\r
428                              void *priv)\r
429 {\r
430         gallery_ret_if(priv == NULL);\r
431         gallery_ret_if(ug == NULL);\r
432         Evas_Object *base = NULL;\r
433         gallery_info("_gallery_main_layout_ug_cb");\r
434 \r
435         base = (Evas_Object *) ug_get_layout(ug);\r
436         if (!base)\r
437                 return;\r
438 \r
439         switch (mode) {\r
440                 case UG_MODE_FULLVIEW:\r
441                         evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
442                         elm_win_resize_object_add(ug_get_window(), base);\r
443                         evas_object_show(base);\r
444                         break;\r
445                 default:\r
446                         break;\r
447         }\r
448         gallery_info("end _gallery_main_layout_ug_cb");\r
449 }\r
450 \r
451 \r
452 static void\r
453 _gallery_genlist_select_cb(void *data, Evas_Object *obj, void *event_info)\r
454 {\r
455         struct ug_data *ugd = evas_object_data_get(obj, "ugd");\r
456         gallery_ret_if(!ugd);\r
457 \r
458         int param = (int )data;\r
459 \r
460         int icon_state = 0;\r
461         bool expand_state = false;\r
462 \r
463         Elm_Object_Item *item = (Elm_Object_Item *)event_info;\r
464 \r
465         elm_genlist_item_selected_set(item, EINA_FALSE);\r
466 \r
467         if(param == GALLERY_MAIN_MENU_TIME)\r
468         {\r
469                 expand_state = elm_genlist_item_expanded_get(item);\r
470                 elm_genlist_item_expanded_set(item, !expand_state);\r
471         }\r
472         else if(param == GALLERY_MAIN_MENU_REPEAT)\r
473         {\r
474                 gallery_key_init_repeat_state(&icon_state);\r
475                 icon_state = !icon_state;\r
476 \r
477                 if(gallery_key_set_repeat_state(icon_state))\r
478                 {\r
479                         gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
480                 }\r
481 \r
482                 elm_check_state_set(ugd->repeat_btn, (bool)icon_state);\r
483         }\r
484         else if(param == GALLERY_MAIN_MENU_SHUFFLE)\r
485         {\r
486                 gallery_key_init_shuffle_state(&icon_state);\r
487                 icon_state = !icon_state;\r
488 \r
489                 if(gallery_key_set_shuffle_state(icon_state))\r
490                 {\r
491                         gallery_key_text_popup(ugd,SGUG_TR_FAILED);\r
492                 }\r
493 \r
494                 elm_check_state_set(ugd->shuffle_btn,(bool)icon_state);\r
495         }\r
496 }\r
497 \r
498 static Evas_Object *\r
499 _gallery_genlist_items_add (Evas_Object *parent, struct ug_data *ugd)\r
500 {\r
501         Evas_Object *main_genlist;\r
502         Elm_Object_Item *sep;\r
503 \r
504         int index = 0;\r
505 \r
506         main_genlist = elm_genlist_add(parent);\r
507 \r
508 #ifdef USE_DIALOGUE_STYLE\r
509         elm_object_style_set(main_genlist, "dialogue");\r
510 #else\r
511         evas_object_smart_callback_add(main_genlist, "realized", _gallery_genlist_realized, ugd);\r
512 #endif\r
513 \r
514         evas_object_size_hint_weight_set(main_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
515         evas_object_size_hint_align_set(main_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
516 \r
517         ugd->genlist = main_genlist;\r
518 \r
519         evas_object_data_set(ugd->genlist, "ugd", ugd);\r
520 \r
521         ugd->title_itc.item_style = "dialogue/title";\r
522         ugd->title_itc.func.text_get = _gallery_genlist_text_get;\r
523         ugd->title_itc.func.content_get = NULL;\r
524         ugd->title_itc.func.state_get = NULL;\r
525         ugd->title_itc.func.del = NULL;\r
526 \r
527         ugd->expandable_itc.item_style = "dialogue/2text.3/expandable";\r
528         ugd->expandable_itc.func.text_get = _gallery_genlist_text_get;\r
529         ugd->expandable_itc.func.content_get = NULL;\r
530         ugd->expandable_itc.func.state_get = NULL;\r
531         ugd->expandable_itc.func.del = NULL;\r
532 \r
533         ugd->txt_icon_itc.item_style = "dialogue/1text.1icon";\r
534         ugd->txt_icon_itc.func.text_get = _gallery_genlist_text_get;\r
535         ugd->txt_icon_itc.func.content_get = _gallery_genlist_icon_get;\r
536         ugd->txt_icon_itc.func.state_get = NULL;\r
537         ugd->txt_icon_itc.func.del = NULL;\r
538 \r
539         ugd->two_txt_icon_itc.item_style = "dialogue/2text.1icon.6";\r
540         ugd->two_txt_icon_itc.func.text_get = _gallery_genlist_text_get;\r
541         ugd->two_txt_icon_itc.func.content_get = _gallery_genlist_icon_get;\r
542         ugd->two_txt_icon_itc.func.state_get = NULL;\r
543         ugd->two_txt_icon_itc.func.del = NULL;\r
544 \r
545         ugd->seperator_itc.item_style = "grouptitle.dialogue.seperator";\r
546         ugd->seperator_itc.func.text_get = NULL;\r
547         ugd->seperator_itc.func.content_get = NULL;\r
548         ugd->seperator_itc.func.state_get = NULL;\r
549         ugd->seperator_itc.func.del = NULL;\r
550 \r
551         ugd->seperator_end_itc.item_style = "dialogue/separator/end";\r
552         ugd->seperator_end_itc.func.text_get = NULL;\r
553         ugd->seperator_end_itc.func.content_get = NULL;\r
554         ugd->seperator_end_itc.func.state_get = NULL;\r
555         ugd->seperator_end_itc.func.del = NULL;\r
556 \r
557         sep = elm_genlist_item_append(main_genlist, &ugd->seperator_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);\r
558         elm_genlist_item_select_mode_set(sep, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\r
559 \r
560         for (index = GALLERY_MAIN_MENU_TITLE; index < GALLERY_MAIN_MENU_ITEM_MAX; index++)\r
561         {\r
562                 //expandable genlist\r
563                 if (index == GALLERY_MAIN_MENU_TIME)\r
564                 {\r
565                         ugd->gl_it[index] = elm_genlist_item_append(main_genlist, &ugd->expandable_itc,\r
566                                                                     (void *)index, NULL,\r
567                                                                     ELM_GENLIST_ITEM_TREE,\r
568                                                                     _gallery_genlist_select_cb,\r
569                                                                     (void *)index);\r
570                 }\r
571                 // repeat&shuffle 1txt .1icon\r
572                 else if (index == GALLERY_MAIN_MENU_REPEAT ||\r
573                          index == GALLERY_MAIN_MENU_SHUFFLE)\r
574                 {\r
575                         ugd->gl_it[index] = elm_genlist_item_append(main_genlist, &ugd->txt_icon_itc,\r
576                                                                     (void *)index, NULL,\r
577                                                                     ELM_GENLIST_ITEM_NONE,\r
578                                                                     _gallery_genlist_select_cb,\r
579                                                                     (void *)index);\r
580                 }\r
581         }\r
582 \r
583         sep = elm_genlist_item_append(main_genlist, &ugd->seperator_end_itc, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);\r
584         elm_genlist_item_select_mode_set(sep, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\r
585 \r
586         evas_object_smart_callback_add(main_genlist, "expanded", _gallery_genlist_exp, ugd);\r
587         evas_object_smart_callback_add(main_genlist, "contracted", _gallery_genlist_con, ugd);\r
588 \r
589         return main_genlist;\r
590 }\r
591 \r
592 \r
593 static Evas_Object *\r
594 _gallery_create_fullview(Evas_Object *parent, struct ug_data *ugd)\r
595 {\r
596         gallery_retv_if(!parent, NULL);\r
597 \r
598         Evas_Object *layout;\r
599         layout = elm_layout_add(parent);\r
600         gallery_retv_if( layout == NULL, NULL );\r
601 \r
602         Eina_Bool ret = EINA_FALSE;\r
603 \r
604         const char *profile = elm_config_profile_get();\r
605         if (!strcmp(profile,"mobile"))\r
606         {\r
607                 ret = elm_layout_theme_set(layout, "layout", "application", "default");\r
608                 gallery_debug("layout/application/default");\r
609         }\r
610         else if (!strcmp(profile,"desktop"))\r
611         {\r
612                 ret = elm_layout_theme_set(layout, "layout", "application", "noindicator");\r
613                 gallery_debug("layout/application/noindicator");\r
614         }\r
615 \r
616         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
617 \r
618         return layout;\r
619 }\r
620 \r
621 static Evas_Object*\r
622 _gallery_create_naviframe(Evas_Object* parent)\r
623 {\r
624         gallery_retv_if(!parent, NULL);\r
625 \r
626         Evas_Object *naviframe = NULL;\r
627         naviframe = elm_naviframe_add( parent );\r
628         elm_object_part_content_set( parent, "elm.swallow.content", naviframe );\r
629         evas_object_show(naviframe);\r
630 \r
631         return naviframe;\r
632 }\r
633 \r
634 static Evas_Object *_gallery_create_bg(Evas_Object *parent)\r
635 {\r
636         Evas_Object *bg = elm_bg_add(parent);\r
637         evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
638         elm_object_part_content_set(parent, "elm.swallow.bg", bg);\r
639         evas_object_show(bg);\r
640 \r
641     return bg;\r
642 }\r
643 \r
644 static void *\r
645 _on_create(ui_gadget_h ug, enum ug_mode mode, service_h data, void *priv)\r
646 {\r
647         gallery_retvm_if(!ug, NULL, "ug is NULL, check it !!");\r
648         gallery_retvm_if(!priv, NULL, "priv is NULL, check it !!");\r
649 \r
650         Evas_Object *parent = NULL;\r
651         struct ug_data *ugd = NULL;\r
652 \r
653         ugd = (struct ug_data *)priv;\r
654         ugd->ug = ug;\r
655 \r
656         /* Bind text domain for internalization */\r
657         bindtextdomain("ug-setting-gallery-efl" , "/usr/ug/res/locale");\r
658 \r
659         parent = (Evas_Object *)ug_get_parent_layout(ug);\r
660         gallery_retvm_if(parent == NULL, NULL, "parent layout is NULL");\r
661 \r
662         if (mode == UG_MODE_FULLVIEW)\r
663         {\r
664                 ugd->main_layout = _gallery_create_fullview(parent, ugd);\r
665         }\r
666         else\r
667         {\r
668                 gallery_info("It is not UG_MODE_FULLVIEW");\r
669                 return NULL;\r
670         }\r
671 \r
672         ugd->bg = _gallery_create_bg(ugd->main_layout);\r
673 \r
674         if(ugd->main_layout)\r
675         {\r
676                 ugd->naviframe = _gallery_create_naviframe(ugd->main_layout);\r
677                 evas_object_data_set(ugd->naviframe, "ugd", ugd);\r
678         }\r
679 \r
680         ugd->genlist = _gallery_genlist_items_add(ugd->naviframe,ugd);\r
681 \r
682         //evas_object_data_set(ugd->genlist, "ugd", ugd);\r
683 \r
684         ugd->backbtn = elm_button_add(ugd->naviframe);\r
685         evas_object_smart_callback_add(ugd->backbtn, "clicked", _gallery_quit_cb, ugd);\r
686         elm_object_style_set(ugd->backbtn, "naviframe/end_btn/default");\r
687 \r
688         elm_naviframe_item_push(ugd->naviframe, SGUG_TR_GALLERY, ugd->backbtn,\r
689                                 NULL, ugd->genlist, NULL);\r
690 \r
691         evas_object_show(ugd->main_layout);\r
692 \r
693         return ugd->main_layout;\r
694 }\r
695 \r
696 static void\r
697 _on_message(ui_gadget_h ug, service_h msg, service_h data, void *priv)\r
698 {\r
699 }\r
700 \r
701 static void\r
702 _on_event(ui_gadget_h ug, enum ug_event event, service_h data, void *priv)\r
703 {\r
704         //struct ug_data *ugd = (struct ug_data *)priv;\r
705 \r
706         switch (event) {\r
707         case UG_EVENT_LOW_MEMORY:\r
708                 break;\r
709         case UG_EVENT_LOW_BATTERY:\r
710                 break;\r
711         case UG_EVENT_LANG_CHANGE:\r
712                 break;\r
713         case UG_EVENT_ROTATE_PORTRAIT:\r
714                 break;\r
715         case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:\r
716                 break;\r
717         case UG_EVENT_ROTATE_LANDSCAPE:\r
718                 break;\r
719         case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:\r
720                 break;\r
721         default:\r
722                 break;\r
723         }\r
724 }\r
725 \r
726 static void\r
727 _on_start(ui_gadget_h ug, service_h data, void *priv)\r
728 {\r
729 }\r
730 \r
731 static void\r
732 _on_pause(ui_gadget_h ug, service_h data, void *priv)\r
733 {\r
734 \r
735 }\r
736 \r
737 static void\r
738 _on_resume(ui_gadget_h ug, service_h data, void *priv)\r
739 {\r
740 \r
741 }\r
742 \r
743 static void\r
744 _on_destroy(ui_gadget_h ug, service_h data, void *priv)\r
745 {\r
746         struct ug_data *ugd;\r
747 \r
748         gallery_retm_if(!ug, "ug is NULL, check it !!");\r
749         gallery_retm_if(!priv, "priv is NULL, check it !!");\r
750 \r
751         ugd = priv;\r
752         if(ugd->main_layout)\r
753         {\r
754                 evas_object_del(ugd->main_layout);\r
755                 ugd->main_layout = NULL;\r
756         }\r
757 }\r
758 \r
759 static void\r
760 _on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h data, void *priv)\r
761 {\r
762 \r
763 }\r
764 \r
765 UG_MODULE_API int\r
766 UG_MODULE_INIT(struct ug_module_ops *ops)\r
767 {\r
768         gallery_retvm_if(!ops, -1, "ops is NULL");\r
769 \r
770         struct ug_data *ugd = NULL;\r
771         ugd = calloc(1, sizeof(struct ug_data));\r
772         gallery_retvm_if(!ugd, -1, "ugd is NULL");\r
773 \r
774         ops->create = _on_create;\r
775         ops->start = _on_start;\r
776         ops->pause = _on_pause;\r
777         ops->resume = _on_resume;\r
778         ops->destroy = _on_destroy;\r
779         ops->message = _on_message;\r
780         ops->key_event = _on_key_event;\r
781         ops->event = _on_event;\r
782         ops->priv = ugd;\r
783         ops->opt = UG_OPT_INDICATOR_ENABLE;\r
784 \r
785         return 0;\r
786 }\r
787 \r
788 UG_MODULE_API int setting_plugin_reset(service_h data, void *priv)\r
789 {\r
790         gallery_info("Reset the settings start");\r
791 \r
792         int ret = 0;\r
793         ret += gallery_key_set_current_time(DEFAULT_TIMER);\r
794         ret += gallery_key_set_repeat_state(DEFAULT_REPEAT);\r
795         ret += gallery_key_set_shuffle_state(DEFAULT_SHUFFLE);\r
796         gallery_info("Finished");\r
797 \r
798         return ret;\r
799 }\r
800 \r
801 UG_MODULE_API void\r
802 UG_MODULE_EXIT(struct ug_module_ops *ops)\r
803 {\r
804         gallery_retm_if(!ops, "ops is NULL");\r
805 \r
806         struct ug_data *ugd;\r
807 \r
808         ugd = ops->priv;\r
809         if (ugd)\r
810         {\r
811                 free(ugd);\r
812         }\r
813 }\r