public void CanAccessDefaultLocation() { Assert.IsNotNull(LocationData.Default); LocationData location = LocationData.Default; Assert.IsTrue(location.Equals(LocationData.Default)); }
public void EqualsToString(bool expected, string left, string right) { LocationData location = left; Assert.AreEqual(expected, location.Equals(right)); if (expected) { Assert.AreEqual(0, location.CompareTo(right)); } else { Assert.AreNotEqual(0, location.CompareTo(right)); } }
public void EqualsToObject(bool expected, string left, string right) { LocationData loc1 = left; LocationData loc2 = right; Assert.AreEqual(expected, loc1.Equals(loc2)); if (expected) { Assert.AreEqual(0, loc1.CompareTo(loc2)); } else { Assert.AreNotEqual(0, loc1.CompareTo(loc2)); } }
public static void TileUpdater(LocationData location, Weather weather) { // And send the notification to the tile if (location.Equals(Settings.HomeData)) { // Update both primary and secondary tile if it exists var appTileUpdater = TileUpdateManager.CreateTileUpdaterForApplication(); // Lock instance to avoid rare concurrency issue // (when BGTask is running and tile is updated via WeatherNowPage) lock (appTileUpdater) { UpdateContent(appTileUpdater, weather); } if (SecondaryTileUtils.Exists(location.query)) { var tileUpdater = TileUpdateManager.CreateTileUpdaterForSecondaryTile( SecondaryTileUtils.GetTileId(location.query)); lock (tileUpdater) { UpdateContent(tileUpdater, weather); } } TileUpdated = true; } else { // Update secondary tile if (SecondaryTileUtils.Exists(location.query)) { var tileUpdater = TileUpdateManager.CreateTileUpdaterForSecondaryTile( SecondaryTileUtils.GetTileId(location.query)); // Lock instance to avoid rare concurrency issue // (when BGTask is running and tile is updated via WeatherNowPage) lock (tileUpdater) { UpdateContent(tileUpdater, weather); } } } }
private async Task DataSyncResume() { if (!receiverRegistered) { IntentFilter filter = new IntentFilter(); filter.AddAction(WearableHelper.SettingsPath); filter.AddAction(WearableHelper.LocationPath); filter.AddAction(WearableHelper.WeatherPath); filter.AddAction(WearableHelper.IsSetupPath); LocalBroadcastManager.GetInstance(Activity) .RegisterReceiver(dataReceiver, filter); receiverRegistered = true; } /* Update view on resume * ex. If temperature unit changed */ // New Page = loaded - true // Navigating back to frag = !loaded - false if (loaded || wLoader == null) { DataSyncRestore(); } else if (wLoader != null && !loaded) { if (wLoader.GetWeather()?.IsValid() == true) { Weather weather = wLoader.GetWeather(); /* * DateTime < 0 - This instance is earlier than value. * DateTime == 0 - This instance is the same as value. * DateTime > 0 - This instance is later than value. */ if (Settings.UpdateTime.CompareTo(weather.update_time.UtcDateTime) > 0) { // Data was updated while we we're away; loaded it up if (location == null || !location.Equals(Settings.HomeData)) { location = Settings.HomeData; } Activity?.RunOnUiThread(() => refreshLayout.Refreshing = true); wLoader = new WeatherDataLoader(this.location, this, this); await wLoader.ForceLoadSavedWeatherData(); } else { // Check weather data expiration TimeSpan span = DateTimeOffset.Now - weather.update_time; if (span.TotalMinutes > Settings.DefaultInterval) { // send request to refresh data on connected device Activity?.StartService(new Intent(Activity, typeof(WearableDataListenerService)) .SetAction(WearableDataListenerService.ACTION_REQUESTWEATHERUPDATE) .PutExtra(WearableDataListenerService.EXTRA_FORCEUPDATE, true)); } weatherView.UpdateView(wLoader.GetWeather()); SetView(weatherView); mCallback?.OnWeatherViewUpdated(weatherView); loaded = true; } } else { // Data is null; restore DataSyncRestore(); } } }
protected override async void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); if (e.Parameter != null) { string arg = e.Parameter.ToString(); switch (arg) { case "view-alerts": GotoAlertsPage(); break; default: break; } } LocationData LocParameter = e.Parameter as LocationData; if (e.NavigationMode == NavigationMode.New) { // Reset loader if new page instance created location = null; wLoader = null; MainViewer.ChangeView(null, 0, null); // New page instance created, so restore if (LocParameter != null) { location = LocParameter; wLoader = new WeatherDataLoader(location, this, this); } await Restore(); } else { LocationData homeData = Settings.HomeData; // Did home change? bool homeChanged = false; if (location != null && Frame.BackStack.Count == 0) { if (!location.Equals(homeData)) { location = homeData; homeChanged = true; } } if (wLoader != null) { var userlang = GlobalizationPreferences.Languages.First(); var culture = new CultureInfo(userlang); var locale = wm.LocaleToLangCode(culture.TwoLetterISOLanguageName, culture.Name); // Reset loader if source, query or locale is different bool resetLoader = WeatherView.WeatherSource != Settings.API || homeChanged; if (wm.SupportsWeatherLocale && !resetLoader) { resetLoader = WeatherView.WeatherLocale != locale; } if (resetLoader) { wLoader = null; } } // Update view on resume // ex. If temperature unit changed if ((wLoader != null) && !homeChanged) { await Resume(); if (location.query == homeData.query) { // Clear backstack since we're home Frame.BackStack.Clear(); SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed; } } else { await Restore(); } } }
private async Task Resume() { /* Update view on resume * ex. If temperature unit changed */ LocationData homeData = Settings.HomeData; // Did home change? bool homeChanged = false; if (location != null && FragmentManager.BackStackEntryCount == 0) { if (!location.Equals(homeData) && Tag == "home") { location = homeData; wLoader = null; homeChanged = true; } } // New Page = loaded - true // Navigating back to frag = !loaded - false if (loaded || homeChanged || wLoader == null) { await Restore(); loaded = true; } else if (wLoader != null && !loaded) { var culture = System.Globalization.CultureInfo.CurrentCulture; var locale = wm.LocaleToLangCode(culture.TwoLetterISOLanguageName, culture.Name); // Reset if source || locale is different if (weatherView.WeatherSource != Settings.API || wm.SupportsWeatherLocale && weatherView.WeatherLocale != locale) { await Restore(); loaded = true; } else if (wLoader.GetWeather()?.IsValid() == true) { Weather weather = wLoader.GetWeather(); // Update weather if needed on resume if (Settings.FollowGPS && await UpdateLocation()) { // Setup loader from updated location wLoader = new WeatherDataLoader(this.location, this, this); await RefreshWeather(false); loaded = true; } else { // Check weather data expiration if (!int.TryParse(weather.ttl, out int ttl)) { ttl = Settings.DefaultInterval; } TimeSpan span = DateTimeOffset.Now - weather.update_time; if (span.TotalMinutes > ttl) { await RefreshWeather(false); } else { weatherView.UpdateView(wLoader.GetWeather()); SetView(weatherView); loaded = true; } } } } }