[gnome-control-center] network: Show hotspot details in a new sub-frame to match the mockup
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] network: Show hotspot details in a new sub-frame to match the mockup
- Date: Mon, 30 Jul 2012 09:05:21 +0000 (UTC)
commit ae5acbe421159fc559746713d56e6c18a84cca6d
Author: Richard Hughes <richard hughsie com>
Date: Mon Jul 30 09:53:38 2012 +0100
network: Show hotspot details in a new sub-frame to match the mockup
panels/network/net-device-wifi.c | 123 ++++++++-------
panels/network/network-wifi.ui | 304 +++++++++++++++++++++++++++-----------
2 files changed, 285 insertions(+), 142 deletions(-)
---
diff --git a/panels/network/net-device-wifi.c b/panels/network/net-device-wifi.c
index 42e8b18..07dd156 100644
--- a/panels/network/net-device-wifi.c
+++ b/panels/network/net-device-wifi.c
@@ -619,22 +619,53 @@ device_wifi_refresh_saved_connections (NetDeviceWifi *device_wifi)
}
static void
+nm_device_wifi_refresh_hotspot (NetDeviceWifi *device_wifi)
+{
+ const GByteArray *ssid;
+ gchar *hotspot_secret = NULL;
+ gchar *hotspot_security = NULL;
+ gchar *hotspot_ssid = NULL;
+ NMDevice *nm_device;
+
+ /* refresh hotspot ui */
+ nm_device = net_device_get_nm_device (NET_DEVICE (device_wifi));
+ ssid = device_get_hotspot_ssid (device_wifi, nm_device);
+ if (ssid)
+ hotspot_ssid = nm_utils_ssid_to_utf8 (ssid);
+ device_get_hotspot_security_details (device_wifi,
+ nm_device,
+ &hotspot_secret,
+ &hotspot_security);
+
+ panel_set_device_widget_details (device_wifi->priv->builder,
+ "hotspot_network_name",
+ hotspot_ssid);
+ panel_set_device_widget_details (device_wifi->priv->builder,
+ "hotspot_security_key",
+ hotspot_secret);
+ panel_set_device_widget_details (device_wifi->priv->builder,
+ "hotspot_security",
+ hotspot_security);
+ panel_set_device_widget_details (device_wifi->priv->builder,
+ "hotspot_connected",
+ NULL);
+
+ g_free (hotspot_secret);
+ g_free (hotspot_security);
+ g_free (hotspot_ssid);
+}
+
+static void
nm_device_wifi_refresh_ui (NetDeviceWifi *device_wifi)
{
const gchar *str;
- gboolean can_start_hotspot;
gboolean is_connected;
gboolean is_hotspot;
- gchar *hotspot_secret;
- gchar *hotspot_security;
- gchar *hotspot_ssid;
gchar *str_tmp = NULL;
- GtkWidget *sw;
GtkWidget *widget;
gint strength = 0;
guint speed = 0;
NMAccessPoint *active_ap;
- NMClientPermissionResult perm;
NMDevice *nm_device;
NMDeviceState state;
NMClient *client;
@@ -643,6 +674,8 @@ nm_device_wifi_refresh_ui (NetDeviceWifi *device_wifi)
nm_device = net_device_get_nm_device (NET_DEVICE (device_wifi));
state = nm_device_get_state (nm_device);
is_hotspot = device_is_hotspot (device_wifi);
+ if (is_hotspot)
+ nm_device_wifi_refresh_hotspot (device_wifi);
/* set device kind */
widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->priv->builder, "label_device"));
@@ -669,12 +702,8 @@ nm_device_wifi_refresh_ui (NetDeviceWifi *device_wifi)
/* set device state, with status and optionally speed */
widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->priv->builder, "label_status"));
- if (is_hotspot) {
- gtk_label_set_label (GTK_LABEL (widget), _("Hotspot"));
- } else {
- gtk_label_set_label (GTK_LABEL (widget),
- panel_device_state_to_localized_string (nm_device));
- }
+ gtk_label_set_label (GTK_LABEL (widget),
+ panel_device_state_to_localized_string (nm_device));
gtk_widget_set_tooltip_text (widget, panel_device_state_reason_to_localized_string (nm_device));
/* The options button is always enabled for wired connections,
@@ -684,46 +713,6 @@ nm_device_wifi_refresh_ui (NetDeviceWifi *device_wifi)
is_connected = find_connection_for_device (device_wifi, nm_device) != NULL;
gtk_widget_set_sensitive (widget, is_connected);
- /* sort out hotspot ui */
- is_hotspot = device_is_hotspot (device_wifi);
- hotspot_ssid = NULL;
- hotspot_secret = NULL;
- hotspot_security = NULL;
- if (is_hotspot) {
- const GByteArray *ssid;
- ssid = device_get_hotspot_ssid (device_wifi, nm_device);
- if (ssid) {
- hotspot_ssid = nm_utils_ssid_to_utf8 (ssid);
- }
- device_get_hotspot_security_details (device_wifi, nm_device, &hotspot_secret, &hotspot_security);
- }
-
- widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->priv->builder,
- "start_hotspot_button"));
- gtk_widget_set_visible (widget, !is_hotspot);
-
- sw = GTK_WIDGET (gtk_builder_get_object (device_wifi->priv->builder,
- "device_off_switch"));
- perm = nm_client_get_permission_result (client, NM_CLIENT_PERMISSION_WIFI_SHARE_OPEN);
- can_start_hotspot = gtk_switch_get_active (GTK_SWITCH (sw)) &&
- (perm == NM_CLIENT_PERMISSION_RESULT_YES ||
- perm == NM_CLIENT_PERMISSION_RESULT_AUTH);
- gtk_widget_set_sensitive (widget, can_start_hotspot);
-
- widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->priv->builder,
- "stop_hotspot_button"));
- gtk_widget_set_visible (widget, is_hotspot);
-
- panel_set_device_widget_details (device_wifi->priv->builder,
- "hotspot_network_name",
- hotspot_ssid);
- g_free (hotspot_ssid);
-
- panel_set_device_widget_details (device_wifi->priv->builder,
- "hotspot_security_key",
- hotspot_secret);
- g_free (hotspot_secret);
-
/* device MAC */
str = nm_device_wifi_get_hw_address (NM_DEVICE_WIFI (nm_device));
panel_set_device_widget_details (device_wifi->priv->builder,
@@ -733,8 +722,6 @@ nm_device_wifi_refresh_ui (NetDeviceWifi *device_wifi)
active_ap = nm_device_wifi_get_active_access_point (NM_DEVICE_WIFI (nm_device));
if (state == NM_DEVICE_STATE_UNAVAILABLE)
str_tmp = NULL;
- else if (is_hotspot)
- str_tmp = hotspot_security;
else if (active_ap != NULL)
str_tmp = get_ap_security_string (active_ap);
panel_set_device_widget_details (device_wifi->priv->builder,
@@ -1239,6 +1226,9 @@ activate_cb (NMClient *client,
GError *error,
NetDeviceWifi *device_wifi)
{
+ GtkWidget *widget;
+ GtkSwitch *sw;
+
if (error) {
g_warning ("Failed to add new connection: (%d) %s",
error->code,
@@ -1246,7 +1236,18 @@ activate_cb (NMClient *client,
return;
}
+ /* show hotspot tab */
+ widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->priv->builder, "notebook_view"));
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (widget), 3);
nm_device_wifi_refresh_ui (device_wifi);
+
+ /* force switch to on as this succeeded */
+ sw = GTK_SWITCH (gtk_builder_get_object (device_wifi->priv->builder,
+ "switch_hotspot_off"));
+ device_wifi->priv->updating_device = TRUE;
+ gtk_switch_set_active (sw, TRUE);
+ device_wifi->priv->updating_device = FALSE;
+
}
static void
@@ -1478,6 +1479,7 @@ stop_shared_connection (NetDeviceWifi *device_wifi)
}
nm_device_wifi_refresh_ui (device_wifi);
+ show_wifi_list (device_wifi);
}
static void
@@ -1490,12 +1492,17 @@ stop_hotspot_response_cb (GtkWidget *dialog, gint response, NetDeviceWifi *devic
}
static void
-stop_hotspot (GtkButton *button, NetDeviceWifi *device_wifi)
+switch_hotspot_changed_cb (GtkSwitch *sw,
+ GParamSpec *pspec,
+ NetDeviceWifi *device_wifi)
{
GtkWidget *dialog;
GtkWidget *window;
CcNetworkPanel *panel;
+ if (device_wifi->priv->updating_device)
+ return;
+
panel = net_object_get_panel (NET_OBJECT (device_wifi));
window = gtk_widget_get_toplevel (GTK_WIDGET (panel));
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
@@ -1969,7 +1976,7 @@ net_device_wifi_init (NetDeviceWifi *device_wifi)
g_signal_connect (widget, "clicked",
G_CALLBACK (start_hotspot), device_wifi);
widget = GTK_WIDGET (gtk_builder_get_object (device_wifi->priv->builder,
- "stop_hotspot_button"));
- g_signal_connect (widget, "clicked",
- G_CALLBACK (stop_hotspot), device_wifi);
+ "switch_hotspot_off"));
+ g_signal_connect (widget, "notify::active",
+ G_CALLBACK (switch_hotspot_changed_cb), device_wifi);
}
diff --git a/panels/network/network-wifi.ui b/panels/network/network-wifi.ui
index dd6d938..4193c80 100644
--- a/panels/network/network-wifi.ui
+++ b/panels/network/network-wifi.ui
@@ -428,40 +428,6 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="heading_hotspot_network_name">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Network Name</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">9</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="heading_hotspot_security_key">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label" translatable="yes">Security Key</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">10</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
<object class="GtkLabel" id="label_security">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -477,36 +443,6 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="label_hotspot_network_name">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label">My Hot Spot</property>
- <property name="selectable">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">9</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label_hotspot_security_key">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label">My Secret</property>
- <property name="selectable">True</property>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">10</property>
- <property name="width">2</property>
- <property name="height">1</property>
- </packing>
- </child>
- <child>
<object class="GtkButton" id="button_back">
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -608,24 +544,6 @@
<property name="can_focus">False</property>
<property name="margin_top">12</property>
<child>
- <object class="GtkButton" id="stop_hotspot_button">
- <property name="label" translatable="yes">_Stop Hotspot...</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="halign">start</property>
- <property name="valign">end</property>
- <property name="hexpand">True</property>
- <property name="vexpand">True</property>
- <property name="use_underline">True</property>
- <property name="xalign">1</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
<object class="GtkButton" id="button_options">
<property name="label" translatable="yes">_Options...</property>
<property name="visible">True</property>
@@ -688,10 +606,228 @@
</packing>
</child>
<child>
- <object class="GtkLabel" id="label35">
+ <object class="GtkVBox" id="box_hotspot">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label">label</property>
+ <property name="border_width">12</property>
+ <property name="spacing">9</property>
+ <child>
+ <object class="GtkBox" id="box_hotspot_top">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox" id="vbox345">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="hexpand">True</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">3</property>
+ <child>
+ <object class="GtkLabel" id="label_hotspot_title">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Wireless Hotspot</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ <attribute name="scale" value="1.2"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_hotspot_explanation">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Switch off to connect to a wireless network</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSwitch" id="switch_hotspot_off">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid_hotspot">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="row_spacing">10</property>
+ <property name="column_spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="heading_hotspot_network_name">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Network Name</property>
+ <property name="mnemonic_widget">label_hotspot_name</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="heading_hotspot_connected">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Connected Devices</property>
+ <property name="mnemonic_widget">label_hotspot_connected</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="heading_hotspot_security">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Security type</property>
+ <property name="mnemonic_widget">label_hotspot_security</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_hotspot_network_name">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label">networkname0</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_hotspot_connected">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label">hughsie-dell-mini, hughsie-work</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_hotspot_security">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label">WPA Enterprise</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="heading_hotspot_security_key">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label" translatable="yes">Security key</property>
+ <property name="mnemonic_widget">label_hotspot_security_key</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">3</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_hotspot_security_key">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label">0xdeadbeef</property>
+ <property name="selectable">True</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">3</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="position">3</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]