Initialize Tizen 2.3
[apps/home/settings.git] / setting-viewtype / src / setting-viewtype.c
1 /*
2  * setting
3  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
4  *
5  * Licensed under the Flora License, Version 1.1 (the License);
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://floralicense.org/license/
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an AS IS BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 #include <setting-viewtype.h>
18
19 #ifndef UG_MODULE_API
20 #define UG_MODULE_API __attribute__ ((visibility("default")))
21 #endif
22
23 setting_view *__get_viewtype_view_to_load(service_h service)
24 {
25         SETTING_TRACE_BEGIN;
26
27         const char *viewtype = NULL;
28         service_get_extra_data(service, "viewtype", &viewtype);
29         if(!viewtype)
30                 return NULL;
31
32         SETTING_TRACE("viewtype:%s", viewtype);
33
34         if (!safeStrCmp(viewtype, "taskswitcher")) {
35                 return &setting_view_task_switcher_viewtype;
36         } else {
37                 return NULL;    /* &setting_view_viewtype_main; */
38         }
39
40 }
41
42 Evas_Object *__get_viewtype_layout_to_return(service_h service, void *priv)
43 {
44         SETTING_TRACE_BEGIN;
45         SettingViewTypeUG *viewtypeUG = priv;
46         const char *viewtype = NULL;
47         service_get_extra_data(service, "viewtype", &viewtype);
48         if(!viewtype)
49                 return NULL;
50
51         SETTING_TRACE("viewtype:%s", viewtype);
52
53         if (!safeStrCmp(viewtype, "taskswitcher")) {
54                 return viewtypeUG->ly_task;
55         } else {
56                 return NULL;    /* &setting_view_viewtype_main; */
57         }
58
59 }
60
61 static void setting_viewtype_ug_cb_resize(void *data, Evas *e,
62                                           Evas_Object *obj, void *event_info)
63 {
64         SettingViewTypeUG *ad = (SettingViewTypeUG *) data;
65         /* setting_view_update(&setting_view_about_main, ad); */
66         setting_view_update(ad->view_to_load, ad);
67 }
68
69 static void *setting_viewtype_ug_on_create(ui_gadget_h ug,
70                                            enum ug_mode mode, service_h service,
71                                            void *priv)
72 {
73         setting_retvm_if((!priv), NULL, "!priv");
74
75         SettingViewTypeUG *viewtypeUG = priv;
76         viewtypeUG->ug = ug;
77
78         viewtypeUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
79         viewtypeUG->win_get = (Evas_Object *) ug_get_window();
80         evas_object_show(viewtypeUG->win_main_layout);
81         viewtypeUG->evas = evas_object_evas_get(viewtypeUG->win_main_layout);
82
83         setting_retvm_if(viewtypeUG->win_main_layout == NULL, NULL,
84                          "cannot get main window ");
85
86
87         setting_create_Gendial_itc("dialogue/1text.1icon.2",
88                                    &(viewtypeUG->itc_1text_1icon_2));
89
90         viewtypeUG->itc_seperator.item_style = "dialogue/separator";
91         viewtypeUG->itc_seperator.func.text_get = NULL;
92         viewtypeUG->itc_seperator.func.content_get = NULL;
93         viewtypeUG->itc_seperator.func.state_get = NULL;
94         viewtypeUG->itc_seperator.func.del = NULL;
95
96         /*  creating a view. */
97         /* setting_view_create(&setting_view_viewtype_main, (void *)viewtypeUG); */
98         viewtypeUG->view_to_load = __get_viewtype_view_to_load(data);
99         setting_retvm_if(NULL == viewtypeUG->view_to_load, NULL,
100                          "NULL == viewtypeUG->view_to_load");
101         setting_view_create(viewtypeUG->view_to_load, (void *)viewtypeUG);
102         evas_object_event_callback_add(viewtypeUG->win_main_layout,
103                                        EVAS_CALLBACK_RESIZE,
104                                        setting_viewtype_ug_cb_resize,
105                                        viewtypeUG);
106         return __get_viewtype_layout_to_return(data, viewtypeUG);
107 }
108
109 static void setting_viewtype_ug_on_start(ui_gadget_h ug, service_h service,
110                                          void *priv)
111 {
112 }
113
114 static void setting_viewtype_ug_on_pause(ui_gadget_h ug, service_h service,
115                                          void *priv)
116 {
117 }
118
119 static void setting_viewtype_ug_on_resume(ui_gadget_h ug, service_h service,
120                                           void *priv)
121 {
122 }
123
124 static void setting_viewtype_ug_on_destroy(ui_gadget_h ug, service_h service,
125                                            void *priv)
126 {
127         SETTING_TRACE_BEGIN;
128         setting_retm_if((!priv), "!priv");
129         SettingViewTypeUG *viewtypeUG = priv;
130
131         evas_object_event_callback_del(viewtypeUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_viewtype_ug_cb_resize);       /* fix flash issue for gallery */
132         viewtypeUG->ug = ug;
133
134         /*  called when this shared gadget is terminated. similar with app_exit */
135         if (&setting_view_task_switcher_viewtype == viewtypeUG->view_to_load) {
136                 setting_view_destroy(&setting_view_task_switcher_viewtype,
137                                      viewtypeUG);
138         }
139
140         if (NULL != ug_get_layout(viewtypeUG->ug)) {
141                 evas_object_hide((Evas_Object *) ug_get_layout(viewtypeUG->ug));
142                 evas_object_del((Evas_Object *) ug_get_layout(viewtypeUG->ug));
143         }
144
145         SETTING_TRACE_END;
146 }
147
148 static void setting_viewtype_ug_on_message(ui_gadget_h ug, service_h msg,
149                                            service_h service, void *priv)
150 {
151         SETTING_TRACE_BEGIN;
152 }
153
154 static void setting_viewtype_ug_on_event(ui_gadget_h ug,
155                                          enum ug_event event, service_h service,
156                                          void *priv)
157 {
158         SETTING_TRACE_BEGIN;
159         switch (event) {
160         case UG_EVENT_LOW_MEMORY:
161                 break;
162         case UG_EVENT_LOW_BATTERY:
163                 break;
164         case UG_EVENT_LANG_CHANGE:
165                 break;
166         case UG_EVENT_ROTATE_PORTRAIT:
167                 break;
168         case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
169                 break;
170         case UG_EVENT_ROTATE_LANDSCAPE:
171                 break;
172         case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
173                 break;
174         case UG_EVENT_REGION_CHANGE:
175                 break;
176         default:
177                 break;
178         }
179 }
180
181 static void setting_viewtype_ug_on_key_event(ui_gadget_h ug,
182                                              enum ug_key_event event,
183                                              service_h service, void *priv)
184 {
185         SETTING_TRACE_BEGIN;
186
187         switch (event) {
188         case UG_KEY_EVENT_END:
189                 ug_destroy_me(ug);
190                 break;
191         default:
192                 break;
193         }
194 }
195
196 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
197 {
198         SETTING_TRACE_BEGIN;
199         SettingViewTypeUG *viewtypeUG = calloc(1, sizeof(SettingViewTypeUG));
200         setting_retvm_if(!viewtypeUG, -1,
201                          "Create SettingViewTypeUG obj failed");
202
203         ops->create = setting_viewtype_ug_on_create;
204         ops->start = setting_viewtype_ug_on_start;
205         ops->pause = setting_viewtype_ug_on_pause;
206         ops->resume = setting_viewtype_ug_on_resume;
207         ops->destroy = setting_viewtype_ug_on_destroy;
208         ops->message = setting_viewtype_ug_on_message;
209         ops->event = setting_viewtype_ug_on_event;
210         ops->key_event = setting_viewtype_ug_on_key_event;
211         ops->priv = viewtypeUG;
212         ops->opt = UG_OPT_INDICATOR_ENABLE;
213
214         return 0;
215 }
216
217 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
218 {
219         SETTING_TRACE_BEGIN;
220         struct SettingViewTypeUG *viewtypeUG;
221         setting_retm_if(!ops, "ops == NULL");
222
223         viewtypeUG = ops->priv;
224         if (viewtypeUG)
225                 FREE(viewtypeUG);
226 }
227
228 /* ***************************************************
229  *
230  *general func
231  *
232  ***************************************************/
233
234 /**
235 * Reset function to 'reset' the settings of the UG, it will be invoked by 'Reset' UG
236 */
237 UG_MODULE_API int setting_plugin_reset(service_h service, void *priv)
238 {
239         SETTING_TRACE_BEGIN;
240         int ret = 0;
241         #if SUPPORT_RUN_SYSTEM_COMMAND
242         ret += excuteCmd(SETTING_POSTINST_FILE, 1, "viewtype");
243         #else
244 #ifdef UNUSED_VCONFKEY
245         ret += vconf_set_int(VCONFKEY_TASKSWITCHER_VIEWTYPE, VCONFKEY_TASKSWITCHER_VIEWTYPE_LIST);
246 #endif
247         #endif
248         
249         return ret;
250 }
251
252