using System.Drawing; using InABox.Core; namespace InABox.Avalonia.Platform; public class GeoLocationTimerArgs(TimeSpan frequency, TimeSpan remaining) : EventArgs { public TimeSpan Frequency { get; } = frequency; public TimeSpan Remaining { get; } = remaining; } public delegate void GeoLocationTimerHandler(object sender, GeoLocationTimerArgs e); public class GeoLocationChangedArgs(GeoPoint? location) : EventArgs { public GeoPoint? Location { get; } = location; } public delegate void GeoLocationChangedHandler(object sender, GeoLocationChangedArgs e); public interface IGeolocation : ILoggable { bool Scanning { get; set; } GeoPoint? CurrentLocation { get; set; } public event GeoLocationChangedHandler? LocationChanged; public event GeoLocationTimerHandler? TimerChanged; Task GetLocationAsync(CancellationTokenSource cancel); }