Merge lp:~tintou/wingpanel-indicator-network/with-hidden-network into lp:~wingpanel-devs/wingpanel-indicator-network/trunk

Proposed by Corentin Noël
Status: Merged
Approved by: Danielle Foré
Approved revision: 144
Merged at revision: 144
Proposed branch: lp:~tintou/wingpanel-indicator-network/with-hidden-network
Merge into: lp:~wingpanel-devs/wingpanel-indicator-network/trunk
Diff against target: 294 lines (+122/-28)
5 files modified
po/network-indicator.pot (+23/-19)
src/Widgets/PopoverWidget.vala (+44/-4)
src/Widgets/WifiInterface.vala (+50/-1)
src/common/Widgets/AbstractWifiInterface.vala (+1/-1)
src/libnm-gtk.vapi (+4/-3)
To merge this branch: bzr merge lp:~tintou/wingpanel-indicator-network/with-hidden-network
Reviewer Review Type Date Requested Status
WingPanel Devs Pending
Review via email: mp+292590@code.launchpad.net

Commit message

Add Hidden network dialog

To post a comment you must log in.
Revision history for this message
Danielle Foré (danrabbit) wrote :

Hm even though it's probably technically correct, it looks like of weird to have the "Connect to Hidden" above the separator. Can we put it below? :p

Other than that, works for me :)

144. By Corentin Noël

