static void finalize (GObject *object) { g_free (NM_MB_MENU_ITEM_GET_PRIVATE (object)->desc_string); G_OBJECT_CLASS (nm_mb_menu_item_parent_class)->finalize (object); }
static void update_label (NMMbMenuItem *item, gboolean use_bold) { NMMbMenuItemPrivate *priv = NM_MB_MENU_ITEM_GET_PRIVATE (item); gtk_label_set_use_markup (GTK_LABEL (priv->desc), use_bold); if (use_bold) { char *markup = g_markup_printf_escaped ("<b>%s</b>", priv->desc_string); gtk_label_set_markup (GTK_LABEL (priv->desc), markup); g_free (markup); } else gtk_label_set_text (GTK_LABEL (priv->desc), priv->desc_string); }
static void dispose (GObject *object) { NMMbMenuItem *self = NM_MB_MENU_ITEM (object); NMMbMenuItemPrivate *priv = NM_MB_MENU_ITEM_GET_PRIVATE (self); if (priv->destroyed) { G_OBJECT_CLASS (nm_mb_menu_item_parent_class)->dispose (object); return; } priv->destroyed = TRUE; gtk_widget_destroy (priv->desc); gtk_widget_destroy (priv->strength); gtk_widget_destroy (priv->hbox); G_OBJECT_CLASS (nm_mb_menu_item_parent_class)->dispose (object); }
static void nm_mb_menu_item_init (NMMbMenuItem *self) { NMMbMenuItemPrivate *priv = NM_MB_MENU_ITEM_GET_PRIVATE (self); priv->hbox = gtk_hbox_new (FALSE, 6); priv->desc = gtk_label_new (NULL); gtk_misc_set_alignment (GTK_MISC (priv->desc), 0.0, 0.5); gtk_container_add (GTK_CONTAINER (self), priv->hbox); gtk_box_pack_start (GTK_BOX (priv->hbox), priv->desc, TRUE, TRUE, 0); priv->strength = gtk_image_new (); gtk_box_pack_end (GTK_BOX (priv->hbox), priv->strength, FALSE, TRUE, 0); gtk_widget_show (priv->desc); gtk_widget_show (priv->strength); gtk_widget_show (priv->hbox); }
GtkWidget * nm_mb_menu_item_new (const char *connection_name, guint32 strength, const char *provider, guint32 technology, guint32 state, gboolean enabled, NMApplet *applet) { NMMbMenuItem *item; NMMbMenuItemPrivate *priv; const char *tech_name; item = g_object_new (NM_TYPE_MB_MENU_ITEM, NULL); if (!item) return NULL; priv = NM_MB_MENU_ITEM_GET_PRIVATE (item); priv->int_strength = strength; /* Construct the description string */ tech_name = get_tech_name (technology); switch (state) { default: case MB_STATE_UNKNOWN: priv->desc_string = g_strdup (_("not enabled")); break; case MB_STATE_IDLE: if (connection_name) priv->desc_string = g_strdup (connection_name); else priv->desc_string = g_strdup (_("not registered")); break; case MB_STATE_HOME: if (connection_name) { if (provider && tech_name) priv->desc_string = g_strdup_printf ("%s (%s %s)", connection_name, provider, tech_name); else if (provider || tech_name) priv->desc_string = g_strdup_printf ("%s (%s)", connection_name, provider ? provider : tech_name); else priv->desc_string = g_strdup_printf ("%s", connection_name); } else { if (provider) { if (tech_name) priv->desc_string = g_strdup_printf ("%s %s", provider, tech_name); else priv->desc_string = g_strdup_printf ("%s", provider); } else { if (tech_name) priv->desc_string = g_strdup_printf (_("Home network (%s)"), tech_name); else priv->desc_string = g_strdup_printf (_("Home network")); } } break; case MB_STATE_SEARCHING: if (connection_name) priv->desc_string = g_strdup (connection_name); else priv->desc_string = g_strdup (_("searching")); break; case MB_STATE_DENIED: priv->desc_string = g_strdup (_("registration denied")); break; case MB_STATE_ROAMING: if (connection_name) { if (tech_name) priv->desc_string = g_strdup_printf (_("%s (%s roaming)"), connection_name, tech_name); else priv->desc_string = g_strdup_printf (_("%s (roaming)"), connection_name); } else { if (provider) { if (tech_name) priv->desc_string = g_strdup_printf (_("%s (%s roaming)"), provider, tech_name); else priv->desc_string = g_strdup_printf (_("%s (roaming)"), provider); } else { if (tech_name) priv->desc_string = g_strdup_printf (_("Roaming network (%s)"), tech_name); else priv->desc_string = g_strdup_printf (_("Roaming network")); } } break; } /* Assume a connection name means the label should be active */ if (enabled && connection_name) { char *markup; gtk_label_set_use_markup (GTK_LABEL (priv->desc), TRUE); markup = g_markup_printf_escaped ("<b>%s</b>", priv->desc_string); gtk_label_set_markup (GTK_LABEL (priv->desc), markup); g_free (markup); gtk_widget_set_sensitive (GTK_WIDGET (item), TRUE); } else { /* Disconnected and disabled states */ gtk_label_set_use_markup (GTK_LABEL (priv->desc), FALSE); gtk_label_set_text (GTK_LABEL (priv->desc), priv->desc_string); gtk_widget_set_sensitive (GTK_WIDGET (item), FALSE); } /* And the strength icon, if we have strength information at all */ if (enabled && strength) { gtk_image_set_from_pixbuf (GTK_IMAGE (priv->strength), mobile_helper_get_quality_icon (strength, applet)); } return GTK_WIDGET (item); }
GtkWidget * nm_mb_menu_item_new (const char *connection_name, guint32 strength, const char *provider, gboolean active, guint32 technology, guint32 state, gboolean enabled, NMApplet *applet) { NMMbMenuItem *item; NMMbMenuItemPrivate *priv; const char *tech_name; item = g_object_new (NM_TYPE_MB_MENU_ITEM, NULL); g_assert (item); priv = NM_MB_MENU_ITEM_GET_PRIVATE (item); priv->int_strength = strength; tech_name = get_tech_name (technology); /* Construct the description string */ switch (state) { default: case MB_STATE_UNKNOWN: priv->desc_string = g_strdup (_("not enabled")); break; case MB_STATE_IDLE: if (connection_name) priv->desc_string = g_strdup (connection_name); else priv->desc_string = g_strdup (_("not registered")); break; case MB_STATE_HOME: if (connection_name) { if (provider && tech_name) priv->desc_string = g_strdup_printf ("%s (%s %s)", connection_name, provider, tech_name); else if (provider || tech_name) priv->desc_string = g_strdup_printf ("%s (%s)", connection_name, provider ? provider : tech_name); else priv->desc_string = g_strdup_printf ("%s", connection_name); } else { if (provider) { if (tech_name) priv->desc_string = g_strdup_printf ("%s %s", provider, tech_name); else priv->desc_string = g_strdup_printf ("%s", provider); } else { if (tech_name) priv->desc_string = g_strdup_printf (_("Home network (%s)"), tech_name); else priv->desc_string = g_strdup_printf (_("Home network")); } } break; case MB_STATE_SEARCHING: if (connection_name) priv->desc_string = g_strdup (connection_name); else priv->desc_string = g_strdup (_("searching")); break; case MB_STATE_DENIED: priv->desc_string = g_strdup (_("registration denied")); break; case MB_STATE_ROAMING: if (connection_name) { if (tech_name) priv->desc_string = g_strdup_printf (_("%s (%s roaming)"), connection_name, tech_name); else priv->desc_string = g_strdup_printf (_("%s (roaming)"), connection_name); } else { if (provider) { if (tech_name) priv->desc_string = g_strdup_printf (_("%s (%s roaming)"), provider, tech_name); else priv->desc_string = g_strdup_printf (_("%s (roaming)"), provider); } else { if (tech_name) priv->desc_string = g_strdup_printf (_("Roaming network (%s)"), tech_name); else priv->desc_string = g_strdup_printf (_("Roaming network")); } } break; } update_label (item, (enabled && connection_name && active)); /* And the strength icon, if we have strength information at all */ if (enabled && strength) { const char *icon_name = mobile_helper_get_quality_icon_name (strength); gtk_image_set_from_pixbuf (GTK_IMAGE (priv->strength), nma_icon_check_and_load (icon_name, applet)); } return GTK_WIDGET (item); }