[tizen_2.1] merge with private
[apps/core/preloaded/my-account.git] / src / myaccount_ug_common.c
index 2fcf894..e46b205 100755 (executable)
@@ -1,17 +1,22 @@
 /*\r
- * Copyright 2012  Samsung Electronics Co., Ltd\r
+ *  my-account\r
  *\r
- * Licensed under the Flora License, Version 1.0 (the License);\r
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+ *\r
+ * Contact: Wonyoung Lee <wy1115.lee@samsung.com>, Tarun Kumar <tarun.kr@samsung.com>\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
  * you may not use this file except in compliance with the License.\r
  * You may obtain a copy of the License at\r
  *\r
- * http://floralicense.org/license/\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
  *\r
  * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an AS IS BASIS,\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
  * See the License for the specific language governing permissions and\r
  * limitations under the License.\r
+ *\r
  */\r
 \r
 #include "myaccount_ug.h"\r
@@ -123,7 +128,16 @@ void myaccount_destroy_appdata()
                pkgmgr_client_free(g_myaccount_appdata->pc);\r
                g_myaccount_appdata->pc = NULL;\r
        }\r
+\r
+       if(g_myaccount_appdata->sp_info_list) {\r
+               g_list_free(g_myaccount_appdata->sp_info_list);\r
+               g_myaccount_appdata->sp_info_list = NULL;\r
+       }\r
+\r
+       g_myaccount_appdata->sorted_sp_list= NULL;\r
+\r
        MA_MEMFREE(g_myaccount_appdata->caller_userdata);\r
+       MA_MEMFREE(g_myaccount_appdata->called_from);\r
        MA_MEMFREE(g_myaccount_appdata);\r
 \r
        MYACCOUNT_VERBOSE("myaccount_destroy_appdata END \n");\r
@@ -150,9 +164,48 @@ void myaccount_common_get_icon_by_name(char *domain_name,
                MYACCOUNT_ERROR("\n !!! icon_path is NULL \n");\r
                return;\r
        }\r
-\r
-       MYACCOUNT_VERBOSE("Default icon\n");\r
-       MA_SNPRINTF(icon_path, BUFSIZE, "%s", "99_email.png");\r
+       if (!strcmp(tmp_domain_name, "google") || !strcmp(tmp_domain_name, "gmail")) {\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
+                                       "66_myaccount_icon_google_50x50.png");\r
+       } else if (!strcmp(tmp_domain_name, "yahoo")\r
+               || !strcmp(tmp_domain_name, "ymail")) {\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
+                                       "66_myaccount_icon_yahoo_50x50.png");\r
+       } else if (!strcmp(tmp_domain_name, "hotmail")) {\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
+                                       "66_myaccount_icon_msn_50x50.png");\r
+       } else if (!strcmp(tmp_domain_name, "msn")) {\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
+                                       "66_myaccount_icon_windows_live_50x50.png");\r
+       } else if (!strcmp(tmp_domain_name, "exchange")) {\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
+                                       "exchange.png");\r
+       } else if (!strcmp(tmp_domain_name, "icq")) {\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s", "icq.png");\r
+       } else if (!strcmp(tmp_domain_name, "facebook")) {\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
+                                       "66_myaccount_icon_facebook_50x50.png");\r
+       } else if (!strcmp(tmp_domain_name, "twitter")) {\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
+                                       "66_myaccount_icon_twitter_50x50.png");\r
+       } else if (!strcmp(tmp_domain_name, "myspace")) {\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
+                                       "myspace.png");\r
+       } else if(!strcmp(tmp_domain_name, "picasa")) {\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s", "picasa.png");\r
+       } else if(!strcmp(tmp_domain_name, "flickr")) {\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s", "flickr.png");\r
+       } else if (!strcmp(tmp_domain_name, "samsung")) {\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s",\r
+                                       "01_samsungaccount.png");\r
+       } else if (!strcmp(tmp_domain_name, "youtube")) {\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s", "youtube.png");\r
+       } else if (!strcmp(tmp_domain_name, "others")) {\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s", "A01_2_Icon_others.png");\r
+       }else {\r
+               MYACCOUNT_VERBOSE("Default icon\n");\r
+               MA_SNPRINTF(icon_path, BUFSIZE, "%s", "A01_2_Icon_default.png");\r
+       }\r
 }\r
 \r
 void myaccount_common_lowercase(char *src, char *dest)\r
@@ -171,16 +224,8 @@ void myaccount_common_lowercase(char *src, char *dest)
        }\r
        dest[i] = '\0';\r
 }\r
-#ifdef ENABLE_NOTI\r
-void myaccount_common_vconf_notification_cb(keynode_t *key, void *user_data)\r
-{\r
-       MYACCOUNT_VERBOSE("myaccount_common_vconf_notification_cb START \n ");\r
-       myaccount_common_handle_notification();\r
-       MYACCOUNT_VERBOSE("myaccount_common_vconf_notification_cb END \n ");\r
-}\r
-#endif\r
-extern addaccount_list_priv* service_info;\r
-void myaccount_common_handle_notification()\r
+\r
+void myaccount_common_handle_notification(const char* event_type)\r
 {\r
        myaccount_appdata *appdata = (myaccount_appdata*)myaccount_get_appdata();\r
 \r
@@ -188,6 +233,7 @@ void myaccount_common_handle_notification()
                MYACCOUNT_FATAL("App data NULL!!! \n");\r
                return;\r
        }\r
+\r
        int error_code = -1;\r
        int count = -1;\r
        char *noti_name = NULL;\r
@@ -217,10 +263,8 @@ void myaccount_common_handle_notification()
                                evas_object_del(appdata->add_genlist);\r
                                appdata->add_genlist = NULL;\r
                                elm_naviframe_item_pop(appdata->navi_bar);\r
-                               MA_MEMFREE(service_info);\r
                        }\r
                        if (appdata->account_genlist) {\r
-                               myaccount_check_syncall_finish(appdata);\r
                                myaccount_list_refresh_item_list(appdata);\r
                        } else {\r
                                myaccount_ug_account_list_create((void*)appdata);\r
@@ -233,16 +277,63 @@ void myaccount_common_handle_notification()
                        }\r
                }\r
        } else if (appdata->eMode == eMYACCOUNT_ADD_ACCOUNT) {\r
-               if (appdata->ug) {\r
-                       if (!appdata->add_genlist)\r
-                               MA_MEMFREE(service_info);\r
-                       error_code = ug_destroy_me(appdata->ug);\r
-                       MYACCOUNT_DBUG("myaccount_common_handle_notification callback : return = %d!!!\n",\r
-                                                               error_code);\r
+               if(event_type){\r
+                       if (!strcmp(event_type, ACCOUNT_NOTI_NAME_INSERT) && appdata->ug) {\r
+                               service_h service = NULL;\r
+                               int ret = -1;\r
+\r
+                               ret = service_create(&service);\r
+                               MYACCOUNT_VERBOSE("service_create ret (%x)\n", ret);\r
+                               ret = service_add_extra_data(service, "account_noti", noti_name);\r
+                               MYACCOUNT_VERBOSE("service_add_extra_data ret (%x)\n", ret);\r
+                               error_code = ug_send_result(appdata->ug, service);\r
+                               MYACCOUNT_VERBOSE("ug_send_result ret (%x)\n", error_code);\r
+                               error_code = ug_destroy_me(appdata->ug);\r
+                               MYACCOUNT_VERBOSE("myaccount_common_handle_notification callback : return = %d!!!\n",\r
+                                                                       error_code);\r
+                       }\r
                }\r
        } else {\r
-               MYACCOUNT_DBUG("Unknown mode !!!");\r
+               MYACCOUNT_WARNING("Unknown mode !!!");\r
+       }\r
+}\r
+\r
+bool myaccount_samsung_callback(char* result_code, char* user_id, void *user_data)\r
+{\r
+       MYACCOUNT_VERBOSE("Result Code = %s\n", result_code);\r
+       MYACCOUNT_VERBOSE("User Id = %s\n", user_id);\r
+\r
+       if(user_data) {\r
+               int* test = (int*)user_data;\r
+\r
+               MYACCOUNT_VERBOSE("TEST user data int = %d\n", *test);\r
+               MA_MEMFREE(test);\r
        }\r
+\r
+       return TRUE;\r
+}\r
+\r
+static void _myaccount_common_popup_cb(void *data, Evas_Object *obj, void *event_info)\r
+{\r
+       MYACCOUNT_VERBOSE("delete popup\n");\r
+\r
+       if(obj)\r
+               evas_object_del(obj);\r
+}\r
+\r
+Evas_Object* _myaccount_common_add_popup(Evas_Object* parent, const char* text, const char* title)\r
+{\r
+       Evas_Object *popup = elm_popup_add(parent);\r
+\r
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
+\r
+       elm_object_text_set(popup, text);\r
+       elm_object_part_text_set(popup, "title,text", title);\r
+       evas_object_smart_callback_add(popup, "block,clicked", _myaccount_common_popup_cb, NULL);\r
+       elm_popup_timeout_set(popup, 3);\r
+       evas_object_smart_callback_add(popup, "timeout", _myaccount_common_popup_cb, NULL);\r
+       evas_object_show(popup);\r
+       return popup;\r
 }\r
 \r
 int  myaccount_common_launch_application(MyAccountRequestViewType\r
@@ -251,71 +342,84 @@ int  myaccount_common_launch_application(MyAccountRequestViewType
                                                                                                                char *username,\r
                                                                                                                char *email_sp,\r
                                                                                                                int account_id,\r
+                                                                                                               MyAccountProviderType sp_type,\r
                                                                                                                void *data )\r
 {\r
        int ret = SERVICE_ERROR_NONE;\r
        service_h service;\r
        myaccount_appdata *ad = (myaccount_appdata *) data;\r
+       char win_id_buf[64]={0,};\r
        char id_buf[64] = {0,};\r
 \r
        if (!ad || !package_name) {\r
-               MYACCOUNT_DBUG("myaccount_common_launch_application: App data=%p, package_name=%p\n",\r
+               MYACCOUNT_ERROR("myaccount_common_launch_application: App data=%p, package_name=%p\n",\r
                                                        ad, package_name);\r
                return 0;\r
        }\r
 \r
+       MYACCOUNT_DBUG("trying to launch (%s)\n", package_name);\r
+\r
+       ad->win_id = elm_win_xwindow_get(ad->win_main);\r
+       MA_SNPRINTF(win_id_buf, sizeof(win_id_buf)-1, "%d", ad->win_id);\r
+\r
        ret = service_create(&service);\r
-       ret = service_set_package(service, package_name);\r
+       ret = service_set_app_id(service, package_name);\r
        ret = service_set_window(service, ad->win_id);\r
        if(ad->caller_userdata) {\r
                MYACCOUNT_DBUG("myaccount_common_launch_application: caller userdata exist!\n");\r
                ret = service_add_extra_data(service, "myaccount_userdata", ad->caller_userdata);\r
        }\r
 \r
-       if (ret != SERVICE_ERROR_NONE)\r
-               MYACCOUNT_ERROR("myaccount_common_launch_application: service_set_package failed\n");\r
-\r
        switch (request_type) {\r
-       case MYACCOUNT_REQUEST_SIGNIN :\r
+               case MYACCOUNT_REQUEST_SIGNIN :\r
                        service_set_operation(service, ACCOUNT_OPERATION_SIGNIN);\r
-                       if(email_sp && strlen(email_sp) > 0)\r
+                       if(email_sp && strlen(email_sp) > 0) {\r
+                               MYACCOUNT_DBUG("Tizen email_sp (%s)\n", email_sp);\r
                                service_add_extra_data(service, ACCOUNT_DATA_SERVICE_PROVIDER, email_sp);\r
-               break;\r
-       case MYACCOUNT_REQUEST_VIEW :\r
-               if(!username) {\r
-                       MYACCOUNT_ERROR("myaccount_common_launch_application: username=%p !!!\n",\r
-                                                       username);\r
+                       }\r
+                       break;\r
+               case MYACCOUNT_REQUEST_VIEW :\r
+                       if(!username) {\r
+                               MYACCOUNT_ERROR("myaccount_common_launch_application: username=%p !!!\n",\r
+                                                               username);\r
+                               MA_MEMFREE(package_name);\r
+                               service_destroy(service);\r
+                               return 0;\r
+                       }\r
+\r
+                       MA_SNPRINTF(id_buf, sizeof(id_buf), "%d", account_id);\r
+                       ret = service_add_extra_data(service, ACCOUNT_DATA_ID, id_buf);\r
+                       ret = service_set_operation(service, ACCOUNT_OPERATION_VIEW);\r
+                       MYACCOUNT_DBUG("###### USERNAME = %s\n", username);\r
+                       ret = service_add_extra_data(service, ACCOUNT_DATA_USERNAME,username);\r
+                       break;\r
+               default :\r
+                       MYACCOUNT_DBUG("myaccount_common_launch_application: Invalid request type=%d\n",\r
+                                                               request_type);\r
+                       MA_MEMFREE(username);\r
                        MA_MEMFREE(package_name);\r
                        service_destroy(service);\r
                        return 0;\r
-               }\r
-\r
-               MA_SNPRINTF(id_buf, sizeof(id_buf), "%d", account_id);\r
-               ret = service_add_extra_data(service, ACCOUNT_DATA_ID, id_buf);\r
-               ret = service_set_operation(service, ACCOUNT_OPERATION_VIEW);\r
-               MYACCOUNT_DBUG("###### USERNAME = %s\n", username);\r
-               ret = service_add_extra_data(service, ACCOUNT_DATA_USERNAME,username);\r
-               break;\r
-       default :\r
-               MYACCOUNT_DBUG("myaccount_common_launch_application: Invalid request type=%d\n",\r
-                                                       request_type);\r
-               MA_MEMFREE(username);\r
-               MA_MEMFREE(package_name);\r
-               service_destroy(service);\r
-               return 0;\r
        }\r
        MYACCOUNT_VERBOSE("myaccount_common_launch_application request type=%d, package name = %s\n",\r
                                                        request_type, package_name);\r
 \r
+       ret = service_add_extra_data(service, "XWINDOW_ID", win_id_buf);\r
        ret = service_send_launch_request(service, NULL, NULL);\r
+\r
        MA_MEMFREE(username);\r
        MA_MEMFREE(package_name);\r
        service_destroy(service);\r
-       if(ret != SERVICE_ERROR_NONE){\r
-               return 0;\r
-       } else {\r
-               return 1;\r
+\r
+       if(ret != SERVICE_ERROR_NONE) {\r
+               MYACCOUNT_ERROR("(%s) launch fail. ret(%x)\n", package_name, ret);\r
+               char buf[64]={0,};\r
+               MA_SNPRINTF(buf, sizeof(buf), "Launch fail (%x)", ret);\r
+               _myaccount_common_add_popup(ad->win_main, buf, "Error");\r
+               ad->item_selected_state = FALSE;\r
        }\r
+\r
+       return ret;\r
 }\r
 \r
 \r
@@ -447,10 +551,8 @@ static int _myaccount_common_pkmgr_return_cb(int req_id, const char *pkg_type,
                                        evas_object_del(appdata->add_genlist);\r
                                        appdata->add_genlist = NULL;\r
                                        elm_naviframe_item_pop(appdata->navi_bar);\r
-                                       MA_MEMFREE(service_info);\r
                                }\r
                                if (appdata->account_genlist) {\r
-                                       myaccount_check_syncall_finish(appdata);\r
                                        myaccount_list_refresh_item_list(appdata);\r
                                } else {\r
                                        myaccount_ug_account_list_create((void*)appdata);\r
@@ -464,8 +566,6 @@ static int _myaccount_common_pkmgr_return_cb(int req_id, const char *pkg_type,
                        }\r
                } else if (appdata->eMode == eMYACCOUNT_ADD_ACCOUNT) {\r
                        if (appdata->ug) {\r
-                               if (!appdata->add_genlist)\r
-                                       MA_MEMFREE(service_info);\r
                                error_code = ug_destroy_me(appdata->ug);\r
                                MYACCOUNT_VERBOSE("myaccount_common_handle_notification callback : return = %d!!!\n",\r
                                                                        error_code);\r