Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions Flow.Launcher/Languages/en.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -483,9 +483,21 @@
<system:String x:Key="clearcachefolderMessage">Are you sure you want to delete all caches?</system:String>
<system:String x:Key="clearfolderfailMessage">Failed to clear part of folders and files. Please see log file for more information</system:String>
<system:String x:Key="welcomewindow">Wizard</system:String>
<system:String x:Key="openWelcomeWindow">Open Welcome Window</system:String>
<system:String x:Key="userdatapath">User Data Location</system:String>
<system:String x:Key="userdatapathToolTip">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.</system:String>
<system:String x:Key="userdatapathButton">Open Folder</system:String>
<system:String x:Key="openFolderButton">Open Folder</system:String>
<system:String x:Key="devtoolsReportWindow">Report Window</system:String>
<system:String x:Key="devtoolsProgressWindow">Progress Window</system:String>
<system:String x:Key="devtoolsPluginUpdateWindow">Plugin Update Window</system:String>
<system:String x:Key="devtoolsMessageBoxWindow">Message Box Window</system:String>
<system:String x:Key="devtoolsMessageBoxOkLabel">OK</system:String>
<system:String x:Key="devtoolsMessageBoxOkCancelLabel">OK / Cancel</system:String>
<system:String x:Key="devtoolsMessageBoxYesNoLabel">Yes / No</system:String>
<system:String x:Key="devtoolsMessageBoxYesNoCancelLabel">Yes / No / Cancel</system:String>
<system:String x:Key="devtoolsMessageBoxTestMessage">This is a test message box.</system:String>
<system:String x:Key="devtoolsOpenTestWindow">Open Test Window</system:String>
<system:String x:Key="advanced">Advanced</system:String>
<system:String x:Key="logLevel">Log Level</system:String>
<system:String x:Key="LogLevelNONE">Silent</system:String>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Comment thread
cubic-dev-ai[bot] marked this conversation as resolved.
}
}
catch (OperationCanceledException)
{
// Progress window cancel action triggers this path.
}
},
cancellationTokenSource.Cancel);
}

