[network-manager-applet/danw/virtual-devs: 4/5] applet: pass the list of connections to add_menu_item



commit ff543f5729767b40d0604e0cfcd2abb21138008a
Author: Dan Winship <danw gnome org>
Date:   Thu May 16 11:30:06 2013 -0400

    applet: pass the list of connections to add_menu_item
    
    Each device type was building up its list of connections the same way;
    just have applet.c do this instead and pass the connections to the
    device.
    
    Also, none of the device types cared about the exact number of other
    devices of their type; merely whether or not there were any. So just
    pass a "gboolean multiple_devices" instead of "guint32 n_devices".

 src/applet-device-bond.c      |   10 ++--------
 src/applet-device-bridge.c    |   10 ++--------
 src/applet-device-broadband.c |   13 ++++---------
 src/applet-device-bt.c        |   10 ++--------
 src/applet-device-cdma.c      |   13 ++++---------
 src/applet-device-ethernet.c  |   12 +++---------
 src/applet-device-gsm.c       |   13 ++++---------
 src/applet-device-vlan.c      |   12 +++---------
 src/applet-device-wifi.c      |   12 ++++--------
 src/applet-device-wimax.c     |   13 ++++---------
 src/applet.c                  |   18 ++++++++++++++----
 src/applet.h                  |    3 ++-
 12 files changed, 48 insertions(+), 91 deletions(-)
---
diff --git a/src/applet-device-bond.c b/src/applet-device-bond.c
index 18ad3b1..aa21d5f 100644
--- a/src/applet-device-bond.c
+++ b/src/applet-device-bond.c
@@ -41,18 +41,14 @@
 
 static void
 bond_add_menu_item (NMDevice *device,
-                    guint32 n_devices,
+                    gboolean multiple_devices,
+                    GSList *connections,
                     NMConnection *active,
                     GtkWidget *menu,
                     NMApplet *applet)
 {
        char *text;
        GtkWidget *item;
-       GSList *connections, *all;
-
-       all = applet_get_all_connections (applet);
-       connections = nm_device_filter_connections (device, all);
-       g_slist_free (all);
 
        text = g_strdup_printf (_("Bond (%s)"), nm_device_get_iface (device));
        item = applet_menu_item_create_device_item_helper (device, applet, text);
@@ -81,8 +77,6 @@ bond_add_menu_item (NMDevice *device,
                else
                        applet_add_default_connection_item (device, _("Configure bond connections..."), TRUE, 
menu, applet);
        }
-
-       g_slist_free (connections);
 }
 
 static void
diff --git a/src/applet-device-bridge.c b/src/applet-device-bridge.c
index 4cf0c44..c6e0e39 100644
--- a/src/applet-device-bridge.c
+++ b/src/applet-device-bridge.c
@@ -41,18 +41,14 @@
 
 static void
 bridge_add_menu_item (NMDevice *device,
-                      guint32 n_devices,
+                      gboolean multiple_devices,
+                      GSList *connections,
                       NMConnection *active,
                       GtkWidget *menu,
                       NMApplet *applet)
 {
        char *text;
        GtkWidget *item;
-       GSList *connections, *all;
-
-       all = applet_get_all_connections (applet);
-       connections = nm_device_filter_connections (device, all);
-       g_slist_free (all);
 
        text = g_strdup_printf (_("Bridge (%s)"), nm_device_get_iface (device));
        item = applet_menu_item_create_device_item_helper (device, applet, text);
@@ -81,8 +77,6 @@ bridge_add_menu_item (NMDevice *device,
                else
                        applet_add_default_connection_item (device, _("Configure bridge connections..."), 
TRUE, menu, applet);
        }
-
-       g_slist_free (connections);
 }
 
 static void
diff --git a/src/applet-device-broadband.c b/src/applet-device-broadband.c
index be5c8e0..aa0275d 100644
--- a/src/applet-device-broadband.c
+++ b/src/applet-device-broadband.c
@@ -695,7 +695,8 @@ add_connection_item (NMDevice *device,
 
 static void
 add_menu_item (NMDevice *device,
-               guint32 n_devices,
+               gboolean multiple_devices,
+               GSList *connections,
                NMConnection *active,
                GtkWidget *menu,
                NMApplet *applet)
@@ -703,15 +704,11 @@ add_menu_item (NMDevice *device,
        BroadbandDeviceInfo *info;
        char *text;
        GtkWidget *item;
-       GSList *connections, *all, *iter;
+       GSList *iter;
 
        info = g_object_get_data (G_OBJECT (device), "devinfo");
 
-       all = applet_get_all_connections (applet);
-       connections = nm_device_filter_connections (device, all);
-       g_slist_free (all);
-
-       if (n_devices > 1) {
+       if (multiple_devices) {
                const char *desc;
 
                desc = nma_utils_get_device_description (device);
@@ -786,8 +783,6 @@ add_menu_item (NMDevice *device,
                        add_connection_item (device, NULL, item, menu, applet);
                }
        }
-
-       g_slist_free (connections);
 }
 
 /********************************************************************/
diff --git a/src/applet-device-bt.c b/src/applet-device-bt.c
index d6d864d..580268d 100644
--- a/src/applet-device-bt.c
+++ b/src/applet-device-bt.c
@@ -55,18 +55,14 @@ bt_new_auto_connection (NMDevice *device,
 
 static void
 bt_add_menu_item (NMDevice *device,
-                  guint32 n_devices,
+                  gboolean multiple__devices,
+                  GSList *connections,
                   NMConnection *active,
                   GtkWidget *menu,
                   NMApplet *applet)
 {
        const char *text;
        GtkWidget *item;
-       GSList *connections, *all;
-
-       all = applet_get_all_connections (applet);
-       connections = nm_device_filter_connections (device, all);
-       g_slist_free (all);
 
        text = nm_device_bt_get_name (NM_DEVICE_BT (device));
        if (!text)
@@ -95,8 +91,6 @@ bt_add_menu_item (NMDevice *device,
                        applet_add_connection_items (device, connections, TRUE, active, NMA_ADD_INACTIVE, 
menu, applet);
                }
        }
-
-       g_slist_free (connections);
 }
 
 static void
diff --git a/src/applet-device-cdma.c b/src/applet-device-cdma.c
index bee9a5e..1640d47 100644
--- a/src/applet-device-cdma.c
+++ b/src/applet-device-cdma.c
@@ -227,7 +227,8 @@ cdma_act_to_mb_act (CdmaDeviceInfo *info)
 
 static void
 cdma_add_menu_item (NMDevice *device,
-                    guint32 n_devices,
+                    gboolean multiple_devices,
+                    GSList *connections,
                     NMConnection *active,
                     GtkWidget *menu,
                     NMApplet *applet)
@@ -235,15 +236,11 @@ cdma_add_menu_item (NMDevice *device,
        CdmaDeviceInfo *info;
        char *text;
        GtkWidget *item;
-       GSList *connections, *all, *iter;
+       GSList *iter;
 
        info = g_object_get_data (G_OBJECT (device), "devinfo");
 
-       all = applet_get_all_connections (applet);
-       connections = nm_device_filter_connections (device, all);
-       g_slist_free (all);
-
-       if (n_devices > 1) {
+       if (multiple_devices) {
                const char *desc;
 
                desc = nma_utils_get_device_description (device);
@@ -318,8 +315,6 @@ cdma_add_menu_item (NMDevice *device,
                        add_connection_item (device, NULL, item, menu, applet);
                }
        }
-
-       g_slist_free (connections);
 }
 
 static void
diff --git a/src/applet-device-ethernet.c b/src/applet-device-ethernet.c
index b06c06f..30b19c8 100644
--- a/src/applet-device-ethernet.c
+++ b/src/applet-device-ethernet.c
@@ -77,21 +77,17 @@ ethernet_new_auto_connection (NMDevice *device,
 
 static void
 ethernet_add_menu_item (NMDevice *device,
-                        guint32 n_devices,
+                        gboolean multiple_devices,
+                        GSList *connections,
                         NMConnection *active,
                         GtkWidget *menu,
                         NMApplet *applet)
 {
        char *text;
        GtkWidget *item;
-       GSList *connections, *all;
        gboolean carrier = TRUE;
 
-       all = applet_get_all_connections (applet);
-       connections = nm_device_filter_connections (device, all);
-       g_slist_free (all);
-
-       if (n_devices > 1) {
+       if (multiple_devices) {
                const char *desc;
 
                desc = nma_utils_get_device_description (device);
@@ -139,8 +135,6 @@ ethernet_add_menu_item (NMDevice *device,
                else
                        applet_add_default_connection_item (device, DEFAULT_ETHERNET_NAME, carrier, menu, 
applet);
        }
-
-       g_slist_free (connections);
 }
 
 static void
diff --git a/src/applet-device-gsm.c b/src/applet-device-gsm.c
index ebc7e5f..4409b58 100644
--- a/src/applet-device-gsm.c
+++ b/src/applet-device-gsm.c
@@ -283,7 +283,8 @@ gsm_act_to_mb_act (GsmDeviceInfo *info)
 
 static void
 gsm_add_menu_item (NMDevice *device,
-                   guint32 n_devices,
+                   gboolean multiple_devices,
+                   GSList *connections,
                    NMConnection *active,
                    GtkWidget *menu,
                    NMApplet *applet)
@@ -291,15 +292,11 @@ gsm_add_menu_item (NMDevice *device,
        GsmDeviceInfo *info;
        char *text;
        GtkWidget *item;
-       GSList *connections, *all, *iter;
+       GSList *iter;
 
        info = g_object_get_data (G_OBJECT (device), "devinfo");
 
-       all = applet_get_all_connections (applet);
-       connections = nm_device_filter_connections (device, all);
-       g_slist_free (all);
-
-       if (n_devices > 1) {
+       if (multiple_devices) {
                const char *desc;
 
                desc = nma_utils_get_device_description (device);
@@ -374,8 +371,6 @@ gsm_add_menu_item (NMDevice *device,
                        add_connection_item (device, NULL, item, menu, applet);
                }
        }
-
-       g_slist_free (connections);
 }
 
 static void
diff --git a/src/applet-device-vlan.c b/src/applet-device-vlan.c
index 6010620..582251b 100644
--- a/src/applet-device-vlan.c
+++ b/src/applet-device-vlan.c
@@ -41,21 +41,17 @@
 
 static void
 vlan_add_menu_item (NMDevice *device,
-                    guint32 n_devices,
+                    gboolean multiple_devices,
+                    GSList *connections,
                     NMConnection *active,
                     GtkWidget *menu,
                     NMApplet *applet)
 {
        char *text;
        GtkWidget *item;
-       GSList *connections, *all;
        gboolean carrier = TRUE;
 
-       all = applet_get_all_connections (applet);
-       connections = nm_device_filter_connections (device, all);
-       g_slist_free (all);
-
-       if (n_devices > 1) {
+       if (multiple_devices) {
                const char *desc;
 
                desc = nma_utils_get_device_description (device);
@@ -103,8 +99,6 @@ vlan_add_menu_item (NMDevice *device,
                else
                        applet_add_default_connection_item (device, _("Configure VLAN connections..."), 
carrier, menu, applet);
        }
-
-       g_slist_free (connections);
 }
 
 static void
diff --git a/src/applet-device-wifi.c b/src/applet-device-wifi.c
index 9710c6c..68af55b 100644
--- a/src/applet-device-wifi.c
+++ b/src/applet-device-wifi.c
@@ -759,7 +759,8 @@ sort_toplevel (gconstpointer tmpa, gconstpointer tmpb)
 
 static void
 wifi_add_menu_item (NMDevice *device,
-                    guint32 n_devices,
+                    gboolean multiple_devices,
+                    GSList *connections,
                     NMConnection *active,
                     GtkWidget *menu,
                     NMApplet *applet)
@@ -769,7 +770,7 @@ wifi_add_menu_item (NMDevice *device,
        const GPtrArray *aps;
        int i;
        NMAccessPoint *active_ap = NULL;
-       GSList *connections = NULL, *all, *iter;
+       GSList *iter;
        gboolean wifi_enabled = TRUE;
        gboolean wifi_hw_enabled = TRUE;
        GSList *menu_items = NULL;  /* All menu items we'll be adding */
@@ -779,7 +780,7 @@ wifi_add_menu_item (NMDevice *device,
        wdev = NM_DEVICE_WIFI (device);
        aps = nm_device_wifi_get_access_points (wdev);
 
-       if (n_devices > 1) {
+       if (multiple_devices) {
                const char *desc;
 
                desc = nma_utils_get_device_description (device);
@@ -797,10 +798,6 @@ wifi_add_menu_item (NMDevice *device,
        gtk_menu_shell_append (GTK_MENU_SHELL (menu), widget);
        gtk_widget_show (widget);
 
-       all = applet_get_all_connections (applet);
-       connections = nm_device_filter_connections (device, all);
-       g_slist_free (all);
-
        /* Add the active AP if we're connected to something and the device is available */
        if (!nma_menu_device_check_unusable (device)) {
                active_ap = nm_device_wifi_get_active_access_point (wdev);
@@ -903,7 +900,6 @@ wifi_add_menu_item (NMDevice *device,
 
 out:
        g_slist_free (menu_items);
-       g_slist_free (connections);
 }
 
 static void
diff --git a/src/applet-device-wimax.c b/src/applet-device-wimax.c
index df6cca9..faa3b05 100644
--- a/src/applet-device-wimax.c
+++ b/src/applet-device-wimax.c
@@ -204,7 +204,8 @@ sort_nsps (gconstpointer a, gconstpointer b)
 
 static void
 wimax_add_menu_item (NMDevice *device,
-                     guint32 n_devices,
+                     gboolean multiple_devices,
+                     GSList *connections,
                      NMConnection *active,
                      GtkWidget *menu,
                      NMApplet *applet)
@@ -212,7 +213,7 @@ wimax_add_menu_item (NMDevice *device,
        NMDeviceWimax *wimax = NM_DEVICE_WIMAX (device);
        char *text;
        GtkWidget *item;
-       GSList *connections, *all, *iter, *sorted = NULL;
+       GSList *iter, *sorted = NULL;
        const GPtrArray *nsps;
        NMWimaxNsp *active_nsp = NULL;
        gboolean wimax_enabled, wimax_hw_enabled;
@@ -220,7 +221,7 @@ wimax_add_menu_item (NMDevice *device,
 
        nsps = nm_device_wimax_get_nsps (wimax);
 
-       if (n_devices > 1) {
+       if (multiple_devices) {
                const char *desc;
 
                desc = nma_utils_get_device_description (device);
@@ -274,10 +275,6 @@ wimax_add_menu_item (NMDevice *device,
        if (g_slist_length (sorted)) {
                applet_menu_item_add_complex_separator_helper (menu, applet, _("Available"), -1);
 
-               all = applet_get_all_connections (applet);
-               connections = nm_device_filter_connections (device, all);
-               g_slist_free (all);
-
                /* And add menu items for each NSP */
                for (iter = sorted; iter; iter = g_slist_next (iter)) {
                        NMWimaxNsp *nsp = NM_WIMAX_NSP (iter->data);
@@ -290,8 +287,6 @@ wimax_add_menu_item (NMDevice *device,
                                gtk_widget_show (item);
                        }
                }
-
-               g_slist_free (connections);
        }
 
        g_slist_free (sorted);
diff --git a/src/applet.c b/src/applet.c
index ccbdc18..86db87b 100644
--- a/src/applet.c
+++ b/src/applet.c
@@ -1601,13 +1601,17 @@ nma_menu_add_devices (GtkWidget *menu, NMApplet *applet)
        /* Add all devices in our device list to the menu */
        for (iter = devices; iter; iter = iter->next) {
                NMDevice *device = NM_DEVICE (iter->data);
-               gint n_devices = 0;
+               gint n_devices;
                NMADeviceClass *dclass;
                NMConnection *active;
+               GSList *all, *connections;
 
                /* Ignore unsupported devices */
                if (!(nm_device_get_capabilities (device) & NM_DEVICE_CAP_NM_SUPPORTED))
                        continue;
+               dclass = get_device_class (device, applet);
+               if (!dclass)
+                       continue;
 
                if (NM_IS_DEVICE_WIFI (device))
                        n_devices = n_wifi_devices;
@@ -1615,12 +1619,18 @@ nma_menu_add_devices (GtkWidget *menu, NMApplet *applet)
                        n_devices = n_ethernet_devices;
                else if (NM_IS_DEVICE_MODEM (device))
                        n_devices = n_mb_devices;
+               else
+                       n_devices = 0;
+
+               all = applet_get_all_connections (applet);
+               connections = nm_device_filter_connections (device, all);
+               g_slist_free (all);
 
                active = applet_find_active_connection_for_device (device, applet, NULL);
 
-               dclass = get_device_class (device, applet);
-               if (dclass)
-                       dclass->add_menu_item (device, n_devices, active, menu, applet);
+               dclass->add_menu_item (device, n_devices > 1, connections, active, menu, applet);
+
+               g_slist_free (connections);
        }
 
  out:
diff --git a/src/applet.h b/src/applet.h
index 849a9e2..b3699d8 100644
--- a/src/applet.h
+++ b/src/applet.h
@@ -232,7 +232,8 @@ struct NMADeviceClass {
                                                gpointer callback_data);
 
        void           (*add_menu_item)        (NMDevice *device,
-                                               guint32 num_devices,
+                                               gboolean multiple_devices,
+                                               GSList *connections,
                                                NMConnection *active,
                                                GtkWidget *menu,
                                                NMApplet *applet);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]