public async Task <WiFiConnectionStatus> ConnectToNetwork(WiFiListViewItemPresenter network, bool autoConnect)
        {
            await Window.Current.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                _availableNetworksLock.WaitAsync();
            });

            if (network == null)
            {
                return(WiFiConnectionStatus.UnspecifiedFailure);
            }

            try
            {
                var result = await network.Adapter.ConnectAsync(network.AvailableNetwork, autoConnect?WiFiReconnectionKind.Automatic : WiFiReconnectionKind.Manual);

                // Call redirect only for Open WiFi
                if (NetworkPresenter.IsNetworkOpen(network))
                {
                    // Navigate to http://www.msftconnecttest.com/redirect
                    await Window.Current.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
                    {
                        await DoRedirectDialogAsync();
                    });
                }

                App.LogService.Write($"LEAVE {result.ConnectionStatus}");
                return(result.ConnectionStatus);
            }
            catch (Exception)
            {
                return(WiFiConnectionStatus.UnspecifiedFailure);
            }
        }
        private async void ConnectButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                EnableView(false, true);

                var button  = sender as Button;
                var network = button.DataContext as WiFiListViewItemPresenter;
                if (NetworkPresenter.IsNetworkOpen(network))
                {
                    await ConnectToWiFiAsync(network, null, Window.Current.Dispatcher);
                }
                else if (network.IsEapAvailable)
                {
                    SwitchToItemState(network, WiFiEapPasswordState, false);
                }
                else
                {
                    SwitchToItemState(network, WiFiPasswordState, false);
                }
            }
            catch (Exception ex)
            {
                App.LogService.Write(ex.ToString());
                throw;
            }
            finally
            {
                EnableView(true, true);
            }
        }
Пример #3
0
 private void ConnectButtonClicked(WiFiAvailableNetwork network)
 {
     if (NetworkPresenter.IsNetworkOpen(network))
     {
         ConnectToWifi(network, null, Window.Current.Dispatcher);
     }
     else
     {
         WifiPassword = "";
         SwitchToItemState(network, "WifiPasswordState", false);
     }
 }
        private async Task OnConnected(WiFiListViewItemPresenter network, WiFiConnectionStatus status, CoreDispatcher dispatcher)
        {
            if (status == WiFiConnectionStatus.Success)
            {
                await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    var itemLocation = WiFiListViewItems.IndexOf(network);

                    // Don't move if index is -1 or 0
                    if (itemLocation > 0)
                    {
                        // Make sure first network doesn't also show connected
                        SwitchToItemState(WiFiListViewItems[0], WiFiInitialState, true);

                        // Show current connected network at top of list in connected state
                        WiFiListViewItems.Move(itemLocation, 0);
                    }

                    network.Message          = string.Empty;
                    network.IsMessageVisible = false;

                    var item = SwitchToItemState(network, WiFiConnectedState, true);
                    if (item != null)
                    {
                        item.IsSelected = true;
                    }
                });

                if (!NetworkPresenter.IsNetworkOpen(network))
                {
                    NetworkConnected?.Invoke(this, new EventArgs());
                }
            }
            else
            {
                // Entering the wrong password may cause connection attempts to timeout
                // Disconnecting the adapter will return it to a non-busy state
                if (status == WiFiConnectionStatus.Timeout)
                {
                    network.Adapter.Disconnect();
                }
                var resourceLoader = ResourceLoader.GetForCurrentView();
                network.Message          = Common.GetLocalizedText(status.ToString() + "Text");
                network.IsMessageVisible = true;
                SwitchToItemState(network, WiFiConnectState, true);
            }
        }