diff options
author | Dan Williams <dcbw@redhat.com> | 2015-02-16 15:21:02 -0600 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2015-02-16 15:21:02 -0600 |
commit | 0c3600238bb2da31af48d7184df5cf3ddebec2b8 (patch) | |
tree | 53d016205b4cb097ecc59594f285e018ce9649df | |
parent | 8beedc3e565b343aeb36aed96741044040011c3d (diff) | |
download | network-manager-applet-0c3600238bb2da31af48d7184df5cf3ddebec2b8.tar.gz |
applet: clean up NMNetworkMenuItem
-rw-r--r-- | src/ap-menu-item.c | 166 | ||||
-rw-r--r-- | src/ap-menu-item.h | 22 |
2 files changed, 95 insertions, 93 deletions
diff --git a/src/ap-menu-item.c b/src/ap-menu-item.c index 69218a76..3f180299 100644 --- a/src/ap-menu-item.c +++ b/src/ap-menu-item.c @@ -36,60 +36,70 @@ G_DEFINE_TYPE (NMNetworkMenuItem, nm_network_menu_item, GTK_TYPE_IMAGE_MENU_ITEM); +#define NM_NETWORK_MENU_ITEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_NETWORK_MENU_ITEM, NMNetworkMenuItemPrivate)) + +typedef struct { + GtkWidget * ssid; + char * ssid_string; + GtkWidget * strength; + guint32 int_strength; + GtkWidget * detail; + GtkWidget * hbox; + gchar * hash; + GSList * dupes; + gboolean has_connections; + gboolean is_adhoc; + gboolean is_encrypted; +} NMNetworkMenuItemPrivate; + static void -nm_network_menu_item_init (NMNetworkMenuItem * item) +nm_network_menu_item_init (NMNetworkMenuItem *item) { - item->hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); - item->ssid = gtk_label_new (NULL); - gtk_misc_set_alignment (GTK_MISC (item->ssid), 0.0, 0.5); + NMNetworkMenuItemPrivate *priv = NM_NETWORK_MENU_ITEM_GET_PRIVATE (item); + + priv->hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); + priv->ssid = gtk_label_new (NULL); + gtk_misc_set_alignment (GTK_MISC (priv->ssid), 0.0, 0.5); - item->detail = gtk_image_new (); + priv->detail = gtk_image_new (); - gtk_container_add (GTK_CONTAINER (item), item->hbox); - gtk_box_pack_start (GTK_BOX (item->hbox), item->ssid, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (item->hbox), item->detail, FALSE, FALSE, 0); + gtk_container_add (GTK_CONTAINER (item), priv->hbox); + gtk_box_pack_start (GTK_BOX (priv->hbox), priv->ssid, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (priv->hbox), priv->detail, FALSE, FALSE, 0); - item->strength = gtk_image_new (); - gtk_box_pack_end (GTK_BOX (item->hbox), item->strength, FALSE, TRUE, 0); + priv->strength = gtk_image_new (); + gtk_box_pack_end (GTK_BOX (priv->hbox), priv->strength, FALSE, TRUE, 0); - gtk_widget_show (item->ssid); - gtk_widget_show (item->strength); - gtk_widget_show (item->detail); - gtk_widget_show (item->hbox); + gtk_widget_show (priv->ssid); + gtk_widget_show (priv->strength); + gtk_widget_show (priv->detail); + gtk_widget_show (priv->hbox); } GtkWidget* nm_network_menu_item_new (const char *hash, gboolean has_connections) { - NMNetworkMenuItem * item; + NMNetworkMenuItem *item; item = g_object_new (NM_TYPE_NETWORK_MENU_ITEM, NULL); - if (item == NULL) - return NULL; - - item->has_connections = has_connections; - item->hash = g_strdup (hash); + g_assert (item); + NM_NETWORK_MENU_ITEM_GET_PRIVATE (item)->has_connections = has_connections; + NM_NETWORK_MENU_ITEM_GET_PRIVATE (item)->hash = g_strdup (hash); return GTK_WIDGET (item); } static void -nm_network_menu_item_dispose (GObject *object) +finalize (GObject *object) { - NMNetworkMenuItem * item = NM_NETWORK_MENU_ITEM (object); + NMNetworkMenuItemPrivate *priv = NM_NETWORK_MENU_ITEM_GET_PRIVATE (object); - if (item->destroyed) { - G_OBJECT_CLASS (nm_network_menu_item_parent_class)->dispose (object); - return; - } - - item->destroyed = TRUE; - g_free (item->hash); - g_free (item->ssid_string); + g_free (priv->hash); + g_free (priv->ssid_string); - g_slist_foreach (item->dupes, (GFunc) g_free, NULL); - g_slist_free (item->dupes); + g_slist_foreach (priv->dupes, (GFunc) g_free, NULL); + g_slist_free (priv->dupes); - G_OBJECT_CLASS (nm_network_menu_item_parent_class)->dispose (object); + G_OBJECT_CLASS (nm_network_menu_item_parent_class)->finalize (object); } static void @@ -97,62 +107,67 @@ nm_network_menu_item_class_init (NMNetworkMenuItemClass * klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); + g_type_class_add_private (klass, sizeof (NMNetworkMenuItemPrivate)); + /* virtual methods */ - object_class->dispose = nm_network_menu_item_dispose; + object_class->finalize = finalize; } void nm_network_menu_item_set_ssid (NMNetworkMenuItem *item, GByteArray *ssid) { - g_return_if_fail (item != NULL); + NMNetworkMenuItemPrivate *priv; + g_return_if_fail (NM_IS_NETWORK_MENU_ITEM (item)); g_return_if_fail (ssid != NULL); - g_free (item->ssid_string); + priv = NM_NETWORK_MENU_ITEM_GET_PRIVATE (item); + + g_free (priv->ssid_string); - item->ssid_string = nm_utils_ssid_to_utf8 (ssid); - if (!item->ssid_string) { + priv->ssid_string = nm_utils_ssid_to_utf8 (ssid); + if (!priv->ssid_string) { // FIXME: shouldn't happen; always coerce the SSID to _something_ - item->ssid_string = g_strdup ("<unknown>"); + priv->ssid_string = g_strdup ("<unknown>"); } - gtk_label_set_text (GTK_LABEL (item->ssid), item->ssid_string); + gtk_label_set_text (GTK_LABEL (priv->ssid), priv->ssid_string); } const char * nm_network_menu_item_get_ssid (NMNetworkMenuItem *item) { - g_return_val_if_fail (item != NULL, NULL); g_return_val_if_fail (NM_IS_NETWORK_MENU_ITEM (item), NULL); - return item->ssid_string; + return NM_NETWORK_MENU_ITEM_GET_PRIVATE (item)->ssid_string; } guint32 -nm_network_menu_item_get_strength (NMNetworkMenuItem * item) +nm_network_menu_item_get_strength (NMNetworkMenuItem *item) { - g_return_val_if_fail (item != NULL, 0); g_return_val_if_fail (NM_IS_NETWORK_MENU_ITEM (item), 0); - return item->int_strength; + return NM_NETWORK_MENU_ITEM_GET_PRIVATE (item)->int_strength; } void -nm_network_menu_item_best_strength (NMNetworkMenuItem * item, +nm_network_menu_item_best_strength (NMNetworkMenuItem *item, guint8 strength, NMApplet *applet) { + NMNetworkMenuItemPrivate *priv; GdkPixbuf *icon = NULL, *pixbuf, *top; - g_return_if_fail (item != NULL); g_return_if_fail (NM_IS_NETWORK_MENU_ITEM (item)); + priv = NM_NETWORK_MENU_ITEM_GET_PRIVATE (item); + strength = MIN (strength, 100); /* Just do nothing if the new strength is less */ - if (strength < item->int_strength) + if (strength < priv->int_strength) return; - item->int_strength = strength; + priv->int_strength = strength; if (strength > 80) icon = nma_icon_check_and_load ("nm-signal-100", applet); @@ -168,7 +183,7 @@ nm_network_menu_item_best_strength (NMNetworkMenuItem * item, pixbuf = gdk_pixbuf_copy (icon); /* If the AP is "secure", composite the lock icon on top of the signal bars */ - if (item->is_encrypted) { + if (priv->is_encrypted) { top = nma_icon_check_and_load ("nm-secure-lock", applet); gdk_pixbuf_composite (top, pixbuf, 0, 0, gdk_pixbuf_get_width (top), gdk_pixbuf_get_height (top), @@ -185,17 +200,16 @@ nm_network_menu_item_best_strength (NMNetworkMenuItem * item, pixbuf = scaled; } - gtk_image_set_from_pixbuf (GTK_IMAGE (item->strength), pixbuf); + gtk_image_set_from_pixbuf (GTK_IMAGE (priv->strength), pixbuf); g_object_unref (pixbuf); } const char * -nm_network_menu_item_get_hash (NMNetworkMenuItem * item) +nm_network_menu_item_get_hash (NMNetworkMenuItem *item) { - g_return_val_if_fail (item != NULL, NULL); g_return_val_if_fail (NM_IS_NETWORK_MENU_ITEM (item), NULL); - return item->hash; + return NM_NETWORK_MENU_ITEM_GET_PRIVATE (item)->hash; } void @@ -204,32 +218,34 @@ nm_network_menu_item_set_detail (NMNetworkMenuItem *item, GdkPixbuf *adhoc_icon, guint32 dev_caps) { + NMNetworkMenuItemPrivate *priv; gboolean is_adhoc = FALSE; guint32 ap_flags, ap_wpa, ap_rsn; - g_return_if_fail (item != NULL); g_return_if_fail (NM_IS_NETWORK_MENU_ITEM (item)); + priv = NM_NETWORK_MENU_ITEM_GET_PRIVATE (item); + ap_flags = nm_access_point_get_flags (ap); ap_wpa = nm_access_point_get_wpa_flags (ap); ap_rsn = nm_access_point_get_rsn_flags (ap); if ((ap_flags & NM_802_11_AP_FLAGS_PRIVACY) || ap_wpa || ap_rsn) - item->is_encrypted = TRUE; + priv->is_encrypted = TRUE; if (nm_access_point_get_mode (ap) == NM_802_11_MODE_ADHOC) { GdkPixbuf *scaled = NULL; - item->is_adhoc = is_adhoc = TRUE; + priv->is_adhoc = is_adhoc = TRUE; if (gdk_pixbuf_get_height (adhoc_icon) > 24 || gdk_pixbuf_get_width (adhoc_icon) > 24) scaled = gdk_pixbuf_scale_simple (adhoc_icon, 24, 24, GDK_INTERP_BILINEAR); - gtk_image_set_from_pixbuf (GTK_IMAGE (item->detail), scaled ? scaled : adhoc_icon); + gtk_image_set_from_pixbuf (GTK_IMAGE (priv->detail), scaled ? scaled : adhoc_icon); g_clear_object (&scaled); } else - gtk_image_set_from_stock (GTK_IMAGE (item->detail), NULL, GTK_ICON_SIZE_MENU); + gtk_image_set_from_stock (GTK_IMAGE (priv->detail), NULL, GTK_ICON_SIZE_MENU); /* Don't enable the menu item the device can't even connect to the AP */ if ( !nm_utils_security_valid (NMU_SEC_NONE, dev_caps, TRUE, is_adhoc, ap_flags, ap_wpa, ap_rsn) @@ -247,15 +263,17 @@ nm_network_menu_item_set_detail (NMNetworkMenuItem *item, gboolean nm_network_menu_item_find_dupe (NMNetworkMenuItem *item, NMAccessPoint *ap) { + NMNetworkMenuItemPrivate *priv; const char *path; GSList *iter; - g_return_val_if_fail (item != NULL, FALSE); g_return_val_if_fail (NM_IS_NETWORK_MENU_ITEM (item), FALSE); g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), FALSE); + priv = NM_NETWORK_MENU_ITEM_GET_PRIVATE (item); + path = nm_object_get_path (NM_OBJECT (ap)); - for (iter = item->dupes; iter; iter = g_slist_next (iter)) { + for (iter = priv->dupes; iter; iter = g_slist_next (iter)) { if (!strcmp (path, iter->data)) return TRUE; } @@ -265,57 +283,57 @@ nm_network_menu_item_find_dupe (NMNetworkMenuItem *item, NMAccessPoint *ap) void nm_network_menu_item_set_active (NMNetworkMenuItem *item, gboolean active) { + NMNetworkMenuItemPrivate *priv; char *markup; - g_return_if_fail (item != NULL); g_return_if_fail (NM_IS_NETWORK_MENU_ITEM (item)); - gtk_label_set_use_markup (GTK_LABEL (item->ssid), active); + priv = NM_NETWORK_MENU_ITEM_GET_PRIVATE (item); + + gtk_label_set_use_markup (GTK_LABEL (priv->ssid), active); if (active) { - markup = g_markup_printf_escaped ("<b>%s</b>", item->ssid_string); - gtk_label_set_markup (GTK_LABEL (item->ssid), markup); + markup = g_markup_printf_escaped ("<b>%s</b>", priv->ssid_string); + gtk_label_set_markup (GTK_LABEL (priv->ssid), markup); g_free (markup); } else - gtk_label_set_text (GTK_LABEL (item->ssid), item->ssid_string); + gtk_label_set_text (GTK_LABEL (priv->ssid), priv->ssid_string); } void nm_network_menu_item_add_dupe (NMNetworkMenuItem *item, NMAccessPoint *ap) { + NMNetworkMenuItemPrivate *priv; const char *path; - g_return_if_fail (item != NULL); g_return_if_fail (NM_IS_NETWORK_MENU_ITEM (item)); g_return_if_fail (NM_IS_ACCESS_POINT (ap)); + priv = NM_NETWORK_MENU_ITEM_GET_PRIVATE (item); path = nm_object_get_path (NM_OBJECT (ap)); - item->dupes = g_slist_prepend (item->dupes, g_strdup (path)); + priv->dupes = g_slist_prepend (priv->dupes, g_strdup (path)); } gboolean nm_network_menu_item_get_has_connections (NMNetworkMenuItem *item) { - g_return_val_if_fail (item != NULL, FALSE); g_return_val_if_fail (NM_IS_NETWORK_MENU_ITEM (item), FALSE); - return item->has_connections; + return NM_NETWORK_MENU_ITEM_GET_PRIVATE (item)->has_connections; } gboolean nm_network_menu_item_get_is_adhoc (NMNetworkMenuItem *item) { - g_return_val_if_fail (item != NULL, FALSE); g_return_val_if_fail (NM_IS_NETWORK_MENU_ITEM (item), FALSE); - return item->is_adhoc; + return NM_NETWORK_MENU_ITEM_GET_PRIVATE (item)->is_adhoc; } gboolean nm_network_menu_item_get_is_encrypted (NMNetworkMenuItem *item) { - g_return_val_if_fail (item != NULL, FALSE); g_return_val_if_fail (NM_IS_NETWORK_MENU_ITEM (item), FALSE); - return item->is_encrypted; + return NM_NETWORK_MENU_ITEM_GET_PRIVATE (item)->is_encrypted; } diff --git a/src/ap-menu-item.h b/src/ap-menu-item.h index d1b478ba..a8871d1f 100644 --- a/src/ap-menu-item.h +++ b/src/ap-menu-item.h @@ -39,27 +39,11 @@ typedef struct _NMNetworkMenuItem NMNetworkMenuItem; typedef struct _NMNetworkMenuItemClass NMNetworkMenuItemClass; -struct _NMNetworkMenuItem -{ - GtkImageMenuItem image_item; - - /*< private >*/ - GtkWidget * ssid; - char * ssid_string; - GtkWidget * strength; - guint32 int_strength; - GtkWidget * detail; - GtkWidget * hbox; - gchar * hash; - gboolean destroyed; - GSList * dupes; - gboolean has_connections; - gboolean is_adhoc; - gboolean is_encrypted; +struct _NMNetworkMenuItem { + GtkImageMenuItem parent; }; -struct _NMNetworkMenuItemClass -{ +struct _NMNetworkMenuItemClass { GtkImageMenuItemClass parent_class; }; |