Skip to content

Commit a515957

Browse files
authored
Switch quicklook previewed file on selection change (#6543)
1 parent d150b21 commit a515957

File tree

9 files changed

+49
-72
lines changed

9 files changed

+49
-72
lines changed

Files.Launcher/MessageHandlers/QuickLookHandler.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,25 +29,26 @@ public async Task ParseArgumentsAsync(NamedPipeServerStream connection, Dictiona
2929

3030
case "ToggleQuickLook":
3131
var path = (string)message["path"];
32-
ToggleQuickLook(path);
32+
var switchPreview = (bool)message["switch"];
33+
Extensions.IgnoreExceptions(() => ToggleQuickLook(path, switchPreview), Logger);
3334
break;
3435
}
3536
}
3637

37-
public void ToggleQuickLook(string path)
38+
public void ToggleQuickLook(string path, bool switchPreview)
3839
{
3940
Logger.Info("Toggle QuickLook");
4041

4142
string PipeName = $"QuickLook.App.Pipe.{WindowsIdentity.GetCurrent().User?.Value}";
42-
string Toggle = "QuickLook.App.PipeMessages.Toggle";
43+
string Message = switchPreview ? "QuickLook.App.PipeMessages.Switch" : "QuickLook.App.PipeMessages.Toggle";
4344

4445
using (var client = new NamedPipeClientStream(".", PipeName, PipeDirection.Out))
4546
{
4647
client.Connect();
4748

4849
using (var writer = new StreamWriter(client))
4950
{
50-
writer.WriteLine($"{Toggle}|{path}");
51+
writer.WriteLine($"{Message}|{path}");
5152
writer.Flush();
5253
}
5354
}

Files/BaseLayout.cs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -298,15 +298,6 @@ public BaseLayout()
298298
SelectedItemsPropertiesViewModel = new SelectedItemsPropertiesViewModel();
299299
DirectoryPropertiesViewModel = new DirectoryPropertiesViewModel();
300300

301-
// QuickLook Integration
302-
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
303-
var isQuickLookIntegrationEnabled = localSettings.Values["quicklook_enabled"];
304-
305-
if (isQuickLookIntegrationEnabled != null && isQuickLookIntegrationEnabled.Equals(true))
306-
{
307-
App.MainViewModel.IsQuickLookEnabled = true;
308-
}
309-
310301
dragOverTimer = DispatcherQueue.GetForCurrentThread().CreateTimer();
311302
tapDebounceTimer = DispatcherQueue.GetForCurrentThread().CreateTimer();
312303
}

Files/Helpers/QuickLookHelpers.cs

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,35 +11,29 @@ namespace Files.Helpers
1111
{
1212
public static class QuickLookHelpers
1313
{
14-
public static async Task ToggleQuickLook(IShellPage associatedInstance)
14+
public static async Task ToggleQuickLook(IShellPage associatedInstance, bool switchPreview = false)
1515
{
16-
try
16+
if (!App.MainViewModel.IsQuickLookEnabled || !associatedInstance.SlimContentPage.IsItemSelected || associatedInstance.SlimContentPage.IsRenamingItem)
1717
{
18-
if (associatedInstance.SlimContentPage.IsItemSelected && !associatedInstance.SlimContentPage.IsRenamingItem)
19-
{
20-
Debug.WriteLine("Toggle QuickLook");
21-
var connection = await AppServiceConnectionHelper.Instance;
22-
23-
if (connection != null)
24-
{
25-
await connection.SendMessageAsync(new ValueSet()
26-
{
27-
{ "path", associatedInstance.SlimContentPage.SelectedItem.ItemPath },
28-
{ "Arguments", "ToggleQuickLook" }
29-
});
30-
}
31-
}
18+
return;
3219
}
33-
catch (FileNotFoundException)
20+
21+
await Common.Extensions.IgnoreExceptions(async () =>
3422
{
35-
await DialogDisplayHelper.ShowDialogAsync("FileNotFoundDialog/Title".GetLocalized(), "FileNotFoundPreviewDialog/Text".GetLocalized());
36-
associatedInstance.NavToolbarViewModel.CanRefresh = false;
37-
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
23+
Debug.WriteLine("Toggle QuickLook");
24+
var connection = await AppServiceConnectionHelper.Instance;
25+
26+
if (connection != null)
3827
{
39-
var ContentOwnedViewModelInstance = associatedInstance.FilesystemViewModel;
40-
ContentOwnedViewModelInstance?.RefreshItems(null);
41-
});
42-
}
28+
await connection.SendMessageAsync(new ValueSet()
29+
{
30+
{ "path", associatedInstance.SlimContentPage.SelectedItem.ItemPath },
31+
{ "switch", switchPreview },
32+
{ "Arguments", "ToggleQuickLook" }
33+
});
34+
}
35+
36+
}, App.Logger);
4337
}
4438
}
45-
}
39+
}

