IP conflict show and remove notification handling 93/161993/1 accepted/tizen/unified/20171204.072227 submit/tizen/20171130.074734
authorAbhishek Sansanwal <abhishek.s94@samsung.com>
Tue, 28 Nov 2017 11:13:23 +0000 (16:43 +0530)
committerAbhishek Sansanwal <abhishek.s94@samsung.com>
Tue, 28 Nov 2017 11:15:52 +0000 (16:45 +0530)
Signed-off-by: Abhishek Sansanwal <abhishek.s94@samsung.com>
Change-Id: I1b6299d2bf410eb72b753f46a26e6914e4f8a891

po/en_US.po
src/net-popup.c

index 4534b3787ce1f4dc09dd776b5ff73f3c15caa8a0..dff0e6ca3c6a6edfc00d4b5d94fae383293e4609 100755 (executable)
@@ -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"
 
index 77ff1c2752c848d0d6f608f685c326fb126bf59f..0c2ecf261bd796893233b2ed013beab942f6ebaf 100755 (executable)
@@ -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, &noti_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");