Improve code quality

This commit is contained in:
Jack251970 2025-03-26 10:07:35 +08:00
parent 0d74048418
commit acf3a279c8
2 changed files with 46 additions and 45 deletions

View file

@ -296,7 +296,7 @@ namespace Flow.Launcher
e.Handled = true;
break;
case Key.Right:
if (_viewModel.SelectedIsFromQueryResults()
if (_viewModel.QueryResultsSelected()
&& QueryTextBox.CaretIndex == QueryTextBox.Text.Length
&& !string.IsNullOrEmpty(QueryTextBox.Text))
{
@ -306,7 +306,7 @@ namespace Flow.Launcher
break;
case Key.Left:
if (!_viewModel.SelectedIsFromQueryResults() && QueryTextBox.CaretIndex == 0)
if (!_viewModel.QueryResultsSelected() && QueryTextBox.CaretIndex == 0)
{
_viewModel.EscCommand.Execute(null);
e.Handled = true;
@ -316,7 +316,7 @@ namespace Flow.Launcher
case Key.Back:
if (specialKeyState.CtrlPressed)
{
if (_viewModel.SelectedIsFromQueryResults()
if (_viewModel.QueryResultsSelected()
&& QueryTextBox.Text.Length > 0
&& QueryTextBox.CaretIndex == QueryTextBox.Text.Length)
{

View file

@ -164,7 +164,7 @@ namespace Flow.Launcher.ViewModel
case nameof(Results.SelectedItem):
_selectedItemFromQueryResults = true;
PreviewSelectedItem = Results.SelectedItem;
UpdatePreview();
_ = UpdatePreviewAsync();
break;
}
};
@ -176,7 +176,7 @@ namespace Flow.Launcher.ViewModel
case nameof(History.SelectedItem):
_selectedItemFromQueryResults = false;
PreviewSelectedItem = History.SelectedItem;
UpdatePreview();
_ = UpdatePreviewAsync();
break;
}
};
@ -280,7 +280,7 @@ namespace Flow.Launcher.ViewModel
[RelayCommand]
private void LoadHistory()
{
if (SelectedIsFromQueryResults())
if (QueryResultsSelected())
{
SelectedResults = History;
History.SelectedIndex = _history.Items.Count - 1;
@ -294,7 +294,7 @@ namespace Flow.Launcher.ViewModel
[RelayCommand]
public void ReQuery()
{
if (SelectedIsFromQueryResults())
if (QueryResultsSelected())
{
_ = QueryResultsAsync(isReQuery: true);
}
@ -335,7 +335,7 @@ namespace Flow.Launcher.ViewModel
[RelayCommand]
private void LoadContextMenu()
{
if (SelectedIsFromQueryResults())
if (QueryResultsSelected())
{
// When switch to ContextMenu from QueryResults, but no item being chosen, should do nothing
// i.e. Shift+Enter/Ctrl+O right after Alt + Space should do nothing
@ -365,7 +365,7 @@ namespace Flow.Launcher.ViewModel
private void AutocompleteQuery()
{
var result = SelectedResults.SelectedItem?.Result;
if (result != null && SelectedIsFromQueryResults()) // SelectedItem returns null if selection is empty.
if (result != null && QueryResultsSelected()) // SelectedItem returns null if selection is empty.
{
var autoCompleteText = result.Title;
@ -417,7 +417,7 @@ namespace Flow.Launcher.ViewModel
})
.ConfigureAwait(false);
if (SelectedIsFromQueryResults())
if (QueryResultsSelected())
{
_userSelectedRecord.Add(result);
// origin query is null when user select the context menu item directly of one item from query list
@ -496,7 +496,7 @@ namespace Flow.Launcher.ViewModel
{
if (_history.Items.Count > 0
&& QueryText == string.Empty
&& SelectedIsFromQueryResults())
&& QueryResultsSelected())
{
lastHistoryIndex = 1;
ReverseHistory();
@ -516,7 +516,7 @@ namespace Flow.Launcher.ViewModel
[RelayCommand]
private void Esc()
{
if (!SelectedIsFromQueryResults())
if (!QueryResultsSelected())
{
SelectedResults = Results;
}
@ -528,7 +528,7 @@ namespace Flow.Launcher.ViewModel
public void BackToQueryResults()
{
if (!SelectedIsFromQueryResults())
if (!QueryResultsSelected())
{
SelectedResults = Results;
}
@ -662,11 +662,11 @@ namespace Flow.Launcher.ViewModel
get => _selectedResults;
set
{
var isReturningFromQueryResults = SelectedIsFromQueryResults();
var isReturningFromQueryResults = QueryResultsSelected();
var isReturningFromContextMenu = ContextMenuSelected();
var isReturningFromHistory = HistorySelected();
_selectedResults = value;
if (SelectedIsFromQueryResults())
if (QueryResultsSelected())
{
Results.Visibility = Visibility.Visible;
ContextMenu.Visibility = Visibility.Collapsed;
@ -871,9 +871,9 @@ namespace Flow.Launcher.ViewModel
// This is not a reliable indicator of whether external preview is visible due to the
// ability of manually closing/exiting the external preview program which, does not inform flow that
// preview is no longer available.
public bool ExternalPreviewVisible { get; set; } = false;
public bool ExternalPreviewVisible { get; private set; }
private void ShowPreview()
private async Task ShowPreviewAsync()
{
var useExternalPreview = PluginManager.UseExternalPreview();
@ -884,13 +884,15 @@ namespace Flow.Launcher.ViewModel
// Internal preview may still be on when user switches to external
if (InternalPreviewVisible)
HideInternalPreview();
OpenExternalPreview(path);
_ = OpenExternalPreviewAsync(path);
break;
case true
when !CanExternalPreviewSelectedResult(out var _):
if (ExternalPreviewVisible)
CloseExternalPreview();
await CloseExternalPreviewAsync();
ShowInternalPreview();
break;
@ -903,7 +905,7 @@ namespace Flow.Launcher.ViewModel
private void HidePreview()
{
if (PluginManager.UseExternalPreview())
CloseExternalPreview();
_ = CloseExternalPreviewAsync();
if (InternalPreviewVisible)
HideInternalPreview();
@ -918,25 +920,25 @@ namespace Flow.Launcher.ViewModel
}
else
{
ShowPreview();
_ = ShowPreviewAsync();
}
}
private void OpenExternalPreview(string path, bool sendFailToast = true)
private async Task OpenExternalPreviewAsync(string path, bool sendFailToast = true)
{
_ = PluginManager.OpenExternalPreviewAsync(path, sendFailToast).ConfigureAwait(false);
await PluginManager.OpenExternalPreviewAsync(path, sendFailToast).ConfigureAwait(false);
ExternalPreviewVisible = true;
}
private void CloseExternalPreview()
private async Task CloseExternalPreviewAsync()
{
_ = PluginManager.CloseExternalPreviewAsync().ConfigureAwait(false);
await PluginManager.CloseExternalPreviewAsync().ConfigureAwait(false);
ExternalPreviewVisible = false;
}
private static void SwitchExternalPreview(string path, bool sendFailToast = true)
private static async Task SwitchExternalPreviewAsync(string path, bool sendFailToast = true)
{
_ = PluginManager.SwitchExternalPreviewAsync(path,sendFailToast).ConfigureAwait(false);
await PluginManager.SwitchExternalPreviewAsync(path, sendFailToast).ConfigureAwait(false);
}
private void ShowInternalPreview()
@ -956,20 +958,18 @@ namespace Flow.Launcher.ViewModel
{
case true
when PluginManager.AllowAlwaysPreview() && CanExternalPreviewSelectedResult(out var path):
OpenExternalPreview(path);
_ = OpenExternalPreviewAsync(path);
break;
case true:
ShowInternalPreview();
break;
case false:
HidePreview();
break;
}
}
private void UpdatePreview()
private async Task UpdatePreviewAsync()
{
switch (PluginManager.UseExternalPreview())
{
@ -977,24 +977,22 @@ namespace Flow.Launcher.ViewModel
when CanExternalPreviewSelectedResult(out var path):
if (ExternalPreviewVisible)
{
SwitchExternalPreview(path, false);
_ = SwitchExternalPreviewAsync(path, false);
}
else if (InternalPreviewVisible)
{
HideInternalPreview();
OpenExternalPreview(path);
_ = OpenExternalPreviewAsync(path);
}
break;
case true
when !CanExternalPreviewSelectedResult(out var _):
if (ExternalPreviewVisible)
{
CloseExternalPreview();
await CloseExternalPreviewAsync();
ShowInternalPreview();
}
break;
case false
when InternalPreviewVisible:
PreviewSelectedItem?.LoadPreviewImage();
@ -1004,9 +1002,15 @@ namespace Flow.Launcher.ViewModel
private bool CanExternalPreviewSelectedResult(out string path)
{
path = PreviewSelectedItem == Results.SelectedItem ? Results.SelectedItem?.Result?.Preview.FilePath : string.Empty;
path = QueryResultsPreviewed() ? Results.SelectedItem?.Result?.Preview.FilePath : string.Empty;
return !string.IsNullOrEmpty(path);
}
private bool QueryResultsPreviewed()
{
var previewed = PreviewSelectedItem == Results.SelectedItem;
return previewed;
}
#endregion
@ -1014,7 +1018,7 @@ namespace Flow.Launcher.ViewModel
public void Query(bool isReQuery = false)
{
if (SelectedIsFromQueryResults())
if (QueryResultsSelected())
{
_ = QueryResultsAsync(isReQuery);
}
@ -1382,7 +1386,7 @@ namespace Flow.Launcher.ViewModel
return menu;
}
internal bool SelectedIsFromQueryResults()
internal bool QueryResultsSelected()
{
var selected = SelectedResults == Results;
return selected;
@ -1447,10 +1451,10 @@ namespace Flow.Launcher.ViewModel
if (ExternalPreviewVisible)
{
CloseExternalPreview();
await CloseExternalPreviewAsync();
}
if (!SelectedIsFromQueryResults())
if (!QueryResultsSelected())
{
SelectedResults = Results;
}
@ -1460,10 +1464,7 @@ namespace Flow.Launcher.ViewModel
{
ChangeQueryText(string.Empty);
await Task.Delay(1); // Wait for one frame to ensure UI reflects changes
Application.Current.Dispatcher.Invoke(() =>
{
Application.Current.MainWindow.UpdateLayout(); // Force UI update
});
Application.Current.Dispatcher.Invoke(Application.Current.MainWindow.UpdateLayout); // Force UI update
}
switch (Settings.LastQueryMode)