4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
\r
6 * Contact: Wonyoung Lee <wy1115.lee@samsung.com>, Tarun Kumar <tarun.kr@samsung.com>
\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
12 * http://www.apache.org/licenses/LICENSE-2.0
\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
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
27 static myaccount_appdata *g_myaccount_appdata = NULL;
\r
29 void *myaccount_init_appdata()
\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
35 return g_myaccount_appdata;
\r
38 void myaccount_destroy_appdata()
\r
40 MYACCOUNT_INFO("myaccount_destroy_appdata START \n");
\r
42 if (g_myaccount_appdata == NULL) {
\r
43 MYACCOUNT_WARNING("myaccount_destroy_appdata: appdata NULL \n");
\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
55 MA_MEMFREE(g_myaccount_appdata->capability_filter)
\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
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
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
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
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
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
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
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
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
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
98 if (g_myaccount_appdata->bg) {
\r
99 evas_object_del(g_myaccount_appdata->bg);
\r
100 g_myaccount_appdata->bg = NULL;
\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
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
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
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
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
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
127 if (g_myaccount_appdata->pc) {
\r
128 pkgmgr_client_free(g_myaccount_appdata->pc);
\r
129 g_myaccount_appdata->pc = NULL;
\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
137 g_myaccount_appdata->sorted_sp_list= NULL;
\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
143 MYACCOUNT_VERBOSE("myaccount_destroy_appdata END \n");
\r
146 void * myaccount_get_appdata()
\r
148 return g_myaccount_appdata;
\r
151 void myaccount_common_get_icon_by_name(char *domain_name,
\r
154 if (!domain_name) {
\r
155 MYACCOUNT_ERROR("\n !!! domain_name is NULL \n");
\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
164 MYACCOUNT_ERROR("\n !!! icon_path is NULL \n");
\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
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
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
206 MYACCOUNT_VERBOSE("Default icon\n");
\r
207 MA_SNPRINTF(icon_path, BUFSIZE, "%s", "A01_2_Icon_default.png");
\r
211 void myaccount_common_lowercase(char *src, char *dest)
\r
216 if (!src || !dest) {
\r
217 MYACCOUNT_ERROR("myaccount_common_lowercase src=%p, dest=%p\n",
\r
221 src_len = strlen(src);
\r
222 for(i=0;i<src_len;i++) {
\r
223 dest[i] = tolower(src[i]);
\r
228 void myaccount_common_handle_notification(const char* event_type)
\r
230 myaccount_appdata *appdata = (myaccount_appdata*)myaccount_get_appdata();
\r
233 MYACCOUNT_FATAL("App data NULL!!! \n");
\r
237 int error_code = -1;
\r
239 char *noti_name = NULL;
\r
241 appdata->item_selected_state = false;
\r
243 noti_name = vconf_get_str(VCONFKEY_ACCOUNT_MSG_STR);
\r
245 MYACCOUNT_FATAL("myaccount_common_handle_notification: vconf_get_str() Failed!\n");
\r
248 MYACCOUNT_VERBOSE("myaccount_common_handle_notification: noti_name = %s\n",
\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
257 MYACCOUNT_VERBOSE("myaccount_common_handle_notification account count =%d\n",
\r
260 if (appdata->eMode == eMYACCOUNT_ACCOUNT_LIST) {
\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
267 if (appdata->account_genlist) {
\r
268 #ifdef ACCOUNT_SYNC_ALL
\r
269 myaccount_check_syncall_finish(appdata);
\r
271 myaccount_list_refresh_item_list(appdata);
\r
273 myaccount_ug_account_list_create((void*)appdata);
\r
276 if (appdata->add_genlist) {
\r
277 evas_object_show(appdata->add_genlist);
\r
279 myaccount_addaccount_create_view(appdata);
\r
282 } else if (appdata->eMode == eMYACCOUNT_ADD_ACCOUNT) {
\r
284 if (!strcmp(event_type, ACCOUNT_NOTI_NAME_INSERT) && appdata->ug) {
\r
285 service_h service = NULL;
\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
300 MYACCOUNT_WARNING("Unknown mode !!!");
\r
304 bool myaccount_samsung_callback(char* result_code, char* user_id, void *user_data)
\r
306 MYACCOUNT_VERBOSE("Result Code = %s\n", result_code);
\r
307 MYACCOUNT_VERBOSE("User Id = %s\n", user_id);
\r
310 int* test = (int*)user_data;
\r
312 MYACCOUNT_VERBOSE("TEST user data int = %d\n", *test);
\r
319 static void _myaccount_common_popup_cb(void *data, Evas_Object *obj, void *event_info)
\r
321 MYACCOUNT_VERBOSE("delete popup\n");
\r
324 evas_object_del(obj);
\r
327 Evas_Object* _myaccount_common_add_popup(Evas_Object* parent, const char* text, const char* title)
\r
329 Evas_Object *popup = elm_popup_add(parent);
\r
331 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
\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
342 int myaccount_common_launch_application(MyAccountRequestViewType
\r
344 char *package_name,
\r
348 MyAccountProviderType sp_type,
\r
351 int ret = SERVICE_ERROR_NONE;
\r
353 myaccount_appdata *ad = (myaccount_appdata *) data;
\r
354 char win_id_buf[64]={0,};
\r
355 char id_buf[64] = {0,};
\r
357 if (!ad || !package_name) {
\r
358 MYACCOUNT_ERROR("myaccount_common_launch_application: App data=%p, package_name=%p\n",
\r
363 MYACCOUNT_DBUG("trying to launch (%s)\n", package_name);
\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
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
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
384 case MYACCOUNT_REQUEST_VIEW :
\r
386 MYACCOUNT_ERROR("myaccount_common_launch_application: username=%p !!!\n",
\r
388 MA_MEMFREE(package_name);
\r
389 service_destroy(service);
\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
400 MYACCOUNT_DBUG("myaccount_common_launch_application: Invalid request type=%d\n",
\r
402 MA_MEMFREE(username);
\r
403 MA_MEMFREE(package_name);
\r
404 service_destroy(service);
\r
407 MYACCOUNT_VERBOSE("myaccount_common_launch_application request type=%d, package name = %s\n",
\r
408 request_type, package_name);
\r
410 ret = service_add_extra_data(service, "XWINDOW_ID", win_id_buf);
\r
411 ret = service_send_launch_request(service, NULL, NULL);
\r
413 MA_MEMFREE(username);
\r
414 MA_MEMFREE(package_name);
\r
415 service_destroy(service);
\r
417 if(ret != SERVICE_ERROR_NONE) {
\r
418 MYACCOUNT_ERROR("(%s) launch fail. ret(%x)\n", package_name, ret);
\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
429 Evas_Object *myaccount_common_progress_add(Evas_Object *parent)
\r
432 MYACCOUNT_ERROR("myaccount_common_progress_add: parent is NULL \n");
\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
442 evas_object_show(progressbar);
\r
443 elm_progressbar_pulse(progressbar, EINA_TRUE);
\r
444 return progressbar;
\r
447 Evas_Object *myaccount_common_create_modal_popup(Evas_Object *parent)
\r
450 MYACCOUNT_ERROR("myaccount_common_create_modal_popup: parent is NULL \n");
\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
462 void myaccount_common_delete_modal_popup(Evas_Object *popup)
\r
465 MYACCOUNT_ERROR("myaccount_common_delete_modal_popup: popup is NULL \n");
\r
468 evas_object_del(popup);
\r
471 Eina_Bool myaccount_common_modal_popup_timer_cb(gpointer data)
\r
474 MYACCOUNT_ERROR("myaccount_common_modal_popup_timer_cb: data is NULL \n");
\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
483 if (global_data->progress_timer) {
\r
484 ecore_timer_del(global_data->progress_timer);
\r
485 global_data->progress_timer = NULL;
\r
490 int myaccount_common_get_all_account_cnt(int *count)
\r
492 int error_code = -1;
\r
493 int account_cnt = 0;
\r
495 MYACCOUNT_ERROR("myaccount_common_get_all_account_cnt: count ptr is NULL \n");
\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
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
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
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
522 return ACCOUNT_ERROR_NONE;
\r
525 static int _myaccount_common_pkmgr_return_cb(int req_id, const char *pkg_type,
\r
526 const char *pkg_name,
\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
534 int error_code = -1;
\r
536 if( strcmp(key, "end") == 0 && strcmp(val, "ok") == 0) {
\r
537 myaccount_appdata *appdata = (myaccount_appdata*)myaccount_get_appdata();
\r
540 MYACCOUNT_FATAL("App data NULL!!! \n");
\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
549 MYACCOUNT_VERBOSE("_myaccount_common_pkmgr_return_cb account count =%d\n",
\r
551 if (appdata->eMode == eMYACCOUNT_ACCOUNT_LIST) {
\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
558 if (appdata->account_genlist) {
\r
559 #ifdef ACCOUNT_SYNC_ALL
\r
560 myaccount_check_syncall_finish(appdata);
\r
562 myaccount_list_refresh_item_list(appdata);
\r
564 myaccount_ug_account_list_create((void*)appdata);
\r
567 if (appdata->add_genlist) {
\r
568 evas_object_show(appdata->add_genlist);
\r
570 myaccount_addaccount_create_view(appdata);
\r
573 } else if (appdata->eMode == eMYACCOUNT_ADD_ACCOUNT) {
\r
575 error_code = ug_destroy_me(appdata->ug);
\r
576 MYACCOUNT_VERBOSE("myaccount_common_handle_notification callback : return = %d!!!\n",
\r
580 MYACCOUNT_WARNING("Unknown mode !!!");
\r
587 void myaccount_common_listen_pkgmgr_for_pkg_uninstall()
\r
589 myaccount_appdata *appdata = (myaccount_appdata*)myaccount_get_appdata();
\r
592 MYACCOUNT_FATAL("App data NULL!!! \n");
\r
597 pkgmgr_client *pc = NULL;
\r
598 pc = pkgmgr_client_new(PC_LISTENING);
\r
600 MYACCOUNT_ERROR("pc is NULL\n");
\r
604 result = pkgmgr_client_listen_status(pc, _myaccount_common_pkmgr_return_cb, pc);
\r
607 MYACCOUNT_ERROR("status listen failed!\n");
\r