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
|
<Border
|
||||||
MinHeight="380"
|
MinHeight="380"
|
||||||
d:DataContext="{d:DesignInstance vm:ResultViewModel}"
|
d:DataContext="{d:DesignInstance vm:ResultViewModel}"
|
||||||
DataContext="{Binding SelectedItem, Mode=OneWay}"
|
DataContext="{Binding PreviewSelectedItem, Mode=OneWay}"
|
||||||
Visibility="{Binding ShowDefaultPreview}">
|
Visibility="{Binding ShowDefaultPreview}">
|
||||||
<Grid
|
<Grid
|
||||||
Margin="0 0 10 5"
|
Margin="0 0 10 5"
|
||||||
|
|
@ -518,7 +518,7 @@
|
||||||
MaxHeight="{Binding ElementName=ResultListBox, Path=ActualHeight}"
|
MaxHeight="{Binding ElementName=ResultListBox, Path=ActualHeight}"
|
||||||
Padding="0 0 10 10"
|
Padding="0 0 10 10"
|
||||||
d:DataContext="{d:DesignInstance vm:ResultViewModel}"
|
d:DataContext="{d:DesignInstance vm:ResultViewModel}"
|
||||||
DataContext="{Binding SelectedItem, Mode=OneWay}"
|
DataContext="{Binding PreviewSelectedItem, Mode=OneWay}"
|
||||||
Visibility="{Binding ShowCustomizedPreview}">
|
Visibility="{Binding ShowCustomizedPreview}">
|
||||||
<ContentControl Content="{Binding Result.PreviewPanel.Value}" />
|
<ContentControl Content="{Binding Result.PreviewPanel.Value}" />
|
||||||
</Border>
|
</Border>
|
||||||
|
|
|
||||||
|
|
@ -162,7 +162,20 @@ namespace Flow.Launcher.ViewModel
|
||||||
switch (args.PropertyName)
|
switch (args.PropertyName)
|
||||||
{
|
{
|
||||||
case nameof(Results.SelectedItem):
|
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();
|
UpdatePreview();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -646,10 +659,12 @@ namespace Flow.Launcher.ViewModel
|
||||||
|
|
||||||
private ResultsViewModel SelectedResults
|
private ResultsViewModel SelectedResults
|
||||||
{
|
{
|
||||||
get { return _selectedResults; }
|
get => _selectedResults;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
|
var isReturningFromQueryResults = SelectedIsFromQueryResults();
|
||||||
var isReturningFromContextMenu = ContextMenuSelected();
|
var isReturningFromContextMenu = ContextMenuSelected();
|
||||||
|
var isReturningFromHistory = HistorySelected();
|
||||||
_selectedResults = value;
|
_selectedResults = value;
|
||||||
if (SelectedIsFromQueryResults())
|
if (SelectedIsFromQueryResults())
|
||||||
{
|
{
|
||||||
|
|
@ -670,12 +685,30 @@ namespace Flow.Launcher.ViewModel
|
||||||
{
|
{
|
||||||
ChangeQueryText(_queryTextBeforeLeaveResults);
|
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
|
else
|
||||||
{
|
{
|
||||||
Results.Visibility = Visibility.Collapsed;
|
Results.Visibility = Visibility.Collapsed;
|
||||||
|
History.Visibility = Visibility.Collapsed;
|
||||||
_queryTextBeforeLeaveResults = QueryText;
|
_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
|
// Because of Fody's optimization
|
||||||
// setter won't be called when property value is not changed.
|
// setter won't be called when property value is not changed.
|
||||||
// so we need manually call Query()
|
// so we need manually call Query()
|
||||||
|
|
@ -787,9 +820,11 @@ namespace Flow.Launcher.ViewModel
|
||||||
|
|
||||||
#region Preview
|
#region Preview
|
||||||
|
|
||||||
|
private bool? _selectedItemFromQueryResults;
|
||||||
|
|
||||||
private ResultViewModel _selectedItem;
|
private ResultViewModel _selectedItem;
|
||||||
|
|
||||||
public ResultViewModel SelectedItem
|
public ResultViewModel PreviewSelectedItem
|
||||||
{
|
{
|
||||||
get => _selectedItem;
|
get => _selectedItem;
|
||||||
set
|
set
|
||||||
|
|
@ -897,7 +932,7 @@ namespace Flow.Launcher.ViewModel
|
||||||
private void ShowInternalPreview()
|
private void ShowInternalPreview()
|
||||||
{
|
{
|
||||||
ResultAreaColumn = ResultAreaColumnPreviewShown;
|
ResultAreaColumn = ResultAreaColumnPreviewShown;
|
||||||
SelectedItem?.LoadPreviewImage();
|
PreviewSelectedItem?.LoadPreviewImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HideInternalPreview()
|
private void HideInternalPreview()
|
||||||
|
|
@ -952,14 +987,14 @@ namespace Flow.Launcher.ViewModel
|
||||||
|
|
||||||
case false
|
case false
|
||||||
when InternalPreviewVisible:
|
when InternalPreviewVisible:
|
||||||
SelectedItem?.LoadPreviewImage();
|
PreviewSelectedItem?.LoadPreviewImage();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool CanExternalPreviewSelectedResult(out string path)
|
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);
|
return !string.IsNullOrEmpty(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue