25 lines
716 B
C#
25 lines
716 B
C#
|
|
namespace LANCommander.UI.Providers;
|
||
|
|
|
||
|
|
public class LocalTimeProvider : TimeProvider
|
||
|
|
{
|
||
|
|
private TimeZoneInfo? _localTimeZone;
|
||
|
|
|
||
|
|
public event EventHandler? LocalTimeZoneChanged;
|
||
|
|
|
||
|
|
public override TimeZoneInfo LocalTimeZone => _localTimeZone ?? base.LocalTimeZone;
|
||
|
|
|
||
|
|
internal bool IsLocalTimeZoneSet => _localTimeZone != null;
|
||
|
|
|
||
|
|
public void SetLocalTimeZone(string timeZone)
|
||
|
|
{
|
||
|
|
if (!TimeZoneInfo.TryFindSystemTimeZoneById(timeZone, out var timeZoneInfo))
|
||
|
|
timeZoneInfo = null;
|
||
|
|
|
||
|
|
if (timeZoneInfo != LocalTimeZone)
|
||
|
|
{
|
||
|
|
_localTimeZone = timeZoneInfo;
|
||
|
|
|
||
|
|
LocalTimeZoneChanged?.Invoke(this, EventArgs.Empty);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|