static void add_access_point (GisNetworkPage *page, NMAccessPoint *ap, NMAccessPoint *active) { GisNetworkPagePrivate *priv = page->priv; const GByteArray *ssid; const gchar *ssid_text; const gchar *object_path; GtkTreeIter iter; gboolean activated, activating; ssid = nm_access_point_get_ssid (ap); object_path = nm_object_get_path (NM_OBJECT (ap)); if (ssid == NULL) return; ssid_text = nm_utils_escape_ssid (ssid->data, ssid->len); if (active && nm_utils_same_ssid (ssid, nm_access_point_get_ssid (active), TRUE)) { switch (nm_device_get_state (priv->nm_device)) { case NM_DEVICE_STATE_PREPARE: case NM_DEVICE_STATE_CONFIG: case NM_DEVICE_STATE_NEED_AUTH: case NM_DEVICE_STATE_IP_CONFIG: case NM_DEVICE_STATE_SECONDARIES: activated = FALSE; activating = TRUE; break; case NM_DEVICE_STATE_ACTIVATED: activated = TRUE; activating = FALSE; break; default: activated = FALSE; activating = FALSE; break; } } else { activated = FALSE; activating = FALSE; } gtk_list_store_append (priv->ap_list, &iter); gtk_list_store_set (priv->ap_list, &iter, PANEL_WIRELESS_COLUMN_ID, object_path, PANEL_WIRELESS_COLUMN_TITLE, ssid_text, PANEL_WIRELESS_COLUMN_STRENGTH, nm_access_point_get_strength (ap), PANEL_WIRELESS_COLUMN_MODE, nm_access_point_get_mode (ap), PANEL_WIRELESS_COLUMN_SECURITY, get_access_point_security (ap), PANEL_WIRELESS_COLUMN_ACTIVATING, activating, PANEL_WIRELESS_COLUMN_ACTIVE, activated, PANEL_WIRELESS_COLUMN_PULSE, priv->pulse, -1); if (activating) { GtkTreePath *path; GtkTreeModel *model; model = (GtkTreeModel*)priv->ap_list; path = gtk_tree_model_get_path (model, &iter); priv->row = gtk_tree_row_reference_new (model, path); gtk_tree_path_free (path); g_timeout_add (160, bump_pulse, page); } }
static void add_access_point (GisNetworkPage *page, NMAccessPoint *ap, NMAccessPoint *active) { GisNetworkPagePrivate *priv = gis_network_page_get_instance_private (page); const GByteArray *ssid; gchar *ssid_text; const gchar *object_path; gboolean activated, activating; guint security; guint strength; const gchar *icon_name; GtkWidget *row; GtkWidget *widget; GtkWidget *box; ssid = nm_access_point_get_ssid (ap); object_path = nm_object_get_path (NM_OBJECT (ap)); if (ssid == NULL) return; ssid_text = nm_utils_ssid_to_utf8 (ssid); if (active && nm_utils_same_ssid (ssid, nm_access_point_get_ssid (active), TRUE)) { switch (nm_device_get_state (priv->nm_device)) { case NM_DEVICE_STATE_PREPARE: case NM_DEVICE_STATE_CONFIG: case NM_DEVICE_STATE_NEED_AUTH: case NM_DEVICE_STATE_IP_CONFIG: case NM_DEVICE_STATE_SECONDARIES: activated = FALSE; activating = TRUE; break; case NM_DEVICE_STATE_ACTIVATED: activated = TRUE; activating = FALSE; break; default: activated = FALSE; activating = FALSE; break; } } else { activated = FALSE; activating = FALSE; } security = get_access_point_security (ap); strength = nm_access_point_get_strength (ap); row = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); gtk_widget_set_margin_start (row, 12); gtk_widget_set_margin_end (row, 12); widget = gtk_label_new (ssid_text); gtk_widget_set_margin_top (widget, 12); gtk_widget_set_margin_bottom (widget, 12); gtk_box_pack_start (GTK_BOX (row), widget, FALSE, FALSE, 0); if (activated) { widget = gtk_image_new_from_icon_name ("object-select-symbolic", GTK_ICON_SIZE_MENU); gtk_widget_set_halign (widget, GTK_ALIGN_CENTER); gtk_widget_set_valign (widget, GTK_ALIGN_CENTER); gtk_box_pack_start (GTK_BOX (row), widget, FALSE, FALSE, 0); } widget = gtk_spinner_new (); gtk_widget_set_no_show_all (widget, TRUE); if (activating) { gtk_widget_show (widget); gtk_spinner_start (GTK_SPINNER (widget)); } gtk_widget_set_halign (widget, GTK_ALIGN_CENTER); gtk_widget_set_valign (widget, GTK_ALIGN_CENTER); gtk_box_pack_start (GTK_BOX (row), widget, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (row), gtk_label_new (""), TRUE, FALSE, 0); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_set_homogeneous (GTK_BOX (box), TRUE); gtk_size_group_add_widget (priv->icons, box); gtk_box_pack_start (GTK_BOX (row), box, FALSE, FALSE, 0); if (security != NM_AP_SEC_UNKNOWN && security != NM_AP_SEC_NONE) { widget = gtk_image_new_from_icon_name ("network-wireless-encrypted-symbolic", GTK_ICON_SIZE_MENU); } else { widget = gtk_label_new (""); } gtk_box_pack_start (GTK_BOX (box), widget, FALSE, FALSE, 0); if (strength < 20) icon_name = "network-wireless-signal-none-symbolic"; else if (strength < 40) icon_name = "network-wireless-signal-weak-symbolic"; else if (strength < 50) icon_name = "network-wireless-signal-ok-symbolic"; else if (strength < 80) icon_name = "network-wireless-signal-good-symbolic"; else icon_name = "network-wireless-signal-excellent-symbolic"; widget = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_MENU); gtk_box_pack_start (GTK_BOX (box), widget, FALSE, FALSE, 0); gtk_widget_show_all (row); g_object_set_data (G_OBJECT (row), "object-path", (gpointer) object_path); g_object_set_data (G_OBJECT (row), "ssid", (gpointer) ssid); g_object_set_data (G_OBJECT (row), "strength", GUINT_TO_POINTER (strength)); gtk_container_add (GTK_CONTAINER (priv->network_list), row); }