mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-09 12:46:47 +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;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
using Microsoft.CmdPal.Ext.TimeDate.Helpers;
|
using Microsoft.CmdPal.Ext.TimeDate.Helpers;
|
||||||
using Microsoft.CommandPalette.Extensions;
|
using Microsoft.CommandPalette.Extensions;
|
||||||
using Microsoft.CommandPalette.Extensions.Toolkit;
|
using Microsoft.CommandPalette.Extensions.Toolkit;
|
||||||
@@ -12,6 +14,12 @@ namespace Microsoft.CmdPal.Ext.TimeDate.Pages;
|
|||||||
|
|
||||||
internal sealed partial class TimeDateExtensionPage : DynamicListPage
|
internal sealed partial class TimeDateExtensionPage : DynamicListPage
|
||||||
{
|
{
|
||||||
|
private readonly Lock _resultsLock = new();
|
||||||
|
|
||||||
|
private IList<ListItem> _results = new List<ListItem>();
|
||||||
|
|
||||||
|
private bool initialized;
|
||||||
|
|
||||||
private SettingsManager _settingsManager;
|
private SettingsManager _settingsManager;
|
||||||
|
|
||||||
public TimeDateExtensionPage(SettingsManager settingsManager)
|
public TimeDateExtensionPage(SettingsManager settingsManager)
|
||||||
@@ -24,20 +32,36 @@ internal sealed partial class TimeDateExtensionPage : DynamicListPage
|
|||||||
_settingsManager = settingsManager;
|
_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)
|
public override void UpdateSearchText(string oldSearch, string newSearch)
|
||||||
{
|
{
|
||||||
|
if (newSearch == oldSearch)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
DoExecuteSearch(newSearch);
|
DoExecuteSearch(newSearch);
|
||||||
RaiseItemsChanged(0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<ListItem> DoExecuteSearch(string query)
|
private void DoExecuteSearch(string query)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var result = TimeDateCalculator.ExecuteSearch(_settingsManager, query);
|
var result = TimeDateCalculator.ExecuteSearch(_settingsManager, query);
|
||||||
return result;
|
UpdateResult(result);
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
@@ -51,7 +75,18 @@ internal sealed partial class TimeDateExtensionPage : DynamicListPage
|
|||||||
ResultHelper.CreateInvalidInputErrorResult(),
|
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