private async Task DisplayNetworkReportAsync(WiFiNetworkReport report) { rootPage.NotifyUser(string.Format("Network Report Timestamp: {0}", report.Timestamp), NotifyType.StatusMessage); ResultCollection.Clear(); ConcurrentDictionary <string, WiFiNetworkDisplay> dictionary = new ConcurrentDictionary <string, WiFiNetworkDisplay>(); foreach (var network in report.AvailableNetworks) { if (!String.IsNullOrEmpty(network.Ssid)) { var item = new WiFiNetworkDisplay(network, firstAdapter); dictionary.TryAdd(network.Ssid, item); } } var values = dictionary.Values; foreach (var item in values) { /*await*/ item.UpdateAsync(); if (IsConnected(item.AvailableNetwork)) { ResultCollection.Insert(0, item); ResultsListView.SelectedItem = ResultsListView.Items[0]; ResultsListView.ScrollIntoView(ResultsListView.SelectedItem); SwitchToItemState(item.AvailableNetwork, WifiConnectedState, false); } else { ResultCollection.Add(item); } } ResultsListView.Focus(FocusState.Pointer); }
private async Task DisplayNetworkReportAsync(WiFiNetworkReport report) { rootPage.NotifyUser(string.Format("Network Report Timestamp: {0}", report.Timestamp), NotifyType.StatusMessage); ResultCollection.Clear(); foreach (var network in report.AvailableNetworks) { var item = new WiFiNetworkDisplay(network, firstAdapter); /*await*/ item.UpdateAsync(); if (IsConnected(network)) { ResultCollection.Insert(0, item); ResultsListView.SelectedItem = ResultsListView.Items[0]; ResultsListView.ScrollIntoView(ResultsListView.SelectedItem); SwitchToItemState(network, WifiConnectedState, false); } else { ResultCollection.Add(item); } } ResultsListView.Focus(FocusState.Pointer); }
private async Task DisplayNetworkReportAsync(WiFiNetworkReport report) { ResultCollection.Clear(); foreach (var network in report.AvailableNetworks) { var item = new WiFiNetworkDisplay(network, firstAdapter); /*await*/ item.UpdateAsync(); if (IsConnected(network)) { ResultCollection.Insert(0, item); ResultsListView.SelectedItem = ResultsListView.Items[0]; ResultsListView.ScrollIntoView(ResultsListView.SelectedItem); SwitchToItemState(network, WifiConnectedState, false); } else { ResultCollection.Add(item); } } ResultsListView.Focus(FocusState.Pointer); }
private async void DoWifiConnect(object sender, RoutedEventArgs e, bool pushButtonConnect) { var selectedNetwork = ResultsListView.SelectedItem as WiFiNetworkDisplay; if (selectedNetwork == null || firstAdapter == null) { rootPage.NotifyUser("Network not selected", NotifyType.ErrorMessage); return; } WiFiReconnectionKind reconnectionKind = WiFiReconnectionKind.Manual; if (selectedNetwork.ConnectAutomatically) { reconnectionKind = WiFiReconnectionKind.Automatic; } Task <WiFiConnectionResult> didConnect = null; WiFiConnectionResult result = null; if (pushButtonConnect) { if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5, 0)) { didConnect = firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind, null, String.Empty, WiFiConnectionMethod.WpsPushButton).AsTask <WiFiConnectionResult>(); } } else if (selectedNetwork.IsEapAvailable) { if (selectedNetwork.UsePassword) { var credential = new PasswordCredential(); if (!String.IsNullOrEmpty(selectedNetwork.Domain)) { credential.Resource = selectedNetwork.Domain; } credential.UserName = selectedNetwork.UserName ?? ""; credential.Password = selectedNetwork.Password ?? ""; didConnect = firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind, credential).AsTask <WiFiConnectionResult>(); } else { didConnect = firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind).AsTask <WiFiConnectionResult>(); } } else if (selectedNetwork.AvailableNetwork.SecuritySettings.NetworkAuthenticationType == Windows.Networking.Connectivity.NetworkAuthenticationType.Open80211 && selectedNetwork.AvailableNetwork.SecuritySettings.NetworkEncryptionType == NetworkEncryptionType.None) { didConnect = firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind).AsTask <WiFiConnectionResult>(); } else { // Only the password potion of the credential need to be supplied if (String.IsNullOrEmpty(selectedNetwork.Password)) { didConnect = firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind).AsTask <WiFiConnectionResult>(); } else { var credential = new PasswordCredential(); credential.Password = selectedNetwork.Password ?? ""; didConnect = firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind, credential).AsTask <WiFiConnectionResult>(); } } SwitchToItemState(selectedNetwork, WifiConnectingState, false); if (didConnect != null) { result = await didConnect; } if (result != null && result.ConnectionStatus == WiFiConnectionStatus.Success) { rootPage.NotifyUser(string.Format("Successfully connected to {0}.", selectedNetwork.Ssid), NotifyType.StatusMessage); // refresh the webpage webViewGrid.Visibility = Visibility.Visible; toggleBrowserButton.Content = "Hide Browser Control"; refreshBrowserButton.Visibility = Visibility.Visible; ResultCollection.Remove(selectedNetwork); ResultCollection.Insert(0, selectedNetwork); ResultsListView.SelectedItem = ResultsListView.Items[0]; ResultsListView.ScrollIntoView(ResultsListView.SelectedItem); SwitchToItemState(selectedNetwork, WifiConnectedState, false); } else { rootPage.NotifyUser(string.Format("Could not connect to {0}. Error: {1}", selectedNetwork.Ssid, result.ConnectionStatus), NotifyType.ErrorMessage); SwitchToItemState(selectedNetwork, WifiConnectState, false); } // Since a connection attempt was made, update the connectivity level displayed for each foreach (var network in ResultCollection) { network.UpdateConnectivityLevel(); } }
private void ViewModel_OnSelect(object sender, EventArgs e) { ResultsListView.ScrollIntoView(ViewModel.SelectedWiFiNetwork); SetSelectedItemState(ViewModel.SelectedWiFiNetwork); ResultsListView.Focus(FocusState.Pointer); }
private async void DoWifiConnect(object sender, RoutedEventArgs e, bool pushButtonConnect) { var selectedNetwork = ResultsListView.SelectedItem as WiFiNetworkDisplay; if (selectedNetwork == null || firstAdapter == null) { rootPage.NotifyUser("Network not selected", NotifyType.ErrorMessage); return; } var ssid = selectedNetwork.AvailableNetwork.Ssid; if (string.IsNullOrEmpty(ssid)) { if (string.IsNullOrEmpty(selectedNetwork.HiddenSsid)) { rootPage.NotifyUser("Ssid required for connection to hidden network.", NotifyType.ErrorMessage); return; } else { ssid = selectedNetwork.HiddenSsid; } } WiFiReconnectionKind reconnectionKind = WiFiReconnectionKind.Manual; if (selectedNetwork.ConnectAutomatically) { reconnectionKind = WiFiReconnectionKind.Automatic; } Task <WiFiConnectionResult> didConnect = null; WiFiConnectionResult result = null; if (pushButtonConnect) { if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5, 0)) { didConnect = firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind, null, string.Empty, WiFiConnectionMethod.WpsPushButton).AsTask(); } } else { PasswordCredential credential = new PasswordCredential(); if (selectedNetwork.IsEapAvailable && selectedNetwork.UsePassword) { if (!String.IsNullOrEmpty(selectedNetwork.Domain)) { credential.Resource = selectedNetwork.Domain; } credential.UserName = selectedNetwork.UserName ?? ""; credential.Password = selectedNetwork.Password ?? ""; } else if (!String.IsNullOrEmpty(selectedNetwork.Password)) { credential.Password = selectedNetwork.Password; } if (selectedNetwork.IsHiddenNetwork) { // Hidden networks require the SSID to be supplied didConnect = firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind, credential, ssid).AsTask(); } else { didConnect = firstAdapter.ConnectAsync(selectedNetwork.AvailableNetwork, reconnectionKind, credential).AsTask(); } } SwitchToItemState(selectedNetwork, WifiConnectingState, false); if (didConnect != null) { result = await didConnect; } if (result != null && result.ConnectionStatus == WiFiConnectionStatus.Success) { rootPage.NotifyUser(string.Format("Successfully connected to {0}.", selectedNetwork.Ssid), NotifyType.StatusMessage); // refresh the webpage webViewGrid.Visibility = Visibility.Visible; toggleBrowserButton.Content = "Hide Browser Control"; refreshBrowserButton.Visibility = Visibility.Visible; ResultCollection.Remove(selectedNetwork); ResultCollection.Insert(0, selectedNetwork); ResultsListView.SelectedItem = ResultsListView.Items[0]; ResultsListView.ScrollIntoView(ResultsListView.SelectedItem); SwitchToItemState(selectedNetwork, WifiConnectedState, false); } else { // Entering the wrong password may cause connection attempts to timeout // Disconnecting the adapter will return it to a non-busy state if (result.ConnectionStatus == WiFiConnectionStatus.Timeout) { firstAdapter.Disconnect(); } rootPage.NotifyUser(string.Format("Could not connect to {0}. Error: {1}", selectedNetwork.Ssid, (result != null ? result.ConnectionStatus : WiFiConnectionStatus.UnspecifiedFailure)), NotifyType.ErrorMessage); SwitchToItemState(selectedNetwork, WifiConnectState, false); } // Since a connection attempt was made, update the connectivity level displayed for each foreach (var network in ResultCollection) { var task = network.UpdateConnectivityLevelAsync(); } }