From c74bdc72fa54f53f01a9c55c2319abf56308a8e6 Mon Sep 17 00:00:00 2001 From: Abhishek Sansanwal Date: Tue, 28 Nov 2017 16:43:23 +0530 Subject: [PATCH] IP conflict show and remove notification handling Signed-off-by: Abhishek Sansanwal Change-Id: I1b6299d2bf410eb72b753f46a26e6914e4f8a891 --- po/en_US.po | 3 ++ src/net-popup.c | 162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 165 insertions(+) diff --git a/po/en_US.po b/po/en_US.po index 4534b37..dff0e6c 100755 --- a/po/en_US.po +++ b/po/en_US.po @@ -43,6 +43,9 @@ msgstr "Tap here to connect." msgid "IDS_WIFI_HEADER_SIGN_IN_TO_WI_FI_NETWORK_ABB" msgstr "Sign in to Wi-Fi network" +msgid "IDS_IP_CONFLICT" +msgstr "IP conflict detected" + msgid "IDS_WIFI_BUTTON_DONT_ASK_AGAIN" msgstr "Don't ask again" diff --git a/src/net-popup.c b/src/net-popup.c index 77ff1c2..0c2ecf2 100755 --- a/src/net-popup.c +++ b/src/net-popup.c @@ -46,6 +46,7 @@ #define NET_WIFIQS_APPID "net.wifi-qs" #define DATA_USAGE_APPID "org.tizen.setting" +#define WIFI_EFL_UG "wifi-efl-ug" #define LOCALEDIR "/usr/share/locale" #define NETPOPUP_EDJ tzplatform_mkpath(TZ_SYS_RO_UG, "/res/edje/net-popup/netpopup-custom.edj") @@ -70,6 +71,8 @@ dgettext(PACKAGE, "IDS_WIFI_SBODY_TAP_HERE_TO_CONNECT") #define NETCONFIG_NOTIFICATION_WIFI_PORTAL_TITLE \ dgettext(PACKAGE, "IDS_WIFI_HEADER_SIGN_IN_TO_WI_FI_NETWORK_ABB") +#define NETCONFIG_NOTIFICATION_IP_CONFLICT_TITLE \ + dgettext(PACKAGE, "IDS_IP_CONFLICT") #define NETCONFIG_NOTIFICATION_WIFI_PORTAL_CONTENT "\"%s\"" #define STC_NOTIFICATION_WARNING_TITLE \ @@ -133,6 +136,8 @@ static void __net_popup_show_popup_with_user_resp(app_control_h request, void *d static void __net_popup_show_vpn_popup(app_control_h request, void *data); static int _net_popup_send_user_resp(char *resp, Eina_Bool state); static int __net_popup_show_network_error_popup(app_control_h request, void *data); +static void __net_popup_add_ip_conflict_noti(app_control_h request); +static void __net_popup_del_ip_conflict_noti(void); GDBusProxy *__net_popup_init_dbus(void) { @@ -411,6 +416,12 @@ static void __net_popup_service_cb(app_control_h request, void *data) } else if (g_str_equal(type, "del_portal_noti")) { __net_popup_del_portal_noti(); elm_exit(); + } else if (g_str_equal(type, "add_ip_conflict_noti")) { + __net_popup_add_ip_conflict_noti(request); + elm_exit(); + } else if (g_str_equal(type, "del_ip_conflict_noti")) { + __net_popup_del_ip_conflict_noti(); + elm_exit(); } else if (g_str_equal(type, "popup_user_resp")) { app_control_clone(&g_req_handle, request); __net_popup_show_popup_with_user_resp(request, data); @@ -1836,6 +1847,142 @@ static void __net_popup_del_found_ap_noti(void) log_print(NET_POPUP, "Successfully deleted notification"); } +static void __net_popup_add_ip_conflict_noti(app_control_h request) +{ + log_print(NET_POPUP, "__net_popup_add_portal_noti()\n"); + + int ret = 0; + int noti_flags = 0; + char *mac = NULL; + char icon_path[ICON_PATH_LEN]; + notification_h noti = NULL; + app_control_h service_handle = NULL; + notification_list_h noti_list = NULL; + notification_error_e noti_err = NOTIFICATION_ERROR_NONE; + + ret = app_control_get_extra_data(request, "_MAC_ADDRESS_", &mac); + + if (mac == NULL || ret != APP_CONTROL_ERROR_NONE) { + log_print(NET_POPUP, "Failed to retrieve mac address!!"); + g_free(mac); + return; + } + + log_print(NET_POPUP, "Successfully added notification"); + + notification_get_detail_list("net.netpopup", NOTIFICATION_GROUP_ID_NONE, + NOTIFICATION_PRIV_ID_NONE, -1, ¬i_list); + if (noti_list != NULL) { + notification_free_list(noti_list); + g_free(mac); + return; + } + + noti = notification_create(NOTIFICATION_TYPE_NOTI); + if (noti == NULL) { + log_print(NET_POPUP, "fail to create notification"); + g_free(mac); + return; + } + + noti_err = notification_set_time(noti, time(NULL)); + if (noti_err != NOTIFICATION_ERROR_NONE) { + log_print(NET_POPUP, "fail to notification_set_time : %d", noti_err); + goto error; + } + + noti_err = notification_set_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, + NETCONFIG_NOTIFICATION_WIFI_ICON_LITE); + if (noti_err != NOTIFICATION_ERROR_NONE) { + log_print(NET_POPUP, "fail to notification_set_image : %d", noti_err); + goto error; + } + + g_snprintf(icon_path, sizeof(icon_path), "%s%s", QP_PRELOAD_NOTI_ICON_PATH, "/noti_wifi_in_range_ongoing.png"); + noti_err = notification_set_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, icon_path); + if (noti_err != NOTIFICATION_ERROR_NONE) { + log_print(NET_POPUP, "fail to notification_set_image : %d", noti_err); + goto error; + } + + noti_err = notification_set_layout(noti, NOTIFICATION_LY_NOTI_EVENT_MULTIPLE); + if (noti_err != NOTIFICATION_ERROR_NONE) { + log_print(NET_POPUP, "fail to notification_set_layout : %d", noti_err); + goto error; + } + + noti_err = notification_set_text_domain(noti, PACKAGE, + LOCALEDIR); + if (noti_err != NOTIFICATION_ERROR_NONE) { + log_print(NET_POPUP, "fail to notification_set_text_domain : %d", noti_err); + goto error; + } + + noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_TITLE, + NETCONFIG_NOTIFICATION_IP_CONFLICT_TITLE, + "IDS_IP_CONFLICT", + NOTIFICATION_VARIABLE_TYPE_NONE); + if (noti_err != NOTIFICATION_ERROR_NONE) { + log_print(NET_POPUP, "fail to notification_set_title : %d", noti_err); + goto error; + } + + noti_err = notification_set_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT, + NETCONFIG_NOTIFICATION_WIFI_PORTAL_CONTENT, + NETCONFIG_NOTIFICATION_WIFI_PORTAL_CONTENT, + NOTIFICATION_VARIABLE_TYPE_STRING, mac, + NOTIFICATION_VARIABLE_TYPE_NONE); + if (noti_err != NOTIFICATION_ERROR_NONE) { + log_print(NET_POPUP, "fail to notification_set_content : %d", noti_err); + goto error; + } + + noti_flags = NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY | NOTIFICATION_DISPLAY_APP_INDICATOR; + noti_err = notification_set_display_applist(noti, noti_flags); + if (noti_err != NOTIFICATION_ERROR_NONE) { + log_print(NET_POPUP, "fail to notification_set_display_applist : %d", noti_err); + goto error; + } + + ret = app_control_create(&service_handle); + log_print(NET_POPUP, "service create ret[%d]", ret); + if (ret != APP_CONTROL_ERROR_NONE) + goto error; + + ret = app_control_set_app_id(service_handle, WIFI_EFL_UG); + log_print(NET_POPUP, "Service set app id ret = %d", ret); + if (ret != APP_CONTROL_ERROR_NONE) + goto error; + + ret = app_control_add_extra_data(service_handle, "caller", "notification"); + log_print(NET_POPUP, "Service data addition ret = %d", ret); + if (ret != APP_CONTROL_ERROR_NONE) + goto error; + + noti_err = notification_set_launch_option(noti, + NOTIFICATION_LAUNCH_OPTION_APP_CONTROL, service_handle); + if (noti_err != NOTIFICATION_ERROR_NONE) { + log_print(NET_POPUP, "fail to notification_set_launch_option"); + goto error; + } + + noti_err = notification_post(noti); + if (noti_err != NOTIFICATION_ERROR_NONE) { + log_print(NET_POPUP, "fail to notification_post"); + goto error; + } + + log_print(NET_POPUP, "Successfully added notification"); + +error: + g_free(mac); + if (noti != NULL) + notification_free(noti); + + if (service_handle != NULL) + app_control_destroy(service_handle); +} + static void __net_popup_add_portal_noti(app_control_h request) { log_print(NET_POPUP, "__net_popup_add_portal_noti()\n"); @@ -1972,6 +2119,21 @@ error: app_control_destroy(service_handle); } +static void __net_popup_del_ip_conflict_noti(void) +{ + log_print(NET_POPUP, "__net_popup_del_ip_conflict_noti()\n"); + + notification_error_e noti_err = NOTIFICATION_ERROR_NONE; + + noti_err = notification_delete_all(NOTIFICATION_TYPE_NOTI); + if (noti_err != NOTIFICATION_ERROR_NONE) { + log_print(NET_POPUP, "fail to notification_delete_all"); + return; + } + + log_print(NET_POPUP, "Successfully deleted notification"); +} + static void __net_popup_del_portal_noti(void) { log_print(NET_POPUP, "__net_popup_del_portal_noti()\n"); -- 2.7.4