[PTRun]Settings for result order tuning (#18978)

* Change to allow new settings for results tuning.

* Change to allow new settings for results tuning.

* Added WeightBoost

* Fixed null-ref crash in QueryResults

* Change based on stefansjfw review. Remove PowerLauncher_PluginWeightBoost.Content

* Fixed another of my dumb null-refs...

* Updated some text

* Moved global sort order and set enable/disabled as needed.

* Fixed enabled-state of "Global sort order score modifier" setting.
This commit is contained in:
Jeff Lord
2022-07-04 10:12:56 -04:00
committed by GitHub
parent 0c238a8eea
commit 0da616f917
19 changed files with 379 additions and 31 deletions

View File

@@ -362,14 +362,14 @@ namespace PowerLauncher.ViewModel
/// </summary>
/// <param name="queryText">Text that is being queried from user</param>
/// <param name="requery">Optional Parameter that if true, will automatically execute a query against the updated text</param>
public void ChangeQueryText(string queryText, bool requery = false)
public void ChangeQueryText(string queryText, bool requery = false, QueryTuningOptions tuningOptions = null)
{
SystemQueryText = queryText;
if (requery)
{
QueryText = queryText;
Query();
Query(tuningOptions);
}
}
@@ -463,11 +463,20 @@ namespace PowerLauncher.ViewModel
public ICommand ClearQueryCommand { get; private set; }
public void Query()
public class QueryTuningOptions
{
public int SearchClickedItemWeight { get; set; }
public bool SearchQueryTuningEnabled { get; set; }
public bool SearchWaitForSlowResults { get; set; }
}
public void Query(QueryTuningOptions options)
{
if (SelectedIsFromQueryResults())
{
QueryResults();
QueryResults(options);
}
else if (HistorySelected())
{
@@ -518,8 +527,10 @@ namespace PowerLauncher.ViewModel
}
}
private void QueryResults()
private void QueryResults(QueryTuningOptions queryTuning)
{
var doFinalSort = queryTuning.SearchQueryTuningEnabled && queryTuning.SearchWaitForSlowResults;
if (!string.IsNullOrEmpty(QueryText))
{
var queryTimer = new System.Diagnostics.Stopwatch();
@@ -536,7 +547,8 @@ namespace PowerLauncher.ViewModel
{
queryText = pluginQueryPairs.Values.First().RawQuery;
_currentQuery = queryText;
Task.Run(
var queryResultsTask = Task.Factory.StartNew(
() =>
{
Thread.Sleep(20);
@@ -577,12 +589,18 @@ namespace PowerLauncher.ViewModel
currentCancellationToken.ThrowIfCancellationRequested();
numResults = Results.Results.Count;
Results.Sort();
Results.SelectedItem = Results.Results.FirstOrDefault();
if (!doFinalSort)
{
Results.Sort(queryTuning);
Results.SelectedItem = Results.Results.FirstOrDefault();
}
}
currentCancellationToken.ThrowIfCancellationRequested();
UpdateResultsListViewAfterQuery(queryText);
if (!doFinalSort)
{
UpdateResultsListViewAfterQuery(queryText);
}
}
bool noInitialResults = numResults == 0;
@@ -616,11 +634,17 @@ namespace PowerLauncher.ViewModel
currentCancellationToken.ThrowIfCancellationRequested();
numResults = Results.Results.Count;
Results.Sort();
if (!doFinalSort)
{
Results.Sort(queryTuning);
}
}
currentCancellationToken.ThrowIfCancellationRequested();
UpdateResultsListViewAfterQuery(queryText, noInitialResults, true);
if (!doFinalSort)
{
UpdateResultsListViewAfterQuery(queryText, noInitialResults, true);
}
}
}
}
@@ -644,6 +668,19 @@ namespace PowerLauncher.ViewModel
};
PowerToysTelemetry.Log.WriteEvent(queryEvent);
}, currentCancellationToken);
if (doFinalSort)
{
Task.Factory.ContinueWhenAll(
new Task[] { queryResultsTask },
completedTasks =>
{
Results.Sort(queryTuning);
Results.SelectedItem = Results.Results.FirstOrDefault();
UpdateResultsListViewAfterQuery(queryText, false, false);
},
currentCancellationToken);
}
}
}
else
@@ -944,7 +981,9 @@ namespace PowerLauncher.ViewModel
foreach (var result in list)
{
result.Score += _userSelectedRecord.GetSelectedCount(result) * 5;
var selectedData = _userSelectedRecord.GetSelectedData(result);
result.SelectedCount = selectedData.SelectedCount;
result.LastSelected = selectedData.LastSelected;
}
// Using CurrentCultureIgnoreCase since this is user facing
@@ -1117,5 +1156,20 @@ namespace PowerLauncher.ViewModel
{
return _settings.SearchInputDelay;
}
public int GetSearchClickedItemWeight()
{
return _settings.SearchClickedItemWeight;
}
public bool GetSearchQueryTuningEnabled()
{
return _settings.SearchQueryTuningEnabled;
}
public bool GetSearchWaitForSlowResults()
{
return _settings.SearchWaitForSlowResults;
}
}
}