mirror of
https://github.com/microsoft/PowerToys
synced 2025-09-07 18:05:12 +00:00
[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:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user