mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Improve code quality
This commit is contained in:
parent
0d74048418
commit
acf3a279c8
2 changed files with 46 additions and 45 deletions
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue