merge with master
[apps/core/preloaded/my-account.git] / src / myaccount_ug_common.c
1 /*\r
2  *  my-account\r
3  *\r
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
5  *\r
6  * Contact: Wonyoung Lee <wy1115.lee@samsung.com>, Tarun Kumar <tarun.kr@samsung.com>\r
7  *\r
8  * Licensed under the Apache License, Version 2.0 (the "License");\r
9  * you may not use this file except in compliance with the License.\r
10  * You may obtain a copy of the License at\r
11  *\r
12  * http://www.apache.org/licenses/LICENSE-2.0\r
13  *\r
14  * Unless required by applicable law or agreed to in writing, software\r
15  * distributed under the License is distributed on an "AS IS" BASIS,\r
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
17  * See the License for the specific language governing permissions and\r
18  * limitations under the License.\r
19  *\r
20  */\r
21 \r
22 #include "myaccount_ug.h"\r
23 #include "myaccount_ug_common.h"\r
24 #include "myaccount_ug_addaccount.h"\r
25 #include "myaccount_ug_account_list.h"\r
26 \r
27 static myaccount_appdata *g_myaccount_appdata = NULL;\r
28 \r
29 void *myaccount_init_appdata()\r
30 {\r
31         if (g_myaccount_appdata == NULL) {\r
32                 g_myaccount_appdata = calloc(1, sizeof(myaccount_appdata));\r
33                 g_myaccount_appdata->item_selected_state = false;\r
34         }\r
35         return g_myaccount_appdata;\r
36 }\r
37 \r
38 void myaccount_destroy_appdata()\r
39 {\r
40         MYACCOUNT_INFO("myaccount_destroy_appdata START \n");\r
41 \r
42         if (g_myaccount_appdata == NULL) {\r
43                 MYACCOUNT_WARNING("myaccount_destroy_appdata: appdata NULL \n");\r
44                 return;\r
45         }\r
46 \r
47 \r
48 /* fix by sungchan,kim.\r
49  sudden crash on account list view destroyed.\r
50  tempolarily blocked below codes. */\r
51         if (g_myaccount_appdata->base) {\r
52          evas_object_del(g_myaccount_appdata->base);\r
53          g_myaccount_appdata->base = NULL;\r
54         }\r
55         MA_MEMFREE(g_myaccount_appdata->capability_filter)\r
56 \r
57         /* For accounts list */\r
58         if (g_myaccount_appdata->ug_called) {\r
59                 ug_destroy(g_myaccount_appdata->ug_called);\r
60                 g_myaccount_appdata->ug_called = NULL;\r
61         }\r
62         if (g_myaccount_appdata->layout_main) {\r
63                 evas_object_del(g_myaccount_appdata->layout_main);\r
64                 g_myaccount_appdata->layout_main = NULL;\r
65         }\r
66         if (g_myaccount_appdata->layout_addaccount) {\r
67                 evas_object_del(g_myaccount_appdata->layout_addaccount);\r
68                 g_myaccount_appdata->layout_addaccount = NULL;\r
69         }\r
70         if (g_myaccount_appdata->navi_bar) {\r
71                 evas_object_del(g_myaccount_appdata->navi_bar);\r
72                 g_myaccount_appdata->navi_bar = NULL;\r
73         }\r
74         if (g_myaccount_appdata->account_genlist) {\r
75                 evas_object_del(g_myaccount_appdata->account_genlist);\r
76                 g_myaccount_appdata->account_genlist = NULL;\r
77         }\r
78         if (g_myaccount_appdata->help_label) {\r
79                 evas_object_del(g_myaccount_appdata->help_label);\r
80                 g_myaccount_appdata->help_label = NULL;\r
81         }\r
82         if (g_myaccount_appdata->refresh_btn) {\r
83                 evas_object_del(g_myaccount_appdata->refresh_btn);\r
84                 g_myaccount_appdata->refresh_btn = NULL;\r
85         }\r
86         if (g_myaccount_appdata->refresh_icon) {\r
87                 evas_object_del(g_myaccount_appdata->refresh_icon);\r
88                 g_myaccount_appdata->refresh_icon = NULL;\r
89         }\r
90         if (g_myaccount_appdata->cancel_sync_icon) {\r
91                 evas_object_del(g_myaccount_appdata->cancel_sync_icon);\r
92                 g_myaccount_appdata->cancel_sync_icon = NULL;\r
93         }\r
94         if (g_myaccount_appdata->auto_sync_check) {\r
95                 evas_object_del(g_myaccount_appdata->auto_sync_check);\r
96                 g_myaccount_appdata->auto_sync_check = NULL;\r
97         }\r
98         if (g_myaccount_appdata->bg) {\r
99                 evas_object_del(g_myaccount_appdata->bg);\r
100                 g_myaccount_appdata->bg = NULL;\r
101         }\r
102         if (g_myaccount_appdata->ly) {\r
103                 elm_object_part_content_unset(g_myaccount_appdata->ly, "elm.swallow.content");\r
104                 evas_object_del(g_myaccount_appdata->ly);\r
105                 g_myaccount_appdata->ly = NULL;\r
106         }\r
107         if (g_myaccount_appdata->modal_popup) {\r
108                 evas_object_del(g_myaccount_appdata->modal_popup);\r
109                 g_myaccount_appdata->modal_popup = NULL;\r
110         }\r
111         if (g_myaccount_appdata->r_title_sk) {\r
112                 evas_object_del(g_myaccount_appdata->r_title_sk);\r
113                 g_myaccount_appdata->r_title_sk = NULL;\r
114         }\r
115         if (g_myaccount_appdata->l_title_sk) {\r
116                 evas_object_del(g_myaccount_appdata->l_title_sk);\r
117                 g_myaccount_appdata->l_title_sk = NULL;\r
118         }\r
119         if (g_myaccount_appdata->progress_timer) {\r
120                 ecore_timer_del(g_myaccount_appdata->progress_timer);\r
121                 g_myaccount_appdata->progress_timer = NULL;\r
122         }\r
123         if (g_myaccount_appdata->add_genlist) {\r
124                 evas_object_del(g_myaccount_appdata->add_genlist);\r
125                 g_myaccount_appdata->add_genlist = NULL;\r
126         }\r
127         if (g_myaccount_appdata->pc) {\r
128                 pkgmgr_client_free(g_myaccount_appdata->pc);\r
129                 g_myaccount_appdata->pc = NULL;\r
130         }\r
131 \r
132         if(g_myaccount_appdata->sp_info_list) {\r
133                 g_list_free(g_myaccount_appdata->sp_info_list);\r
134                 g_myaccount_appdata->sp_info_list = NULL;\r
135         }\r
136 \r
137         g_myaccount_appdata->sorted_sp_list= NULL;\r
138 \r
139         MA_MEMFREE(g_myaccount_appdata->caller_userdata);\r
140         MA_MEMFREE(g_myaccount_appdata);\r
141 \r
142         MYACCOUNT_VERBOSE("myaccount_destroy_appdata END \n");\r
143 }\r
144 \r
145 void * myaccount_get_appdata()\r
146 {\r
147         return g_myaccount_appdata;\r
148 }\r
149 \r
150 void myaccount_common_get_icon_by_name(char *domain_name,\r
151                                                                                         char *icon_path)\r
152 {\r
153         if (!domain_name) {\r
154                 MYACCOUNT_ERROR("\n !!! domain_name is NULL \n");\r
155                 return;\r
156         }\r
157         char tmp_domain_name[64] = {0,};\r
158         myaccount_common_lowercase(domain_name, tmp_domain_name);\r
159         MYACCOUNT_VERBOSE("\n !!! myaccount_common_get_icon_by_name = %s \n",\r
160                                                                 domain_name);\r
161 \r
162         if (!icon_path) {\r
163                 MYACCOUNT_ERROR("\n !!! icon_path is NULL \n");\r
164                 return;\r
165         }\r
166         if (!strcmp(tmp_domain_name, "google") || !strcmp(tmp_domain_name, "gmail")) {\r
167                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
168                                         "66_myaccount_icon_google_50x50.png");\r
169         } else if (!strcmp(tmp_domain_name, "yahoo")\r
170                 || !strcmp(tmp_domain_name, "ymail")) {\r
171                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
172                                         "66_myaccount_icon_yahoo_50x50.png");\r
173         } else if (!strcmp(tmp_domain_name, "hotmail")) {\r
174                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
175                                         "66_myaccount_icon_msn_50x50.png");\r
176         } else if (!strcmp(tmp_domain_name, "msn")) {\r
177                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
178                                         "66_myaccount_icon_windows_live_50x50.png");\r
179         } else if (!strcmp(tmp_domain_name, "exchange")) {\r
180                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
181                                         "exchange.png");\r
182         } else if (!strcmp(tmp_domain_name, "icq")) {\r
183                 MA_SNPRINTF(icon_path, BUFSIZE, "%s", "icq.png");\r
184         } else if (!strcmp(tmp_domain_name, "facebook")) {\r
185                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
186                                         "66_myaccount_icon_facebook_50x50.png");\r
187         } else if (!strcmp(tmp_domain_name, "twitter")) {\r
188                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
189                                         "66_myaccount_icon_twitter_50x50.png");\r
190         } else if (!strcmp(tmp_domain_name, "myspace")) {\r
191                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
192                                         "myspace.png");\r
193         } else if(!strcmp(tmp_domain_name, "picasa")) {\r
194                 MA_SNPRINTF(icon_path, BUFSIZE, "%s", "picasa.png");\r
195         } else if(!strcmp(tmp_domain_name, "flickr")) {\r
196                 MA_SNPRINTF(icon_path, BUFSIZE, "%s", "flickr.png");\r
197         } else if (!strcmp(tmp_domain_name, "samsung")) {\r
198                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
199                                         "01_samsungaccount.png");\r
200         } else if (!strcmp(tmp_domain_name, "youtube")) {\r
201                 MA_SNPRINTF(icon_path, BUFSIZE, "%s", "youtube.png");\r
202         }else {\r
203                 MYACCOUNT_VERBOSE("Default icon\n");\r
204                 MA_SNPRINTF(icon_path, BUFSIZE, "%s", "99_email.png");\r
205         }\r
206 }\r
207 \r
208 void myaccount_common_lowercase(char *src, char *dest)\r
209 {\r
210         int i;\r
211         int src_len=0;\r
212 \r
213         if (!src || !dest) {\r
214                 MYACCOUNT_ERROR("myaccount_common_lowercase src=%p, dest=%p\n",\r
215                                                 src, dest);\r
216                 return;\r
217         }\r
218         src_len = strlen(src);\r
219         for(i=0;i<src_len;i++) {\r
220                 dest[i] = tolower(src[i]);\r
221         }\r
222         dest[i] = '\0';\r
223 }\r
224 \r
225 void myaccount_common_handle_notification()\r
226 {\r
227         myaccount_appdata *appdata = (myaccount_appdata*)myaccount_get_appdata();\r
228 \r
229         if (!appdata) {\r
230                 MYACCOUNT_FATAL("App data NULL!!! \n");\r
231                 return;\r
232         }\r
233 \r
234         int error_code = -1;\r
235         int count = -1;\r
236         char *noti_name = NULL;\r
237 \r
238         appdata->item_selected_state = false;\r
239 \r
240         noti_name = vconf_get_str(VCONFKEY_ACCOUNT_MSG_STR);\r
241         if (!noti_name) {\r
242                 MYACCOUNT_FATAL("myaccount_common_handle_notification: vconf_get_str() Failed!\n");\r
243                 return;\r
244         } else {\r
245                 MYACCOUNT_VERBOSE("myaccount_common_handle_notification: noti_name = %s\n",\r
246                                                         noti_name);\r
247         }\r
248         error_code = myaccount_common_get_all_account_cnt(&count);\r
249         if (error_code != ACCOUNT_ERROR_NONE) {\r
250                 MYACCOUNT_ERROR("myaccount_common_handle_notification: myaccount_common_get_all_account_cnt fail(%d) \n",\r
251                                                         error_code);\r
252         }\r
253 \r
254         MYACCOUNT_VERBOSE("myaccount_common_handle_notification account count =%d\n",\r
255                                                         count);\r
256 \r
257         if (appdata->eMode == eMYACCOUNT_ACCOUNT_LIST) {\r
258                 if (count > 0) {\r
259                         if (appdata->add_genlist && strcmp(noti_name, ACCOUNT_NOTI_NAME_SYNC_UPDATE)) {\r
260                                 evas_object_del(appdata->add_genlist);\r
261                                 appdata->add_genlist = NULL;\r
262                                 elm_naviframe_item_pop(appdata->navi_bar);\r
263                         }\r
264                         if (appdata->account_genlist) {\r
265 #ifdef ACCOUNT_SYNC_ALL\r
266                                 myaccount_check_syncall_finish(appdata);\r
267 #endif\r
268                                 myaccount_list_refresh_item_list(appdata);\r
269                         } else {\r
270                                 myaccount_ug_account_list_create((void*)appdata);\r
271                         }\r
272                 } else {\r
273                         if (appdata->add_genlist) {\r
274                                 evas_object_show(appdata->add_genlist);\r
275                         } else {\r
276                                 myaccount_addaccount_create_view(appdata);\r
277                         }\r
278                 }\r
279         } else if (appdata->eMode == eMYACCOUNT_ADD_ACCOUNT) {\r
280                 if (appdata->ug) {\r
281                         service_h service = NULL;\r
282                         int ret = -1;\r
283 \r
284                         ret = service_create(&service);\r
285                         MYACCOUNT_VERBOSE("service_create ret (%x)\n", ret);\r
286                         ret = service_add_extra_data(service, "account_noti", noti_name);\r
287                         MYACCOUNT_VERBOSE("service_add_extra_data ret (%x)\n", ret);\r
288                         error_code = ug_send_result(appdata->ug, service);\r
289                         MYACCOUNT_VERBOSE("ug_send_result ret (%x)\n", error_code);\r
290                         error_code = ug_destroy_me(appdata->ug);\r
291                         MYACCOUNT_VERBOSE("myaccount_common_handle_notification callback : return = %d!!!\n",\r
292                                                                 error_code);\r
293                 }\r
294         } else {\r
295                 MYACCOUNT_WARNING("Unknown mode !!!");\r
296         }\r
297 }\r
298 \r
299 bool myaccount_samsung_callback(char* result_code, char* user_id, void *user_data)\r
300 {\r
301         MYACCOUNT_VERBOSE("Result Code = %s\n", result_code);\r
302         MYACCOUNT_VERBOSE("User Id = %s\n", user_id);\r
303 \r
304         if(user_data) {\r
305                 int* test = (int*)user_data;\r
306 \r
307                 MYACCOUNT_VERBOSE("TEST user data int = %d\n", *test);\r
308                 MA_MEMFREE(test);\r
309         }\r
310 \r
311         return TRUE;\r
312 }\r
313 \r
314 static void _myaccount_common_popup_cb(void *data, Evas_Object *obj, void *event_info)\r
315 {\r
316         MYACCOUNT_VERBOSE("delete popup\n");\r
317 \r
318         if(obj)\r
319                 evas_object_del(obj);\r
320 }\r
321 \r
322 Evas_Object* _myaccount_common_add_popup(Evas_Object* parent, const char* text, const char* title)\r
323 {\r
324         Evas_Object *popup = elm_popup_add(parent);\r
325 \r
326         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
327 \r
328         elm_object_text_set(popup, text);\r
329         elm_object_part_text_set(popup, "title,text", title);\r
330         evas_object_smart_callback_add(popup, "block,clicked", _myaccount_common_popup_cb, NULL);\r
331         elm_popup_timeout_set(popup, 3);\r
332         evas_object_smart_callback_add(popup, "timeout", _myaccount_common_popup_cb, NULL);\r
333         evas_object_show(popup);\r
334         return popup;\r
335 }\r
336 \r
337 int  myaccount_common_launch_application(MyAccountRequestViewType\r
338                                                                                                                 request_type,\r
339                                                                                                                 char *package_name,\r
340                                                                                                                 char *username,\r
341                                                                                                                 char *email_sp,\r
342                                                                                                                 int account_id,\r
343                                                                                                                 void *data )\r
344 {\r
345         int ret = SERVICE_ERROR_NONE;\r
346         service_h service;\r
347         myaccount_appdata *ad = (myaccount_appdata *) data;\r
348         char win_id_buf[64]={0,};\r
349         char id_buf[64] = {0,};\r
350 \r
351         if (!ad || !package_name) {\r
352                 MYACCOUNT_ERROR("myaccount_common_launch_application: App data=%p, package_name=%p\n",\r
353                                                         ad, package_name);\r
354                 return 0;\r
355         }\r
356 \r
357         MYACCOUNT_DBUG("trying to launch (%s)\n", package_name);\r
358 \r
359         ad->win_id = elm_win_xwindow_get(ad->win_main);\r
360         MA_SNPRINTF(win_id_buf, sizeof(win_id_buf)-1, "%d", ad->win_id);\r
361 \r
362         ret = service_create(&service);\r
363         ret = service_set_app_id(service, package_name);\r
364         ret = service_set_window(service, ad->win_id);\r
365         if(ad->caller_userdata) {\r
366                 MYACCOUNT_DBUG("myaccount_common_launch_application: caller userdata exist!\n");\r
367                 ret = service_add_extra_data(service, "myaccount_userdata", ad->caller_userdata);\r
368         }\r
369 \r
370         switch (request_type) {\r
371                 case MYACCOUNT_REQUEST_SIGNIN :\r
372                         service_set_operation(service, ACCOUNT_OPERATION_SIGNIN);\r
373                         if(email_sp && strlen(email_sp) > 0) {\r
374                                 MYACCOUNT_DBUG("Tizen email_sp (%s)\n", email_sp);\r
375                                 service_add_extra_data(service, ACCOUNT_DATA_SERVICE_PROVIDER, email_sp);\r
376                         }\r
377                         break;\r
378                 case MYACCOUNT_REQUEST_VIEW :\r
379                         if(!username) {\r
380                                 MYACCOUNT_ERROR("myaccount_common_launch_application: username=%p !!!\n",\r
381                                                                 username);\r
382                                 MA_MEMFREE(package_name);\r
383                                 service_destroy(service);\r
384                                 return 0;\r
385                         }\r
386 \r
387                         MA_SNPRINTF(id_buf, sizeof(id_buf), "%d", account_id);\r
388                         ret = service_add_extra_data(service, ACCOUNT_DATA_ID, id_buf);\r
389                         ret = service_set_operation(service, ACCOUNT_OPERATION_VIEW);\r
390                         MYACCOUNT_DBUG("###### USERNAME = %s\n", username);\r
391                         ret = service_add_extra_data(service, ACCOUNT_DATA_USERNAME,username);\r
392                         break;\r
393                 default :\r
394                         MYACCOUNT_DBUG("myaccount_common_launch_application: Invalid request type=%d\n",\r
395                                                                 request_type);\r
396                         MA_MEMFREE(username);\r
397                         MA_MEMFREE(package_name);\r
398                         service_destroy(service);\r
399                         return 0;\r
400         }\r
401         MYACCOUNT_VERBOSE("myaccount_common_launch_application request type=%d, package name = %s\n",\r
402                                                         request_type, package_name);\r
403 \r
404         ret = service_add_extra_data(service, "XWINDOW_ID", win_id_buf);\r
405         ret = service_send_launch_request(service, NULL, NULL);\r
406 \r
407         MA_MEMFREE(username);\r
408         MA_MEMFREE(package_name);\r
409         service_destroy(service);\r
410 \r
411         if(ret != SERVICE_ERROR_NONE) {\r
412                 MYACCOUNT_ERROR("(%s) launch fail. ret(%x)\n", package_name, ret);\r
413                 char buf[64]={0,};\r
414                 MA_SNPRINTF(buf, sizeof(buf), "Launch fail (%x)", ret);\r
415                 _myaccount_common_add_popup(ad->win_main, buf, "Error");\r
416                 ad->item_selected_state = FALSE;\r
417         }\r
418 \r
419         return ret;\r
420 }\r
421 \r
422 \r
423 Evas_Object *myaccount_common_progress_add(Evas_Object *parent)\r
424 {\r
425         if (!parent) {\r
426                 MYACCOUNT_ERROR("myaccount_common_progress_add: parent is NULL \n");\r
427                 return NULL;\r
428         }\r
429         Evas_Object *progressbar = NULL;\r
430         progressbar = elm_progressbar_add(parent);\r
431         elm_object_style_set(progressbar, "list_process");\r
432         evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);\r
433         evas_object_size_hint_weight_set(progressbar,\r
434                                                 EVAS_HINT_EXPAND,\r
435                                                 EVAS_HINT_EXPAND);\r
436         evas_object_show(progressbar);\r
437         elm_progressbar_pulse(progressbar, EINA_TRUE);\r
438         return progressbar;\r
439 }\r
440 \r
441 Evas_Object *myaccount_common_create_modal_popup(Evas_Object *parent)\r
442 {\r
443         if (!parent) {\r
444                 MYACCOUNT_ERROR("myaccount_common_create_modal_popup: parent is NULL \n");\r
445                 return NULL;\r
446         }\r
447         Evas_Object *popup = NULL;\r
448         Evas_Object *progressbar = NULL;\r
449         popup = elm_popup_add(parent);\r
450         progressbar = myaccount_common_progress_add(popup);\r
451         elm_object_content_set(popup, progressbar);\r
452         evas_object_show(popup);\r
453         return popup;\r
454 }\r
455 \r
456 void myaccount_common_delete_modal_popup(Evas_Object *popup)\r
457 {\r
458         if (!popup){\r
459                 MYACCOUNT_ERROR("myaccount_common_delete_modal_popup: popup is NULL \n");\r
460                 return;\r
461         }\r
462         evas_object_del(popup);\r
463 }\r
464 \r
465 Eina_Bool myaccount_common_modal_popup_timer_cb(gpointer data)\r
466 {\r
467         if (!data) {\r
468                 MYACCOUNT_ERROR("myaccount_common_modal_popup_timer_cb: data is NULL \n");\r
469                 return false;\r
470         }\r
471         myaccount_appdata *global_data = NULL;\r
472         global_data = (myaccount_appdata*)data;\r
473         if (global_data->modal_popup) {\r
474                 myaccount_common_delete_modal_popup(global_data->modal_popup);\r
475                 global_data->modal_popup = NULL;\r
476         }\r
477         if (global_data->progress_timer) {\r
478                 ecore_timer_del(global_data->progress_timer);\r
479                 global_data->progress_timer = NULL;\r
480         }\r
481         return false;\r
482 }\r
483 \r
484 int myaccount_common_get_all_account_cnt(int *count)\r
485 {\r
486         int error_code = -1;\r
487         int account_cnt = 0;\r
488         if (!count) {\r
489                 MYACCOUNT_ERROR("myaccount_common_get_all_account_cnt: count ptr is NULL \n");\r
490                 return error_code;\r
491         }\r
492         error_code = account_connect();\r
493         if (error_code != ACCOUNT_ERROR_NONE) {\r
494                 MYACCOUNT_ERROR("myaccount_common_get_all_account_cnt: fail to connect account DB \n");\r
495                 return error_code;\r
496         }\r
497         error_code = account_get_total_count_from_db(&account_cnt);\r
498         if (error_code != ACCOUNT_ERROR_NONE) {\r
499                 int ret = ACCOUNT_ERROR_NONE;\r
500                 MYACCOUNT_VERBOSE("myaccount_common_get_all_account_cnt: account_svc_get_count fail(%d) \n",\r
501                                                         error_code);\r
502                 ret = account_disconnect();\r
503                 if (ret != ACCOUNT_ERROR_NONE) {\r
504                         MYACCOUNT_ERROR("myaccount_common_get_all_account_cnt: account_svc_disconnect fail(%d) \n",\r
505                                                                 ret);\r
506                 }\r
507                 return error_code;\r
508         }\r
509         *count = account_cnt;\r
510         error_code = account_disconnect();\r
511         if (error_code != ACCOUNT_ERROR_NONE) {\r
512                 MYACCOUNT_ERROR("myaccount_common_get_all_account_cnt: account_svc_get_count fail(%d) \n",\r
513                                                 error_code);\r
514                 return error_code;\r
515         }\r
516         return ACCOUNT_ERROR_NONE;\r
517 }\r
518 \r
519 static int _myaccount_common_pkmgr_return_cb(int req_id, const char *pkg_type,\r
520                                         const char *pkg_name,\r
521                                         const char *key,\r
522                                         const char *val,\r
523                                         const void *pmsg,\r
524                                         void *data)\r
525 {\r
526         MYACCOUNT_VERBOSE(" _myaccount_common_pkmgr_return_cb: pkg_type = %s, pkg_name = %s, key = %s, val = %s\n", pkg_type, pkg_name,key,val);\r
527 \r
528         int error_code = -1;\r
529         int count = -1;\r
530         if( strcmp(key, "end") == 0 && strcmp(val, "ok") == 0) {\r
531                 myaccount_appdata *appdata = (myaccount_appdata*)myaccount_get_appdata();\r
532 \r
533                 if (!appdata) {\r
534                         MYACCOUNT_FATAL("App data NULL!!! \n");\r
535                         return -1;\r
536                 }\r
537                 error_code = myaccount_common_get_all_account_cnt(&count);\r
538                 if (error_code != ACCOUNT_ERROR_NONE) {\r
539                         MYACCOUNT_ERROR("_myaccount_common_pkmgr_return_cb: myaccount_common_get_all_account_cnt fail(%d) \n",\r
540                                                                 error_code);\r
541                 }\r
542 \r
543                 MYACCOUNT_VERBOSE("_myaccount_common_pkmgr_return_cb account count =%d\n",\r
544                                                                 count);\r
545                 if (appdata->eMode == eMYACCOUNT_ACCOUNT_LIST) {\r
546                         if (count > 0) {\r
547                                 if (appdata->add_genlist) {\r
548                                         evas_object_del(appdata->add_genlist);\r
549                                         appdata->add_genlist = NULL;\r
550                                         elm_naviframe_item_pop(appdata->navi_bar);\r
551                                 }\r
552                                 if (appdata->account_genlist) {\r
553 #ifdef ACCOUNT_SYNC_ALL\r
554                                         myaccount_check_syncall_finish(appdata);\r
555 #endif\r
556                                         myaccount_list_refresh_item_list(appdata);\r
557                                 } else {\r
558                                         myaccount_ug_account_list_create((void*)appdata);\r
559                                 }\r
560                         } else {\r
561                                 if (appdata->add_genlist) {\r
562                                         evas_object_show(appdata->add_genlist);\r
563                                 } else {\r
564                                         myaccount_addaccount_create_view(appdata);\r
565                                 }\r
566                         }\r
567                 } else if (appdata->eMode == eMYACCOUNT_ADD_ACCOUNT) {\r
568                         if (appdata->ug) {\r
569                                 error_code = ug_destroy_me(appdata->ug);\r
570                                 MYACCOUNT_VERBOSE("myaccount_common_handle_notification callback : return = %d!!!\n",\r
571                                                                         error_code);\r
572                         }\r
573                 } else {\r
574                         MYACCOUNT_WARNING("Unknown mode !!!");\r
575                 }\r
576                 return 0;\r
577         }\r
578         return 0;\r
579 }\r
580 \r
581 void myaccount_common_listen_pkgmgr_for_pkg_uninstall()\r
582 {\r
583         myaccount_appdata *appdata = (myaccount_appdata*)myaccount_get_appdata();\r
584 \r
585         if (!appdata) {\r
586                 MYACCOUNT_FATAL("App data NULL!!! \n");\r
587                 return;\r
588         }\r
589 \r
590         int result = 0;\r
591         pkgmgr_client *pc = NULL;\r
592         pc = pkgmgr_client_new(PC_LISTENING);\r
593         if(pc == NULL) {\r
594                 MYACCOUNT_ERROR("pc is NULL\n");\r
595                 return;\r
596         }\r
597         appdata->pc = pc;\r
598         result = pkgmgr_client_listen_status(pc, _myaccount_common_pkmgr_return_cb, pc);\r
599         if(result < 0)\r
600         {\r
601                 MYACCOUNT_ERROR("status listen failed!\n");\r
602                 return;\r
603         }\r
604 }\r