Skip to content

Commit 696ae7e

Browse files
committed
Move the additional explorer plugin functionality into the explorer plugin itself
1 parent fa0d42e commit 696ae7e

File tree

5 files changed

+221
-134
lines changed

5 files changed

+221
-134
lines changed

Flow.Launcher.Plugin/Result.cs

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -129,21 +129,6 @@ public string IcoPath
129129
/// <value>default: 0</value>
130130
public int Score { get; set; }
131131

132-
/// <summary>
133-
/// File Size
134-
/// </summary>
135-
public string FileSize { get; set; } = string.Empty;
136-
137-
/// <summary>
138-
/// Created
139-
/// </summary>
140-
public string FileCreated { get; set; } = string.Empty;
141-
142-
/// <summary>
143-
/// Last Modified Date File
144-
/// </summary>
145-
public string LastModifed { get; set; } = string.Empty;
146-
147132
/// <summary>
148133
/// A list of indexes for the characters to be highlighted in Title
149134
/// </summary>
@@ -220,9 +205,6 @@ public Result Clone()
220205
TitleHighlightData = TitleHighlightData,
221206
OriginQuery = OriginQuery,
222207
PluginDirectory = PluginDirectory,
223-
FileCreated = FileCreated,
224-
FileSize = FileSize,
225-
LastModifed = LastModifed
226208
};
227209
}
228210

@@ -318,8 +300,6 @@ public record PreviewInfo
318300
IsMedia = false,
319301
PreviewDelegate = null,
320302
};
321-
322-
323303
}
324304
}
325305
}

Flow.Launcher/MainWindow.xaml

Lines changed: 1 addition & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -492,82 +492,6 @@
492492
x:Name="PreviewSubTitle"
493493
Style="{DynamicResource PreviewItemSubTitleStyle}"
494494
Text="{Binding Result.SubTitle}" />
495-
<StackPanel Orientation="Vertical">
496-
<StackPanel.Style>
497-
<Style TargetType="{x:Type StackPanel}">
498-
<Style.Triggers>
499-
<DataTrigger Binding="{Binding ElementName=SizeValue, UpdateSourceTrigger=PropertyChanged, Path=Text}" Value="{x:Static sys:String.Empty}">
500-
<Setter Property="Height" Value="0" />
501-
</DataTrigger>
502-
</Style.Triggers>
503-
</Style>
504-
</StackPanel.Style>
505-
<Separator Margin="0,0,0,0" Style="{DynamicResource PreviewSep}" />
506-
<Grid Margin="0,10,0,0" VerticalAlignment="Center">
507-
<Grid.ColumnDefinitions>
508-
<ColumnDefinition Width="100" />
509-
<ColumnDefinition Width="*" />
510-
</Grid.ColumnDefinitions>
511-
<Grid.RowDefinitions>
512-
<RowDefinition Height="Auto" />
513-
<RowDefinition Height="Auto" />
514-
<RowDefinition Height="Auto" />
515-
</Grid.RowDefinitions>
516-
<TextBlock
517-
Grid.Row="0"
518-
Grid.Column="0"
519-
Margin="0"
520-
VerticalAlignment="Top"
521-
Style="{DynamicResource PreviewItemSubTitleStyle}"
522-
Text="{DynamicResource FileSize}"
523-
TextWrapping="Wrap" />
524-
<TextBlock
525-
Name="SizeValue"
526-
Grid.Row="0"
527-
Grid.Column="1"
528-
Margin="0"
529-
HorizontalAlignment="Right"
530-
VerticalAlignment="Top"
531-
Style="{DynamicResource PreviewItemSubTitleStyle}"
532-
Text="{Binding Result.FileSize}"
533-
TextWrapping="Wrap" />
534-
<TextBlock
535-
Grid.Row="1"
536-
Grid.Column="0"
537-
Margin="0"
538-
VerticalAlignment="Top"
539-
Style="{DynamicResource PreviewItemSubTitleStyle}"
540-
Text="{DynamicResource Created}"
541-
TextWrapping="Wrap" />
542-
<TextBlock
543-
Grid.Row="1"
544-
Grid.Column="1"
545-
Margin="0"
546-
HorizontalAlignment="Right"
547-
VerticalAlignment="Top"
548-
Style="{DynamicResource PreviewItemSubTitleStyle}"
549-
Text="{Binding Result.FileCreated}"
550-
TextWrapping="Wrap" />
551-
552-
<TextBlock
553-
Grid.Row="2"
554-
Grid.Column="0"
555-
Margin="0"
556-
VerticalAlignment="Top"
557-
Style="{DynamicResource PreviewItemSubTitleStyle}"
558-
Text="{DynamicResource LastModified}"
559-
TextWrapping="Wrap" />
560-
<TextBlock
561-
Grid.Row="2"
562-
Grid.Column="1"
563-
Margin="0"
564-
HorizontalAlignment="Right"
565-
VerticalAlignment="Top"
566-
Style="{DynamicResource PreviewItemSubTitleStyle}"
567-
Text="{Binding Result.LastModifed}"
568-
TextWrapping="Wrap" />
569-
</Grid>
570-
</StackPanel>
571495
</StackPanel>
572496
</Grid>
573497
</Border>
@@ -583,4 +507,4 @@
583507
</StackPanel>
584508
</Border>
585509
</Grid>
586-
</Window>
510+
</Window>

Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs

Lines changed: 19 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@
88
using System.Windows;
99
using Flow.Launcher.Plugin.Explorer.Search.Everything;
1010
using System.Windows.Input;
11-
using System.Windows.Shapes;
1211
using Path = System.IO.Path;
13-
using System.Globalization;
12+
using System.Windows.Controls;
13+
using Flow.Launcher.Plugin.Explorer.Views;
1414

1515
namespace Flow.Launcher.Plugin.Explorer.Search
1616
{
1717
public static class ResultManager
1818
{
19+
private static readonly string[] SizeUnits = { "B", "KB", "MB", "GB", "TB" };
1920
private static PluginInitContext Context;
2021
private static Settings Settings { get; set; }
2122

@@ -175,36 +176,28 @@ internal static Result CreateDriveSpaceDisplayResult(string path, string actionK
175176
};
176177
}
177178

178-
private static string ToReadableSize(long pDrvSize, int pi)
179+
internal static string ToReadableSize(long sizeOnDrive, int pi)
179180
{
180-
int mok = 0;
181-
double drvSize = pDrvSize;
182-
string uom = "Byte"; // Unit Of Measurement
181+
var unitIndex = 0;
182+
double readableSize = sizeOnDrive;
183183

184-
while (drvSize > 1024.0)
184+
while (readableSize > 1024.0 && unitIndex < SizeUnits.Length - 1)
185185
{
186-
drvSize /= 1024.0;
187-
mok++;
186+
readableSize /= 1024.0;
187+
unitIndex++;
188188
}
189189

190-
if (mok == 1)
191-
uom = "KB";
192-
else if (mok == 2)
193-
uom = "MB";
194-
else if (mok == 3)
195-
uom = "GB";
196-
else if (mok == 4)
197-
uom = "TB";
198-
199-
var returnStr = $"{Convert.ToInt32(drvSize)}{uom}";
200-
if (mok != 0)
190+
var unit = SizeUnits[unitIndex] ?? "";
191+
192+
var returnStr = $"{Convert.ToInt32(readableSize)} {unit}";
193+
if (unitIndex != 0)
201194
{
202195
returnStr = pi switch
203196
{
204-
1 => $"{drvSize:F1}{uom}",
205-
2 => $"{drvSize:F2}{uom}",
206-
3 => $"{drvSize:F3}{uom}",
207-
_ => $"{Convert.ToInt32(drvSize)}{uom}"
197+
1 => $"{readableSize:F1} {unit}",
198+
2 => $"{readableSize:F2} {unit}",
199+
3 => $"{readableSize:F3} {unit}",
200+
_ => $"{Convert.ToInt32(readableSize)} {unit}"
208201
};
209202
}
210203

@@ -242,17 +235,8 @@ internal static Result CreateFileResult(string filePath, Query query, int score
242235

243236
var title = Path.GetFileName(filePath);
244237

245-
246-
/* Preview Detail */
247-
long fileSize = new System.IO.FileInfo(filePath).Length;
248-
string fileSizStr = ToReadableSize(fileSize, 2);
249-
250-
DateTime created = System.IO.File.GetCreationTime(filePath);
251-
string createdStr = created.ToString("yy-M-dd ddd hh:mm", CultureInfo.CurrentCulture);
252-
DateTime lastModified = System.IO.File.GetLastWriteTime(filePath);
253-
string lastModifiedStr = lastModified.ToString("yy-M-dd ddd hh:mm", CultureInfo.CurrentCulture);
254-
255238

239+
/* Preview Detail */
256240

257241
var result = new Result
258242
{
@@ -263,10 +247,8 @@ internal static Result CreateFileResult(string filePath, Query query, int score
263247
AutoCompleteText = GetAutoCompleteText(title, query, filePath, ResultType.File),
264248
TitleHighlightData = StringMatcher.FuzzySearch(query.Search, title).MatchData,
265249
Score = score,
266-
FileSize = fileSizStr,
267-
FileCreated = createdStr,
268-
LastModifed = lastModifiedStr,
269250
CopyText = filePath,
251+
PreviewPanel = new Lazy<UserControl>(() => new PreviewPanel(filePath)),
270252
Action = c =>
271253
{
272254
try
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
<UserControl x:Class="Flow.Launcher.Plugin.Explorer.Views.PreviewPanel"
2+
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6+
xmlns:sys="clr-namespace:System;assembly=System.Runtime"
7+
mc:Ignorable="d"
8+
d:DesignHeight="300" d:DesignWidth="300">
9+
<Grid Margin="20 0 10 0" VerticalAlignment="Stretch">
10+
<Grid.RowDefinitions>
11+
<RowDefinition Height="*" />
12+
<RowDefinition Height="Auto" />
13+
</Grid.RowDefinitions>
14+
<StackPanel Grid.Row="0" VerticalAlignment="Center">
15+
<Image
16+
Margin="0 16 0 0"
17+
Source="{Binding PreviewImage, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
18+
HorizontalAlignment="Stretch"
19+
StretchDirection="DownOnly">
20+
<Image.Style>
21+
<Style TargetType="Image">
22+
<Setter Property="MaxWidth" Value="96" />
23+
<Setter Property="MaxHeight" Value="320" />
24+
<Style.Triggers>
25+
<DataTrigger Binding="{Binding UseBigThumbnail}" Value="True">
26+
<Setter Property="MaxWidth" Value="{Binding ElementName=Preview, Path=ActualWidth}" />
27+
<Setter Property="MaxHeight" Value="{Binding ElementName=Preview, Path=ActualHeight}" />
28+
</DataTrigger>
29+
</Style.Triggers>
30+
</Style>
31+
</Image.Style>
32+
</Image>
33+
<TextBlock
34+
Margin="0 6 0 16"
35+
HorizontalAlignment="Stretch"
36+
Style="{DynamicResource PreviewItemTitleStyle}"
37+
Text="{Binding Result.Title}"
38+
TextAlignment="Center"
39+
TextWrapping="Wrap" />
40+
</StackPanel>
41+
<StackPanel Grid.Row="1">
42+
<StackPanel.Style>
43+
<Style TargetType="StackPanel">
44+
<Style.Triggers>
45+
<DataTrigger
46+
Binding="{Binding Result.SubTitle.Length}"
47+
Value="0">
48+
<Setter Property="Visibility" Value="Collapsed" />
49+
</DataTrigger>
50+
</Style.Triggers>
51+
</Style>
52+
</StackPanel.Style>
53+
<Separator Style="{DynamicResource PreviewSep}" />
54+
<TextBlock
55+
Style="{DynamicResource PreviewItemSubTitleStyle}"
56+
Text="{Binding Result.SubTitle}" />
57+
<StackPanel Orientation="Vertical">
58+
<StackPanel.Style>
59+
<Style TargetType="StackPanel">
60+
<Style.Triggers>
61+
<DataTrigger
62+
Binding="{Binding ElementName=SizeValue, Path=Text}"
63+
Value="{x:Static sys:String.Empty}">
64+
<Setter Property="Height" Value="0" />
65+
</DataTrigger>
66+
</Style.Triggers>
67+
</Style>
68+
</StackPanel.Style>
69+
<Separator Margin="0" Style="{DynamicResource PreviewSep}" />
70+
<Grid Margin="0 10 0 0" VerticalAlignment="Center">
71+
<Grid.ColumnDefinitions>
72+
<ColumnDefinition Width="100" />
73+
<ColumnDefinition Width="*" />
74+
</Grid.ColumnDefinitions>
75+
<Grid.RowDefinitions>
76+
<RowDefinition Height="Auto" />
77+
<RowDefinition Height="Auto" />
78+
<RowDefinition Height="Auto" />
79+
</Grid.RowDefinitions>
80+
<TextBlock
81+
Grid.Row="0"
82+
Grid.Column="0"
83+
Margin="0"
84+
VerticalAlignment="Top"
85+
Style="{DynamicResource PreviewItemSubTitleStyle}"
86+
Text="{DynamicResource FileSize}"
87+
TextWrapping="Wrap" />
88+
<TextBlock
89+
Name="SizeValue"
90+
Grid.Row="0"
91+
Grid.Column="1"
92+
Margin="0"
93+
HorizontalAlignment="Right"
94+
VerticalAlignment="Top"
95+
Style="{DynamicResource PreviewItemSubTitleStyle}"
96+
Text="{Binding FileSize, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
97+
TextWrapping="Wrap" />
98+
<TextBlock
99+
Grid.Row="1"
100+
Grid.Column="0"
101+
Margin="0"
102+
VerticalAlignment="Top"
103+
Style="{DynamicResource PreviewItemSubTitleStyle}"
104+
Text="{DynamicResource Created}"
105+
TextWrapping="Wrap" />
106+
<TextBlock
107+
Grid.Row="1"
108+
Grid.Column="1"
109+
Margin="0"
110+
HorizontalAlignment="Right"
111+
VerticalAlignment="Top"
112+
Style="{DynamicResource PreviewItemSubTitleStyle}"
113+
Text="{Binding CreatedAt, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
114+
TextWrapping="Wrap" />
115+
116+
<TextBlock
117+
Grid.Row="2"
118+
Grid.Column="0"
119+
Margin="0"
120+
VerticalAlignment="Top"
121+
Style="{DynamicResource PreviewItemSubTitleStyle}"
122+
Text="{DynamicResource LastModified}"
123+
TextWrapping="Wrap" />
124+
<TextBlock
125+
Grid.Row="2"
126+
Grid.Column="1"
127+
Margin="0"
128+
HorizontalAlignment="Right"
129+
VerticalAlignment="Top"
130+
Style="{DynamicResource PreviewItemSubTitleStyle}"
131+
Text="{Binding LastModifiedAt, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
132+
TextWrapping="Wrap" />
133+
</Grid>
134+
</StackPanel>
135+
</StackPanel>
136+
</Grid>
137+
</UserControl>

0 commit comments

Comments
 (0)