From ce1a341ff5929ded77d69c70bf98d5915a16780b Mon Sep 17 00:00:00 2001 From: Jonathan Blandford Date: Tue, 12 Oct 2004 19:26:29 +0000 Subject: [PATCH] Fri Oct 8 07:19:55 2004 Jonathan Blandford * panel-applet/NMWirelessAppletDbus.c (nmwa_dbus_get_double): (nmwa_dbus_get_string): remove unused functions * panel-applet/NMWirelessApplet.c (nmwa_about_cb): (nmwa_cancel_timeout), (nmwa_get_menu_pos), (nmwa_factory): remove unused functions * panel-applet/NMWirelessApplet.c: Rewrite icon code. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@217 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 12 +- configure.in | 2 +- panel-applet/.cvsignore | 3 +- panel-applet/NMWirelessApplet.c | 560 ++++++++++--------------- panel-applet/NMWirelessApplet.h | 50 +-- panel-applet/NMWirelessAppletDbus.c | 62 +-- panel-applet/icons/Makefile.am | 30 +- panel-applet/icons/nm-device-wired.png | Bin 3766 -> 828 bytes panel-applet/icons/nm-signal-00.png | Bin 0 -> 512 bytes panel-applet/icons/nm-signal-100.png | Bin 0 -> 383 bytes panel-applet/icons/nm-signal-25.png | Bin 0 -> 511 bytes panel-applet/icons/nm-signal-50.png | Bin 0 -> 495 bytes panel-applet/icons/nm-signal-75.png | Bin 0 -> 460 bytes panel-applet/main.c | 2 + 14 files changed, 292 insertions(+), 429 deletions(-) create mode 100644 panel-applet/icons/nm-signal-00.png create mode 100644 panel-applet/icons/nm-signal-100.png create mode 100644 panel-applet/icons/nm-signal-25.png create mode 100644 panel-applet/icons/nm-signal-50.png create mode 100644 panel-applet/icons/nm-signal-75.png diff --git a/ChangeLog b/ChangeLog index 5ab79d2a7f..9b6e37d2b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Fri Oct 8 07:19:55 2004 Jonathan Blandford + + * panel-applet/NMWirelessAppletDbus.c (nmwa_dbus_get_double): + (nmwa_dbus_get_string): remove unused functions + + * panel-applet/NMWirelessApplet.c (nmwa_about_cb): + (nmwa_cancel_timeout), (nmwa_get_menu_pos), (nmwa_factory): + remove unused functions + + * panel-applet/NMWirelessApplet.c: Rewrite icon code. + 2004-10-12 Dan Williams * panel-applet/NMWirelessAppletDbus.c @@ -115,7 +126,6 @@ - Be a bit more robust about link checking, ie make sure that the WEP key we were given actually has some data in it ->>>>>>> 1.127 2004-10-08 Dan Williams * info-daemon/NetworkManagerInfo.c (main): diff --git a/configure.in b/configure.in index 5995f3dc6e..253d7a3556 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,6 @@ AC_PREREQ(2.52) -AC_INIT(NetworkManager, 0.2, dcbw@redhat.com, NetworkManager) +AC_INIT(NetworkManager, 0.3, dcbw@redhat.com, NetworkManager) AM_INIT_AUTOMAKE([subdir-objects]) AM_CONFIG_HEADER(config.h) diff --git a/panel-applet/.cvsignore b/panel-applet/.cvsignore index 14849cb392..c55f9e7f07 100644 --- a/panel-applet/.cvsignore +++ b/panel-applet/.cvsignore @@ -1,4 +1,3 @@ Makefile Makefile.in -NMWirelessApplet.server -NMWirelessApplet +NetworkManagerNotification diff --git a/panel-applet/NMWirelessApplet.c b/panel-applet/NMWirelessApplet.c index eb5ffc7c8c..50a13c4a24 100644 --- a/panel-applet/NMWirelessApplet.c +++ b/panel-applet/NMWirelessApplet.c @@ -51,34 +51,20 @@ #define CFG_UPDATE_INTERVAL 1 #define NM_GCONF_WIRELESS_NETWORKS_PATH "/system/networking/wireless/networks" -static char * pixmap_names[] = -{ - "no-networkmanager.png", - "wired.png", - "no-link-0.png", - "signal-1-40.png", - "signal-41-60.png", - "signal-61-80.png", - "signal-81-100.png", - "connect-0.png", - "connect-1.png", - "connect-2.png", - "connect-3.png", -}; - static char *glade_file; -static void nmwa_about_cb (NMWirelessApplet *applet); - static GtkWidget * nmwa_populate_menu (NMWirelessApplet *applet); static void nmwa_dispose_menu_items (NMWirelessApplet *applet); static gboolean do_not_eat_button_press (GtkWidget *widget, GdkEventButton *event); static GObject * nmwa_constructor (GType type, guint n_props, GObjectConstructParam *construct_props); +static void setup_stock (void); +static void nmwa_icons_init (NMWirelessApplet *applet); +static gboolean nmwa_fill (NMWirelessApplet *applet); #ifndef BUILD_NOTIFICATION_ICON static const BonoboUIVerb nmwa_context_menu_verbs [] = - +{ BONOBO_UI_UNSAFE_VERB ("NMWirelessAbout", nmwa_about_cb), BONOBO_UI_VERB_END }; @@ -86,22 +72,75 @@ static const BonoboUIVerb nmwa_context_menu_verbs [] = G_DEFINE_TYPE(NMWirelessApplet, nmwa, EGG_TYPE_TRAY_ICON) -/* - * nmwa_redraw - * - * Actually update the applet's pixmap so that our panel icon reflects - * the state of the applet - * - */ -static void nmwa_redraw (NMWirelessApplet *applet) + +static void +nmwa_init (NMWirelessApplet *applet) { - if (applet->pixmaps[applet->pix_state] != applet->current_pixbuf) - { - applet->current_pixbuf = (GdkPixbuf *)applet->pixmaps[applet->pix_state]; - gtk_image_set_from_pixbuf (GTK_IMAGE (applet->pixmap), applet->current_pixbuf); - } + applet->animation_id = 0; + applet->animation_step = 0; + + setup_stock (); + nmwa_icons_init (applet); + nmwa_fill (applet); } +static void nmwa_class_init (NMWirelessAppletClass *klass) +{ + GObjectClass *gobject_class; + + gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->constructor = nmwa_constructor; +} + +static GObject *nmwa_constructor (GType type, + guint n_props, + GObjectConstructParam *construct_props) +{ + GObject *obj; + NMWirelessApplet *applet; + NMWirelessAppletClass *klass; + + klass = NM_WIRELESS_APPLET_CLASS (g_type_class_peek (type)); + obj = G_OBJECT_CLASS (nmwa_parent_class)->constructor (type, + n_props, + construct_props); + applet = NM_WIRELESS_APPLET (obj); + + return obj; +} + +static gboolean +animation_timeout (NMWirelessApplet *applet) +{ + switch (applet->applet_state) + { + case (APPLET_STATE_WIRED_CONNECTING): + applet->animation_step ++; + if (applet->animation_step >= NUM_WIRED_CONNECTING_FRAMES) + applet->animation_step = 0; + gtk_image_set_from_pixbuf (GTK_IMAGE (applet->pixmap), + applet->XXwired_connecting_icons[applet->animation_step]); + break; + case (APPLET_STATE_WIRELESS_CONNECTING): + applet->animation_step ++; + if (applet->animation_step >= NUM_WIRELESS_CONNECTING_FRAMES) + applet->animation_step = 0; + gtk_image_set_from_pixbuf (GTK_IMAGE (applet->pixmap), + applet->XXwireless_connecting_icons[applet->animation_step]); + break; + case (APPLET_STATE_WIRELESS_SCANNING): + applet->animation_step ++; + if (applet->animation_step >= NUM_WIRELESS_SCANNING_FRAMES) + applet->animation_step = 0; + gtk_image_set_from_pixbuf (GTK_IMAGE (applet->pixmap), + applet->XXwireless_connecting_icons[applet->animation_step]); + break; + default: + break; + } + return TRUE; +} /* * nmwa_update_state @@ -110,64 +149,98 @@ static void nmwa_redraw (NMWirelessApplet *applet) * and what our icon on the panel should look like for each type. * */ -static void nmwa_update_state (NMWirelessApplet *applet) +static void +nmwa_update_state (NMWirelessApplet *applet) { - switch (applet->applet_state) + gboolean show_applet = TRUE; + gboolean need_animation = FALSE; + GdkPixbuf *pixbuf = NULL; + gint strength = -1; + + g_mutex_lock (applet->data_mutex); + if (applet->active_device) + { + GSList *list; + for (list = applet->active_device->networks; list; list = list->next) { - case (APPLET_STATE_NO_NM): - applet->pix_state = PIX_NO_NETWORKMANAGER; - break; + WirelessNetwork *network; - case (APPLET_STATE_NO_CONNECTION): - applet->pix_state = PIX_WIRED; /* FIXME: get a "no connection" picture */ - break; - - case (APPLET_STATE_WIRED): - case (APPLET_STATE_WIRED_CONNECTING): - applet->pix_state = PIX_WIRED; - break; - - case (APPLET_STATE_WIRELESS): - g_mutex_lock (applet->data_mutex); - if (applet->active_device) - { - if (applet->active_device->strength > 75) - applet->pix_state = PIX_WIRELESS_SIGNAL_4; - else if (applet->active_device->strength > 50) - applet->pix_state = PIX_WIRELESS_SIGNAL_3; - else if (applet->active_device->strength > 25) - applet->pix_state = PIX_WIRELESS_SIGNAL_2; - else if (applet->active_device->strength > 0) - applet->pix_state = PIX_WIRELESS_SIGNAL_1; - else - applet->pix_state = PIX_WIRELESS_NO_LINK; - } - g_mutex_unlock (applet->data_mutex); - break; - - case (APPLET_STATE_WIRELESS_CONNECTING): - if (applet->pix_state < PIX_WIRELESS_CONNECT_0) - applet->pix_state = PIX_WIRELESS_CONNECT_0; - else if (applet->pix_state >= PIX_WIRELESS_CONNECT_3) - applet->pix_state = PIX_WIRELESS_CONNECT_0; - else - applet->pix_state++; - break; - - default: - break; + network = (WirelessNetwork *) list->data; + if (network->active) + strength = CLAMP ((int) network->strength, 0, 100); } - /*determine if we should hide the notification icon*/ - gtk_widget_show (GTK_WIDGET (applet)); - if (g_list_length (applet->devices) == 1 && - applet->applet_state != APPLET_STATE_NO_NM) { - NetworkDevice *nwd; - nwd = (NetworkDevice *)applet->devices->data; + if (strength == -1) + strength = applet->active_device->strength; - if (nwd->type == DEVICE_TYPE_WIRED_ETHERNET) - gtk_widget_hide (GTK_WIDGET (applet)); + } + + if (g_slist_length (applet->devices) == 1 && + applet->applet_state != APPLET_STATE_NO_NM) + { + if (((NetworkDevice *)applet->devices->data)->type == DEVICE_TYPE_WIRED_ETHERNET) + show_applet = FALSE; + } + g_mutex_unlock (applet->data_mutex); + + g_print ("%d\n", applet->applet_state); + switch (applet->applet_state) + { + case (APPLET_STATE_NO_NM): + pixbuf = applet->XXno_nm_icon; + break; + case (APPLET_STATE_NO_CONNECTION): + show_applet = FALSE; + break; + case (APPLET_STATE_WIRED): + pixbuf = applet->XXwired_icon; + break; + case (APPLET_STATE_WIRED_CONNECTING): + applet->animation_step = CLAMP (applet->animation_step, 0, NUM_WIRED_CONNECTING_FRAMES - 1); + pixbuf = applet->XXwired_connecting_icons[applet->animation_step]; + need_animation = TRUE; + break; + case (APPLET_STATE_WIRELESS): + if (applet->active_device) + { + if (strength > 75) + pixbuf = applet->XXwireless_100_icon; + else if (strength > 50) + pixbuf = applet->XXwireless_75_icon; + else if (strength > 25) + pixbuf = applet->XXwireless_50_icon; + else if (strength > 0) + pixbuf = applet->XXwireless_25_icon; + else + pixbuf = applet->XXwireless_00_icon; } + break; + case (APPLET_STATE_WIRELESS_CONNECTING): + applet->animation_step = CLAMP (applet->animation_step, 0, NUM_WIRELESS_CONNECTING_FRAMES - 1); + pixbuf = applet->XXwireless_connecting_icons[applet->animation_step]; + need_animation = TRUE; + break; + case (APPLET_STATE_WIRELESS_SCANNING): + applet->animation_step = CLAMP (applet->animation_step, 0, NUM_WIRELESS_SCANNING_FRAMES - 1); + pixbuf = applet->XXwireless_scanning_icons[applet->animation_step]; + need_animation = TRUE; + default: + break; + } + + /*determine if we should hide the notification icon*/ + gtk_image_set_from_pixbuf (GTK_IMAGE (applet->pixmap), pixbuf); + + if (show_applet) + gtk_widget_show (GTK_WIDGET (applet)); + else + gtk_widget_hide (GTK_WIDGET (applet)); + + if (applet->animation_id) + g_source_remove (applet->animation_id); + if (need_animation) + applet->animation_id = + g_timeout_add (125, animation_timeout, applet); } @@ -176,60 +249,20 @@ static void nmwa_update_state (NMWirelessApplet *applet) * * Called regularly to update the applet's state and icon in the panel * - */ + */ static int nmwa_redraw_timeout (NMWirelessApplet *applet) { nmwa_update_state (applet); - nmwa_redraw (applet); return (TRUE); } static void nmwa_start_redraw_timeout (NMWirelessApplet *applet) { - applet->redraw_timeout_id = g_timeout_add (CFG_UPDATE_INTERVAL * 1000, - (GtkFunction)nmwa_redraw_timeout, applet); + applet->redraw_timeout_id = + g_timeout_add (CFG_UPDATE_INTERVAL * 1000, (GtkFunction) nmwa_redraw_timeout, applet); } -static void nmwa_cancel_timeout (NMWirelessApplet *applet) -{ - g_source_remove (applet->redraw_timeout_id); - applet->redraw_timeout_id = -1; - nmwa_update_state (applet); - nmwa_redraw (applet); -} - - -static void nmwa_load_theme (NMWirelessApplet *applet) -{ - char *pixmapdir; - char *pixmapname; - int i; - GError *error = NULL; - - pixmapdir = gnome_program_locate_file (NULL, GNOME_FILE_DOMAIN_PIXMAP, - "NMWirelessApplet/", FALSE, NULL); - - for (i = 0; i < PIX_NUMBER; i++) - { - pixmapname = g_build_filename (G_DIR_SEPARATOR_S, - pixmapdir, pixmap_names[i], NULL); - applet->pixmaps[i] = gdk_pixbuf_new_from_file_at_size (pixmapname, 32, 16, NULL); - g_free (pixmapname); - } - - pixmapname = g_build_filename (G_DIR_SEPARATOR_S, pixmapdir, "keyring.png", NULL); - applet->key_pixbuf = gdk_pixbuf_new_from_file_at_size (pixmapname, 16, 16, &error); - g_free (pixmapname); - pixmapname = g_build_filename (G_DIR_SEPARATOR_S, pixmapdir, "wired.png", NULL); - applet->wired_icon = gdk_pixbuf_new_from_file_at_size (pixmapname, 16, 16, &error); - g_free (pixmapname); - pixmapname = g_build_filename (G_DIR_SEPARATOR_S, pixmapdir, "wireless.png", NULL); - applet->wireless_icon = gdk_pixbuf_new_from_file_at_size (pixmapname, 16, 16, &error); - g_free (pixmapname); - - g_free (pixmapdir); -} /* @@ -238,7 +271,7 @@ static void nmwa_load_theme (NMWirelessApplet *applet) * pop up a warning or error dialog with certain text * */ -static void show_warning_dialog (gboolean error, gchar *mesg, ...) +static void show_warning_dialog (gboolean error, gchar *mesg, ...) { GtkWidget *dialog; char *tmp; @@ -255,55 +288,6 @@ static void show_warning_dialog (gboolean error, gchar *mesg, ...) } -/* - * nmwa_about_cb - * - * Display our about dialog - * - */ -static void nmwa_about_cb (NMWirelessApplet *applet) -{ - GdkPixbuf *pixbuf; - char *file; - - const gchar *authors[] = - { - "Dan Williams ", - "Eskil Heyn Olsen (GNOME Wireless Applet)", - "Bastien Nocera (GNOME Wireless Applet)", - NULL - }; - - if (applet->about_dialog != NULL) - { - gtk_window_set_screen (GTK_WINDOW (applet->about_dialog), gtk_widget_get_screen (GTK_WIDGET (&applet->parent))); - gtk_window_present (GTK_WINDOW (applet->about_dialog)); - return; - } - - file = gnome_program_locate_file (NULL, GNOME_FILE_DOMAIN_PIXMAP, "NMWirelessApplet/wireless-applet.png", FALSE, NULL); - pixbuf = gdk_pixbuf_new_from_file (file, NULL); - g_free (file); - - applet->about_dialog = gnome_about_new ( - "Wireless Network Applet", - VERSION, - "(C) 2004 Red Hat, Inc.\n(C) Copyright 2001, 2002 Free Software Foundation", - "This utility shows the status of a wireless networking link.", - authors, - NULL, - NULL, - pixbuf); - - g_object_unref (pixbuf); - - gtk_window_set_screen (GTK_WINDOW (applet->about_dialog), gtk_widget_get_screen (GTK_WIDGET (applet))); - g_signal_connect (applet->about_dialog, "destroy", G_CALLBACK (gtk_widget_destroyed), &applet->about_dialog); - gtk_widget_show (applet->about_dialog); - - return; -} - /* * nmwa_destroy @@ -313,8 +297,6 @@ static void nmwa_about_cb (NMWirelessApplet *applet) */ static void nmwa_destroy (NMWirelessApplet *applet, gpointer user_data) { - int i; - if (applet->menu) nmwa_dispose_menu_items (applet); @@ -324,9 +306,6 @@ static void nmwa_destroy (NMWirelessApplet *applet, gpointer user_data) applet->redraw_timeout_id = 0; } - for (i = 0; i < PIX_NUMBER; i++) - g_object_unref (applet->pixmaps[i]); - if (applet->about_dialog) { gtk_widget_destroy (applet->about_dialog); @@ -338,47 +317,6 @@ static void nmwa_destroy (NMWirelessApplet *applet, gpointer user_data) } -/* - * nmwa_get_menu_pos - * - * When displaying the popup menu, figure out exactly where to put it on the screen - * - */ -static void nmwa_get_menu_pos (GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer data) -{ - NMWirelessApplet *applet = data; - GtkRequisition reqmenu; - gint tempx, tempy, width, height; - gint screen_width, screen_height; - - gtk_widget_size_request (GTK_WIDGET (menu), &reqmenu); - gdk_window_get_origin (GTK_WIDGET (applet)->window, &tempx, &tempy); - gdk_window_get_geometry (GTK_WIDGET (applet)->window, NULL, NULL, &width, &height, NULL); - -#ifndef BUILD_NOTIFICATION_ICON - switch (panel_applet_get_orient (PANEL_APPLET (applet))) - { - case PANEL_APPLET_ORIENT_DOWN: - tempy += height; - break; - case PANEL_APPLET_ORIENT_UP: - tempy -= reqmenu.height; - break; - case PANEL_APPLET_ORIENT_LEFT: - tempx -= reqmenu.width; - break; - case PANEL_APPLET_ORIENT_RIGHT: - tempx += width; - break; - } -#endif - screen_width = gdk_screen_width (); - screen_height = gdk_screen_height (); - *x = CLAMP (tempx, 0, MAX (0, screen_width - reqmenu.width)); - *y = CLAMP (tempy, 0, MAX (0, screen_height - reqmenu.height)); -} - - /* * nmwa_update_network_timestamp * @@ -387,7 +325,6 @@ static void nmwa_get_menu_pos (GtkMenu *menu, gint *x, gint *y, gboolean *push_i */ static void nmwa_update_network_timestamp (NMWirelessApplet *applet, const WirelessNetwork *network) { - GConfEntry *gconf_entry; char *key; g_return_if_fail (applet != NULL); @@ -598,7 +535,7 @@ static void nmwa_menu_add_custom_essid_item (GtkWidget *menu, NMWirelessApplet * menu_item = gtk_menu_item_new (); label = gtk_label_new (_("Other Wireless Networks...")); - gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_container_add (GTK_CONTAINER (menu_item), label); gtk_widget_show_all (menu_item); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item); @@ -741,7 +678,7 @@ static void nmwa_menu_add_devices (GtkWidget *menu, NMWirelessApplet *applet) if (dev && ((dev->type == DEVICE_TYPE_WIRED_ETHERNET) || (dev->type == DEVICE_TYPE_WIRELESS_ETHERNET))) { gboolean current = (dev == applet->active_device); - gint n_devices; + gint n_devices = 0; if (dev->type == DEVICE_TYPE_WIRED_ETHERNET) n_devices = n_wired_interfaces; @@ -833,7 +770,6 @@ static GtkWidget * nmwa_populate_menu (NMWirelessApplet *applet) return (menu); } - /* * mnwa_setup_widgets * @@ -843,38 +779,10 @@ static GtkWidget * nmwa_populate_menu (NMWirelessApplet *applet) */ static void nmwa_setup_widgets (NMWirelessApplet *applet) { - gboolean horizontal = FALSE; - gint panel_size; GtkWidget *menu_bar; -#if 0 - panel_size = panel_applet_get_size (PANEL_APPLET (applet)); - switch (panel_applet_get_orient(PANEL_APPLET (applet))) - { - case PANEL_APPLET_ORIENT_LEFT: - case PANEL_APPLET_ORIENT_RIGHT: - horizontal = FALSE; - break; - case PANEL_APPLET_ORIENT_UP: - case PANEL_APPLET_ORIENT_DOWN: - horizontal = TRUE; - break; - } -#endif - /* construct pixmap widget */ applet->pixmap = gtk_image_new (); - gtk_image_set_from_pixbuf (GTK_IMAGE (applet->pixmap), applet->pixmaps[PIX_WIRED]); - //gtk_widget_size_request (applet->pixmap, &req); - gtk_widget_show (applet->pixmap); - - /* - if (horizontal) - total_size += req.height; - else - total_size += req.width; - */ - menu_bar = gtk_menu_bar_new (); applet->toplevel_menu = gtk_menu_item_new(); gtk_container_add (GTK_CONTAINER(applet->toplevel_menu), applet->pixmap); @@ -886,13 +794,10 @@ static void nmwa_setup_widgets (NMWirelessApplet *applet) g_signal_connect (menu_bar, "button_press_event", G_CALLBACK (do_not_eat_button_press), NULL); applet->encryption_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); - gtk_widget_show (menu_bar); - gtk_widget_show (applet->toplevel_menu); - gtk_widget_show (applet->menu); gtk_container_add (GTK_CONTAINER (applet), menu_bar); - applet->current_pixbuf = NULL; + gtk_widget_show_all (GTK_WIDGET (applet)); applet->about_dialog = NULL; } @@ -914,36 +819,6 @@ static gboolean do_not_eat_button_press (GtkWidget *widget, GdkEventButton *even return (FALSE); } -#if 0 -static void change_background_cb(PanelApplet *a, PanelAppletBackgroundType type, - GdkColor *color, GdkPixmap *pixmap, NMWirelessApplet *applet) -{ - GtkRcStyle *rc_style = gtk_rc_style_new (); - - return; - switch (type) - { - case PANEL_PIXMAP_BACKGROUND: - gtk_widget_modify_style (GTK_WIDGET (applet), rc_style); - break; - - case PANEL_COLOR_BACKGROUND: - gtk_widget_modify_bg (GTK_WIDGET (applet), GTK_STATE_NORMAL, color); - break; - - case PANEL_NO_BACKGROUND: - gtk_widget_modify_style (GTK_WIDGET (applet), rc_style); - break; - - default: - gtk_widget_modify_style (GTK_WIDGET (applet), rc_style); - break; - } - - gtk_rc_style_unref (rc_style); -} -#endif - /* * nmwa_get_instance * @@ -963,7 +838,7 @@ static GtkWidget * nmwa_get_instance (NMWirelessApplet *applet) applet->ui_resources = glade_xml_new(glade_file, NULL, NULL); if (!applet->ui_resources) { - show_warning_dialog (TRUE, _("The NetworkManager Applet could not find some required resources (the glade file was not found).")); + show_warning_dialog (TRUE, _("The NetworkManager Applet could not find some required resources (the glade file was not found).")); g_object_unref (G_OBJECT (applet->gconf_client)); return (NULL); } @@ -988,7 +863,6 @@ static GtkWidget * nmwa_get_instance (NMWirelessApplet *applet) } /* Load pixmaps and create applet widgets */ - nmwa_load_theme (applet); nmwa_setup_widgets (applet); g_signal_connect (applet,"destroy", G_CALLBACK (nmwa_destroy),NULL); @@ -998,7 +872,7 @@ static GtkWidget * nmwa_get_instance (NMWirelessApplet *applet) nmwa_context_menu_verbs, applet); #endif - + /* Start redraw timeout */ nmwa_start_redraw_timeout (applet); @@ -1015,7 +889,7 @@ static gboolean nmwa_fill (NMWirelessApplet *applet) "NMWirelessApplet/wireless-applet.glade", FALSE, NULL); if (!glade_file) { - show_warning_dialog (TRUE, _("The NetworkManager Applet could not find some required resources (the glade file was not found).")); + show_warning_dialog (TRUE, _("The NetworkManager Applet could not find some required resources (the glade file was not found).")); return (FALSE); } @@ -1038,13 +912,7 @@ setup_stock (void) iset = gtk_icon_set_new (); isource = gtk_icon_source_new (); - /* Set up custom stock images. We a bunch of icons. */ - /* All but gnome-lockscreen are icons we install. */ - gtk_icon_source_set_icon_name (isource, "nm-"); - gtk_icon_set_add_source (iset, isource); - gtk_icon_factory_add (ifactory, "gnome-lockscreen", iset); - gtk_icon_factory_add_default (ifactory); - + /* we use the lockscreen icon to get a key */ gtk_icon_source_set_icon_name (isource, "gnome-lockscreen"); gtk_icon_set_add_source (iset, isource); gtk_icon_factory_add (ifactory, "gnome-lockscreen", iset); @@ -1053,55 +921,83 @@ setup_stock (void) initted = TRUE; } -static gboolean nmwa_factory (NMWirelessApplet *applet, const gchar *iid, gpointer data) +static void +nmwa_icons_free (NMWirelessApplet *applet) { - gboolean retval = FALSE; + gint i; - setup_stock (); - if (!strcmp (iid, "OAFIID:NMWirelessApplet")) - retval = nmwa_fill (applet); - - return (retval); + g_object_unref (applet->XXno_nm_icon); + g_object_unref (applet->XXwired_icon); + for (i = 0; i < NUM_WIRED_CONNECTING_FRAMES; i++) + g_object_unref (applet->XXwired_connecting_icons[i]); + g_object_unref (applet->XXwireless_00_icon); + g_object_unref (applet->XXwireless_25_icon); + g_object_unref (applet->XXwireless_50_icon); + g_object_unref (applet->XXwireless_75_icon); + g_object_unref (applet->XXwireless_100_icon); + for (i = 0; i < NUM_WIRELESS_CONNECTING_FRAMES; i++) + g_object_unref (applet->XXwireless_connecting_icons[i]); + for (i = 0; i < NUM_WIRELESS_SCANNING_FRAMES; i++) + g_object_unref (applet->XXwireless_scanning_icons[i]); } static void -nmwa_init (NMWirelessApplet *applet) +nmwa_icons_load_from_disk (NMWirelessApplet *applet, + GtkIconTheme *icon_theme) { - setup_stock (); - nmwa_fill (applet); + gint icon_size; + + /* Assume icon is square */ + icon_size = 22; + + applet->XXno_nm_icon = gtk_icon_theme_load_icon (icon_theme, "nm-device-broken", icon_size, 0, NULL); + applet->XXwired_icon = gtk_icon_theme_load_icon (icon_theme, "nm-device-wired", icon_size, 0, NULL); + applet->XXwired_connecting_icons[0] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting00", icon_size, 0, NULL); + applet->XXwired_connecting_icons[1] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting01", icon_size, 0, NULL); + applet->XXwired_connecting_icons[2] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting02", icon_size, 0, NULL); + applet->XXwired_connecting_icons[3] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting03", icon_size, 0, NULL); + applet->XXwireless_00_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-00", icon_size, 0, NULL); + applet->XXwireless_25_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-25", icon_size, 0, NULL); + applet->XXwireless_50_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-50", icon_size, 0, NULL); + applet->XXwireless_75_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-75", icon_size, 0, NULL); + applet->XXwireless_100_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-100", icon_size, 0, NULL); + applet->XXwireless_connecting_icons[0] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting00", icon_size, 0, NULL); + applet->XXwireless_connecting_icons[1] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting01", icon_size, 0, NULL); + applet->XXwireless_connecting_icons[2] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting02", icon_size, 0, NULL); + applet->XXwireless_connecting_icons[3] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting03", icon_size, 0, NULL); + applet->XXwireless_scanning_icons[0] = gtk_icon_theme_load_icon (icon_theme, "nm-detect00", icon_size, 0, NULL); + applet->XXwireless_scanning_icons[1] = gtk_icon_theme_load_icon (icon_theme, "nm-detect01", icon_size, 0, NULL); + applet->XXwireless_scanning_icons[2] = gtk_icon_theme_load_icon (icon_theme, "nm-detect02", icon_size, 0, NULL); + applet->XXwireless_scanning_icons[3] = gtk_icon_theme_load_icon (icon_theme, "nm-detect03", icon_size, 0, NULL); + applet->XXwireless_scanning_icons[4] = gtk_icon_theme_load_icon (icon_theme, "nm-detect04", icon_size, 0, NULL); + applet->XXwireless_scanning_icons[5] = gtk_icon_theme_load_icon (icon_theme, "nm-detect05", icon_size, 0, NULL); + applet->XXwireless_scanning_icons[6] = gtk_icon_theme_load_icon (icon_theme, "nm-detect06", icon_size, 0, NULL); + applet->XXwireless_scanning_icons[7] = gtk_icon_theme_load_icon (icon_theme, "nm-detect07", icon_size, 0, NULL); } -static GObjectClass *parent_class = NULL; - -static void nmwa_class_init (NMWirelessAppletClass *klass) +static void +nmwa_icon_theme_changed (GtkIconTheme *icon_theme, + NMWirelessApplet *applet) { - GObjectClass *gobject_class; - gobject_class = G_OBJECT_CLASS (klass); - - parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (gobject_class)); - - gobject_class->constructor = nmwa_constructor; - + nmwa_icons_free (applet); + nmwa_icons_load_from_disk (applet, icon_theme); + /* FIXME: force redraw */ } -static GObject *nmwa_constructor (GType type, - guint n_props, - GObjectConstructParam *construct_props) +static void +nmwa_icons_init (NMWirelessApplet *applet) { - GObject *obj; - NMWirelessApplet *applet; - NMWirelessAppletClass *klass; + GtkIconTheme *icon_theme; - klass = NM_WIRELESS_APPLET_CLASS (g_type_class_peek (type)); - obj = parent_class->constructor (type, - n_props, - construct_props); - applet = NM_WIRELESS_APPLET (obj); - - return obj; + /* FIXME: Do we need to worry about other screens? */ + icon_theme = gtk_icon_theme_get_default (); + nmwa_icons_load_from_disk (applet, icon_theme); + g_signal_connect (icon_theme, "changed", nmwa_icon_theme_changed, applet); } -NMWirelessApplet *nmwa_new () + +NMWirelessApplet * +nmwa_new () { return g_object_new (NM_TYPE_WIRELESS_APPLET, "title", "NetworkManager", NULL); } diff --git a/panel-applet/NMWirelessApplet.h b/panel-applet/NMWirelessApplet.h index 59cf5f189c..4f93d1ebff 100644 --- a/panel-applet/NMWirelessApplet.h +++ b/panel-applet/NMWirelessApplet.h @@ -34,23 +34,6 @@ #include "eggtrayicon.h" #endif -typedef enum -{ - PIX_NO_NETWORKMANAGER, - PIX_WIRED, - PIX_WIRELESS_NO_LINK, - PIX_WIRELESS_SIGNAL_1, - PIX_WIRELESS_SIGNAL_2, - PIX_WIRELESS_SIGNAL_3, - PIX_WIRELESS_SIGNAL_4, - PIX_WIRELESS_CONNECT_0, - PIX_WIRELESS_CONNECT_1, - PIX_WIRELESS_CONNECT_2, - PIX_WIRELESS_CONNECT_3, - PIX_NUMBER -} PixmapState; - - typedef enum { APPLET_STATE_NO_NM, @@ -59,6 +42,7 @@ typedef enum APPLET_STATE_WIRED_CONNECTING, APPLET_STATE_WIRELESS, APPLET_STATE_WIRELESS_CONNECTING, + APPLET_STATE_WIRELESS_SCANNING, APPLET_STATE_IGNORE } AppletState; @@ -125,19 +109,30 @@ typedef struct GThread *dbus_thread; GMainContext *thread_context; - PixmapState pix_state; // Index into pixmaps array - GdkPixbuf *pixmaps[PIX_NUMBER]; - GdkPixbuf *current_pixbuf; - GdkPixbuf *key_pixbuf; - GdkPixbuf *wired_icon; - GdkPixbuf *wireless_icon; - - /* Data model elements */ + /* Data model elements */ GMutex *data_mutex; GSList *devices; NetworkDevice *active_device; AppletState applet_state; - + + GdkPixbuf *XXno_nm_icon; + GdkPixbuf *XXwired_icon; +#define NUM_WIRED_CONNECTING_FRAMES 4 + GdkPixbuf *XXwired_connecting_icons[NUM_WIRED_CONNECTING_FRAMES]; + GdkPixbuf *XXwireless_00_icon; + GdkPixbuf *XXwireless_25_icon; + GdkPixbuf *XXwireless_50_icon; + GdkPixbuf *XXwireless_75_icon; + GdkPixbuf *XXwireless_100_icon; +#define NUM_WIRELESS_CONNECTING_FRAMES 4 + GdkPixbuf *XXwireless_connecting_icons[NUM_WIRELESS_CONNECTING_FRAMES]; +#define NUM_WIRELESS_SCANNING_FRAMES 8 + GdkPixbuf *XXwireless_scanning_icons[NUM_WIRELESS_SCANNING_FRAMES]; + + /* Animation stuff */ + int animation_step; + guint animation_id; + /* Direct UI elements */ GtkWidget *pixmap; GtkWidget *box; @@ -149,5 +144,6 @@ typedef struct NetworkDevice *nmwa_get_device_for_nm_device (NMWirelessApplet *applet, const char *nm_dev); -NMWirelessApplet *nmwa_new (); +NMWirelessApplet *nmwa_new (void); + #endif diff --git a/panel-applet/NMWirelessAppletDbus.c b/panel-applet/NMWirelessAppletDbus.c index 1488d13007..47c34e1f77 100644 --- a/panel-applet/NMWirelessAppletDbus.c +++ b/panel-applet/NMWirelessAppletDbus.c @@ -41,9 +41,6 @@ #define NM_DBUS_NO_ACTIVE_NET_ERROR "org.freedesktop.NetworkManager.NoActiveNetwork" -static void wireless_network_free (void *element, void *user_data); - - /* * nmwa_dbus_get_string * @@ -234,57 +231,6 @@ static int nmwa_dbus_get_bool (DBusConnection *connection, const char *path, con } -/* - * nmwa_dbus_get_double - * - */ -static double nmwa_dbus_get_double (DBusConnection *connection, const char *path, const char *method) -{ - DBusMessage *message; - DBusMessage *reply; - DBusError error; - double num; - - g_return_val_if_fail (connection != NULL, 0); - g_return_val_if_fail (path != NULL, 0); - g_return_val_if_fail (method != NULL, 0); - - if (!(message = dbus_message_new_method_call (NM_DBUS_SERVICE, path, NM_DBUS_INTERFACE, method))) - { - fprintf (stderr, "nmwa_dbus_get_double(): Couldn't allocate the dbus message\n"); - return (0); - } - - dbus_error_init (&error); - reply = dbus_connection_send_with_reply_and_block (connection, message, -1, &error); - dbus_message_unref (message); - if (dbus_error_is_set (&error)) - { - fprintf (stderr, "nmwa_dbus_get_double(): %s raised:\n %s\n\n", error.name, error.message); - dbus_message_unref (message); - dbus_error_free (&error); - return (0); - } - - if (reply == NULL) - { - fprintf( stderr, "nmwa_dbus_get_double(): dbus reply message was NULL\n" ); - return (0); - } - - dbus_error_init (&error); - if (!dbus_message_get_args (reply, &error, DBUS_TYPE_DOUBLE, &num, DBUS_TYPE_INVALID)) - { - if (dbus_error_is_set (&error)) - dbus_error_free (&error); - num = 0; - } - - dbus_message_unref (reply); - - return (num); -} - /* * nmwa_dbus_get_string_array @@ -964,7 +910,6 @@ NetworkDevice *network_device_copy (NetworkDevice *src) static void nmwa_dbus_update_device_wireless_networks (NetworkDevice *dev, NMWirelessApplet *applet) { char *active_network = NULL; - int dev_type; char **networks = NULL; int num_items = 0; int i; @@ -1036,7 +981,6 @@ out: */ static void nmwa_dbus_update_network_state (NMWirelessApplet *applet) { - char *active_device = NULL; char *nm_status = NULL; g_return_if_fail (applet != NULL); @@ -1045,6 +989,12 @@ static void nmwa_dbus_update_network_state (NMWirelessApplet *applet) if (!(nm_status = nmwa_dbus_get_nm_status (applet, APPLET_STATE_NO_CONNECTION))) return; + if (strcmp (nm_status, "scanning") == 0) + { + applet->applet_state = APPLET_STATE_WIRELESS_SCANNING; + goto out; + } + if (strcmp (nm_status, "disconnected") == 0) { applet->applet_state = APPLET_STATE_NO_CONNECTION; diff --git a/panel-applet/icons/Makefile.am b/panel-applet/icons/Makefile.am index 1469e3b8be..74da9a9be4 100644 --- a/panel-applet/icons/Makefile.am +++ b/panel-applet/icons/Makefile.am @@ -2,21 +2,31 @@ NULL = largeicondir=${datadir}/icons/hicolor/48x48/apps largeicon_DATA=\ + nm-device-wireless.png + + +smallicondir=${datadir}/icons/hicolor/24x24/apps +smallicon_DATA=\ nm-device-wired.png \ - nm-device-wireless.png \ nm-connecting00.png \ nm-connecting01.png \ nm-connecting02.png \ nm-connecting03.png \ - nm-detect00.png \ - nm-detect01.png \ - nm-detect02.png \ - nm-detect03.png \ - nm-detect04.png \ - nm-detect05.png \ - nm-detect06.png \ - nm-detect07.png \ + nm-detect00.png \ + nm-detect01.png \ + nm-detect02.png \ + nm-detect03.png \ + nm-detect04.png \ + nm-detect05.png \ + nm-detect06.png \ + nm-detect07.png \ + nm-signal-00.png \ + nm-signal-25.png \ + nm-signal-50.png \ + nm-signal-75.png \ + nm-signal-100.png \ $(NULL) EXTRA_DIST=\ - $(largeicon_DATA) + $(largeicon_DATA) \ + $(smallicon_DATA) diff --git a/panel-applet/icons/nm-device-wired.png b/panel-applet/icons/nm-device-wired.png index 1bf6d7d34e0d827b0081ea0bae3a98eb1518d54f..5e083e3eb96fa9e0ea422991ece2538266087060 100644 GIT binary patch literal 828 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 V+b)amE;G=(44$rjF6*2UngD|fj_m*d literal 0 HcmV?d00001 diff --git a/panel-applet/icons/nm-signal-25.png b/panel-applet/icons/nm-signal-25.png new file mode 100644 index 0000000000000000000000000000000000000000..b18d59c47f17f03c84cafd02fbefc761689a360c GIT binary patch literal 511 zcmVWFU8GbZ8({Xk{QrNlj4iWF>9@00Co3L_t(2&+U~xO0z)_ z$A9y+ClIW}#!~F;;|T;S5d=Zr))QEI0ZT!!5bXr*1ygtoPon0Tw|F*~iduO+sUlkqhftmq{ zq%75d`@5T-RQW{U@aUxP5vU4+khvTJ!h?;?Eu@{dA}E;J!W2!XBLesFqY;6rwvZOl z;OX(9ha`fM!2bS0->hKnNG4eenhiBrP-JswZEbymBFC$s!>i=ssA-#Gy2vx#5haj> zp*hS0o0!%tzSrR5_N_O%K0n^-yE!FFr|Dz^H^)@#5OZw${PH?c%qbCokkb0k!ZG(s z(HE6shR#FKG!4z*eQbl86H%z1tPhyrYVEWmo>x^Qb2frOlMFsTy1p;b$*J4OEvP6| z=WEb3&C~{^lWFU8GbZ8({Xk{QrNlj4iWF>9@00C1;L_t(2&+Sz`N&`_4 z{^l>Y5Sx@@XP?|c1VIp6PhjZ1SUG|)ZShWS*7+Vtu1VL||c2t>g3&Fvfj1_MwV;pFtJJs(OARRfCv2vATj z0KC0EPpGty2sppEnyVR@2?Rn!KL#*09378A#l9tj5rk!DiMr)5gKGV#nL(HfO1pS) z|MERq@9!?hbCD556%>IeFBGXf*u&)a&##6=3M~z-o|2k^g^LloP0ltV_^Q^58l}!t03CEi zSad^gZEa<4bO1wgWnpw>WFU8GbZ8({Xk{QrNlj4iWF>9@00A&bL_t(2&+U~xP6IIz zg})iwISD1AqfZV(g=jeeB^RJXqT?DsQUDba7vLO_?Ajg*goM|dg^;B{%5*!j=FR)@ z8g{j-ZA(U)Ghfr6`LQ;=y1bYQU?PaX@yY1|U^D<9ChQ*^*8Q>M@IIi<0fv}t1;F|B z%k=B_+0ov@hk&Xe2xi+c0O0Q7sl#A`Q@621>(YTqIV^;LQw5RDJm{07@0@d=9{j@O z+sEhn0;SYRkw=|^mDkJvL=JN7k;p0r-+Is|M>eq7mUuZs?hJAsr^-h{2V#0Nzb`k< z2}`S@m!d&hmJGZ{oI{5g