change partition
[apps/core/preloaded/settings.git] / setting-fileview / src / setting-fileview.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21
22 /**
23  *@defgroup setting-fileview
24  *UG creation code for setting-fileview
25  * html file viewer
26  */
27
28 #include <setting-fileview.h>
29 #ifndef UG_MODULE_API
30 #define UG_MODULE_API __attribute__ ((visibility("default")))
31 #endif
32
33 bool __parse_ug_argument(service_h service, void *priv)
34 {
35         SETTING_TRACE_BEGIN;
36         SettingFileviewUG *ad = priv;
37         ad->input_file = NULL;
38
39         service_get_extra_data(service, "file", &(ad->input_file));
40         setting_retvm_if(!ad->input_file, FALSE, "no arguement to specialize file");
41
42         ad->input_title = NULL;
43
44         service_get_extra_data(service, "title", &(ad->input_title));
45         setting_retvm_if(!ad->input_title, FALSE, "no arguement to title");
46         SETTING_TRACE("ad->input_file:%s", ad->input_file);
47         SETTING_TRACE("ad->input_title:%s", ad->input_title);
48         return TRUE;
49 }
50
51 /**
52 * Event process when the sizeof UG view changes
53 *
54 * @param data
55 * @param e
56 * @param obj
57 * @param event_info
58 */
59 static void setting_fileview_ug_cb_resize(void *data, Evas *e, Evas_Object *obj,
60                                        void *event_info)
61 {
62         SettingFileviewUG *ad = (SettingFileviewUG *) data;
63         setting_view_update(&setting_view_fileview_main, ad);
64 }
65
66 /**
67 * on_create function of the UG
68 *
69 * @param ug
70 * @param mode
71 * @param data
72 * @param priv
73 *
74 * @return
75 */
76 static void *setting_fileview_ug_on_create(ui_gadget_h ug, enum ug_mode mode,
77                                         service_h service, void *priv)
78 {
79         SETTING_TRACE_BEGIN;
80         setting_retvm_if((NULL == priv), NULL, "NULL == priv");
81         SettingFileviewUG *fileviewUG = priv;
82         fileviewUG->ug = ug;
83
84         fileviewUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
85         fileviewUG->win_get = (Evas_Object *) ug_get_window();
86         evas_object_show(fileviewUG->win_main_layout);
87         fileviewUG->evas = evas_object_evas_get(fileviewUG->win_main_layout);
88
89         setting_retvm_if(fileviewUG->win_main_layout == NULL, NULL,
90                          "cannot get main window ");
91
92         /*  creating a view. */
93         if (!__parse_ug_argument(service, priv))
94         {
95                 SETTING_TRACE_ERROR("Invalid arguement");
96                 return NULL;
97         }
98         setting_view_create(&setting_view_fileview_main, (void *)fileviewUG);
99         evas_object_event_callback_add(fileviewUG->win_main_layout,
100                                        EVAS_CALLBACK_RESIZE,
101                                        setting_fileview_ug_cb_resize, fileviewUG);
102         return fileviewUG->ly_main;
103 }
104
105 static void setting_fileview_ug_on_start(ui_gadget_h ug, service_h service,
106                                       void *priv)
107 {
108 }
109
110 static void setting_fileview_ug_on_pause(ui_gadget_h ug, service_h service,
111                                       void *priv)
112 {
113         SETTING_TRACE_BEGIN;
114         setting_retm_if(NULL == priv, "NULL == priv");
115         SettingFileviewUG *fileviewUG = priv;
116         if (fileviewUG->webkit) {
117                 ewk_view_visibility_set(fileviewUG->webkit, EINA_FALSE);
118         }
119 }
120
121 static void setting_fileview_ug_on_resume(ui_gadget_h ug, service_h service,
122                                        void *priv)
123 {
124         SETTING_TRACE_BEGIN;
125         setting_retm_if(NULL == priv, "NULL == priv");
126         SettingFileviewUG *fileviewUG = priv;
127         if (fileviewUG->webkit) {
128                 ewk_view_visibility_set(fileviewUG->webkit, EINA_TRUE);
129         }
130 }
131
132 /**
133 * on_destroy function of the UG
134 *
135 * @param ug
136 * @param data
137 * @param priv
138 */
139 static void setting_fileview_ug_on_destroy(ui_gadget_h ug, service_h service,
140                                         void *priv)
141 {
142         SETTING_TRACE_BEGIN;
143         setting_retm_if((!priv), "!priv");
144         SettingFileviewUG *fileviewUG = priv;
145
146         evas_object_event_callback_del(fileviewUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_fileview_ug_cb_resize);       /* fix flash issue for gallery */
147         fileviewUG->ug = ug;
148         /*  delete the allocated objects. */
149         setting_view_destroy(&setting_view_fileview_main, fileviewUG);
150
151         if (NULL != ug_get_layout(fileviewUG->ug)) {
152                 evas_object_hide((Evas_Object *) ug_get_layout(fileviewUG->ug));
153                 evas_object_del((Evas_Object *) ug_get_layout(fileviewUG->ug));
154         }
155
156         SETTING_TRACE_END;
157 }
158
159 static void setting_fileview_ug_on_message(ui_gadget_h ug, service_h msg,
160                                         service_h service, void *priv)
161 {
162         SETTING_TRACE_BEGIN;
163 }
164
165 static void setting_fileview_ug_on_event(ui_gadget_h ug, enum ug_event event,
166                                       service_h service, void *priv)
167 {
168         SETTING_TRACE_BEGIN;
169         switch (event) {
170         case UG_EVENT_LOW_MEMORY:
171                 break;
172         case UG_EVENT_LOW_BATTERY:
173                 break;
174         case UG_EVENT_LANG_CHANGE:
175                 break;
176         case UG_EVENT_ROTATE_PORTRAIT:
177                 break;
178         case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
179                 break;
180         case UG_EVENT_ROTATE_LANDSCAPE:
181                 break;
182         case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
183                 break;
184         case UG_EVENT_REGION_CHANGE:
185                 break;
186         default:
187                 break;
188         }
189 }
190
191 static void setting_fileview_ug_on_key_event(ui_gadget_h ug,
192                                           enum ug_key_event event,
193                                           service_h service, void *priv)
194 {
195         SETTING_TRACE_BEGIN;
196         SettingFileviewUG *ad = (SettingFileviewUG *) priv;
197
198         switch (event) {
199         case UG_KEY_EVENT_END:
200                 {
201                         if (elm_naviframe_top_item_get(ad->navi_bar) ==
202                            elm_naviframe_bottom_item_get(ad->navi_bar)) {
203                                 ug_destroy_me(ug);
204                         } else {
205                                 /* elm_naviframe_item_pop(ad->navi_bar); */
206                                 setting_view_cb_at_endKey(ad);
207                         }
208                 }
209                 break;
210         default:
211                 break;
212         }
213 }
214
215 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
216 {
217         SETTING_TRACE_BEGIN;
218         SettingFileviewUG *fileviewUG = calloc(1, sizeof(SettingFileviewUG));
219         setting_retvm_if(!fileviewUG, -1, "Create SettingFileviewUG obj failed");
220
221         ops->create = setting_fileview_ug_on_create;
222         ops->start = setting_fileview_ug_on_start;
223         ops->pause = setting_fileview_ug_on_pause;
224         ops->resume = setting_fileview_ug_on_resume;
225         ops->destroy = setting_fileview_ug_on_destroy;
226         ops->message = setting_fileview_ug_on_message;
227         ops->event = setting_fileview_ug_on_event;
228         ops->key_event = setting_fileview_ug_on_key_event;
229         ops->priv = fileviewUG;
230         ops->opt = UG_OPT_INDICATOR_ENABLE;
231
232         return 0;
233 }
234
235 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
236 {
237         SETTING_TRACE_BEGIN;
238         struct SettingFileviewUG *fileviewUG;
239         setting_retm_if(!ops, "ops == NULL");
240
241         fileviewUG = ops->priv;
242         if (fileviewUG) {
243                 FREE(fileviewUG);
244         }
245 }
246
247 /* ***************************************************
248  **
249  **general func
250  **
251  ****************************************************/
252