[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                                 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(event_type){\r
281                         if (!strcmp(event_type, ACCOUNT_NOTI_NAME_INSERT) && appdata->ug) {\r
282                                 service_h service = NULL;\r
283                                 int ret = -1;\r
284 \r
285                                 ret = service_create(&service);\r
286                                 MYACCOUNT_VERBOSE("service_create ret (%x)\n", ret);\r
287                                 ret = service_add_extra_data(service, "account_noti", noti_name);\r
288                                 MYACCOUNT_VERBOSE("service_add_extra_data ret (%x)\n", ret);\r
289                                 error_code = ug_send_result(appdata->ug, service);\r
290                                 MYACCOUNT_VERBOSE("ug_send_result ret (%x)\n", error_code);\r
291                                 error_code = ug_destroy_me(appdata->ug);\r
292                                 MYACCOUNT_VERBOSE("myaccount_common_handle_notification callback : return = %d!!!\n",\r
293                                                                         error_code);\r
294                         }\r
295                 }\r
296         } else {\r
297                 MYACCOUNT_WARNING("Unknown mode !!!");\r
298         }\r
299 }\r
300 \r
301 bool myaccount_samsung_callback(char* result_code, char* user_id, void *user_data)\r
302 {\r
303         MYACCOUNT_VERBOSE("Result Code = %s\n", result_code);\r
304         MYACCOUNT_VERBOSE("User Id = %s\n", user_id);\r
305 \r
306         if(user_data) {\r
307                 int* test = (int*)user_data;\r
308 \r
309                 MYACCOUNT_VERBOSE("TEST user data int = %d\n", *test);\r
310                 MA_MEMFREE(test);\r
311         }\r
312 \r
313         return TRUE;\r
314 }\r
315 \r
316 static void _myaccount_common_popup_cb(void *data, Evas_Object *obj, void *event_info)\r
317 {\r
318         MYACCOUNT_VERBOSE("delete popup\n");\r
319 \r
320         if(obj)\r
321                 evas_object_del(obj);\r
322 }\r
323 \r
324 Evas_Object* _myaccount_common_add_popup(Evas_Object* parent, const char* text, const char* title)\r
325 {\r
326         Evas_Object *popup = elm_popup_add(parent);\r
327 \r
328         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
329 \r
330         elm_object_text_set(popup, text);\r
331         elm_object_part_text_set(popup, "title,text", title);\r
332         evas_object_smart_callback_add(popup, "block,clicked", _myaccount_common_popup_cb, NULL);\r
333         elm_popup_timeout_set(popup, 3);\r
334         evas_object_smart_callback_add(popup, "timeout", _myaccount_common_popup_cb, NULL);\r
335         evas_object_show(popup);\r
336         return popup;\r
337 }\r
338 \r
339 int  myaccount_common_launch_application(MyAccountRequestViewType\r
340                                                                                                                 request_type,\r
341                                                                                                                 char *package_name,\r
342                                                                                                                 char *username,\r
343                                                                                                                 char *email_sp,\r
344                                                                                                                 int account_id,\r
345                                                                                                                 MyAccountProviderType sp_type,\r
346                                                                                                                 void *data )\r
347 {\r
348         int ret = SERVICE_ERROR_NONE;\r
349         service_h service;\r
350         myaccount_appdata *ad = (myaccount_appdata *) data;\r
351         char win_id_buf[64]={0,};\r
352         char id_buf[64] = {0,};\r
353 \r
354         if (!ad || !package_name) {\r
355                 MYACCOUNT_ERROR("myaccount_common_launch_application: App data=%p, package_name=%p\n",\r
356                                                         ad, package_name);\r
357                 return 0;\r
358         }\r
359 \r
360         MYACCOUNT_DBUG("trying to launch (%s)\n", package_name);\r
361 \r
362         ad->win_id = elm_win_xwindow_get(ad->win_main);\r
363         MA_SNPRINTF(win_id_buf, sizeof(win_id_buf)-1, "%d", ad->win_id);\r
364 \r
365         ret = service_create(&service);\r
366         ret = service_set_app_id(service, package_name);\r
367         ret = service_set_window(service, ad->win_id);\r
368         if(ad->caller_userdata) {\r
369                 MYACCOUNT_DBUG("myaccount_common_launch_application: caller userdata exist!\n");\r
370                 ret = service_add_extra_data(service, "myaccount_userdata", ad->caller_userdata);\r
371         }\r
372 \r
373         switch (request_type) {\r
374                 case MYACCOUNT_REQUEST_SIGNIN :\r
375                         service_set_operation(service, ACCOUNT_OPERATION_SIGNIN);\r
376                         if(email_sp && strlen(email_sp) > 0) {\r
377                                 MYACCOUNT_DBUG("Tizen email_sp (%s)\n", email_sp);\r
378                                 service_add_extra_data(service, ACCOUNT_DATA_SERVICE_PROVIDER, email_sp);\r
379                         }\r
380                         break;\r
381                 case MYACCOUNT_REQUEST_VIEW :\r
382                         if(!username) {\r
383                                 MYACCOUNT_ERROR("myaccount_common_launch_application: username=%p !!!\n",\r
384                                                                 username);\r
385                                 MA_MEMFREE(package_name);\r
386                                 service_destroy(service);\r
387                                 return 0;\r
388                         }\r
389 \r
390                         MA_SNPRINTF(id_buf, sizeof(id_buf), "%d", account_id);\r
391                         ret = service_add_extra_data(service, ACCOUNT_DATA_ID, id_buf);\r
392                         ret = service_set_operation(service, ACCOUNT_OPERATION_VIEW);\r
393                         MYACCOUNT_DBUG("###### USERNAME = %s\n", username);\r
394                         ret = service_add_extra_data(service, ACCOUNT_DATA_USERNAME,username);\r
395                         break;\r
396                 default :\r
397                         MYACCOUNT_DBUG("myaccount_common_launch_application: Invalid request type=%d\n",\r
398                                                                 request_type);\r
399                         MA_MEMFREE(username);\r
400                         MA_MEMFREE(package_name);\r
401                         service_destroy(service);\r
402                         return 0;\r
403         }\r
404         MYACCOUNT_VERBOSE("myaccount_common_launch_application request type=%d, package name = %s\n",\r
405                                                         request_type, package_name);\r
406 \r
407         ret = service_add_extra_data(service, "XWINDOW_ID", win_id_buf);\r
408         ret = service_send_launch_request(service, NULL, NULL);\r
409 \r
410         MA_MEMFREE(username);\r
411         MA_MEMFREE(package_name);\r
412         service_destroy(service);\r
413 \r
414         if(ret != SERVICE_ERROR_NONE) {\r
415                 MYACCOUNT_ERROR("(%s) launch fail. ret(%x)\n", package_name, ret);\r
416                 char buf[64]={0,};\r
417                 MA_SNPRINTF(buf, sizeof(buf), "Launch fail (%x)", ret);\r
418                 _myaccount_common_add_popup(ad->win_main, buf, "Error");\r
419                 ad->item_selected_state = FALSE;\r
420         }\r
421 \r
422         return ret;\r
423 }\r
424 \r
425 \r
426 Evas_Object *myaccount_common_progress_add(Evas_Object *parent)\r
427 {\r
428         if (!parent) {\r
429                 MYACCOUNT_ERROR("myaccount_common_progress_add: parent is NULL \n");\r
430                 return NULL;\r
431         }\r
432         Evas_Object *progressbar = NULL;\r
433         progressbar = elm_progressbar_add(parent);\r
434         elm_object_style_set(progressbar, "list_process");\r
435         evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5);\r
436         evas_object_size_hint_weight_set(progressbar,\r
437                                                 EVAS_HINT_EXPAND,\r
438                                                 EVAS_HINT_EXPAND);\r
439         evas_object_show(progressbar);\r
440         elm_progressbar_pulse(progressbar, EINA_TRUE);\r
441         return progressbar;\r
442 }\r
443 \r
444 Evas_Object *myaccount_common_create_modal_popup(Evas_Object *parent)\r
445 {\r
446         if (!parent) {\r
447                 MYACCOUNT_ERROR("myaccount_common_create_modal_popup: parent is NULL \n");\r
448                 return NULL;\r
449         }\r
450         Evas_Object *popup = NULL;\r
451         Evas_Object *progressbar = NULL;\r
452         popup = elm_popup_add(parent);\r
453         progressbar = myaccount_common_progress_add(popup);\r
454         elm_object_content_set(popup, progressbar);\r
455         evas_object_show(popup);\r
456         return popup;\r
457 }\r
458 \r
459 void myaccount_common_delete_modal_popup(Evas_Object *popup)\r
460 {\r
461         if (!popup){\r
462                 MYACCOUNT_ERROR("myaccount_common_delete_modal_popup: popup is NULL \n");\r
463                 return;\r
464         }\r
465         evas_object_del(popup);\r
466 }\r
467 \r
468 Eina_Bool myaccount_common_modal_popup_timer_cb(gpointer data)\r
469 {\r
470         if (!data) {\r
471                 MYACCOUNT_ERROR("myaccount_common_modal_popup_timer_cb: data is NULL \n");\r
472                 return false;\r
473         }\r
474         myaccount_appdata *global_data = NULL;\r
475         global_data = (myaccount_appdata*)data;\r
476         if (global_data->modal_popup) {\r
477                 myaccount_common_delete_modal_popup(global_data->modal_popup);\r
478                 global_data->modal_popup = NULL;\r
479         }\r
480         if (global_data->progress_timer) {\r
481                 ecore_timer_del(global_data->progress_timer);\r
482                 global_data->progress_timer = NULL;\r
483         }\r
484         return false;\r
485 }\r
486 \r
487 int myaccount_common_get_all_account_cnt(int *count)\r
488 {\r
489         int error_code = -1;\r
490         int account_cnt = 0;\r
491         if (!count) {\r
492                 MYACCOUNT_ERROR("myaccount_common_get_all_account_cnt: count ptr is NULL \n");\r
493                 return error_code;\r
494         }\r
495         error_code = account_connect();\r
496         if (error_code != ACCOUNT_ERROR_NONE) {\r
497                 MYACCOUNT_ERROR("myaccount_common_get_all_account_cnt: fail to connect account DB \n");\r
498                 return error_code;\r
499         }\r
500         error_code = account_get_total_count_from_db(&account_cnt);\r
501         if (error_code != ACCOUNT_ERROR_NONE) {\r
502                 int ret = ACCOUNT_ERROR_NONE;\r
503                 MYACCOUNT_VERBOSE("myaccount_common_get_all_account_cnt: account_svc_get_count fail(%d) \n",\r
504                                                         error_code);\r
505                 ret = account_disconnect();\r
506                 if (ret != ACCOUNT_ERROR_NONE) {\r
507                         MYACCOUNT_ERROR("myaccount_common_get_all_account_cnt: account_svc_disconnect fail(%d) \n",\r
508                                                                 ret);\r
509                 }\r
510                 return error_code;\r
511         }\r
512         *count = account_cnt;\r
513         error_code = account_disconnect();\r
514         if (error_code != ACCOUNT_ERROR_NONE) {\r
515                 MYACCOUNT_ERROR("myaccount_common_get_all_account_cnt: account_svc_get_count fail(%d) \n",\r
516                                                 error_code);\r
517                 return error_code;\r
518         }\r
519         return ACCOUNT_ERROR_NONE;\r
520 }\r
521 \r
522 static int _myaccount_common_pkmgr_return_cb(int req_id, const char *pkg_type,\r
523                                         const char *pkg_name,\r
524                                         const char *key,\r
525                                         const char *val,\r
526                                         const void *pmsg,\r
527                                         void *data)\r
528 {\r
529         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
530 \r
531         int error_code = -1;\r
532         int count = -1;\r
533         if( strcmp(key, "end") == 0 && strcmp(val, "ok") == 0) {\r
534                 myaccount_appdata *appdata = (myaccount_appdata*)myaccount_get_appdata();\r
535 \r
536                 if (!appdata) {\r
537                         MYACCOUNT_FATAL("App data NULL!!! \n");\r
538                         return -1;\r
539                 }\r
540                 error_code = myaccount_common_get_all_account_cnt(&count);\r
541                 if (error_code != ACCOUNT_ERROR_NONE) {\r
542                         MYACCOUNT_ERROR("_myaccount_common_pkmgr_return_cb: myaccount_common_get_all_account_cnt fail(%d) \n",\r
543                                                                 error_code);\r
544                 }\r
545 \r
546                 MYACCOUNT_VERBOSE("_myaccount_common_pkmgr_return_cb account count =%d\n",\r
547                                                                 count);\r
548                 if (appdata->eMode == eMYACCOUNT_ACCOUNT_LIST) {\r
549                         if (count > 0) {\r
550                                 if (appdata->add_genlist) {\r
551                                         evas_object_del(appdata->add_genlist);\r
552                                         appdata->add_genlist = NULL;\r
553                                         elm_naviframe_item_pop(appdata->navi_bar);\r
554                                 }\r
555                                 if (appdata->account_genlist) {\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