tizen 2.3.1 release
[apps/home/settings.git] / setting-security / src / setting-security-update.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 #include <setting-common-data-type.h>
23 #include <setting-common-data-slp-setting.h>
24 #include <setting-common-draw-widget.h>
25 #include <setting-common-view.h>
26
27 #include <setting-security-main.h>
28 #include <setting-debug.h>
29 #include <app.h>
30 #include <efl_assist.h>
31
32 static int setting_view_security_update_create(void *cb);
33 static int setting_view_security_update_destroy(void *cb);
34 static int setting_view_security_update_update(void *cb);
35 static int setting_view_security_update_cleanup(void *cb);
36
37 static Eina_Bool setting_security_update_click_softkey_back_cb(void *data, Evas_Object *obj, void *event_info);
38 static void setting_security_update_mouse_up_Gendial_chk_cb(void *data, Evas_Object *obj, void *event_info);
39 static void setting_security_update_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj, void *event_info);
40 static void __get_toggle_status_form_msa(void *data);
41 static void setting_security_update_gl_item_chk_status(Setting_GenGroupItem_Data *item_data, int status);
42
43
44
45 setting_view setting_view_security_update = {
46         .create = setting_view_security_update_create,
47         .destroy = setting_view_security_update_destroy,
48         .update = setting_view_security_update_update,
49         .cleanup = setting_view_security_update_cleanup,
50 };
51
52
53 /* ***************************************************
54  **
55  **basic func
56  **
57  ****************************************************/
58 static int setting_view_security_update_create(void *cb)
59 {
60         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
61         SETTING_TRACE_BEGIN;
62         SettingSecurityUG *ad = (SettingSecurityUG *) cb;
63
64         Evas_Object *scroller;
65         Elm_Object_Item *item = NULL;
66
67         /* add basic layout */
68         char setBtnStr[MAX_DISPLAY_NAME_LEN_ON_UI];
69         snprintf(setBtnStr, sizeof(setBtnStr), "%s",
70                  (char *)dgettext("sys_string", "IDS_COM_BODY_BACK"));
71
72         if (&setting_view_security_update == ad->view_to_load) {
73                 ad->ly_main =
74                     setting_create_layout_navi_bar_genlist(ad->win_main_layout,
75                                                            ad->win_get,
76                                                            "IDS_EMAIL_POP_SECURITY_UPDATE_ABB",
77                                                            setBtnStr,
78                                                            NULL,
79                                                            (setting_call_back_func)setting_security_update_click_softkey_back_cb,
80                                                            NULL, ad, &scroller,
81                                                            &(ad->navi_bar));
82         } else {
83
84                 setting_push_layout_navi_bar_genlist(ad->win_main_layout,
85                                                      ad->win_get,
86                                                      "IDS_EMAIL_POP_SECURITY_UPDATE_ABB",
87                                                      setBtnStr, NULL,
88                                                      (setting_call_back_func)setting_security_update_click_softkey_back_cb,
89                                                      NULL, ad, &scroller, ad->navi_bar);
90         }
91
92         ad->genlist = scroller;
93         evas_object_smart_callback_add(ad->genlist, "realized", __gl_realized_cb, ad);
94
95         /* separator */
96         item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
97         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
98
99
100         /* Update button */
101         ad->data_security_update_bt = setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
102                                                                        setting_security_update_mouse_up_Gendial_list_cb, ad,
103                                                                        SWALLOW_Type_INVALID,
104                                                                        NULL, NULL,
105                                                                        1, _(UPDATE_TEXT), NULL, NULL);
106         if (ad->data_security_update_bt) {
107                 __BACK_POINTER_SET(ad->data_security_update_bt);
108         }
109         /* Update button desc*/
110         /*D_GL_HELP(scroller,CHECK_UPDATES); */
111         /* separator */
112         item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
113         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
114         /*button with toggle*/
115         ad->data_security_update_chk =
116             setting_create_Gendial_field_def(scroller, &itc_1text_1icon,
117                                              setting_security_update_mouse_up_Gendial_list_cb,
118                                              ad, SWALLOW_Type_1ICON_1RADIO, NULL,
119                                              NULL, 1,
120                                              _(AUTO_UPDATE),
121                                              NULL,
122                                              setting_security_update_mouse_up_Gendial_chk_cb);
123         if (ad->data_security_update_chk) {
124                 __BACK_POINTER_SET(ad->data_security_update_chk);
125                 ad->data_security_update_chk->userdata = ad;
126         } else {
127                 SETTING_TRACE_ERROR("ad->data_security_update_chk is NULL");
128         }
129         ADD_GL_HELP(scroller, CHECK_UPDATE_AUTO_MSG);
130
131         /* separator */
132         item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
133         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
134
135         /*via wifi only*/
136         ad->data_security_wifi_update_chk =
137             setting_create_Gendial_field_def(scroller, &itc_1text_1icon,
138                                              setting_security_update_mouse_up_Gendial_list_cb,
139                                              ad, SWALLOW_Type_1ICON_1RADIO, NULL,
140                                              NULL, 1,
141                                              _(SECURITY_VIA_WIFI),
142                                              NULL,
143                                              setting_security_update_mouse_up_Gendial_chk_cb);
144         if (ad->data_security_wifi_update_chk) {
145                 __BACK_POINTER_SET(ad->data_security_wifi_update_chk);
146                 ad->data_security_wifi_update_chk->userdata = ad;
147         } else {
148                 SETTING_TRACE_ERROR("ad->data_security_update_chk is NULL");
149         }
150         ADD_GL_HELP(scroller, SECURITY_VIA_WIFI_HELP_MSG);
151
152         /*get auto update & via wifi value */
153         __get_toggle_status_form_msa(cb);
154
155         setting_view_security_update.is_create = 1;
156         return SETTING_RETURN_SUCCESS;
157 }
158
159 static int setting_view_security_update_destroy(void *cb)
160 {
161         SETTING_TRACE_BEGIN;
162         /* error check */
163         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
164
165         SettingSecurityUG *ad = (SettingSecurityUG *) cb;
166         if (&setting_view_security_update == ad->view_to_load) {
167                 if (ad->ly_main) {
168                         evas_object_del(ad->ly_main);
169                         ad->ly_main = NULL;
170                 }
171         } else {
172                 elm_naviframe_item_pop(ad->navi_bar);
173         }
174
175         /*evas_object_smart_callback_del(ad->genlist, "realized", __gl_realized_cb); */
176
177         setting_view_security_update.is_create = 0;
178
179         return SETTING_RETURN_SUCCESS;
180 }
181
182 static int setting_view_security_update_update(void *cb)
183 {
184         SETTING_TRACE_BEGIN;
185         /* error check */
186         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
187
188         return SETTING_RETURN_SUCCESS;
189 }
190
191 static int setting_view_security_update_cleanup(void *cb)
192 {
193         SETTING_TRACE_BEGIN;
194         /* error check */
195         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
196         SettingSecurityUG *ad = (SettingSecurityUG *) cb;
197         return setting_view_security_update_destroy(ad);
198         /*return SETTING_RETURN_SUCCESS; */
199 }
200
201 /* ***************************************************
202  **
203  **call back func
204  **
205  ****************************************************/
206 static Eina_Bool
207 setting_security_update_click_softkey_back_cb(void *data, Evas_Object *obj,
208                                               void *event_info)
209 {
210         SETTING_TRACE_BEGIN;
211         /* error check */
212         retvm_if(data == NULL, EINA_FALSE, "[Setting > Security update] Data parameter is NULL");
213         SettingSecurityUG *ad = (SettingSecurityUG *) data;
214         if (&setting_view_security_update == ad->view_to_load) {
215                 /* Send destroy request */
216                 ug_destroy_me(ad->ug);
217         } else
218                 setting_view_change(&setting_view_security_update, &setting_view_security_main, ad);
219         SETTING_TRACE_END;
220         return EINA_TRUE;
221 }
222
223 static Eina_Bool __delete_pop_progress_on_idler(void *data)
224 {
225         SETTING_TRACE_BEGIN;
226         retvm_if(data == NULL, ECORE_CALLBACK_CANCEL, "Data parameter is NULL");
227         SettingSecurityUG *ad = (SettingSecurityUG *)data;
228
229         if (ad->pop_progress) {
230                 evas_object_del(ad->pop_progress);
231                 ad->pop_progress = NULL;
232         }
233         return ECORE_CALLBACK_CANCEL;
234 }
235
236 static void security_update_manual_service_reply_cb(app_control_h request,
237                                                     app_control_h reply,
238                                                     app_control_result_e result,
239                                                     void *user_data)
240 {
241         SETTING_TRACE_BEGIN;
242         retm_if(request == NULL, "request is NULL");
243         retm_if(reply == NULL, "reply is NULL");
244
245         SETTING_TRACE_DEBUG("result:[%d]", result);
246
247         if (result == APP_CONTROL_RESULT_SUCCEEDED) {
248                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_SUCCEEDED");
249         } else if (result == APP_CONTROL_RESULT_FAILED) {
250                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_FAILED");
251         } else if (result == APP_CONTROL_RESULT_CANCELED) {
252                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_CANCELED");
253         }
254         ecore_timer_add(0.5, (Ecore_Task_Cb) __delete_pop_progress_on_idler, user_data);
255         return;
256 }
257
258 static void setting_security_update_gl_item_chk_status(Setting_GenGroupItem_Data *item_data, int status)
259 {
260         SETTING_TRACE_BEGIN;
261         if (item_data && item_data->chk_status != status) {
262                 item_data->chk_status = status;
263                 elm_genlist_item_update(item_data->item);
264         }
265         SETTING_TRACE_END;
266 }
267
268 static void security_update_get_status_service_reply_cb(app_control_h request,
269                                                         app_control_h reply,
270                                                         app_control_result_e result,
271                                                         void *user_data)
272 {
273         SETTING_TRACE_BEGIN;
274         retm_if(request == NULL, "request is NULL");
275         retm_if(reply == NULL, "reply is NULL");
276         SettingSecurityUG *ad = (SettingSecurityUG *)user_data;
277         char *resultMsa = NULL;
278
279         SETTING_TRACE_DEBUG("result:[%d]", result);
280
281         if (result == APP_CONTROL_RESULT_SUCCEEDED) {
282                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_SUCCEEDED");
283                 /*for auto update value */
284                 app_control_get_extra_data(reply, "AUTO", &resultMsa);
285                 SETTING_TRACE_DEBUG("resultCode:[%s]", resultMsa);
286                 if (!safeStrCmp(_("AUTO_ON"), resultMsa)) {
287                         SETTING_TRACE_DEBUG("auto update - on");
288                         setting_security_update_gl_item_chk_status(ad->data_security_update_chk, 1);
289                         if (ad->data_security_wifi_update_chk) {
290                                 elm_object_item_disabled_set(ad->data_security_wifi_update_chk->item, EINA_FALSE);
291                         }
292                 } else if (!safeStrCmp(_("AUTO_OFF"), resultMsa)) {
293                         SETTING_TRACE_DEBUG("auto update - off");
294                         setting_security_update_gl_item_chk_status(ad->data_security_update_chk, 0);
295                         if (ad->data_security_wifi_update_chk) {
296                                 elm_object_item_disabled_set(ad->data_security_wifi_update_chk->item, EINA_TRUE);
297                         }
298                 }
299                 FREE(resultMsa);
300                 /*for via wifi value */
301                 app_control_get_extra_data(reply, "WIFI", &resultMsa);
302                 SETTING_TRACE_DEBUG("resultCode:[%s]", resultMsa);
303                 if (!safeStrCmp(_("WIFI_ON"), resultMsa)) {
304                         SETTING_TRACE_DEBUG(" wifi only - on");
305                         setting_security_update_gl_item_chk_status(ad->data_security_wifi_update_chk, 1);
306                 } else if (!safeStrCmp(_("WIFI_OFF"), resultMsa)) {
307                         SETTING_TRACE_DEBUG("wifi only - off");
308                         setting_security_update_gl_item_chk_status(ad->data_security_wifi_update_chk, 0);
309                 }
310                 FREE(resultMsa);
311         } else if (result == APP_CONTROL_RESULT_FAILED) {
312                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_FAILED");
313         } else if (result == APP_CONTROL_RESULT_CANCELED) {
314                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_CANCELED");
315         }
316
317         return;
318 }
319
320 static void __get_toggle_status_form_msa(void *data)
321 {
322         SETTING_TRACE_BEGIN;
323         ret_if(NULL == data);
324
325         int ret = 0;
326         app_control_h service = NULL;
327
328         ret = app_control_create(&service);
329         if (ret != APP_CONTROL_ERROR_NONE) {
330                 SETTING_TRACE_DEBUG("service_create fail!! ret=%d", ret);
331                 return;
332         }
333
334         app_control_set_app_id(service, "org.tizen.msa");
335         app_control_set_operation(service, "http://org.tizen.msa/appcontrol/operation/query");
336
337         ret = app_control_add_extra_data(service, "KEY", "STATUS");
338         SETTING_TRACE_DEBUG("add extra data (KEY,STATUS) to service ret=%d", ret);
339
340         ret = app_control_send_launch_request(service, security_update_get_status_service_reply_cb, (void *)data);
341         SETTING_TRACE_DEBUG("send launch service (KEY,STATUS) request ret=%d", ret);
342         if (ret != APP_CONTROL_ERROR_NONE) {
343                 SETTING_TRACE_ERROR("Cannot launch app");
344         }
345         app_control_destroy(service);
346 }
347
348 static void security_update_on_service_reply_cb(app_control_h request,
349                                                 app_control_h reply,
350                                                 app_control_result_e result,
351                                                 void *user_data)
352 {
353         SETTING_TRACE_BEGIN;
354         retm_if(request == NULL, "request is NULL");
355         retm_if(reply == NULL, "reply is NULL");
356         retm_if(user_data == NULL, "user_data is NULL");
357         SettingSecurityUG *ad = (SettingSecurityUG *) user_data;
358
359         SETTING_TRACE_DEBUG("result:[%d]", result);
360
361         if (result == APP_CONTROL_RESULT_SUCCEEDED) {
362                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_SUCCEEDED");
363                 setting_update_gl_item_chk_status(ad->data_security_update_chk, 1);
364         } else if (result == APP_CONTROL_RESULT_FAILED) {
365                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_FAILED");
366                 setting_update_gl_item_chk_status(ad->data_security_update_chk, 0);
367         } else if (result == APP_CONTROL_RESULT_CANCELED) {
368                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_CANCELED");
369                 setting_update_gl_item_chk_status(ad->data_security_update_chk, 0);
370         }
371         return;
372 }
373
374 static void security_update_off_service_reply_cb(app_control_h request,
375                                                  app_control_h reply,
376                                                  app_control_result_e result,
377                                                  void *user_data)
378 {
379         SETTING_TRACE_BEGIN;
380         retm_if(request == NULL, "request is NULL");
381         retm_if(reply == NULL, "reply is NULL");
382         retm_if(user_data == NULL, "user_data is NULL");
383         SettingSecurityUG *ad = (SettingSecurityUG *) user_data;
384
385         SETTING_TRACE_DEBUG("result:[%d]", result);
386
387         if (result == APP_CONTROL_RESULT_SUCCEEDED) {
388                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_SUCCEEDED");
389                 setting_update_gl_item_chk_status(ad->data_security_update_chk, 0);
390                 if (ad->data_security_wifi_update_chk) {
391                         elm_object_item_disabled_set(ad->data_security_wifi_update_chk->item, EINA_TRUE);
392                         elm_object_disabled_set(ad->data_security_wifi_update_chk->eo_check, EINA_TRUE);
393                 }
394         } else if (result == APP_CONTROL_RESULT_FAILED) {
395                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_FAILED");
396                 setting_update_gl_item_chk_status(ad->data_security_update_chk, 1);
397         } else if (result == APP_CONTROL_RESULT_CANCELED) {
398                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_CANCELED");
399                 setting_update_gl_item_chk_status(ad->data_security_update_chk, 1);
400         }
401         return;
402 }
403
404 static void security_wifi_update_on_service_reply_cb(app_control_h request,
405                                                      app_control_h reply,
406                                                      app_control_result_e result,
407                                                      void *user_data)
408 {
409         SETTING_TRACE_BEGIN;
410         retm_if(request == NULL, "request is NULL");
411         retm_if(reply == NULL, "reply is NULL");
412         retm_if(user_data == NULL, "user_data is NULL");
413         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) user_data;
414
415         SETTING_TRACE_DEBUG("result:[%d]", result);
416
417         if (result == APP_CONTROL_RESULT_SUCCEEDED) {
418                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_SUCCEEDED");
419                 setting_update_gl_item_chk_status(list_item, 1);
420         } else if (result == APP_CONTROL_RESULT_FAILED) {
421                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_FAILED");
422                 setting_update_gl_item_chk_status(list_item, 0);
423         } else if (result == APP_CONTROL_RESULT_CANCELED) {
424                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_CANCELED");
425                 setting_update_gl_item_chk_status(list_item, 0);
426         }
427         return;
428 }
429
430 static void security_wifi_update_off_service_reply_cb(app_control_h request,
431                                                       app_control_h reply,
432                                                       app_control_result_e result,
433                                                       void *user_data)
434 {
435         SETTING_TRACE_BEGIN;
436         retm_if(request == NULL, "request is NULL");
437         retm_if(reply == NULL, "reply is NULL");
438         retm_if(user_data == NULL, "user_data is NULL");
439         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) user_data;
440
441         SETTING_TRACE_DEBUG("result:[%d]", result);
442
443         if (result == APP_CONTROL_RESULT_SUCCEEDED) {
444                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_SUCCEEDED");
445                 setting_update_gl_item_chk_status(list_item, 0);
446         } else if (result == APP_CONTROL_RESULT_FAILED) {
447                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_FAILED");
448                 setting_update_gl_item_chk_status(list_item, 1);
449         } else if (result == APP_CONTROL_RESULT_CANCELED) {
450                 SETTING_TRACE_DEBUG("APP_CONTROL_RESULT_CANCELED");
451                 setting_update_gl_item_chk_status(list_item, 1);
452         }
453         return;
454 }
455
456 static void __ask_create_auto_update_pop_on_cb(void *data, Evas_Object *obj,
457                                                void *event_info)
458 {
459         SETTING_TRACE_BEGIN;
460         SettingSecurityUG *ad = (SettingSecurityUG *) data;
461         ret_if(NULL == data);
462         int response_type = btn_type(obj);
463
464         if (POPUP_RESPONSE_OK == response_type) {
465                 SETTING_TRACE("OK");
466                 int ret = 0;
467                 app_control_h service = NULL;
468                 /*if(ad->data_security_update_chk->chk_status == 0) { */
469                 /*      SETTING_TRACE_DEBUG("set auto update state to 1"); */
470                 /*      setting_update_gl_item_chk_status(ad->data_security_update_chk, 1); */
471                 /*} */
472                 ret = app_control_create(&service);
473                 if (ret != APP_CONTROL_ERROR_NONE) {
474                         SETTING_TRACE_DEBUG("service_create fail!! ret=%d", ret);
475                         SETTING_TRACE_ERROR("Cannot launch app");
476                 } else {
477                         app_control_set_app_id(service, "org.tizen.msa");
478                         app_control_set_operation(service, "http://org.tizen.msa/appcontrol/operation/query");
479
480                         ret = app_control_add_extra_data(service, "KEY", "AUTO_ON");
481                         SETTING_TRACE_DEBUG("add extra data (KEY,AUTO_ON) to service ret=%d", ret);
482
483                         ret = app_control_send_launch_request(service, security_update_on_service_reply_cb, (void *)data);
484                         SETTING_TRACE_DEBUG("send launch service (KEY,AUTO_ON) request ret=%d", ret);
485                         if (ret != APP_CONTROL_ERROR_NONE) {
486                                 SETTING_TRACE_ERROR("Cannot launch app");
487                         }
488                         if (ad->data_security_wifi_update_chk) {
489                                 elm_object_item_disabled_set(ad->data_security_wifi_update_chk->item, EINA_FALSE);
490                                 elm_object_disabled_set(ad->data_security_wifi_update_chk->eo_check, EINA_FALSE);
491                         }
492                 }
493                 app_control_destroy(service);
494         } else if (POPUP_RESPONSE_CANCEL == response_type) {
495                 SETTING_TRACE("CANCEL");
496                 setting_update_gl_item_chk_status(ad->data_security_update_chk, 0);
497         }
498
499         evas_object_del(ad->pop_auto_update_on);
500         ad->pop_auto_update_on = NULL;
501 }
502
503 static void __ask_create_auto_update_pop_off_cb(void *data, Evas_Object *obj,
504                                                 void *event_info)
505 {
506         SETTING_TRACE_BEGIN;
507         SettingSecurityUG *ad = (SettingSecurityUG *) data;
508         ret_if(NULL == data);
509         int response_type = btn_type(obj);
510
511         if (POPUP_RESPONSE_OK == response_type) {
512                 SETTING_TRACE("OK");
513                 int ret = 0;
514                 app_control_h service = NULL;
515                 /*if(ad->data_security_update_chk->chk_status == 1) */
516                 /*      setting_update_gl_item_chk_status(ad->data_security_update_chk, 0); */
517                 ret = app_control_create(&service);
518                 if (ret != APP_CONTROL_ERROR_NONE) {
519                         SETTING_TRACE_DEBUG("service_create fail!! ret=%d", ret);
520                         SETTING_TRACE_ERROR("Cannot launch app");
521                 } else {
522                         app_control_set_app_id(service, "org.tizen.msa");
523                         app_control_set_operation(service, "http://org.tizen.msa/appcontrol/operation/query");
524
525                         ret = app_control_add_extra_data(service, "KEY", "AUTO_OFF");
526                         SETTING_TRACE_DEBUG("add extra data (KEY,AUTO_OFF) to service ret=%d", ret);
527
528                         ret = app_control_send_launch_request(service, security_update_off_service_reply_cb, (void *)data);
529                         SETTING_TRACE_DEBUG("send launch service (KEY,AUTO_OFF) request ret=%d", ret);
530                         if (ret != APP_CONTROL_ERROR_NONE) {
531                                 SETTING_TRACE_ERROR("Cannot launch app");
532                         }
533                         /*if (ad->data_security_wifi_update_chk) { */
534                         /*      elm_object_item_disabled_set(ad->data_security_wifi_update_chk->item, EINA_TRUE); */
535                         /*      elm_object_disabled_set(ad->data_security_wifi_update_chk->eo_check, EINA_TRUE); */
536                         /*} */
537                 }
538                 app_control_destroy(service);
539         } else if (POPUP_RESPONSE_CANCEL == response_type) {
540                 SETTING_TRACE("CANCEL");
541                 setting_update_gl_item_chk_status(ad->data_security_update_chk, 1);
542         }
543
544         evas_object_del(ad->pop_auto_update_off);
545         ad->pop_auto_update_off = NULL;
546 }
547
548 static void __ask_create_manual_update_pop_cb(void *data, Evas_Object *obj,
549                                               void *event_info)
550 {
551         SETTING_TRACE_BEGIN;
552         SettingSecurityUG *ad = (SettingSecurityUG *) data;
553         ret_if(NULL == data);
554         int response_type = btn_type(obj);
555         if (POPUP_RESPONSE_OK == response_type) {
556                 SETTING_TRACE("OK");
557
558                 /*request manual update */
559                 int ret = 0;
560                 app_control_h service = NULL;
561                 ret = app_control_create(&service);
562                 if (ret != APP_CONTROL_ERROR_NONE) {
563                         SETTING_TRACE_DEBUG("service_create fail!! ret=%d", ret);
564                         evas_object_del(ad->pop_manual_update);
565                         ad->pop_manual_update = NULL;
566                         SETTING_TRACE_ERROR("Cannot launch app");
567                         return;
568                 } else {
569                         app_control_set_app_id(service, "org.tizen.msa");
570                         app_control_set_operation(service, "http://org.tizen.msa/appcontrol/operation/query");
571                         ret = app_control_add_extra_data(service, "KEY", "MANUAL_UPDATE");
572                         SETTING_TRACE_DEBUG("add extra data to service ret=%d", ret);
573                         ret = app_control_send_launch_request(service, NULL, NULL);
574                         SETTING_TRACE_DEBUG("send launch service request ret=%d", ret);
575                         if (ret != APP_CONTROL_ERROR_NONE) {
576                                 evas_object_del(ad->pop_manual_update);
577                                 ad->pop_manual_update = NULL;
578                                 SETTING_TRACE_ERROR("Cannot launch app");
579                                 app_control_destroy(service);
580                                 service = NULL;
581                                 return;
582                         }
583                 }
584                 app_control_destroy(service);
585                 service = NULL;
586
587
588                 /*POP_UP */
589                 ad->pop_progress = elm_popup_add(ad->win_get);
590                 ea_object_event_callback_add(ad->pop_progress, EA_CALLBACK_BACK, ea_popup_back_cb_2, NULL);
591                 setting_add_hardkey_features(ad->pop_progress, ad);
592                 evas_object_size_hint_weight_set(ad->pop_progress, EVAS_HINT_EXPAND,
593                                                  EVAS_HINT_EXPAND);
594                 Evas_Object *box = NULL;
595                 Evas_Object *progressbar = NULL;
596                 Evas_Object *label = NULL;
597
598                 /*label */
599                 label = elm_label_add(ad->pop_progress);
600                 elm_object_text_set(label, _(CONNECT_TO_SERVER));
601                 evas_object_show(label);
602                 box = elm_box_add(ad->pop_progress);
603
604                 /*progressbar */
605                 progressbar = elm_progressbar_add(ad->pop_progress);
606                 elm_object_style_set(progressbar, PROGRESSBAR_STYLE);
607                 elm_progressbar_pulse(progressbar, EINA_TRUE);
608                 evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);
609                 evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND,
610                                                  EVAS_HINT_EXPAND);
611                 elm_progressbar_pulse(progressbar, EINA_TRUE);
612                 evas_object_show(progressbar);
613
614                 /*box */
615                 Evas_Object *blank = setting_create_blank_rect_customize(ad->pop_progress, 10, 30);
616                 elm_box_pack_end(box, blank);
617                 elm_box_pack_end(box, label);
618                 elm_box_pack_end(box, blank);
619                 elm_box_pack_end(box, progressbar);
620                 elm_box_pack_end(box, blank);
621                 /*elm_box_pack_end(box, btn); */
622                 evas_object_show(box);
623                 elm_object_content_set(ad->pop_progress, box);
624                 evas_object_show(ad->pop_progress);
625
626
627         } else if (POPUP_RESPONSE_CANCEL == response_type) {
628                 SETTING_TRACE("CANCEL");
629                 /* do nothing */
630         }
631
632         evas_object_del(ad->pop_manual_update);
633         ad->pop_manual_update = NULL;
634 }
635
636 static void
637 setting_security_update_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
638                                                  void *event_info)
639 {
640         SETTING_TRACE_BEGIN;
641         /* error check */
642         setting_retm_if(data == NULL, "Data parameter is NULL");
643
644         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
645         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
646         elm_genlist_item_selected_set(item, 0);
647         Setting_GenGroupItem_Data *list_item =
648             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
649
650         SettingSecurityUG *ad = (SettingSecurityUG *) data;
651
652         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
653
654         if (!safeStrCmp(_(AUTO_UPDATE), list_item->keyStr)) {
655                 SETTING_TRACE_DEBUG("There is auto update");
656                 if (ad->data_security_update_chk->chk_status == 1) {
657                         SETTING_TRACE_DEBUG("set auto update state to 0");
658                         /* TOGGLE OFF */
659                         SETTING_TRACE_DEBUG("There is auto update toggle on->off");
660                         ad->pop_auto_update_off = setting_create_popup_with_btn(ad,
661                                                                                 ad->win_get,
662                                                                                 NULL, _(SECURITY_UPDATE_TOGGLE_OFF),
663                                                                                 __ask_create_auto_update_pop_off_cb,
664                                                                                 0, 2, _("IDS_ST_BODY_TURN_OFF"), _("IDS_COM_SK_CANCEL"));
665                 } else {
666                         SETTING_TRACE_DEBUG("set auto update state to 1");
667                         /* TOGGLE ON */
668                         SETTING_TRACE_DEBUG("There is auto update toggle off->on");
669                         ad->pop_auto_update_on = setting_create_popup_with_btn(ad,
670                                                                                ad->win_get,
671                                                                                NULL, _(SECURITY_UPDATE_TOGGLE_ON),
672                                                                                __ask_create_auto_update_pop_on_cb,
673                                                                                0, 2, _("IDS_ST_BUTTON_OK"), _("IDS_COM_SK_CANCEL"));
674                 }
675         } else if (!safeStrCmp(_(UPDATE_TEXT), list_item->keyStr)) {
676                 SETTING_TRACE_DEBUG("There is manual update");
677                 ad->pop_manual_update = setting_create_popup_with_btn(ad,
678                                                                       ad->win_get,
679                                                                       NULL, _(SECURITY_MANUAL_UPDATE_TEXT),
680                                                                       __ask_create_manual_update_pop_cb,
681                                                                       0, 2, _("IDS_ST_BUTTON_OK"), _("IDS_COM_SK_CANCEL"));
682         } else if (!safeStrCmp(_(SECURITY_VIA_WIFI), list_item->keyStr)) {
683                 int ret = 0;
684                 app_control_h service = NULL;
685                 int chk_status = !list_item->chk_status;
686                 setting_update_gl_item_chk_status(list_item, chk_status);
687                 ret = app_control_create(&service);
688                 if (ret != APP_CONTROL_ERROR_NONE) {
689                         SETTING_TRACE_DEBUG("service_create fail!! ret=%d", ret);
690                 } else {
691                         app_control_set_app_id(service, "org.tizen.msa");
692                         app_control_set_operation(service, "http://org.tizen.msa/appcontrol/operation/query");
693                         char *type = NULL;
694                         if (chk_status) {
695                                 type = "WIFI_ON";
696                         } else {
697                                 type = "WIFI_OFF";
698                         }
699                         ret = app_control_add_extra_data(service, "KEY", type);
700
701                         if (chk_status == 1)
702                                 ret = app_control_send_launch_request(service, security_wifi_update_on_service_reply_cb, list_item);
703                         else
704                                 ret = app_control_send_launch_request(service, security_wifi_update_off_service_reply_cb, list_item);
705                         SETTING_TRACE_DEBUG("send launch service (MSA_QUERY, %s) request ret=%d", type, ret);
706                         if (ret != APP_CONTROL_ERROR_NONE) {
707                                 SETTING_TRACE_ERROR("Cannot launch app");
708                         }
709                 }
710                 app_control_destroy(service);
711         }
712 }
713
714 static void __setting_security_update_toggle_automatic_chk(void *data, int chk_status, char *keyStr)
715 {
716         SETTING_TRACE_BEGIN;
717         SettingSecurityUG *ad = (SettingSecurityUG *) data;
718
719         if (chk_status) {
720                 /* TOGGLE ON */
721                 SETTING_TRACE_DEBUG("There is auto update toggle off->on");
722                 ad->pop_auto_update_on = setting_create_popup_with_btn(ad,
723                                                                        ad->win_get,
724                                                                        NULL, _(SECURITY_UPDATE_TOGGLE_ON),
725                                                                        __ask_create_auto_update_pop_on_cb,
726                                                                        0, 2, _("IDS_ST_BUTTON_OK"), _("IDS_COM_SK_CANCEL"));
727         } else {
728                 /* TOGGLE OFF */
729                 SETTING_TRACE_DEBUG("There is auto update toggle on->off");
730                 ad->pop_auto_update_off = setting_create_popup_with_btn(ad,
731                                                                         ad->win_get,
732                                                                         NULL, _(SECURITY_UPDATE_TOGGLE_OFF),
733                                                                         __ask_create_auto_update_pop_off_cb,
734                                                                         0, 2, _("IDS_ST_BODY_TURN_OFF"), _("IDS_COM_SK_CANCEL"));
735         }
736         return;
737 }
738
739 static void setting_security_update_mouse_up_Gendial_chk_cb(void *data, Evas_Object *obj, void *event_info)
740 {
741         SETTING_TRACE_BEGIN;
742         /* error check */
743         retm_if(data == NULL, "Data parameter is NULL");
744         Setting_GenGroupItem_Data *list_item =
745             (Setting_GenGroupItem_Data *) data;
746         SettingSecurityUG *ad = list_item->userdata;
747         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
748         SETTING_TRACE_DEBUG("auto update toggle cb");
749
750         /* enable /disable toggle button */
751         if (!safeStrCmp(_(AUTO_UPDATE), list_item->keyStr)) {
752                 __setting_security_update_toggle_automatic_chk(ad, list_item->chk_status, list_item->keyStr);
753                 list_item->chk_status = !list_item->chk_status;
754                 elm_check_state_set(obj, list_item->chk_status);
755         } else if (!safeStrCmp(_(SECURITY_VIA_WIFI), list_item->keyStr)) {
756                 int ret = 0;
757                 app_control_h service = NULL;
758                 int chk_status = list_item->chk_status;
759                 /*setting_update_gl_item_chk_status(ad->data_security_wifi_update_chk, chk_status); */
760                 ret = app_control_create(&service);
761                 if (ret != APP_CONTROL_ERROR_NONE) {
762                         SETTING_TRACE_DEBUG("service_create fail!! ret=%d", ret);
763                         SETTING_TRACE_ERROR("Cannot launch app");
764                 } else {
765                         app_control_set_app_id(service, "org.tizen.msa");
766                         app_control_set_operation(service, "http://org.tizen.msa/appcontrol/operation/query");
767                         char *type = NULL;
768                         if (chk_status) {
769                                 type = "WIFI_ON";
770                         } else {
771                                 type = "WIFI_OFF";
772                         }
773                         ret = app_control_add_extra_data(service, "KEY", type);
774
775                         if (chk_status == 1)
776                                 ret = app_control_send_launch_request(service, security_wifi_update_on_service_reply_cb, list_item);
777                         else
778                                 ret = app_control_send_launch_request(service, security_wifi_update_off_service_reply_cb, list_item);
779                         SETTING_TRACE_DEBUG("send launch service (KEY, %s) request ret=%d", type, ret);
780                         if (ret != APP_CONTROL_ERROR_NONE) {
781                                 SETTING_TRACE_ERROR("Cannot launch app");
782                         }
783                 }
784                 list_item->chk_status = !list_item->chk_status;
785                 elm_check_state_set(obj, list_item->chk_status);
786                 app_control_destroy(service);
787         }
788         return;
789 }