Skip to content

Commit dd3cae7

Browse files
authored
Merge branch 'dev' into ui_wpf_modern
2 parents da7c071 + ebdea4f commit dd3cae7

File tree

15 files changed

+125
-84
lines changed

15 files changed

+125
-84
lines changed

.github/workflows/default_plugins.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
runs-on: windows-latest
1111

1212
steps:
13-
- uses: actions/checkout@v4
13+
- uses: actions/checkout@v5
1414
- name: Setup .NET
1515
uses: actions/setup-dotnet@v4
1616
with:

.github/workflows/dotnet.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
NUGET_CERT_REVOCATION_MODE: offline
2121
BUILD_NUMBER: ${{ github.run_number }}
2222
steps:
23-
- uses: actions/checkout@v4
23+
- uses: actions/checkout@v5
2424
- name: Set Flow.Launcher.csproj version
2525
id: update
2626
uses: vers-one/[email protected]

.github/workflows/release_pr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
update-pr:
1212
runs-on: ubuntu-latest
1313
steps:
14-
- uses: actions/checkout@v4
14+
- uses: actions/checkout@v5
1515

1616
- uses: actions/setup-python@v5
1717
with:

Flow.Launcher/ViewModel/PluginViewModel.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,17 @@ private async Task LoadIconAsync()
3737
OnPropertyChanged(nameof(Image));
3838
}
3939

40+
private bool _imageLoaded = false;
41+
4042
public ImageSource Image
4143
{
4244
get
4345
{
44-
if (_image == ImageLoader.MissingImage)
46+
if (!_imageLoaded)
47+
{
48+
_imageLoaded = true;
4549
_ = LoadIconAsync();
50+
}
4651

4752
return _image;
4853
}

Plugins/Flow.Launcher.Plugin.BrowserBookmark/Main.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,26 @@ public void Init(PluginInitContext context)
3636
_faviconCacheDir = Path.Combine(
3737
context.CurrentPluginMetadata.PluginCacheDirectoryPath,
3838
"FaviconCache");
39+
40+
try
41+
{
42+
if (Directory.Exists(_faviconCacheDir))
43+
{
44+
var files = Directory.GetFiles(_faviconCacheDir);
45+
foreach (var file in files)
46+
{
47+
var extension = Path.GetExtension(file);
48+
if (extension is ".db-shm" or ".db-wal" or ".sqlite-shm" or ".sqlite-wal")
49+
{
50+
File.Delete(file);
51+
}
52+
}
53+
}
54+
}
55+
catch (Exception e)
56+
{
57+
Context.API.LogException(ClassName, "Failed to clean up orphaned cache files.", e);
58+
}
3959

4060
LoadBookmarksIfEnabled();
4161
}

Plugins/Flow.Launcher.Plugin.Explorer/Views/PreviewPanel.xaml

Lines changed: 19 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
88
d:DesignHeight="300"
99
d:DesignWidth="300"
10+
DataContext="{Binding RelativeSource={RelativeSource Self}}"
1011
mc:Ignorable="d">
1112
<Grid x:Name="PreviewGrid" VerticalAlignment="Stretch">
1213
<Grid.RowDefinitions>
@@ -20,40 +21,22 @@
2021
</Grid.RowDefinitions>
2122
<Image
2223
Grid.Row="0"
24+
MaxWidth="96"
25+
MaxHeight="96"
2326
Margin="5 12 8 0"
24-
Source="{Binding PreviewImage, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}">
25-
<Image.Style>
26-
<Style TargetType="Image">
27-
<Style.Triggers>
28-
<DataTrigger Binding="{Binding UseBigThumbnail}" Value="False">
29-
<Setter Property="MaxWidth" Value="96" />
30-
<Setter Property="MaxHeight" Value="96" />
31-
</DataTrigger>
32-
</Style.Triggers>
33-
</Style>
34-
</Image.Style>
35-
</Image>
27+
Source="{Binding PreviewImage, IsAsync=True, Mode=OneWay}" />
3628
<Grid Grid.Row="1">
3729
<TextBlock
3830
Margin="5 6 5 16"
3931
HorizontalAlignment="Stretch"
4032
VerticalAlignment="Top"
4133
Style="{DynamicResource PreviewItemTitleStyle}"
42-
Text="{Binding Result.Title}"
34+
Text="{Binding FileName, Mode=OneTime}"
4335
TextAlignment="Center"
4436
TextWrapping="Wrap" />
4537
</Grid>
4638
</Grid>
4739
<StackPanel Grid.Row="1">
48-
<StackPanel.Style>
49-
<Style TargetType="StackPanel">
50-
<Style.Triggers>
51-
<DataTrigger Binding="{Binding Result.SubTitle.Length}" Value="0">
52-
<Setter Property="Visibility" Value="Collapsed" />
53-
</DataTrigger>
54-
</Style.Triggers>
55-
</Style>
56-
</StackPanel.Style>
5740
<Rectangle
5841
x:Name="PreviewSep"
5942
Width="Auto"
@@ -64,7 +47,7 @@
6447
<TextBlock
6548
Margin="5 8 8 8"
6649
Style="{DynamicResource PreviewItemSubTitleStyle}"
67-
Text="{Binding Result.SubTitle}" />
50+
Text="{Binding FilePath, Mode=OneTime}" />
6851
<Rectangle
6952
Width="Auto"
7053
Height="1"
@@ -77,17 +60,17 @@
7760
<Style.Triggers>
7861
<MultiDataTrigger>
7962
<MultiDataTrigger.Conditions>
80-
<Condition Binding="{Binding FileSizeVisibility, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" Value="Collapsed" />
81-
<Condition Binding="{Binding CreatedAtVisibility, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" Value="Collapsed" />
82-
<Condition Binding="{Binding LastModifiedAtVisibility, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" Value="Collapsed" />
63+
<Condition Binding="{Binding FileSizeVisibility}" Value="Collapsed" />
64+
<Condition Binding="{Binding CreatedAtVisibility}" Value="Collapsed" />
65+
<Condition Binding="{Binding LastModifiedAtVisibility}" Value="Collapsed" />
8366
</MultiDataTrigger.Conditions>
8467
<Setter Property="Visibility" Value="Collapsed" />
8568
</MultiDataTrigger>
8669
</Style.Triggers>
8770
</Style>
8871
</Rectangle.Style>
8972
</Rectangle>
90-
<Grid Margin="0 10 0 0" Visibility="{Binding FileInfoVisibility, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}">
73+
<Grid Margin="0 10 0 0" Visibility="{Binding FileInfoVisibility, Mode=OneTime}">
9174
<Grid.ColumnDefinitions>
9275
<ColumnDefinition Width="100" />
9376
<ColumnDefinition Width="*" />
@@ -105,17 +88,17 @@
10588
Style="{DynamicResource PreviewItemSubTitleStyle}"
10689
Text="{DynamicResource FileSize}"
10790
TextWrapping="Wrap"
108-
Visibility="{Binding FileSizeVisibility, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" />
91+
Visibility="{Binding FileSizeVisibility, Mode=OneTime}" />
10992
<TextBlock
11093
Grid.Row="0"
11194
Grid.Column="1"
11295
Margin="0 0 13 0"
11396
HorizontalAlignment="Right"
11497
VerticalAlignment="Top"
11598
Style="{DynamicResource PreviewItemSubTitleStyle}"
116-
Text="{Binding FileSize, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}, Mode=OneWay}"
99+
Text="{Binding FileSize, Mode=OneWay}"
117100
TextWrapping="Wrap"
118-
Visibility="{Binding FileSizeVisibility, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" />
101+
Visibility="{Binding FileSizeVisibility, Mode=OneTime}" />
119102

120103
<TextBlock
121104
Grid.Row="1"
@@ -125,17 +108,17 @@
125108
Style="{DynamicResource PreviewItemSubTitleStyle}"
126109
Text="{DynamicResource Created}"
127110
TextWrapping="Wrap"
128-
Visibility="{Binding CreatedAtVisibility, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" />
111+
Visibility="{Binding CreatedAtVisibility, Mode=OneTime}" />
129112
<TextBlock
130113
Grid.Row="1"
131114
Grid.Column="1"
132115
Margin="0 0 13 0"
133116
HorizontalAlignment="Right"
134117
VerticalAlignment="Top"
135118
Style="{DynamicResource PreviewItemSubTitleStyle}"
136-
Text="{Binding CreatedAt, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
119+
Text="{Binding CreatedAt, Mode=OneWay}"
137120
TextWrapping="Wrap"
138-
Visibility="{Binding CreatedAtVisibility, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" />
121+
Visibility="{Binding CreatedAtVisibility, Mode=OneTime}" />
139122

140123
<TextBlock
141124
Grid.Row="2"
@@ -145,17 +128,17 @@
145128
Style="{DynamicResource PreviewItemSubTitleStyle}"
146129
Text="{DynamicResource LastModified}"
147130
TextWrapping="Wrap"
148-
Visibility="{Binding LastModifiedAtVisibility, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" />
131+
Visibility="{Binding LastModifiedAtVisibility, Mode=OneTime}" />
149132
<TextBlock
150133
Grid.Row="2"
151134
Grid.Column="1"
152135
Margin="0 0 13 0"
153136
HorizontalAlignment="Right"
154137
VerticalAlignment="Top"
155138
Style="{DynamicResource PreviewItemSubTitleStyle}"
156-
Text="{Binding LastModifiedAt, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
139+
Text="{Binding LastModifiedAt, Mode=OneWay}"
157140
TextWrapping="Wrap"
158-
Visibility="{Binding LastModifiedAtVisibility, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" />
141+
Visibility="{Binding LastModifiedAtVisibility, Mode=OneTime}" />
159142
</Grid>
160143
</StackPanel>
161144
</Grid>

