public static void Initialize(VirtualFileSystem virtualFileSystem, AccountManager accountManager, HorizonClient horizonClient, StyleableWindow owner) { _owner = owner; _virtualFileSystem = virtualFileSystem; _horizonClient = horizonClient; _accountManager = accountManager; }
public static async Task <(UserResult Result, string Input)> ShowInputDialog(StyleableWindow window, string title, string message, string input = "", string subMessage = "", uint maxLength = int.MaxValue) { ContentDialog contentDialog = window.ContentDialog; UserResult result = UserResult.Cancel; InputDialog content = new InputDialog(message, input = "", subMessage = "", maxLength); if (contentDialog != null) { contentDialog.Title = title; contentDialog.PrimaryButtonText = LocaleManager.Instance["InputDialogOk"]; contentDialog.SecondaryButtonText = ""; contentDialog.CloseButtonText = LocaleManager.Instance["InputDialogCancel"]; contentDialog.Content = content; contentDialog.PrimaryButtonCommand = MiniCommand.Create(() => { result = UserResult.Ok; input = content.Input; }); await contentDialog.ShowAsync(); } return(result, input); }
internal static async Task <bool> CreateChoiceDialog(StyleableWindow window, string title, string primary, string secondaryText) { if (_isChoiceDialogOpen) { return(false); } _isChoiceDialogOpen = true; UserResult response = await ShowContentDialog( window, title, primary, secondaryText, LocaleManager.Instance["InputDialogYes"], "", LocaleManager.Instance["InputDialogNo"], (int)Symbol.Help, UserResult.Yes); _isChoiceDialogOpen = false; return(response == UserResult.Yes); }
internal static async Task <bool> CreateStopEmulationDialog(StyleableWindow owner) { return(await CreateChoiceDialog( owner, LocaleManager.Instance["DialogStopEmulationTitle"], LocaleManager.Instance["DialogStopEmulationMessage"], LocaleManager.Instance["DialogExitSubMessage"])); }
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed public static bool CanUpdate(bool showWarnings, StyleableWindow parent) { #if !DISABLE_UPDATER if (RuntimeInformation.OSArchitecture != Architecture.X64) { if (showWarnings) { ContentDialogHelper.CreateWarningDialog(parent, LocaleManager.Instance["DialogUpdaterArchNotSupportedMessage"], LocaleManager.Instance["DialogUpdaterArchNotSupportedSubMessage"]); } return(false); } if (!NetworkInterface.GetIsNetworkAvailable()) { if (showWarnings) { ContentDialogHelper.CreateWarningDialog(parent, LocaleManager.Instance["DialogUpdaterNoInternetMessage"], LocaleManager.Instance["DialogUpdaterNoInternetSubMessage"]); } return(false); } if (Program.Version.Contains("dirty") || !ReleaseInformations.IsValid()) { if (showWarnings) { ContentDialogHelper.CreateWarningDialog(parent, LocaleManager.Instance["DialogUpdaterDirtyBuildMessage"], LocaleManager.Instance["DialogUpdaterDirtyBuildSubMessage"]); } return(false); } return(true); #else if (showWarnings) { if (ReleaseInformations.IsFlatHubBuild()) { ContentDialogHelper.CreateWarningDialog(parent, LocaleManager.Instance["UpdaterDisabledWarningTitle"], LocaleManager.Instance["DialogUpdaterFlatpakNotSupportedMessage"]); } else { ContentDialogHelper.CreateWarningDialog(parent, LocaleManager.Instance["UpdaterDisabledWarningTitle"], LocaleManager.Instance["DialogUpdaterDirtyBuildSubMessage"]); } } return(false); #endif }
internal static async Task CreateWarningDialog(StyleableWindow window, string primary, string secondaryText) { await ShowContentDialog( window, LocaleManager.Instance["DialogWarningTitle"], primary, secondaryText, "", "", LocaleManager.Instance["InputDialogOk"], (int)Symbol.Important); }
internal static async Task ShowNotAvailableMessage(StyleableWindow window) { // Temporary placeholder for features to be added await ShowContentDialog( window, "Feature Not Available", "The selected feature is not available in this version.", "", "", "", LocaleManager.Instance["InputDialogOk"], (int)Symbol.Important); }
internal static async Task CreateErrorDialog(StyleableWindow owner, string errorMessage, string secondaryErrorMessage = "") { Logger.Error?.Print(LogClass.Application, errorMessage); await ShowContentDialog( owner, LocaleManager.Instance["DialogErrorTitle"], LocaleManager.Instance["DialogErrorMessage"], errorMessage, secondaryErrorMessage, "", LocaleManager.Instance["InputDialogOk"], (int)Symbol.Dismiss); }
private async static Task <UserResult> ShowContentDialog( StyleableWindow window, string title, string primaryText, string secondaryText, string primaryButton, string secondaryButton, string closeButton, int iconSymbol, UserResult primaryButtonResult = UserResult.Ok) { UserResult result = UserResult.None; ContentDialog contentDialog = window.ContentDialog; await ShowDialog(); async Task ShowDialog() { if (contentDialog != null) { contentDialog.Title = title; contentDialog.PrimaryButtonText = primaryButton; contentDialog.SecondaryButtonText = secondaryButton; contentDialog.CloseButtonText = closeButton; contentDialog.Content = CreateDialogTextContent(primaryText, secondaryText, iconSymbol); contentDialog.PrimaryButtonCommand = MiniCommand.Create(() => { result = primaryButtonResult; }); contentDialog.SecondaryButtonCommand = MiniCommand.Create(() => { result = UserResult.No; }); contentDialog.CloseButtonCommand = MiniCommand.Create(() => { result = UserResult.Cancel; }); await contentDialog.ShowAsync(ContentDialogPlacement.Popup); } ; } return(result); }
public static async Task <UserResult> CreateInfoDialog( StyleableWindow window, string primary, string secondaryText, string acceptButton, string closeButton, string title) { return(await ShowContentDialog( window, title, primary, secondaryText, acceptButton, "", closeButton, (int)Symbol.Important)); }
public AmiiboWindowViewModel(StyleableWindow owner, string lastScannedAmiiboId, string titleId) { _owner = owner; _httpClient = new HttpClient { Timeout = TimeSpan.FromMilliseconds(5000) }; LastScannedAmiiboId = lastScannedAmiiboId; TitleId = titleId; Directory.CreateDirectory(Path.Join(AppDataManager.BaseDirPath, "system", "amiibo")); _amiiboJsonPath = Path.Join(AppDataManager.BaseDirPath, "system", "amiibo", "Amiibo.json"); _amiiboList = new List <Amiibo.AmiiboApi>(); _amiiboSeries = new ObservableCollection <string>(); _amiibos = new AvaloniaList <Amiibo.AmiiboApi>(); _amiiboLogoBytes = EmbeddedResources.Read("Ryujinx.Ui.Common/Resources/Logo_Amiibo.png"); _ = LoadContentAsync(); }
internal static async Task <UserResult> CreateConfirmationDialog( StyleableWindow window, string primaryText, string secondaryText, string acceptButtonText, string cancelButtonText, string title, UserResult primaryButtonResult = UserResult.Yes) { return(await ShowContentDialog( window, string.IsNullOrWhiteSpace(title)?LocaleManager.Instance["DialogConfirmationTitle"] : title, primaryText, secondaryText, acceptButtonText, "", cancelButtonText, (int)Symbol.Help, primaryButtonResult)); }
public static async Task <(UserResult Result, string Input)> ShowInputDialog(StyleableWindow window, string title, SoftwareKeyboardUiArgs args) { ContentDialog contentDialog = window.ContentDialog; UserResult result = UserResult.Cancel; SwkbdAppletDialog content = new SwkbdAppletDialog(args.HeaderText, args.SubtitleText, args.GuideText) { Message = args.InitialText ?? "" }; string input = string.Empty; content.SetInputLengthValidation(args.StringLengthMin, args.StringLengthMax); if (contentDialog != null) { content._host = contentDialog; contentDialog.Title = title; contentDialog.PrimaryButtonText = args.SubmitText; contentDialog.IsPrimaryButtonEnabled = content._checkLength(content.Message.Length); contentDialog.SecondaryButtonText = ""; contentDialog.CloseButtonText = LocaleManager.Instance["InputDialogCancel"]; contentDialog.Content = content; TypedEventHandler <ContentDialog, ContentDialogClosedEventArgs> handler = (sender, eventArgs) => { if (eventArgs.Result == ContentDialogResult.Primary) { result = UserResult.Ok; input = content.Input.Text; } }; contentDialog.Closed += handler; await contentDialog.ShowAsync(); contentDialog.Closed -= handler; } return(result, input); }
internal static async Task <string> CreateInputDialog( string title, string mainText, string subText, StyleableWindow owner, uint maxLength = int.MaxValue, string input = "") { var result = await InputDialog.ShowInputDialog( owner, title, mainText, input, subText, maxLength); if (result.Result == UserResult.Ok) { return(result.Input); } return(string.Empty); }
public async static Task <UserResult> ShowDeferredContentDialog( StyleableWindow window, string title, string primaryText, string secondaryText, string primaryButton, string secondaryButton, string closeButton, int iconSymbol, ManualResetEvent deferResetEvent, Func <Window, Task> doWhileDeferred = null) { bool startedDeferring = false; UserResult result = UserResult.None; ContentDialog contentDialog = new ContentDialog { Title = title, PrimaryButtonText = primaryButton, SecondaryButtonText = secondaryButton, CloseButtonText = closeButton, Content = CreateDialogTextContent(primaryText, secondaryText, iconSymbol), PrimaryButtonCommand = MiniCommand.Create(() => { result = primaryButton == LocaleManager.Instance["InputDialogYes"] ? UserResult.Yes : UserResult.Ok; }), }; contentDialog.SecondaryButtonCommand = MiniCommand.Create(() => { contentDialog.PrimaryButtonClick -= DeferClose; result = UserResult.No; }); contentDialog.CloseButtonCommand = MiniCommand.Create(() => { contentDialog.PrimaryButtonClick -= DeferClose; result = UserResult.Cancel; }); contentDialog.PrimaryButtonClick += DeferClose; await contentDialog.ShowAsync(ContentDialogPlacement.Popup); return(result); async void DeferClose(ContentDialog sender, ContentDialogButtonClickEventArgs args) { if (startedDeferring) { return; } contentDialog.PrimaryButtonClick -= DeferClose; startedDeferring = true; var deferral = args.GetDeferral(); result = primaryButton == LocaleManager.Instance["InputDialogYes"] ? UserResult.Yes : UserResult.Ok; contentDialog.PrimaryButtonClick -= DeferClose; #pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed Task.Run(() => { deferResetEvent.WaitOne(); Dispatcher.UIThread.Post(() => { deferral.Complete(); }); }); #pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed if (doWhileDeferred != null) { await doWhileDeferred(window); deferResetEvent.Set(); } } }