mirror of
https://github.com/bitwarden/android.git
synced 2024-12-25 02:18:27 +03:00
display alert action
This commit is contained in:
parent
a3e165fa06
commit
f73a5d6307
3 changed files with 97 additions and 0 deletions
|
@ -328,6 +328,79 @@ namespace Bit.Droid.Services
|
||||||
return Build.Model;
|
return Build.Model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task<string> DisplayAlertAsync(string title, string message, string cancel, params string[] buttons)
|
||||||
|
{
|
||||||
|
var activity = (MainActivity)CrossCurrentActivity.Current.Activity;
|
||||||
|
if(activity == null)
|
||||||
|
{
|
||||||
|
return Task.FromResult<string>(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
var result = new TaskCompletionSource<string>();
|
||||||
|
var alertBuilder = new AlertDialog.Builder(activity);
|
||||||
|
alertBuilder.SetTitle(title);
|
||||||
|
|
||||||
|
if(!string.IsNullOrWhiteSpace(message))
|
||||||
|
{
|
||||||
|
if(buttons != null && buttons.Length > 2)
|
||||||
|
{
|
||||||
|
if(!string.IsNullOrWhiteSpace(title))
|
||||||
|
{
|
||||||
|
alertBuilder.SetTitle($"{title}: {message}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alertBuilder.SetTitle(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alertBuilder.SetMessage(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(buttons != null)
|
||||||
|
{
|
||||||
|
if(buttons.Length > 2)
|
||||||
|
{
|
||||||
|
alertBuilder.SetItems(buttons, (sender, args) =>
|
||||||
|
{
|
||||||
|
result.TrySetResult(buttons[args.Which]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(buttons.Length > 0)
|
||||||
|
{
|
||||||
|
alertBuilder.SetPositiveButton(buttons[0], (sender, args) =>
|
||||||
|
{
|
||||||
|
result.TrySetResult(buttons[0]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if(buttons.Length > 1)
|
||||||
|
{
|
||||||
|
alertBuilder.SetNeutralButton(buttons[1], (sender, args) =>
|
||||||
|
{
|
||||||
|
result.TrySetResult(buttons[1]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!string.IsNullOrWhiteSpace(cancel))
|
||||||
|
{
|
||||||
|
alertBuilder.SetNegativeButton(cancel, (sender, args) =>
|
||||||
|
{
|
||||||
|
result.TrySetResult(cancel);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var alert = alertBuilder.Create();
|
||||||
|
alert.CancelEvent += (o, args) => { result.TrySetResult(null); };
|
||||||
|
alert.Show();
|
||||||
|
return result.Task;
|
||||||
|
}
|
||||||
|
|
||||||
private bool DeleteDir(Java.IO.File dir)
|
private bool DeleteDir(Java.IO.File dir)
|
||||||
{
|
{
|
||||||
if(dir != null && dir.IsDirectory)
|
if(dir != null && dir.IsDirectory)
|
||||||
|
|
|
@ -23,5 +23,6 @@ namespace Bit.App.Abstractions
|
||||||
bool SupportsAutofillService();
|
bool SupportsAutofillService();
|
||||||
int SystemMajorVersion();
|
int SystemMajorVersion();
|
||||||
string SystemModel();
|
string SystemModel();
|
||||||
|
Task<string> DisplayAlertAsync(string title, string message, string cancel, params string[] buttons);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -264,6 +264,29 @@ namespace Bit.iOS.Services
|
||||||
return UIDevice.CurrentDevice.Model;
|
return UIDevice.CurrentDevice.Model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task<string> DisplayAlertAsync(string title, string message, string cancel, params string[] buttons)
|
||||||
|
{
|
||||||
|
var result = new TaskCompletionSource<string>();
|
||||||
|
var alert = UIAlertController.Create(title ?? string.Empty, message, UIAlertControllerStyle.Alert);
|
||||||
|
if(!string.IsNullOrWhiteSpace(cancel))
|
||||||
|
{
|
||||||
|
alert.AddAction(UIAlertAction.Create(cancel, UIAlertActionStyle.Cancel, x =>
|
||||||
|
{
|
||||||
|
result.TrySetResult(cancel);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
foreach(var button in buttons)
|
||||||
|
{
|
||||||
|
alert.AddAction(UIAlertAction.Create(button, UIAlertActionStyle.Default, x =>
|
||||||
|
{
|
||||||
|
result.TrySetResult(button);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
var vc = GetPresentedViewController();
|
||||||
|
vc?.PresentViewController(alert, true, null);
|
||||||
|
return result.Task;
|
||||||
|
}
|
||||||
|
|
||||||
private void ImagePicker_FinishedPickingMedia(object sender, UIImagePickerMediaPickedEventArgs e)
|
private void ImagePicker_FinishedPickingMedia(object sender, UIImagePickerMediaPickedEventArgs e)
|
||||||
{
|
{
|
||||||
if(sender is UIImagePickerController picker)
|
if(sender is UIImagePickerController picker)
|
||||||
|
|
Loading…
Reference in a new issue