Plugins/Flow.Launcher.Plugin.Explorer/Views/PreviewPanel.xaml.cs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,22 @@ public partial class PreviewPanel : UserControl
2121
{
2222
private static readonly string ClassName = nameof(PreviewPanel);
2323

24-
private string FilePath { get; }
25-
public string FileSize { get; private set; } = Main.Context.API.GetTranslation("plugin_explorer_plugin_tooltip_more_info_unknown");
26-
public string CreatedAt { get; } = "";
27-
public string LastModifiedAt { get; } = "";
24+
public string FilePath { get; }
25+
public string FileName { get; }
26+
27+
[ObservableProperty]
28+
private string _fileSize = Main.Context.API.GetTranslation("plugin_explorer_plugin_tooltip_more_info_unknown");
29+
30+
[ObservableProperty]
31+
private string _createdAt = "";
32+
33+
[ObservableProperty]
34+
private string _lastModifiedAt = "";
35+
36+
[ObservableProperty]
2837
private ImageSource _previewImage = new BitmapImage();
29-
private Settings Settings { get; }
3038

31-
public ImageSource PreviewImage
32-
{
33-
get => _previewImage;
34-
private set
35-
{
36-
_previewImage = value;
37-
OnPropertyChanged();
38-
}
39-
}
39+
private Settings Settings { get; }
4040

4141
public Visibility FileSizeVisibility => Settings.ShowFileSizeInPreviewPanel
4242
? Visibility.Visible
@@ -57,11 +57,11 @@ private set
5757

5858
public PreviewPanel(Settings settings, string filePath, ResultType type)
5959
{
60-
InitializeComponent();
61-
6260
Settings = settings;
63-
6461
FilePath = filePath;
62+
FileName = Path.GetFileName(filePath);
63+
64+
InitializeComponent();
6565

6666
if (Settings.ShowFileSizeInPreviewPanel)
6767
{

Plugins/Flow.Launcher.Plugin.WebSearch/Languages/en.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<system:String x:Key="flowlauncher_plugin_websearch_edit">Edit</system:String>
1414
<system:String x:Key="flowlauncher_plugin_websearch_add">Add</system:String>
1515
<system:String x:Key="flowlauncher_plugin_websearch_enabled_label">Enabled</system:String>
16+
<system:String x:Key="flowlauncher_plugin_websearch_private_mode_label">Private Mode</system:String>
1617
<system:String x:Key="flowlauncher_plugin_websearch_true">Enabled</system:String>
1718
<system:String x:Key="flowlauncher_plugin_websearch_false">Disabled</system:String>
1819
<system:String x:Key="flowlauncher_plugin_websearch_confirm">Confirm</system:String>

Plugins/Flow.Launcher.Plugin.WebSearch/Main.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public async Task<List<Result>> QueryAsync(Query query, CancellationToken token)
7171
Score = score,
7272
Action = c =>
7373
{
74-
_context.API.OpenWebUrl(searchSource.Url.Replace("{q}", Uri.EscapeDataString(keyword)));
74+
_context.API.OpenWebUrl(searchSource.Url.Replace("{q}", Uri.EscapeDataString(keyword)), searchSource.IsPrivateMode);
7575

7676
return true;
7777
},
@@ -135,7 +135,7 @@ private async Task<IEnumerable<Result>> SuggestionsAsync(string keyword, string
135135
ActionKeywordAssigned = searchSource.ActionKeyword == SearchSourceGlobalPluginWildCardSign ? string.Empty : searchSource.ActionKeyword,
136136
Action = c =>
137137
{
138-
_context.API.OpenWebUrl(searchSource.Url.Replace("{q}", Uri.EscapeDataString(o)));
138+
_context.API.OpenWebUrl(searchSource.Url.Replace("{q}", Uri.EscapeDataString(o)), searchSource.IsPrivateMode);
139139

140140
return true;
141141
},

Plugins/Flow.Launcher.Plugin.WebSearch/SearchSource.cs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ namespace Flow.Launcher.Plugin.WebSearch
77
public class SearchSource : BaseModel
88
{
99
public string Title { get; set; }
10+
1011
public string ActionKeyword { get; set; }
1112

1213
[NotNull]
@@ -19,21 +20,17 @@ public class SearchSource : BaseModel
1920
/// Custom icons are placed in the user data directory
2021
/// </summary>
2122
[JsonIgnore]
22-
public string IconPath
23-
{
24-
get
25-
{
26-
if (CustomIcon)
27-
return Path.Combine(Main.CustomImagesDirectory, Icon);
28-
29-
return Path.Combine(Main.DefaultImagesDirectory, Icon);
30-
}
31-
}
23+
public string IconPath => CustomIcon
24+
? Path.Combine(Main.CustomImagesDirectory, Icon)
25+
: Path.Combine(Main.DefaultImagesDirectory, Icon);
3226

3327
public string Url { get; set; }
3428

3529
[JsonIgnore]
3630
public bool Status => Enabled;
31+
32+
public bool IsPrivateMode { get; set; }
33+
3734
public bool Enabled { get; set; }
3835

3936
public SearchSource DeepCopy()
@@ -45,8 +42,10 @@ public SearchSource DeepCopy()
4542
Url = Url,
4643
Icon = Icon,
4744
CustomIcon = CustomIcon,
45+
IsPrivateMode = IsPrivateMode,
4846
Enabled = Enabled
4947
};
48+
5049
return webSearch;
5150
}
5251
}

0 commit comments

Comments
 (0)