private void LoginCanceled(object sender, EventArgs e) { // Remove the login UI. _loginUI.Hide(); _loginUI = null; // Cancel the task completion source task. _loginTaskCompletionSrc.TrySetCanceled(); }
private void ShowLoginUI() { // Create a view to show login controls over the map view. var ovBounds = _myMapView.Bounds; _loginUI = new LoginOverlay(ovBounds, 0.65f, UIColor.DarkGray); // Handle the login event to get the login entered by the user. _loginUI.OnLoginInfoEntered += LoginEntered; // Handle the cancel event when the user closes the dialog without entering a login. _loginUI.OnCanceled += LoginCanceled; // Add the login UI view (will display semi-transparent over the map view). View.Add(_loginUI); }
// Handle the OnLoginEntered event from the login UI, LoginEventArgs contains the username, password, and domain that were entered private void LoginEntered(object sender, LoginEventArgs e) { // Make sure the task completion source has all the information needed. if (_loginTaskCompletionSrc == null || _loginTaskCompletionSrc.Task == null || _loginTaskCompletionSrc.Task.AsyncState == null) { return; } try { // Get the associated CredentialRequestInfo (will need the URI of the service being accessed). CredentialRequestInfo requestInfo = _loginTaskCompletionSrc.Task.AsyncState as CredentialRequestInfo; // Create a new network credential using the values entered by the user. var netCred = new System.Net.NetworkCredential(e.Username, e.Password, e.Domain); // Create a new ArcGIS network credential to hold the network credential and service URI. var arcgisCred = new ArcGISNetworkCredential { Credentials = netCred, ServiceUri = requestInfo.ServiceUri }; // Set the task completion source result with the ArcGIS network credential. // AuthenticationManager is waiting for this result and will add it to its Credentials collection. _loginTaskCompletionSrc.TrySetResult(arcgisCred); } catch (Exception ex) { // Unable to create credential, set the exception on the task completion source. _loginTaskCompletionSrc.TrySetException(ex); } finally { // Get rid of the login controls. _loginUI.Hide(); _loginUI = null; } }