Added Hidden networks

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== removed directory 'data'
=== modified file 'po/network-indicator.pot'
--- po/network-indicator.pot 2016-02-07 02:10:06 +0000
+++ po/network-indicator.pot 2016-04-22 00:57:40 +0000
@@ -8,7 +8,7 @@
8msgstr ""8msgstr ""
9"Project-Id-Version: PACKAGE VERSION\n"9"Project-Id-Version: PACKAGE VERSION\n"
10"Report-Msgid-Bugs-To: \n"10"Report-Msgid-Bugs-To: \n"
11"POT-Creation-Date: 2016-02-06 20:09-0600\n"11"POT-Creation-Date: 2016-04-22 02:56+0200\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"14"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,6 +17,14 @@
17"Content-Type: text/plain; charset=UTF-8\n"17"Content-Type: text/plain; charset=UTF-8\n"
18"Content-Transfer-Encoding: 8bit\n"18"Content-Transfer-Encoding: 8bit\n"
1919
20#: ../src/Widgets/PopoverWidget.vala:52
21msgid "Network Settings…"
22msgstr ""
23
24#: ../src/Widgets/PopoverWidget.vala:55
25msgid "Connect to Hidden Network…"
26msgstr ""
27
20#: ../src/Indicator.vala:2528#: ../src/Indicator.vala:25
21msgid "Network"29msgid "Network"
22msgstr ""30msgstr ""
@@ -25,10 +33,6 @@
25msgid "Network indicator"33msgid "Network indicator"
26msgstr ""34msgstr ""
2735
28#: ../src/Widgets/PopoverWidget.vala:42
29msgid "Network Settings…"
30msgstr ""
31
32#: ../src/common/Widgets/AbstractHotspotInterface.vala:2336#: ../src/common/Widgets/AbstractHotspotInterface.vala:23
33msgid "Hotspot"37msgid "Hotspot"
34msgstr ""38msgstr ""
@@ -37,14 +41,6 @@
37msgid "Hotspot %s"41msgid "Hotspot %s"
38msgstr ""42msgstr ""
3943
40#: ../src/common/Widgets/WidgetNMInterface.vala:26
41msgid "Unknown device"
42msgstr ""
43
44#: ../src/common/Widgets/WidgetNMInterface.vala:56
45msgid "Unknown type: %s "
46msgstr ""
47
48#: ../src/common/Widgets/AbstractWifiInterface.vala:5044#: ../src/common/Widgets/AbstractWifiInterface.vala:50
49msgid "No Access Points Available"45msgid "No Access Points Available"
50msgstr ""46msgstr ""
@@ -62,11 +58,19 @@
62msgstr ""58msgstr ""
6359
64#: ../src/common/Widgets/AbstractWifiInterface.vala:7560#: ../src/common/Widgets/AbstractWifiInterface.vala:75
65msgid "Scanning for Access Points..."61msgid "Scanning for Access Points…"
66msgstr ""62msgstr ""
6763
68#: ../src/common/Widgets/AbstractWifiInterface.vala:12064#: ../src/common/Widgets/AbstractWifiInterface.vala:120
69msgid "Wi-Fi"65msgid "Wireless"
66msgstr ""
67
68#: ../src/common/Widgets/AbstractEtherInterface.vala:25
69msgid "Virtual network: %s"
70msgstr ""
71
72#: ../src/common/Widgets/AbstractEtherInterface.vala:29
73msgid "Wired"
70msgstr ""74msgstr ""
7175
72#: ../src/common/Widgets/WifiMenuItem.vala:7776#: ../src/common/Widgets/WifiMenuItem.vala:77
@@ -89,12 +93,12 @@
89msgid "This network uses encryption."93msgid "This network uses encryption."
90msgstr ""94msgstr ""
9195
92#: ../src/common/Widgets/AbstractEtherInterface.vala:2596#: ../src/common/Widgets/WidgetNMInterface.vala:26
93msgid "Virtual network: %s"97msgid "Unknown device"
94msgstr ""98msgstr ""
9599
96#: ../src/common/Widgets/AbstractEtherInterface.vala:29100#: ../src/common/Widgets/WidgetNMInterface.vala:56
97msgid "Wired"101msgid "Unknown type: %s "
98msgstr ""102msgstr ""
99103
100#: ../src/common/Utils.vala:37104#: ../src/common/Utils.vala:37
101105
=== modified file 'src/Widgets/PopoverWidget.vala'
--- src/Widgets/PopoverWidget.vala 2015-11-03 22:06:54 +0000
+++ src/Widgets/PopoverWidget.vala 2016-04-22 00:57:40 +0000
@@ -17,10 +17,14 @@
1717
18public class Network.Widgets.PopoverWidget : Network.Widgets.NMVisualizer {18public class Network.Widgets.PopoverWidget : Network.Widgets.NMVisualizer {
19 Gtk.Box main_box;19 Gtk.Box main_box;
20 Gtk.Box other_box;
21 Gtk.Box wifi_box;
22 Gtk.Box settings_box;
20 23
21 private const string SETTINGS_EXEC = "/usr/bin/switchboard -o pantheon-network";24 private const string SETTINGS_EXEC = "/usr/bin/switchboard -o pantheon-network";
2225
23 private Wingpanel.Widgets.Button show_settings_button;26 private Wingpanel.Widgets.Button show_settings_button;
27 private Wingpanel.Widgets.Button hidden_item;
2428
25 public signal void settings_shown ();29 public signal void settings_shown ();
2630
@@ -35,12 +39,22 @@
35 protected override void build_ui () {39 protected override void build_ui () {
36 40
37 main_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0);41 main_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0);
42 other_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0);
43 wifi_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0);
44 settings_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 0);
45 main_box.add (other_box);
46 main_box.add (wifi_box);
47 main_box.add (settings_box);
3848
39 add (main_box);49 add (main_box);
4050
41 if(!is_dm ()) {51 if(!is_dm ()) {
42 show_settings_button = new Wingpanel.Widgets.Button (_("Network Settings…"));52 show_settings_button = new Wingpanel.Widgets.Button (_("Network Settings…"));
43 main_box.pack_end (show_settings_button);53 settings_box.pack_end (show_settings_button);
54
55 hidden_item = new Wingpanel.Widgets.Button (_("Connect to Hidden Network…"));
56 hidden_item.no_show_all = true;
57 settings_box.pack_start (hidden_item);
44 }58 }
45 }59 }
46 60
@@ -53,17 +67,43 @@
53 }67 }
5468
55 protected override void add_interface (WidgetNMInterface widget_interface) {69 protected override void add_interface (WidgetNMInterface widget_interface) {
70 Gtk.Box container_box = other_box;
71 if (widget_interface is Network.WifiInterface) {
72 container_box = wifi_box;
73 hidden_item.no_show_all = false;
74 hidden_item.show_all ();
75 ((Network.WifiInterface) widget_interface).notify["hidden-sensitivity"].connect (() => {
76 bool hidden_sensitivity = false;
77 wifi_box.get_children ().foreach ((child) => {
78 if (child is Network.WifiInterface) {
79 hidden_sensitivity = hidden_sensitivity || ((Network.WifiInterface) child).hidden_sensitivity;
80 }
81
82 hidden_item.sensitive = hidden_sensitivity;
83 });
84 });
85 }
86
56 if (!is_dm () || main_box.get_children ().length () > 0) {87 if (!is_dm () || main_box.get_children ().length () > 0) {
57 widget_interface.sep = new Wingpanel.Widgets.Separator ();88 widget_interface.sep = new Wingpanel.Widgets.Separator ();
58 main_box.pack_end (widget_interface.sep);89 container_box.pack_end (widget_interface.sep);
59 }90 }
60 main_box.pack_end (widget_interface);91 container_box.pack_end (widget_interface);
6192
62 widget_interface.need_settings.connect (show_settings);93 widget_interface.need_settings.connect (show_settings);
63 }94 }
64 95
65 void connect_signals () {96 void connect_signals () {
66 show_settings_button.clicked.connect (show_settings);97 show_settings_button.clicked.connect (show_settings);
98 hidden_item.clicked.connect (() => {
99 bool found = false;
100 wifi_box.get_children ().foreach ((child) => {
101 if (child is Network.WifiInterface && ((Network.WifiInterface) child).hidden_sensitivity && !found) {
102 ((Network.WifiInterface) child).connect_to_hidden ();
103 found = true;
104 }
105 });
106 });
67 }107 }
68108
69 void show_settings () {109 void show_settings () {
70110
=== modified file 'src/Widgets/WifiInterface.vala'
--- src/Widgets/WifiInterface.vala 2015-10-26 13:05:52 +0000
+++ src/Widgets/WifiInterface.vala 2016-04-22 00:57:40 +0000
@@ -16,6 +16,7 @@
16 */16 */
1717
18public class Network.WifiInterface : Network.AbstractWifiInterface {18public class Network.WifiInterface : Network.AbstractWifiInterface {
19 public bool hidden_sensitivity { get; set; default = true; }
19 Wingpanel.Widgets.Switch wifi_item;20 Wingpanel.Widgets.Switch wifi_item;
20 Gtk.Revealer revealer;21 Gtk.Revealer revealer;
21 22
@@ -48,7 +49,6 @@
4849
49 revealer = new Gtk.Revealer ();50 revealer = new Gtk.Revealer ();
50 revealer.add (scrolled_box);51 revealer.add (scrolled_box);
51
52 pack_start (revealer);52 pack_start (revealer);
53 }53 }
5454
@@ -62,8 +62,10 @@
6262
63 if (wifi_device.state == NM.DeviceState.UNAVAILABLE || state == Network.State.FAILED_WIFI) {63 if (wifi_device.state == NM.DeviceState.UNAVAILABLE || state == Network.State.FAILED_WIFI) {
64 revealer.reveal_child = false;64 revealer.reveal_child = false;
65 hidden_sensitivity = false;
65 } else {66 } else {
66 revealer.reveal_child = true;67 revealer.reveal_child = true;
68 hidden_sensitivity = true;
67 }69 }
68 }70 }
69 71
@@ -115,5 +117,52 @@
115 Idle.add( () => { update (); return false; });117 Idle.add( () => { update (); return false; });
116 }118 }
117119
120 public void connect_to_hidden () {
121 var hidden_dialog = new NMAWifiDialog.for_other (nm_client, nm_settings);
122 hidden_dialog.response.connect ((response) => {
123 if (response == Gtk.ResponseType.OK) {
124 NM.Connection? fuzzy = null;
125 NM.Device dialog_device;
126 NM.AccessPoint? dialog_ap = null;
127 var dialog_connection = hidden_dialog.get_connection (out dialog_device, out dialog_ap);
128
129 foreach (var possible in nm_settings.list_connections ()) {
130 if (dialog_connection.compare (possible, NM.SettingCompareFlags.FUZZY | NM.SettingCompareFlags.IGNORE_ID)) {
131 fuzzy = possible;
132 }
133 }
134
135 string? path = null;
136 if (dialog_ap != null) {
137 path = dialog_ap.get_path ();
138 }
139
140 if (fuzzy != null) {
141 nm_client.activate_connection (fuzzy, wifi_device, path, null);
142 } else {
143 var connection_setting = dialog_connection.get_setting (typeof (NM.Setting));;
144
145 string? mode = null;
146 var setting_wireless = (NM.SettingWireless) dialog_connection.get_setting (typeof (NM.SettingWireless));
147 if (setting_wireless != null) {
148 mode = setting_wireless.get_mode ();
149 }
150
151 if (mode == "adhoc") {
152 if (connection_setting == null) {
153 connection_setting = new NM.SettingConnection ();
154 }
155
156 dialog_connection.add_setting (connection_setting);
157 }
158
159 nm_client.add_and_activate_connection (dialog_connection, dialog_device, path, null);
160 }
161 }
162 });
163
164 hidden_dialog.run ();
165 hidden_dialog.destroy ();
166 }
118}167}
119168
120169
=== modified file 'src/common/Widgets/AbstractWifiInterface.vala'
--- src/common/Widgets/AbstractWifiInterface.vala 2016-04-09 21:13:41 +0000
+++ src/common/Widgets/AbstractWifiInterface.vala 2016-04-22 00:57:40 +0000
@@ -72,7 +72,7 @@
72 spinner.start ();72 spinner.start ();
73 73
74 var scanning_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 5);74 var scanning_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 5);
75 var scanning = construct_placeholder_label (_("Scanning for Access Points..."), true);75 var scanning = construct_placeholder_label (_("Scanning for Access Points…"), true);
76 76
77 scanning_box.add (scanning);77 scanning_box.add (scanning);
78 scanning_box.add (spinner);78 scanning_box.add (spinner);
7979
=== modified file 'src/libnm-gtk.vapi'
--- src/libnm-gtk.vapi 2015-05-26 00:05:00 +0000
+++ src/libnm-gtk.vapi 2016-04-22 00:57:40 +0000
@@ -1,5 +1,6 @@
1[CCode (cheader_filename = "nm-wifi-dialog.h")]1[CCode (cheader_filename = "nm-wifi-dialog.h")]
2class NMAWifiDialog : Gtk.Dialog2class NMAWifiDialog : Gtk.Dialog {
3{3 public NMAWifiDialog (NM.Client client, NM.RemoteSettings settings, NM.Connection 0connection, NM.Device device, NM.AccessPoint ap, bool secrets_only);
4 public NMAWifiDialog (NM.Client client, NM.RemoteSettings settings, NM.Connection connection, NM.Device device, NM.AccessPoint ap, bool secrets_only);4 public NMAWifiDialog.for_other (NM.Client client, NM.RemoteSettings settings);
5 public NM.Connection get_connection (out NM.Device device, out NM.AccessPoint ap);
5}6}

Subscribers

People subscribed via source and target branches

to all changes: