From 7dd74c7c47a1a308293e04f92274f08f40ab7009 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Fri, 17 Dec 2004 22:08:09 +0000 Subject: [PATCH] New Ad-Hoc icon for notification area icon when connected to Ad-Hoc networks git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@345 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- panel-applet/NMWirelessApplet.c | 66 +++++++++++++++++----------- panel-applet/NMWirelessApplet.h | 2 + panel-applet/NMWirelessAppletDbus.c | 32 +++++++++++++- panel-applet/icons/Makefile.am | 1 + panel-applet/icons/nm-adhoc.png | Bin 0 -> 748 bytes src/NetworkManagerDbus.c | 4 ++ src/NetworkManagerDevice.h | 2 + 7 files changed, 80 insertions(+), 27 deletions(-) create mode 100644 panel-applet/icons/nm-adhoc.png diff --git a/panel-applet/NMWirelessApplet.c b/panel-applet/NMWirelessApplet.c index de4115aa29..d80aba1930 100644 --- a/panel-applet/NMWirelessApplet.c +++ b/panel-applet/NMWirelessApplet.c @@ -273,12 +273,15 @@ nmwa_update_state (NMWirelessApplet *applet) strength = applet->active_device->strength; } +#if 0 + /* Only show icon if there's more than one device and at least one is wireless */ if (g_slist_length (applet->device_list) == 1 && applet->applet_state != APPLET_STATE_NO_NM) { if (((NetworkDevice *)applet->device_list->data)->type == DEVICE_TYPE_WIRED_ETHERNET) show_applet = FALSE; } +#endif nmwa_update_network_state (applet); @@ -302,17 +305,25 @@ nmwa_update_state (NMWirelessApplet *applet) case (APPLET_STATE_WIRELESS): if (applet->active_device) { - if (strength > 75) - pixbuf = applet->wireless_100_icon; - else if (strength > 50) - pixbuf = applet->wireless_75_icon; - else if (strength > 25) - pixbuf = applet->wireless_50_icon; - else if (strength > 0) - pixbuf = applet->wireless_25_icon; + if (applet->is_adhoc) + { + pixbuf = applet->adhoc_icon; + tip = g_strdup_printf (_("Connected to an Ad-Hoc wireless network")); + } else - pixbuf = applet->wireless_00_icon; - tip = g_strdup_printf (_("Wireless network connection (%d%%)"), strength); + { + if (strength > 75) + pixbuf = applet->wireless_100_icon; + else if (strength > 50) + pixbuf = applet->wireless_75_icon; + else if (strength > 25) + pixbuf = applet->wireless_50_icon; + else if (strength > 0) + pixbuf = applet->wireless_25_icon; + else + pixbuf = applet->wireless_00_icon; + tip = g_strdup_printf (_("Wireless network connection (%d%%)"), strength); + } } else tip = g_strdup (_("Wireless network connection")); @@ -324,6 +335,7 @@ nmwa_update_state (NMWirelessApplet *applet) tip = g_strdup (_("Connecting to a wireless network...")); break; case (APPLET_STATE_NO_NM): + show_applet = FALSE; tip = g_strdup (_("NetworkManager is not running")); case (APPLET_STATE_WIRELESS_SCANNING): applet->animation_step = CLAMP (applet->animation_step, 0, NUM_WIRELESS_SCANNING_FRAMES - 1); @@ -341,9 +353,9 @@ nmwa_update_state (NMWirelessApplet *applet) gtk_tooltips_set_tip (applet->tooltips, applet->event_box, tip, NULL); g_free (tip); - /*determine if we should hide the notification icon*/ gtk_image_set_from_pixbuf (GTK_IMAGE (applet->pixmap), pixbuf); + /*determine if we should hide the notification icon*/ if (show_applet) gtk_widget_show (GTK_WIDGET (applet)); else @@ -1052,6 +1064,7 @@ nmwa_icons_free (NMWirelessApplet *applet) g_object_unref (applet->no_nm_icon); g_object_unref (applet->wired_icon); + g_object_unref (applet->adhoc_icon); for (i = 0; i < NUM_WIRED_CONNECTING_FRAMES; i++) g_object_unref (applet->wired_connecting_icons[i]); g_object_unref (applet->wireless_00_icon); @@ -1074,21 +1087,22 @@ nmwa_icons_load_from_disk (NMWirelessApplet *applet, /* Assume icon is square */ icon_size = 22; - applet->no_nm_icon = gtk_icon_theme_load_icon (icon_theme, "nm-device-broken", icon_size, 0, NULL); - applet->wired_icon = gtk_icon_theme_load_icon (icon_theme, "nm-device-wired", icon_size, 0, NULL); - applet->wired_connecting_icons[0] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting00", icon_size, 0, NULL); - applet->wired_connecting_icons[1] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting01", icon_size, 0, NULL); - applet->wired_connecting_icons[2] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting02", icon_size, 0, NULL); - applet->wired_connecting_icons[3] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting03", icon_size, 0, NULL); - applet->wireless_00_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-00", icon_size, 0, NULL); - applet->wireless_25_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-25", icon_size, 0, NULL); - applet->wireless_50_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-50", icon_size, 0, NULL); - applet->wireless_75_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-75", icon_size, 0, NULL); - applet->wireless_100_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-100", icon_size, 0, NULL); - applet->wireless_connecting_icons[0] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting00", icon_size, 0, NULL); - applet->wireless_connecting_icons[1] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting01", icon_size, 0, NULL); - applet->wireless_connecting_icons[2] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting02", icon_size, 0, NULL); - applet->wireless_connecting_icons[3] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting03", icon_size, 0, NULL); + applet->no_nm_icon = gtk_icon_theme_load_icon (icon_theme, "nm-device-broken", icon_size, 0, NULL); + applet->wired_icon = gtk_icon_theme_load_icon (icon_theme, "nm-device-wired", icon_size, 0, NULL); + applet->adhoc_icon = gtk_icon_theme_load_icon (icon_theme, "nm-adhoc", icon_size, 0, NULL); + applet->wired_connecting_icons[0] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting00", icon_size, 0, NULL); + applet->wired_connecting_icons[1] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting01", icon_size, 0, NULL); + applet->wired_connecting_icons[2] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting02", icon_size, 0, NULL); + applet->wired_connecting_icons[3] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting03", icon_size, 0, NULL); + applet->wireless_00_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-00", icon_size, 0, NULL); + applet->wireless_25_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-25", icon_size, 0, NULL); + applet->wireless_50_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-50", icon_size, 0, NULL); + applet->wireless_75_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-75", icon_size, 0, NULL); + applet->wireless_100_icon = gtk_icon_theme_load_icon (icon_theme, "nm-signal-100", icon_size, 0, NULL); + applet->wireless_connecting_icons[0] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting00", icon_size, 0, NULL); + applet->wireless_connecting_icons[1] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting01", icon_size, 0, NULL); + applet->wireless_connecting_icons[2] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting02", icon_size, 0, NULL); + applet->wireless_connecting_icons[3] = gtk_icon_theme_load_icon (icon_theme, "nm-connecting03", icon_size, 0, NULL); applet->wireless_scanning_icons[0] = gtk_icon_theme_load_icon (icon_theme, "nm-detect00", icon_size, 0, NULL); applet->wireless_scanning_icons[1] = gtk_icon_theme_load_icon (icon_theme, "nm-detect01", icon_size, 0, NULL); applet->wireless_scanning_icons[2] = gtk_icon_theme_load_icon (icon_theme, "nm-detect02", icon_size, 0, NULL); diff --git a/panel-applet/NMWirelessApplet.h b/panel-applet/NMWirelessApplet.h index 44ddfe63df..a3cdb31a02 100644 --- a/panel-applet/NMWirelessApplet.h +++ b/panel-applet/NMWirelessApplet.h @@ -113,6 +113,7 @@ typedef struct GMutex *data_mutex; AppletState applet_state; gboolean forcing_device; + gboolean is_adhoc; GSList *device_list; NetworkDevice *active_device; char *nm_status; @@ -120,6 +121,7 @@ typedef struct GdkPixbuf *no_nm_icon; GdkPixbuf *wired_icon; + GdkPixbuf *adhoc_icon; #define NUM_WIRED_CONNECTING_FRAMES 4 GdkPixbuf *wired_connecting_icons[NUM_WIRED_CONNECTING_FRAMES]; GdkPixbuf *wireless_00_icon; diff --git a/panel-applet/NMWirelessAppletDbus.c b/panel-applet/NMWirelessAppletDbus.c index 8e37a7c0e5..c40e3d7caa 100644 --- a/panel-applet/NMWirelessAppletDbus.c +++ b/panel-applet/NMWirelessAppletDbus.c @@ -324,6 +324,30 @@ static char * nmwa_dbus_get_object_name (NMWirelessApplet *applet, char *path) } +/* + * nmwa_dbus_get_object_mode + * + * Returns the mode (ie Ad-Hoc, Infrastructure) of a specified object (wireless network, device, etc) + * + */ +static NMNetworkMode nmwa_dbus_get_object_mode (NMWirelessApplet *applet, char *path) +{ + NMNetworkMode mode = NETWORK_MODE_INFRA; + + switch (nmwa_dbus_call_nm_method (applet->connection, path, "getMode", DBUS_TYPE_INT32, (void **)(&mode), NULL)) + { + case (RETURN_NO_NM): + applet->applet_state = APPLET_STATE_NO_NM; + break; + + default: + break; + } + + return (mode); +} + + /* * nmwa_dbus_get_device_udi * @@ -901,6 +925,7 @@ static void nmwa_dbus_update_devices (NMWirelessApplet *applet) GSList *device_list = NULL; NetworkDevice *active_device = NULL; char *nm_status = NULL; + gboolean adhoc = FALSE; g_return_if_fail (applet->data_mutex != NULL); @@ -954,7 +979,11 @@ static void nmwa_dbus_update_devices (NMWirelessApplet *applet) network_device_ref (dev); applet->dbus_active_device = dev; network_device_ref (dev); - nmwa_dbus_update_device_wireless_networks (dev, TRUE, applet); + if (dev->type == DEVICE_TYPE_WIRELESS_ETHERNET) + { + adhoc = nmwa_dbus_get_object_mode (applet, nm_act_dev); + nmwa_dbus_update_device_wireless_networks (dev, TRUE, applet); + } } else nmwa_dbus_update_device_wireless_networks (dev, FALSE, applet); @@ -981,6 +1010,7 @@ static void nmwa_dbus_update_devices (NMWirelessApplet *applet) applet->device_list = device_list; applet->active_device = active_device; applet->nm_status = nm_status; + applet->is_adhoc = adhoc; g_mutex_unlock (applet->data_mutex); } diff --git a/panel-applet/icons/Makefile.am b/panel-applet/icons/Makefile.am index 38ca664e9e..421918a863 100644 --- a/panel-applet/icons/Makefile.am +++ b/panel-applet/icons/Makefile.am @@ -8,6 +8,7 @@ largeicon_DATA=\ smallicondir=${datadir}/icons/hicolor/22x22/apps smallicon_DATA=\ nm-device-wired.png \ + nm-adhoc.png \ nm-connecting00.png \ nm-connecting01.png \ nm-connecting02.png \ diff --git a/panel-applet/icons/nm-adhoc.png b/panel-applet/icons/nm-adhoc.png new file mode 100644 index 0000000000000000000000000000000000000000..a1000ed34d9071c7166eafddb1c944689551aa46 GIT binary patch literal 748 zcmVz^Q>-8KIssI20AY({UO#lFGm;eBCjsO7iP5=Of9smGt zjsO7VJpceRE&u=+(Y+Fge*gdiVo5|nRCwC7l+R04Q545N_l?gPoO%p1qa&I2n+l91 z2wIkfMJPFcK@zlSQ;SF!LG=$ri}tf<9q1<7G!#)Jp`%cNHkkBNq;g)GIX~V#ZSKe$ z9UZZ}aJlcDch2{o_dVx)m58tvOKlaf^H0oq|A8@5McN6_f3L! z7{ECoWo()9^S=NK&}X(7TOTl2_Nge|?Ck7@Dw#+m?wPEUChJo`4#HT3U{*32uD4fHy$U*BKpawwvp^HEA$D zmw~6iC1V~l)J#{+IG@kg1U5c*fl=T-@WAkU)m%nZj%zLBlL7L;E1=)-T`uNoDjdfl z9FDCET&@GK09*%L;39BGM5e21h3mQ-YPU!v(hGbCKACfIrRLPF2nYjlpw*lWo7IoH z74H%V1njftyRYT`B-;yI87{s0BQGgG*F`A0P#k2eh5 zyfyxI;=PnSPk!cp$%l_$<;Cl9dGzF2zWYKlXWRA};5cy5{8g};m{k<7J{UaO*1Gdh zb5kQZcV2Sy3tA((sWGbe>}s=nlS#)41kTyEJp=pz7J*Vtp&uL?THLq)K&Uy95G|sO zx+twRp66M`Vo?qB-%vw?gWC&*LeYR~pAfAE?(FOgMx)UsrIc8fC4l&5UumtC)|zxW ztzxm*j%+qNvDc~jWC7n)t8|{h$@C~T<4Np0^WG?v) el-2_U_&WgRkdlBZr`(|c0000