Files/ViewModels/SettingsViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public async Task DetectQuickLook()
7777
});
7878
if (status == AppServiceResponseStatus.Success)
7979
{
80-
localSettings.Values["quicklook_enabled"] = response.Get("IsAvailable", false);
80+
App.MainViewModel.IsQuickLookEnabled = response.Get("IsAvailable", false);
8181
}
8282
}
8383
}

Files/Views/ColumnShellPage.xaml.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -689,10 +689,7 @@ private async void KeyboardAccelerator_Invoked(KeyboardAccelerator sender, Keybo
689689
case (false, false, false, true, VirtualKey.Space): // space, quick look
690690
if (!NavToolbarViewModel.IsEditModeEnabled && !NavToolbarViewModel.IsSearchBoxVisible)
691691
{
692-
if (App.MainViewModel.IsQuickLookEnabled)
693-
{
694-
await QuickLookHelpers.ToggleQuickLook(this);
695-
}
692+
await QuickLookHelpers.ToggleQuickLook(this);
696693
}
697694
break;
698695

Files/Views/LayoutModes/ColumnViewBase.xaml.cs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -317,15 +317,14 @@ public override void Dispose()
317317
public static ColumnViewBase CurrentColumn;
318318
private ListViewItem listViewItem;
319319

320-
private void FileList_SelectionChanged(object sender, SelectionChangedEventArgs e)
320+
private async void FileList_SelectionChanged(object sender, SelectionChangedEventArgs e)
321321
{
322-
if (e != null)
323-
{
324-
// Do not commit rename if SelectionChanged is due to selction rectangle (#3660)
325-
//FileList.CommitEdit();
326-
}
327322
UnFocusPreviousListView?.Invoke(FileList, EventArgs.Empty);
328323
SelectedItems = FileList.SelectedItems.Cast<ListedItem>().Where(x => x != null).ToList();
324+
if (SelectedItems.Count == 1)
325+
{
326+
await QuickLookHelpers.ToggleQuickLook(ParentShellPageInstance, true);
327+
}
329328
}
330329

331330
private void FileList_RightTapped(object sender, RightTappedRoutedEventArgs e)
@@ -381,10 +380,7 @@ private async void FileList_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
381380
if (!IsRenamingItem && !ParentShellPageInstance.NavToolbarViewModel.IsEditModeEnabled)
382381
{
383382
e.Handled = true;
384-
if (App.MainViewModel.IsQuickLookEnabled)
385-
{
386-
await QuickLookHelpers.ToggleQuickLook(ParentShellPageInstance);
387-
}
383+
await QuickLookHelpers.ToggleQuickLook(ParentShellPageInstance);
388384
}
389385
}
390386
else if (e.KeyStatus.IsMenuKeyDown && (e.Key == VirtualKey.Left || e.Key == VirtualKey.Right || e.Key == VirtualKey.Up))

Files/Views/LayoutModes/ColumnViewBrowser.xaml.cs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -409,14 +409,13 @@ public override void Dispose()
409409

410410
#endregion IDisposable
411411

412-
private void FileList_SelectionChanged(object sender, SelectionChangedEventArgs e)
412+
private async void FileList_SelectionChanged(object sender, SelectionChangedEventArgs e)
413413
{
414-
if (e != null)
414+
SelectedItems = FileList.SelectedItems.Cast<ListedItem>().Where(x => x != null).ToList();
415+
if (SelectedItems.Count == 1)
415416
{
416-
// Do not commit rename if SelectionChanged is due to selction rectangle (#3660)
417-
//FileList.CommitEdit();
417+
await QuickLookHelpers.ToggleQuickLook(ParentShellPageInstance, true);
418418
}
419-
SelectedItems = FileList.SelectedItems.Cast<ListedItem>().Where(x => x != null).ToList();
420419
}
421420

422421
private void FileList_RightTapped(object sender, RightTappedRoutedEventArgs e)
@@ -472,10 +471,7 @@ private async void FileList_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
472471
if (!IsRenamingItem && !ParentShellPageInstance.NavToolbarViewModel.IsEditModeEnabled)
473472
{
474473
e.Handled = true;
475-
if (App.MainViewModel.IsQuickLookEnabled)
476-
{
477-
await QuickLookHelpers.ToggleQuickLook(ParentShellPageInstance);
478-
}
474+
await QuickLookHelpers.ToggleQuickLook(ParentShellPageInstance);
479475
}
480476
}
481477
else if (e.KeyStatus.IsMenuKeyDown && (e.Key == VirtualKey.Left || e.Key == VirtualKey.Right || e.Key == VirtualKey.Up))

Files/Views/LayoutModes/DetailsLayoutBrowser.xaml.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -326,9 +326,13 @@ private void StackPanel_RightTapped(object sender, RightTappedRoutedEventArgs e)
326326
}
327327
}
328328

329-
private void FileList_SelectionChanged(object sender, SelectionChangedEventArgs e)
329+
private async void FileList_SelectionChanged(object sender, SelectionChangedEventArgs e)
330330
{
331331
SelectedItems = FileList.SelectedItems.Cast<ListedItem>().Where(x => x != null).ToList();
332+
if (SelectedItems.Count == 1)
333+
{
334+
await QuickLookHelpers.ToggleQuickLook(ParentShellPageInstance, true);
335+
}
332336
}
333337

334338
override public void StartRenameItem()
@@ -467,10 +471,7 @@ private async void FileList_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
467471
if (!IsRenamingItem && !ParentShellPageInstance.NavToolbarViewModel.IsEditModeEnabled)
468472
{
469473
e.Handled = true;
470-
if (MainViewModel.IsQuickLookEnabled)
471-
{
472-
await QuickLookHelpers.ToggleQuickLook(ParentShellPageInstance);
473-
}
474+
await QuickLookHelpers.ToggleQuickLook(ParentShellPageInstance);
474475
}
475476
}
476477
else if (e.KeyStatus.IsMenuKeyDown && (e.Key == VirtualKey.Left || e.Key == VirtualKey.Right || e.Key == VirtualKey.Up))

Files/Views/LayoutModes/GridViewBrowser.xaml.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -222,9 +222,13 @@ private void StackPanel_RightTapped(object sender, RightTappedRoutedEventArgs e)
222222
}
223223
}
224224

225-
private void FileList_SelectionChanged(object sender, SelectionChangedEventArgs e)
225+
private async void FileList_SelectionChanged(object sender, SelectionChangedEventArgs e)
226226
{
227227
SelectedItems = FileList.SelectedItems.Cast<ListedItem>().Where(x => x != null).ToList();
228+
if (SelectedItems.Count == 1)
229+
{
230+
await QuickLookHelpers.ToggleQuickLook(ParentShellPageInstance, true);
231+
}
228232
}
229233

230234
override public void StartRenameItem()
@@ -384,10 +388,7 @@ private async void FileList_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
384388
if (!IsRenamingItem && !ParentShellPageInstance.NavToolbarViewModel.IsEditModeEnabled)
385389
{
386390
e.Handled = true;
387-
if (MainViewModel.IsQuickLookEnabled)
388-
{
389-
await QuickLookHelpers.ToggleQuickLook(ParentShellPageInstance);
390-
}
391+
await QuickLookHelpers.ToggleQuickLook(ParentShellPageInstance);
391392
}
392393
}
393394
else if (e.KeyStatus.IsMenuKeyDown && (e.Key == VirtualKey.Left || e.Key == VirtualKey.Right || e.Key == VirtualKey.Up))

0 commit comments

Comments
 (0)