diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml
index dae6ee81b15..cf67bffeafa 100644
--- a/Flow.Launcher/Languages/en.xaml
+++ b/Flow.Launcher/Languages/en.xaml
@@ -483,9 +483,21 @@
Are you sure you want to delete all caches?
Failed to clear part of folders and files. Please see log file for more information
Wizard
+ Open Welcome Window
User Data Location
User settings and installed plugins are saved in the user data folder. This location may vary depending on whether it's in portable mode or not.
Open Folder
+ Open Folder
+ Report Window
+ Progress Window
+ Plugin Update Window
+ Message Box Window
+ OK
+ OK / Cancel
+ Yes / No
+ Yes / No / Cancel
+ This is a test message box.
+ Open Test Window
Advanced
Log Level
Silent
diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs
index dd23de10a06..b731b89df60 100644
--- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs
+++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneAboutViewModel.cs
@@ -2,10 +2,12 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using CommunityToolkit.Mvvm.Input;
using Flow.Launcher.Core;
+using Flow.Launcher.Core.Plugin;
using Flow.Launcher.Infrastructure;
using Flow.Launcher.Infrastructure.Logger;
using Flow.Launcher.Infrastructure.UserSettings;
@@ -92,6 +94,94 @@ private void OpenWelcomeWindow()
window.ShowDialog();
}
+ [RelayCommand]
+ private void OpenTestReportWindow()
+ {
+ var reportWindow = new ReportWindow(
+ new Exception("Dev Tools test exception")
+ );
+ reportWindow.Show();
+ }
+
+ [RelayCommand]
+ private async Task OpenTestProgressWindowAsync()
+ {
+ using var cancellationTokenSource = new CancellationTokenSource();
+
+ await ProgressBoxEx.ShowAsync(
+ Localize.devtoolsProgressWindow(),
+ async reportProgress =>
+ {
+ if (reportProgress == null)
+ return;
+
+ var duration = TimeSpan.FromMinutes(1);
+ var updateInterval = TimeSpan.FromSeconds(0.5);
+ var totalSteps = (int)(duration.Ticks / updateInterval.Ticks);
+
+ try
+ {
+ for (var currentStep = 1; currentStep <= totalSteps; currentStep++)
+ {
+ await Task.Delay(updateInterval, cancellationTokenSource.Token).ConfigureAwait(false);
+ reportProgress((double)currentStep / totalSteps * 100);
+ }
+ }
+ catch (OperationCanceledException)
+ {
+ // Progress window cancel action triggers this path.
+ }
+ },
+ cancellationTokenSource.Cancel);
+ }
+
+ [RelayCommand]
+ private void OpenTestPluginUpdateWindow()
+ {
+ var window = new PluginUpdateWindow(new List());
+ window.ShowDialog();
+ }
+
+ [RelayCommand]
+ private void OpenTestMessageBox(string buttonType)
+ {
+ MessageBoxButton button;
+ string caption;
+ MessageBoxImage icon;
+
+ switch (buttonType)
+ {
+ case "OK":
+ button = MessageBoxButton.OK;
+ caption = Localize.devtoolsMessageBoxOkLabel();
+ icon = MessageBoxImage.Information;
+ break;
+ case "OKCancel":
+ button = MessageBoxButton.OKCancel;
+ caption = Localize.devtoolsMessageBoxOkCancelLabel();
+ icon = MessageBoxImage.Question;
+ break;
+ case "YesNo":
+ button = MessageBoxButton.YesNo;
+ caption = Localize.devtoolsMessageBoxYesNoLabel();
+ icon = MessageBoxImage.Question;
+ break;
+ case "YesNoCancel":
+ button = MessageBoxButton.YesNoCancel;
+ caption = Localize.devtoolsMessageBoxYesNoCancelLabel();
+ icon = MessageBoxImage.Question;
+ break;
+ default:
+ var ex = new ArgumentException($"Invalid button type: {buttonType}", nameof(buttonType));
+ App.API.LogException(ClassName, "Invalid button type passed for Test MessageBox", ex);
+ App.API.ShowMsg($"Invalid button type: {buttonType}");
+ return;
+ }
+
+ var result = MessageBoxEx.Show(Localize.devtoolsMessageBoxTestMessage(), caption, button, icon);
+ App.API.ShowMsg($"{buttonType} result: {result}");
+ }
+
[RelayCommand]
private void AskClearLogFolderConfirmation()
{
diff --git a/Flow.Launcher/SettingPages/Views/SettingsPaneAbout.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneAbout.xaml
index 1c33fd89c85..c3c2f57717f 100644
--- a/Flow.Launcher/SettingPages/Views/SettingsPaneAbout.xaml
+++ b/Flow.Launcher/SettingPages/Views/SettingsPaneAbout.xaml
@@ -89,52 +89,99 @@
-
-
+
+
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+