[tizen_2.1]merge with private
[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->called_from);\r
141         MA_MEMFREE(g_myaccount_appdata);\r
142 \r
143         MYACCOUNT_VERBOSE("myaccount_destroy_appdata END \n");\r
144 }\r
145 \r
146 void * myaccount_get_appdata()\r
147 {\r
148         return g_myaccount_appdata;\r
149 }\r
150 \r
151 void myaccount_common_get_icon_by_name(char *domain_name,\r
152                                                                                         char *icon_path)\r
153 {\r
154         if (!domain_name) {\r
155                 MYACCOUNT_ERROR("\n !!! domain_name is NULL \n");\r
156                 return;\r
157         }\r
158         char tmp_domain_name[64] = {0,};\r
159         myaccount_common_lowercase(domain_name, tmp_domain_name);\r
160         MYACCOUNT_VERBOSE("\n !!! myaccount_common_get_icon_by_name = %s \n",\r
161                                                                 domain_name);\r
162 \r
163         if (!icon_path) {\r
164                 MYACCOUNT_ERROR("\n !!! icon_path is NULL \n");\r
165                 return;\r
166         }\r
167         if (!strcmp(tmp_domain_name, "google") || !strcmp(tmp_domain_name, "gmail")) {\r
168                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
169                                         "66_myaccount_icon_google_50x50.png");\r
170         } else if (!strcmp(tmp_domain_name, "yahoo")\r
171                 || !strcmp(tmp_domain_name, "ymail")) {\r
172                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
173                                         "66_myaccount_icon_yahoo_50x50.png");\r
174         } else if (!strcmp(tmp_domain_name, "hotmail")) {\r
175                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
176                                         "66_myaccount_icon_msn_50x50.png");\r
177         } else if (!strcmp(tmp_domain_name, "msn")) {\r
178                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
179                                         "66_myaccount_icon_windows_live_50x50.png");\r
180         } else if (!strcmp(tmp_domain_name, "exchange")) {\r
181                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
182                                         "exchange.png");\r
183         } else if (!strcmp(tmp_domain_name, "icq")) {\r
184                 MA_SNPRINTF(icon_path, BUFSIZE, "%s", "icq.png");\r
185         } else if (!strcmp(tmp_domain_name, "facebook")) {\r
186                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
187                                         "66_myaccount_icon_facebook_50x50.png");\r
188         } else if (!strcmp(tmp_domain_name, "twitter")) {\r
189                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
190                                         "66_myaccount_icon_twitter_50x50.png");\r
191         } else if (!strcmp(tmp_domain_name, "myspace")) {\r
192                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
193                                         "myspace.png");\r
194         } else if(!strcmp(tmp_domain_name, "picasa")) {\r
195                 MA_SNPRINTF(icon_path, BUFSIZE, "%s", "picasa.png");\r
196         } else if(!strcmp(tmp_domain_name, "flickr")) {\r
197                 MA_SNPRINTF(icon_path, BUFSIZE, "%s", "flickr.png");\r
198         } else if (!strcmp(tmp_domain_name, "samsung")) {\r
199                 MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
200                                         "01_samsungaccount.png");\r
201         } else if (!strcmp(tmp_domain_name, "youtube")) {\r
202                 MA_SNPRINTF(icon_path, BUFSIZE, "%s", "youtube.png");\r
203         } else if (!strcmp(tmp_domain_name, "others")) {\r
204                 MA_SNPRINTF(icon_path, BUFSIZE, "%s", "A01_2_Icon_others.png");\r
205         }else {\r
206                 MYACCOUNT_VERBOSE("Default icon\n");\r
207                 MA_SNPRINTF(icon_path, BUFSIZE, "%s", "A01_2_Icon_default.png");\r
208         }\r
209 }\r
210 \r
211 void myaccount_common_lowercase(char *src, char *dest)\r
212 {\r
213         int i;\r
214         int src_len=0;\r
215 \r
216         if (!src || !dest) {\r
217                 MYACCOUNT_ERROR("myaccount_common_lowercase src=%p, dest=%p\n",\r
218                                                 src, dest);\r
219                 return;\r
220         }\r
221         src_len = strlen(src);\r
222         for(i=0;i<src_len;i++) {\r
223                 dest[i] = tolower(src[i]);\r
224         }\r
225         dest[i] = '\0';\r
226 }\r
227 \r
228 void myaccount_common_handle_notification(const char* event_type)\r
229 {\r
230         myaccount_appdata *appdata = (myaccount_appdata*)myaccount_get_appdata();\r
231 \r
232         if (!appdata) {\r
233                 MYACCOUNT_FATAL("App data NULL!!! \n");\r
234                 return;\r
235         }\r
236 \r
237         int error_code = -1;\r
238         int count = -1;\r
239         char *noti_name = NULL;\r
240 \r
241         appdata->item_selected_state = false;\r
242 \r
243         noti_name = vconf_get_str(VCONFKEY_ACCOUNT_MSG_STR);\r
244         if (!noti_name) {\r
245                 MYACCOUNT_FATAL("myaccount_common_handle_notification: vconf_get_str() Failed!\n");\r
246                 return;\r
247         } else {\r
248                 MYACCOUNT_VERBOSE("myaccount_common_handle_notification: noti_name = %s\n",\r
249                                                         noti_name);\r
250         }\r
251         error_code = myaccount_common_get_all_account_cnt(&count);\r
252         if (error_code != ACCOUNT_ERROR_NONE) {\r
253                 MYACCOUNT_ERROR("myaccount_common_handle_notification: myaccount_common_get_all_account_cnt fail(%d) \n",\r
254                                                         error_code);\r
255         }\r
256 \r
257         MYACCOUNT_VERBOSE("myaccount_common_handle_notification account count =%d\n",\r
258                                                         count);\r
259 \r
260         if (appdata->eMode == eMYACCOUNT_ACCOUNT_LIST) {\r
261                 if (count > 0) {\r
262                         if (appdata->add_genlist && strcmp(noti_name, ACCOUNT_NOTI_NAME_SYNC_UPDATE)) {\r
263                                 evas_object_del(appdata->add_genlist);\r
264                                 appdata->add_genlist = NULL;\r
265                                 elm_naviframe_item_pop(appdata->navi_bar);\r
266                         }\r
267                         if (appdata->account_genlist) {\r
268 #ifdef ACCOUNT_SYNC_ALL\r
269                                 myaccount_check_syncall_finish(appdata);\r
270 #endif\r
271                                 myaccount_list_refresh_item_list(appdata);\r
272                         } else {\r
273                                 myaccount_ug_account_list_create((void*)appdata);\r
274                         }\r
275                 } else {\r
276                         if (appdata->add_genlist) {\r
277                                 evas_object_show(appdata->add_genlist);\r
278                         } else {\r
279                                 myaccount_addaccount_create_view(appdata);\r
280                         }\r
281                 }\r
282         } else if (appdata->eMode == eMYACCOUNT_ADD_ACCOUNT) {\r
283                 if(event_type){\r
284                         if (!strcmp(event_type, ACCOUNT_NOTI_NAME_INSERT) && appdata->ug) {\r
285                                 service_h service = NULL;\r
286                                 int ret = -1;\r
287 \r
288                                 ret = service_create(&service);\r
289                                 MYACCOUNT_VERBOSE("service_create ret (%x)\n", ret);\r
290                                 ret = service_add_extra_data(service, "account_noti", noti_name);\r
291                                 MYACCOUNT_VERBOSE("service_add_extra_data ret (%x)\n", ret);\r
292                                 error_code = ug_send_result(appdata->ug, service);\r
293                                 MYACCOUNT_VERBOSE("ug_send_result ret (%x)\n", error_code);\r
294                                 error_code = ug_destroy_me(appdata->ug);\r
295                                 MYACCOUNT_VERBOSE("myaccount_common_handle_notification callback : return = %d!!!\n",\r
296                                                                         error_code);\r
297                         }\r
298                 }\r
299         } else {\r
300                 MYACCOUNT_WARNING("Unknown mode !!!");\r
301         }\r
302 }\r
303 \r
304 bool myaccount_samsung_callback(char* result_code, char* user_id, void *user_data)\r
305 {\r
306         MYACCOUNT_VERBOSE("Result Code = %s\n", result_code);\r
307         MYACCOUNT_VERBOSE("User Id = %s\n", user_id);\r
308 \r
309         if(user_data) {\r
310                 int* test = (int*)user_data;\r
311 \r
312                 MYACCOUNT_VERBOSE("TEST user data int = %d\n", *test);\r
313                 MA_MEMFREE(test);\r
314         }\r
315 \r
316         return TRUE;\r
317 }\r
318 \r
319 static void _myaccount_common_popup_cb(void *data, Evas_Object *obj, void *event_info)\r
320 {\r
321         MYACCOUNT_VERBOSE("delete popup\n");\r
322 \r
323         if(obj)\r
324                 evas_object_del(obj);\r
325 }\r
326 \r
327 Evas_Object* _myaccount_common_add_popup(Evas_Object* parent, const char* text, const char* title)\r
328 {\r
329         Evas_Object *popup = elm_popup_add(parent);\r
330 \r
331         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
332 \r
333         elm_object_text_set(popup, text);\r
334         elm_object_part_text_set(popup, "title,text", title);\r
335         evas_object_smart_callback_add(popup, "block,clicked", _myaccount_common_popup_cb, NULL);\r
336         elm_popup_timeout_set(popup, 3);\r
337         evas_object_smart_callback_add(popup, "timeout", _myaccount_common_popup_cb, NULL);\r
338         evas_object_show(popup);\r
339         return popup;\r
340 }\r
341 \r
342 int  myaccount_common_launch_application(MyAccountRequestViewType\r
343                                                                                                                 request_type,\r
344                                                                                                                 char *package_name,\r
345                                                                                                                 char *username,\r
346                                                                                                                 char *email_sp,\r
347                                                                                                                 int account_id,\r
348                                                                                                                 MyAccountProviderType sp_type,\r
349                                                                                                                 void *data )\r
350 {\r
351         int ret = SERVICE_ERROR_NONE;\r
352         service_h service;\r
353         myaccount_appdata *ad = (myaccount_appdata *) data;\r
354         char win_id_buf[64]={0,};\r
355         char id_buf[64] = {0,};\r
356 \r
357         if (!ad || !package_name) {\r
358                 MYACCOUNT_ERROR("myaccount_common_launch_application: App data=%p, package_name=%p\n",\r
359                                                         ad, package_name);\r
360                 return 0;\r
361         }\r
362 \r
363         MYACCOUNT_DBUG("trying to launch (%s)\n", package_name);\r
364 \r
365         ad->win_id = elm_win_xwindow_get(ad->win_main);\r
366         MA_SNPRINTF(win_id_buf, sizeof(win_id_buf)-1, "%d", ad->win_id);\r
367 \r
368         ret = service_create(&service);\r
369         ret = service_set_app_id(service, package_name);\r
370         ret = service_set_window(service, ad->win_id);\r
371         if(ad->caller_userdata) {\r
372                 MYACCOUNT_DBUG("myaccount_common_launch_application: caller userdata exist!\n");\r
373                 ret = service_add_extra_data(service, "myaccount_userdata", ad->caller_userdata);\r
374         }\r
375 \r
376         switch (request_type) {\r
377                 case MYACCOUNT_REQUEST_SIGNIN :\r
378                         service_set_operation(service, ACCOUNT_OPERATION_SIGNIN);\r
379                         if(email_sp && strlen(email_sp) > 0) {\r
380                                 MYACCOUNT_DBUG("Tizen email_sp (%s)\n", email_sp);\r
381                                 service_add_extra_data(service, ACCOUNT_DATA_SERVICE_PROVIDER, email_sp);\r
382                         }\r
383                         break;\r
384                 case MYACCOUNT_REQUEST_VIEW :\r
385                         if(!username) {\r
386                                 MYACCOUNT_ERROR("myaccount_common_launch_application: username=%p !!!\n",\r
387                                                                 username);\r
388                                 MA_MEMFREE(package_name);\r
389                                 service_destroy(service);\r
390                                 return 0;\r
391                         }\r
392 \r
393                         MA_SNPRINTF(id_buf, sizeof(id_buf), "%d", account_id);\r
394                         ret = service_add_extra_data(service, ACCOUNT_DATA_ID, id_buf);\r
395                         ret = service_set_operation(service, ACCOUNT_OPERATION_VIEW);\r
396                         MYACCOUNT_DBUG("###### USERNAME = %s\n", username);\r
397                         ret = service_add_extra_data(service, ACCOUNT_DATA_USERNAME,username);\r
398                         break;\r
399                 default :\r
400                         MYACCOUNT_DBUG("myaccount_common_launch_application: Invalid request type=%d\n",\r
401                                                                 request_type);\r
402                         MA_MEMFREE(username);\r
403                         MA_MEMFREE(package_name);\r
404                         service_destroy(service);\r
405                         return 0;\r
406         }\r
407         MYACCOUNT_VERBOSE("myaccount_common_launch_application request type=%d, package name = %s\n",\r
408                                                         request_type, package_name);\r
409 \r
410         ret = service_add_extra_data(service, "XWINDOW_ID", win_id_buf);\r
411         ret = service_send_launch_request(service, NULL, NULL);\r
412 \r
413         MA_MEMFREE(username);\r
414         MA_MEMFREE(package_name);\r
415         service_destroy(service);\r
416 \r
417         if(ret != SERVICE_ERROR_NONE) {\r
418                 MYACCOUNT_ERROR("(%s) launch fail. ret(%x)\n", package_name, ret);\r
419                 char buf[64]={0,};\r
420                 MA_SNPRINTF(buf, sizeof(buf), "Launch fail (%x)", ret);\r
421                 _myaccount_common_add_popup(ad->win_main, buf, "Error");\r
422                 ad->item_selected_state = FALSE;\r
423         }\r
424 \r
425         return ret;\r
426 }\r
427 \r
428 \r
429 Evas_Object *myaccount_common_progress_add(Evas_Object *parent)\r
430 {\r
431         if (!parent) {\r
432                 MYACCOUNT_ERROR("myaccount_common_progress_add: parent is NULL \n");\r
433                 return NULL;\r
434         }\r
435         Evas_Object *progressbar = NULL;\r
436         progressbar = elm_progressbar_add(parent);\r
437         elm_object_style_set(progressbar, "list_process");\r
438         evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);\r
439         evas_object_size_hint_weight_set(progressbar,\r
440                                                 EVAS_HINT_EXPAND,\r
441                                                 EVAS_HINT_EXPAND);\r
442         evas_object_show(progressbar);\r
443         elm_progressbar_pulse(progressbar, EINA_TRUE);\r
444         return progressbar;\r
445 }\r
446 \r
447 Evas_Object *myaccount_common_create_modal_popup(Evas_Object *parent)\r
448 {\r
449         if (!parent) {\r
450                 MYACCOUNT_ERROR("myaccount_common_create_modal_popup: parent is NULL \n");\r
451                 return NULL;\r
452         }\r
453         Evas_Object *popup = NULL;\r
454         Evas_Object *progressbar = NULL;\r
455         popup = elm_popup_add(parent);\r
456         progressbar = myaccount_common_progress_add(popup);\r
457         elm_object_content_set(popup, progressbar);\r
458         evas_object_show(popup);\r
459         return popup;\r
460 }\r
461 \r
462 void myaccount_common_delete_modal_popup(Evas_Object *popup)\r
463 {\r
464         if (!popup){\r
465                 MYACCOUNT_ERROR("myaccount_common_delete_modal_popup: popup is NULL \n");\r
466                 return;\r
467         }\r
468         evas_object_del(popup);\r
469 }\r
470 \r
471 Eina_Bool myaccount_common_modal_popup_timer_cb(gpointer data)\r
472 {\r
473         if (!data) {\r
474                 MYACCOUNT_ERROR("myaccount_common_modal_popup_timer_cb: data is NULL \n");\r
475                 return false;\r
476         }\r
477         myaccount_appdata *global_data = NULL;\r
478         global_data = (myaccount_appdata*)data;\r
479         if (global_data->modal_popup) {\r
480                 myaccount_common_delete_modal_popup(global_data->modal_popup);\r
481                 global_data->modal_popup = NULL;\r
482         }\r
483         if (global_data->progress_timer) {\r
484                 ecore_timer_del(global_data->progress_timer);\r
485                 global_data->progress_timer = NULL;\r
486         }\r
487         return false;\r
488 }\r
489 \r
490 int myaccount_common_get_all_account_cnt(int *count)\r
491 {\r
492         int error_code = -1;\r
493         int account_cnt = 0;\r
494         if (!count) {\r
495                 MYACCOUNT_ERROR("myaccount_common_get_all_account_cnt: count ptr is NULL \n");\r
496                 return error_code;\r
497         }\r
498         error_code = account_connect();\r
499         if (error_code != ACCOUNT_ERROR_NONE) {\r
500                 MYACCOUNT_ERROR("myaccount_common_get_all_account_cnt: fail to connect account DB \n");\r
501                 return error_code;\r
502         }\r
503         error_code = account_get_total_count_from_db(&account_cnt);\r
504         if (error_code != ACCOUNT_ERROR_NONE) {\r
505                 int ret = ACCOUNT_ERROR_NONE;\r
506                 MYACCOUNT_VERBOSE("myaccount_common_get_all_account_cnt: account_svc_get_count fail(%d) \n",\r
507                                                         error_code);\r
508                 ret = account_disconnect();\r
509                 if (ret != ACCOUNT_ERROR_NONE) {\r
510                         MYACCOUNT_ERROR("myaccount_common_get_all_account_cnt: account_svc_disconnect fail(%d) \n",\r
511                                                                 ret);\r
512                 }\r
513                 return error_code;\r
514         }\r
515         *count = account_cnt;\r
516         error_code = account_disconnect();\r
517         if (error_code != ACCOUNT_ERROR_NONE) {\r
518                 MYACCOUNT_ERROR("myaccount_common_get_all_account_cnt: account_svc_get_count fail(%d) \n",\r
519                                                 error_code);\r
520                 return error_code;\r
521         }\r
522         return ACCOUNT_ERROR_NONE;\r
523 }\r
524 \r
525 static int _myaccount_common_pkmgr_return_cb(int req_id, const char *pkg_type,\r
526                                         const char *pkg_name,\r
527                                         const char *key,\r
528                                         const char *val,\r
529                                         const void *pmsg,\r
530                                         void *data)\r
531 {\r
532         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
533 \r
534         int error_code = -1;\r
535         int count = -1;\r
536         if( strcmp(key, "end") == 0 && strcmp(val, "ok") == 0) {\r
537                 myaccount_appdata *appdata = (myaccount_appdata*)myaccount_get_appdata();\r
538 \r
539                 if (!appdata) {\r
540                         MYACCOUNT_FATAL("App data NULL!!! \n");\r
541                         return -1;\r
542                 }\r
543                 error_code = myaccount_common_get_all_account_cnt(&count);\r
544                 if (error_code != ACCOUNT_ERROR_NONE) {\r
545                         MYACCOUNT_ERROR("_myaccount_common_pkmgr_return_cb: myaccount_common_get_all_account_cnt fail(%d) \n",\r
546                                                                 error_code);\r
547                 }\r
548 \r
549                 MYACCOUNT_VERBOSE("_myaccount_common_pkmgr_return_cb account count =%d\n",\r
550                                                                 count);\r
551                 if (appdata->eMode == eMYACCOUNT_ACCOUNT_LIST) {\r
552                         if (count > 0) {\r
553                                 if (appdata->add_genlist) {\r
554                                         evas_object_del(appdata->add_genlist);\r
555                                         appdata->add_genlist = NULL;\r
556                                         elm_naviframe_item_pop(appdata->navi_bar);\r
557                                 }\r
558                                 if (appdata->account_genlist) {\r
559 #ifdef ACCOUNT_SYNC_ALL\r
560                                         myaccount_check_syncall_finish(appdata);\r
561 #endif\r
562                                         myaccount_list_refresh_item_list(appdata);\r
563                                 } else {\r
564                                         myaccount_ug_account_list_create((void*)appdata);\r
565                                 }\r
566                         } else {\r
567                                 if (appdata->add_genlist) {\r
568                                         evas_object_show(appdata->add_genlist);\r
569                                 } else {\r
570                                         myaccount_addaccount_create_view(appdata);\r
571                                 }\r
572                         }\r
573                 } else if (appdata->eMode == eMYACCOUNT_ADD_ACCOUNT) {\r
574                         if (appdata->ug) {\r
575                                 error_code = ug_destroy_me(appdata->ug);\r
576                                 MYACCOUNT_VERBOSE("myaccount_common_handle_notification callback : return = %d!!!\n",\r
577                                                                         error_code);\r
578                         }\r
579                 } else {\r
580                         MYACCOUNT_WARNING("Unknown mode !!!");\r
581                 }\r
582                 return 0;\r
583         }\r
584         return 0;\r
585 }\r
586 \r
587 void myaccount_common_listen_pkgmgr_for_pkg_uninstall()\r
588 {\r
589         myaccount_appdata *appdata = (myaccount_appdata*)myaccount_get_appdata();\r
590 \r
591         if (!appdata) {\r
592                 MYACCOUNT_FATAL("App data NULL!!! \n");\r
593                 return;\r
594         }\r
595 \r
596         int result = 0;\r
597         pkgmgr_client *pc = NULL;\r
598         pc = pkgmgr_client_new(PC_LISTENING);\r
599         if(pc == NULL) {\r
600                 MYACCOUNT_ERROR("pc is NULL\n");\r
601                 return;\r
602         }\r
603         appdata->pc = pc;\r
604         result = pkgmgr_client_listen_status(pc, _myaccount_common_pkmgr_return_cb, pc);\r
605         if(result < 0)\r
606         {\r
607                 MYACCOUNT_ERROR("status listen failed!\n");\r
608                 return;\r
609         }\r
610 }\r