Merge "Remove code related to Datausage ."
[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 }
115
116 static void setting_fileview_ug_on_resume(ui_gadget_h ug, service_h service,
117                                        void *priv)
118 {
119         SETTING_TRACE_BEGIN;
120 }
121
122 /**
123 * on_destroy function of the UG
124 *
125 * @param ug
126 * @param data
127 * @param priv
128 */
129 static void setting_fileview_ug_on_destroy(ui_gadget_h ug, service_h service,
130                                         void *priv)
131 {
132         SETTING_TRACE_BEGIN;
133         setting_retm_if((!priv), "!priv");
134         SettingFileviewUG *fileviewUG = priv;
135
136         evas_object_event_callback_del(fileviewUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_fileview_ug_cb_resize);       /* fix flash issue for gallery */
137         fileviewUG->ug = ug;
138         /*  delete the allocated objects. */
139         setting_view_destroy(&setting_view_fileview_main, fileviewUG);
140
141         if (NULL != ug_get_layout(fileviewUG->ug)) {
142                 evas_object_hide((Evas_Object *) ug_get_layout(fileviewUG->ug));
143                 evas_object_del((Evas_Object *) ug_get_layout(fileviewUG->ug));
144         }
145
146         SETTING_TRACE_END;
147 }
148
149 static void setting_fileview_ug_on_message(ui_gadget_h ug, service_h msg,
150                                         service_h service, void *priv)
151 {
152         SETTING_TRACE_BEGIN;
153 }
154
155 static void setting_fileview_ug_on_event(ui_gadget_h ug, enum ug_event event,
156                                       service_h service, 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_fileview_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         SettingFileviewUG *ad = (SettingFileviewUG *) priv;
187
188         switch (event) {
189         case UG_KEY_EVENT_END:
190                 {
191                         if (elm_naviframe_top_item_get(ad->navi_bar) ==
192                            elm_naviframe_bottom_item_get(ad->navi_bar)) {
193                                 ug_destroy_me(ug);
194                         } else {
195                                 /* elm_naviframe_item_pop(ad->navi_bar); */
196                                 setting_view_cb_at_endKey(ad);
197                         }
198                 }
199                 break;
200         default:
201                 break;
202         }
203 }
204
205 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
206 {
207         SETTING_TRACE_BEGIN;
208         SettingFileviewUG *fileviewUG = calloc(1, sizeof(SettingFileviewUG));
209         setting_retvm_if(!fileviewUG, -1, "Create SettingFileviewUG obj failed");
210
211         ops->create = setting_fileview_ug_on_create;
212         ops->start = setting_fileview_ug_on_start;
213         ops->pause = setting_fileview_ug_on_pause;
214         ops->resume = setting_fileview_ug_on_resume;
215         ops->destroy = setting_fileview_ug_on_destroy;
216         ops->message = setting_fileview_ug_on_message;
217         ops->event = setting_fileview_ug_on_event;
218         ops->key_event = setting_fileview_ug_on_key_event;
219         ops->priv = fileviewUG;
220         ops->opt = UG_OPT_INDICATOR_ENABLE;
221
222         return 0;
223 }
224
225 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
226 {
227         SETTING_TRACE_BEGIN;
228         struct SettingFileviewUG *fileviewUG;
229         setting_retm_if(!ops, "ops == NULL");
230
231         fileviewUG = ops->priv;
232         if (fileviewUG) {
233                 FREE(fileviewUG);
234         }
235 }
236
237 /* ***************************************************
238  **
239  **general func
240  **
241  ****************************************************/
242