You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.4 KiB
44 lines
1.4 KiB
1 year ago
|
using FlyoutTabSearch.Data;
|
||
|
|
||
|
namespace FlyoutTabSearch.Pages;
|
||
|
|
||
|
public partial class SunrisePage : ContentPage
|
||
|
{
|
||
|
ILatLongService LatLongService { get; set; }
|
||
|
|
||
|
public SunrisePage()
|
||
|
{
|
||
|
InitializeComponent();
|
||
|
LatLongService = new LatLongService();
|
||
|
|
||
|
}
|
||
|
|
||
|
protected override async void OnAppearing()
|
||
|
{
|
||
|
base.OnAppearing();
|
||
|
activityWaiting.IsRunning = true;
|
||
|
var sunriseSunsetData = await GetSunriseSunsetData();
|
||
|
InitializeUI(sunriseSunsetData.Item1, sunriseSunsetData.Item2, sunriseSunsetData.Item3);
|
||
|
activityWaiting.IsRunning = false;
|
||
|
}
|
||
|
|
||
|
async Task<(DateTime, DateTime, TimeSpan)> GetSunriseSunsetData()
|
||
|
{
|
||
|
|
||
|
var latLongData = await LatLongService.GetLatLong();
|
||
|
var sunData = await new SunriseService().GetSunriseSunsetTimes(latLongData.Latitude, latLongData.Longitude);
|
||
|
|
||
|
var riseTime = sunData.Sunrise.ToLocalTime();
|
||
|
var setTime = sunData.Sunset.ToLocalTime();
|
||
|
var span = setTime.TimeOfDay - riseTime.TimeOfDay;
|
||
|
return (riseTime, setTime, span);
|
||
|
}
|
||
|
|
||
|
void InitializeUI(DateTime riseTime, DateTime setTime, TimeSpan span)
|
||
|
{
|
||
|
lblDate.Text = DateTime.Today.ToString("D");
|
||
|
lblSunrise.Text = riseTime.ToString("h:mm tt");
|
||
|
lblDaylight.Text = $"{span.Hours} hours, {span.Minutes} minutes";
|
||
|
lblSunset.Text = setTime.ToString("h:mm tt");
|
||
|
}
|
||
|
}
|