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