[RelayCommand]
private void OpenTestPluginUpdateWindow()
{
var window = new PluginUpdateWindow(new List<PluginUpdateInfo>());
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()
{
Expand Down
135 changes: 91 additions & 44 deletions Flow.Launcher/SettingPages/Views/SettingsPaneAbout.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -89,52 +89,99 @@
<ui:HyperlinkButton Content="icons8.com" NavigateUri="https://icons8.com/" />
</ui:SettingsCard>

<ui:SettingsCard Margin="0 14 0 0" Header="{DynamicResource devtool}">
<ui:SettingsCard.HeaderIcon>
<ui:SettingsExpander Margin="0 14 0 0" Header="{DynamicResource devtool}">
<ui:SettingsExpander.HeaderIcon>
<ui:FontIcon Glyph="&#xf12b;" />
</ui:SettingsCard.HeaderIcon>
</ui:SettingsExpander.HeaderIcon>

<ikw:SimpleStackPanel Orientation="Horizontal" Spacing="12">
<Button
x:Name="AskClearCacheFolderConfirmationButton"
Command="{Binding AskClearCacheFolderConfirmationCommand}"
Content="{Binding CacheFolderSize, Mode=OneWay}" />
<Button
Height="{Binding ElementName=AskClearCacheFolderConfirmationButton, Path=ActualHeight}"
Command="{Binding AskClearLogFolderConfirmationCommand}"
Content="{Binding LogFolderSize, Mode=OneWay}" />
<Button Height="{Binding ElementName=AskClearCacheFolderConfirmationButton, Path=ActualHeight}">
<ui:FontIcon FontSize="16" Glyph="&#xec7a;" />
<ui:FlyoutService.Flyout>
<ui:MenuFlyout>
<MenuItem Command="{Binding OpenWelcomeWindowCommand}" Header="{DynamicResource welcomewindow}">
<MenuItem.Icon>
<ui:FontIcon Glyph="&#xe939;" />
</MenuItem.Icon>
</MenuItem>

<MenuItem Command="{Binding OpenSettingsFolderCommand}" Header="{DynamicResource settingfolder}">
<MenuItem.Icon>
<ui:FontIcon Glyph="&#xe8b7;" />
</MenuItem.Icon>
</MenuItem>

<MenuItem Command="{Binding OpenLogsFolderCommand}" Header="{DynamicResource logfolder}">
<MenuItem.Icon>
<ui:FontIcon Glyph="&#xe8b7;" />
</MenuItem.Icon>
</MenuItem>

<MenuItem Command="{Binding OpenCacheFolderCommand}" Header="{DynamicResource cachefolder}">
<MenuItem.Icon>
<ui:FontIcon Glyph="&#xe8b7;" />
</MenuItem.Icon>
</MenuItem>
</ui:MenuFlyout>
</ui:FlyoutService.Flyout>
</Button>
</ikw:SimpleStackPanel>
</ui:SettingsCard>
<ui:SettingsExpander.Items>
<ui:SettingsCard Header="{DynamicResource clearcachefolder}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe74d;" />
</ui:SettingsCard.HeaderIcon>
<Button
Command="{Binding AskClearCacheFolderConfirmationCommand}"
Content="{Binding CacheFolderSize, Mode=OneWay}" />
</ui:SettingsCard>

<ui:SettingsCard Header="{DynamicResource clearlogfolder}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe74d;" />
</ui:SettingsCard.HeaderIcon>
<Button
Command="{Binding AskClearLogFolderConfirmationCommand}"
Content="{Binding LogFolderSize, Mode=OneWay}" />
</ui:SettingsCard>

<ui:SettingsCard Header="{DynamicResource settingfolder}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe8b7;" />
</ui:SettingsCard.HeaderIcon>
<Button Command="{Binding OpenSettingsFolderCommand}" Content="{DynamicResource openFolderButton}" />
</ui:SettingsCard>

<ui:SettingsCard Header="{DynamicResource logfolder}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe8b7;" />
</ui:SettingsCard.HeaderIcon>
<Button Command="{Binding OpenLogsFolderCommand}" Content="{DynamicResource openFolderButton}" />
</ui:SettingsCard>

<ui:SettingsCard Header="{DynamicResource cachefolder}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe8b7;" />
</ui:SettingsCard.HeaderIcon>
<Button Command="{Binding OpenCacheFolderCommand}" Content="{DynamicResource openFolderButton}" />
</ui:SettingsCard>

<ui:SettingsCard Header="{DynamicResource welcomewindow}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe939;" />
</ui:SettingsCard.HeaderIcon>
<Button Command="{Binding OpenWelcomeWindowCommand}" Content="{DynamicResource openWelcomeWindow}" />
</ui:SettingsCard>

<ui:SettingsCard Header="{DynamicResource devtoolsReportWindow}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe783;" />
</ui:SettingsCard.HeaderIcon>
<Button Command="{Binding OpenTestReportWindowCommand}" Content="{DynamicResource devtoolsOpenTestWindow}" />
</ui:SettingsCard>

<ui:SettingsCard Header="{DynamicResource devtoolsProgressWindow}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xe895;" />
</ui:SettingsCard.HeaderIcon>
<Button Command="{Binding OpenTestProgressWindowCommand}" Content="{DynamicResource devtoolsOpenTestWindow}" />
</ui:SettingsCard>

<ui:SettingsCard Header="{DynamicResource devtoolsPluginUpdateWindow}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xecc5;" />
</ui:SettingsCard.HeaderIcon>
<Button Command="{Binding OpenTestPluginUpdateWindowCommand}" Content="{DynamicResource devtoolsOpenTestWindow}" />
</ui:SettingsCard>

<ui:SettingsCard Header="{DynamicResource devtoolsMessageBoxWindow}">
<ui:SettingsCard.HeaderIcon>
<ui:FontIcon Glyph="&#xE8BD;" />
</ui:SettingsCard.HeaderIcon>
<Button>
<ikw:SimpleStackPanel Orientation="Horizontal" Spacing="6">
<TextBlock VerticalAlignment="Center" Text="{DynamicResource devtoolsOpenTestWindow}" />
</ikw:SimpleStackPanel>
<ui:FlyoutService.Flyout>
<ui:MenuFlyout>
<MenuItem Command="{Binding OpenTestMessageBoxCommand}" CommandParameter="OK" Header="{DynamicResource devtoolsMessageBoxOkLabel}" />
<MenuItem Command="{Binding OpenTestMessageBoxCommand}" CommandParameter="OKCancel" Header="{DynamicResource devtoolsMessageBoxOkCancelLabel}" />
<MenuItem Command="{Binding OpenTestMessageBoxCommand}" CommandParameter="YesNo" Header="{DynamicResource devtoolsMessageBoxYesNoLabel}" />
<MenuItem Command="{Binding OpenTestMessageBoxCommand}" CommandParameter="YesNoCancel" Header="{DynamicResource devtoolsMessageBoxYesNoCancelLabel}" />
</ui:MenuFlyout>
</ui:FlyoutService.Flyout>
</Button>
</ui:SettingsCard>
</ui:SettingsExpander.Items>
</ui:SettingsExpander>

<ui:SettingsExpander Margin="0 4 0 0" Header="{DynamicResource advanced}">
<ui:SettingsExpander.HeaderIcon>
Expand Down
Loading