network: show the AP mode and signal strength in the wireless dropdown
This commit is contained in:
parent
a248ecc4d4
commit
ad8223c284
2 changed files with 51 additions and 3 deletions
|
@ -22,6 +22,8 @@
|
|||
|
||||
#include "cc-network-panel.h"
|
||||
|
||||
#include "panel-cell-renderer-mode.h"
|
||||
#include "panel-cell-renderer-signal.h"
|
||||
#include "panel-common.h"
|
||||
|
||||
G_DEFINE_DYNAMIC_TYPE (CcNetworkPanel, cc_network_panel, CC_TYPE_PANEL)
|
||||
|
@ -49,6 +51,8 @@ enum {
|
|||
enum {
|
||||
PANEL_WIRELESS_COLUMN_ID,
|
||||
PANEL_WIRELESS_COLUMN_TITLE,
|
||||
PANEL_WIRELESS_COLUMN_STRENGTH,
|
||||
PANEL_WIRELESS_COLUMN_MODE,
|
||||
PANEL_WIRELESS_COLUMN_LAST
|
||||
};
|
||||
|
||||
|
@ -309,6 +313,8 @@ panel_add_device_to_listview (PanelDeviceItem *item)
|
|||
typedef struct {
|
||||
gchar *access_point;
|
||||
gchar *active_access_point;
|
||||
guint strength;
|
||||
guint mode;
|
||||
CcNetworkPanel *panel;
|
||||
} PanelAccessPointItem;
|
||||
|
||||
|
@ -328,7 +334,9 @@ panel_got_proxy_access_point_cb (GObject *source_object, GAsyncResult *res, gpoi
|
|||
GtkWidget *widget;
|
||||
guint i = 0;
|
||||
GVariantIter iter;
|
||||
GVariant *variant_mode = NULL;
|
||||
GVariant *variant_ssid = NULL;
|
||||
GVariant *variant_strength = NULL;
|
||||
PanelAccessPointItem *ap_item = (PanelAccessPointItem *) user_data;
|
||||
CcNetworkPanelPrivate *priv = ap_item->panel->priv;
|
||||
|
||||
|
@ -339,6 +347,14 @@ panel_got_proxy_access_point_cb (GObject *source_object, GAsyncResult *res, gpoi
|
|||
goto out;
|
||||
}
|
||||
|
||||
/* get the strength */
|
||||
variant_strength = g_dbus_proxy_get_cached_property (proxy, "Strength");
|
||||
ap_item->strength = g_variant_get_byte (variant_strength);
|
||||
|
||||
/* get the mode */
|
||||
variant_mode = g_dbus_proxy_get_cached_property (proxy, "Mode");
|
||||
ap_item->mode = g_variant_get_uint32 (variant_mode);
|
||||
|
||||
/* get the (non NULL terminated, urgh) SSID */
|
||||
variant_ssid = g_dbus_proxy_get_cached_property (proxy, "Ssid");
|
||||
len = g_variant_iter_init (&iter, variant_ssid);
|
||||
|
@ -351,7 +367,7 @@ panel_got_proxy_access_point_cb (GObject *source_object, GAsyncResult *res, gpoi
|
|||
ssid = g_new0 (gchar, len + 1);
|
||||
while (g_variant_iter_loop (&iter, "y", &tmp))
|
||||
ssid[i++] = tmp;
|
||||
g_debug ("adding access point %s", ssid);
|
||||
g_debug ("adding access point %s (%i%%) [%i]", ssid, ap_item->strength, ap_item->mode);
|
||||
|
||||
/* add to the model */
|
||||
liststore_wireless_network = GTK_LIST_STORE (gtk_builder_get_object (priv->builder,
|
||||
|
@ -361,6 +377,8 @@ panel_got_proxy_access_point_cb (GObject *source_object, GAsyncResult *res, gpoi
|
|||
&treeiter,
|
||||
PANEL_WIRELESS_COLUMN_ID, ap_item->access_point,
|
||||
PANEL_WIRELESS_COLUMN_TITLE, ssid,
|
||||
PANEL_WIRELESS_COLUMN_STRENGTH, ap_item->strength,
|
||||
PANEL_WIRELESS_COLUMN_MODE, ap_item->mode,
|
||||
-1);
|
||||
|
||||
/* is this what we're on already? */
|
||||
|
@ -378,6 +396,10 @@ out:
|
|||
g_free (ssid);
|
||||
if (variant_ssid != NULL)
|
||||
g_variant_unref (variant_ssid);
|
||||
if (variant_strength != NULL)
|
||||
g_variant_unref (variant_strength);
|
||||
if (variant_mode != NULL)
|
||||
g_variant_unref (variant_mode);
|
||||
if (proxy != NULL)
|
||||
g_object_unref (proxy);
|
||||
return;
|
||||
|
@ -941,9 +963,11 @@ cc_network_panel_init (CcNetworkPanel *panel)
|
|||
GError *error;
|
||||
gint value;
|
||||
GSettings *settings_tmp;
|
||||
GtkAdjustment *adjustment;
|
||||
GtkCellRenderer *renderer;
|
||||
GtkComboBox *combobox;
|
||||
GtkTreePath *path;
|
||||
GtkTreeSelection *selection;
|
||||
GtkAdjustment *adjustment;
|
||||
GtkWidget *widget;
|
||||
|
||||
panel->priv = NETWORK_PANEL_PRIVATE (panel);
|
||||
|
@ -1066,6 +1090,26 @@ cc_network_panel_init (CcNetworkPanel *panel)
|
|||
gtk_tree_selection_select_path (selection, path);
|
||||
gtk_tree_path_free (path);
|
||||
|
||||
/* setup wireless combobox model */
|
||||
combobox = GTK_COMBO_BOX (gtk_builder_get_object (panel->priv->builder,
|
||||
"combobox_network_name"));
|
||||
|
||||
renderer = panel_cell_renderer_mode_new ();
|
||||
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
|
||||
renderer,
|
||||
FALSE);
|
||||
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
|
||||
"mode", PANEL_WIRELESS_COLUMN_MODE,
|
||||
NULL);
|
||||
|
||||
renderer = panel_cell_renderer_signal_new ();
|
||||
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox),
|
||||
renderer,
|
||||
FALSE);
|
||||
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox), renderer,
|
||||
"signal", PANEL_WIRELESS_COLUMN_STRENGTH,
|
||||
NULL);
|
||||
|
||||
/* disable for now */
|
||||
widget = GTK_WIDGET (gtk_builder_get_object (panel->priv->builder,
|
||||
"button_add"));
|
||||
|
|
|
@ -8,6 +8,10 @@
|
|||
<column type="gchararray"/>
|
||||
<!-- column-name title -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name strength -->
|
||||
<column type="guint"/>
|
||||
<!-- column-name mode -->
|
||||
<column type="guint"/>
|
||||
</columns>
|
||||
</object>
|
||||
<object class="GtkListStore" id="liststore_devices">
|
||||
|
@ -532,7 +536,7 @@
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="combobox_network_name">
|
||||
<object class="GtkComboBox" id="combobox_network_name">
|
||||
<property name="visible">True</property>
|
||||
<property name="has-entry">True</property>
|
||||
<property name="model">liststore_wireless_network</property>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue