mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-03 17:56:44 +02:00
[cmdpal] Simplify time And Date extension code to make it easier to understand (#38075)
Co-authored-by: Yu Leng (from Dev Box) <yuleng@microsoft.com>
This commit is contained in:
@@ -4,6 +4,8 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using Microsoft.CmdPal.Ext.TimeDate.Helpers;
|
||||
using Microsoft.CommandPalette.Extensions;
|
||||
using Microsoft.CommandPalette.Extensions.Toolkit;
|
||||
@@ -12,6 +14,12 @@ namespace Microsoft.CmdPal.Ext.TimeDate.Pages;
|
||||
|
||||
internal sealed partial class TimeDateExtensionPage : DynamicListPage
|
||||
{
|
||||
private readonly Lock _resultsLock = new();
|
||||
|
||||
private IList<ListItem> _results = new List<ListItem>();
|
||||
|
||||
private bool initialized;
|
||||
|
||||
private SettingsManager _settingsManager;
|
||||
|
||||
public TimeDateExtensionPage(SettingsManager settingsManager)
|
||||
@@ -24,20 +32,36 @@ internal sealed partial class TimeDateExtensionPage : DynamicListPage
|
||||
_settingsManager = settingsManager;
|
||||
}
|
||||
|
||||
public override IListItem[] GetItems() => DoExecuteSearch(SearchText).ToArray();
|
||||
public override IListItem[] GetItems()
|
||||
{
|
||||
if (!initialized)
|
||||
{
|
||||
DoExecuteSearch(string.Empty);
|
||||
}
|
||||
|
||||
lock (_resultsLock)
|
||||
{
|
||||
ListItem[] results = _results.ToArray();
|
||||
return results;
|
||||
}
|
||||
}
|
||||
|
||||
public override void UpdateSearchText(string oldSearch, string newSearch)
|
||||
{
|
||||
if (newSearch == oldSearch)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
DoExecuteSearch(newSearch);
|
||||
RaiseItemsChanged(0);
|
||||
}
|
||||
|
||||
private List<ListItem> DoExecuteSearch(string query)
|
||||
private void DoExecuteSearch(string query)
|
||||
{
|
||||
try
|
||||
{
|
||||
var result = TimeDateCalculator.ExecuteSearch(_settingsManager, query);
|
||||
return result;
|
||||
UpdateResult(result);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
@@ -51,7 +75,18 @@ internal sealed partial class TimeDateExtensionPage : DynamicListPage
|
||||
ResultHelper.CreateInvalidInputErrorResult(),
|
||||
};
|
||||
|
||||
return items;
|
||||
UpdateResult(items);
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateResult(IList<ListItem> result)
|
||||
{
|
||||
lock (_resultsLock)
|
||||
{
|
||||
initialized = true;
|
||||
this._results = result;
|
||||
}
|
||||
|
||||
RaiseItemsChanged(this._results.Count);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user