private async Task LoadLocations() { // Disable EditMode button EditButton.IsEnabled = false; // Lets load it up... var locations = await Settings.GetFavorites(); LocationPanels.Clear(); // Setup saved favorite locations await LoadGPSPanel(); foreach (LocationData location in locations) { var panel = new LocationPanelViewModel() { // Save index to tag (to easily retreive) LocationData = location }; LocationPanels.Add(panel); } foreach (LocationData location in locations) { var wLoader = new WeatherDataLoader(location, this, this); await wLoader.LoadWeatherData(false); } // Enable EditMode button EditButton.IsEnabled = true; }
private async Task RefreshLocations() { // Disable EditMode button EditButton.IsEnabled = false; // Reload all panels if needed var locations = await Settings.GetLocationData(); var homeData = await Settings.GetLastGPSLocData(); bool reload = (locations.Count != LocationPanels.Count || (Settings.FollowGPS && (GPSPanelViewModel.First() == null))); // Reload if weather source differs if ((GPSPanelViewModel.First() != null && GPSPanelViewModel.First().WeatherSource != Settings.API) || (LocationPanels.Count >= 1 && LocationPanels[0].WeatherSource != Settings.API)) { reload = true; } // Reload if panel queries dont match if (!reload && (GPSPanelViewModel.First() != null && homeData.query != GPSPanelViewModel.First().LocationData.query)) { reload = true; } if (reload) { LocationPanels.Clear(); await LoadLocations(); } else { var dataset = LocationPanels.ToList(); if (GPSPanelViewModel.First() != null) { dataset.Add(GPSPanelViewModel.First()); } foreach (LocationPanelViewModel view in dataset) { var wLoader = new WeatherDataLoader(view.LocationData, this, this); await wLoader.LoadWeatherData(false); } } // Enable EditMode button EditButton.IsEnabled = true; }