mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Support preview panel for history
This commit is contained in:
parent
26ab2aecef
commit
f1bcfc1933
2 changed files with 43 additions and 8 deletions
|
|
@ -441,7 +441,7 @@
|
|||
<Border
|
||||
MinHeight="380"
|
||||
d:DataContext="{d:DesignInstance vm:ResultViewModel}"
|
||||
DataContext="{Binding SelectedItem, Mode=OneWay}"
|
||||
DataContext="{Binding PreviewSelectedItem, Mode=OneWay}"
|
||||
Visibility="{Binding ShowDefaultPreview}">
|
||||
<Grid
|
||||
Margin="0 0 10 5"
|
||||
|
|
@ -518,7 +518,7 @@
|
|||
MaxHeight="{Binding ElementName=ResultListBox, Path=ActualHeight}"
|
||||
Padding="0 0 10 10"
|
||||
d:DataContext="{d:DesignInstance vm:ResultViewModel}"
|
||||
DataContext="{Binding SelectedItem, Mode=OneWay}"
|
||||
DataContext="{Binding PreviewSelectedItem, Mode=OneWay}"
|
||||
Visibility="{Binding ShowCustomizedPreview}">
|
||||
<ContentControl Content="{Binding Result.PreviewPanel.Value}" />
|
||||
</Border>
|
||||
|
|
|
|||
|
|
@ -162,7 +162,20 @@ namespace Flow.Launcher.ViewModel
|
|||
switch (args.PropertyName)
|
||||
{
|
||||
case nameof(Results.SelectedItem):
|
||||
SelectedItem = Results.SelectedItem;
|
||||
_selectedItemFromQueryResults = true;
|
||||
PreviewSelectedItem = Results.SelectedItem;
|
||||
UpdatePreview();
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
History.PropertyChanged += (_, args) =>
|
||||
{
|
||||
switch (args.PropertyName)
|
||||
{
|
||||
case nameof(History.SelectedItem):
|
||||
_selectedItemFromQueryResults = false;
|
||||
PreviewSelectedItem = History.SelectedItem;
|
||||
UpdatePreview();
|
||||
break;
|
||||
}
|
||||
|
|
@ -646,10 +659,12 @@ namespace Flow.Launcher.ViewModel
|
|||
|
||||
private ResultsViewModel SelectedResults
|
||||
{
|
||||
get { return _selectedResults; }
|
||||
get => _selectedResults;
|
||||
set
|
||||
{
|
||||
var isReturningFromQueryResults = SelectedIsFromQueryResults();
|
||||
var isReturningFromContextMenu = ContextMenuSelected();
|
||||
var isReturningFromHistory = HistorySelected();
|
||||
_selectedResults = value;
|
||||
if (SelectedIsFromQueryResults())
|
||||
{
|
||||
|
|
@ -670,12 +685,30 @@ namespace Flow.Launcher.ViewModel
|
|||
{
|
||||
ChangeQueryText(_queryTextBeforeLeaveResults);
|
||||
}
|
||||
|
||||
// If we are returning from history and we have not set select item yet,
|
||||
// we need to clear the preview selected item
|
||||
if (isReturningFromHistory && _selectedItemFromQueryResults.HasValue && (!_selectedItemFromQueryResults.Value))
|
||||
{
|
||||
PreviewSelectedItem = null;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Results.Visibility = Visibility.Collapsed;
|
||||
History.Visibility = Visibility.Collapsed;
|
||||
_queryTextBeforeLeaveResults = QueryText;
|
||||
|
||||
if(HistorySelected())
|
||||
{
|
||||
// If we are returning from query results and we have not set select item yet,
|
||||
// we need to clear the preview selected item
|
||||
if (isReturningFromQueryResults && _selectedItemFromQueryResults.HasValue && _selectedItemFromQueryResults.Value)
|
||||
{
|
||||
PreviewSelectedItem = null;
|
||||
}
|
||||
}
|
||||
|
||||
// Because of Fody's optimization
|
||||
// setter won't be called when property value is not changed.
|
||||
// so we need manually call Query()
|
||||
|
|
@ -787,9 +820,11 @@ namespace Flow.Launcher.ViewModel
|
|||
|
||||
#region Preview
|
||||
|
||||
private bool? _selectedItemFromQueryResults;
|
||||
|
||||
private ResultViewModel _selectedItem;
|
||||
|
||||
public ResultViewModel SelectedItem
|
||||
public ResultViewModel PreviewSelectedItem
|
||||
{
|
||||
get => _selectedItem;
|
||||
set
|
||||
|
|
@ -897,7 +932,7 @@ namespace Flow.Launcher.ViewModel
|
|||
private void ShowInternalPreview()
|
||||
{
|
||||
ResultAreaColumn = ResultAreaColumnPreviewShown;
|
||||
SelectedItem?.LoadPreviewImage();
|
||||
PreviewSelectedItem?.LoadPreviewImage();
|
||||
}
|
||||
|
||||
private void HideInternalPreview()
|
||||
|
|
@ -952,14 +987,14 @@ namespace Flow.Launcher.ViewModel
|
|||
|
||||
case false
|
||||
when InternalPreviewVisible:
|
||||
SelectedItem?.LoadPreviewImage();
|
||||
PreviewSelectedItem?.LoadPreviewImage();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private bool CanExternalPreviewSelectedResult(out string path)
|
||||
{
|
||||
path = SelectedItem?.Result?.Preview.FilePath;
|
||||
path = PreviewSelectedItem == Results.SelectedItem ? Results.SelectedItem?.Result?.Preview.FilePath : string.Empty;
|
||||
return !string.IsNullOrEmpty(path);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue