private async Task <RemoteViews> BuildRemoteViews(Context context, int[] appWidgetIds) { var widgetView = new RemoteViews(context.PackageName, Resource.Layout.Widget); RegisterClicks(context, appWidgetIds, widgetView); try { var location = await Geolocation.GetLocationAsync(); if (location != null) { var placeName = ""; var address = await Nominatim.GetAddress(location.Latitude, location.Longitude); if (!string.IsNullOrEmpty(address.Address.Administrative)) { placeName = address.Address.Administrative; } else if (!string.IsNullOrEmpty(address.Address.City)) { placeName = address.Address.City; } else if (!string.IsNullOrEmpty(address.Address.Village)) { placeName = address.Address.Village; } widgetView.SetTextViewText(Resource.Id.PlaceName, placeName); await SetLocation(placeName, location.Latitude, location.Longitude, widgetView); ShowError(widgetView, ErrorType.None); } else { ShowError(widgetView, ErrorType.LocalizationError); } } catch (FeatureNotSupportedException fnsEx) { ShowError(widgetView, ErrorType.LocalizationError); } catch (FeatureNotEnabledException fneEx) { ShowError(widgetView, ErrorType.LocalizationError); } catch (PermissionException pEx) { ShowError(widgetView, ErrorType.LocalizationError); } catch (Exception) { ShowError(widgetView, ErrorType.InternetConnectionError); } return(widgetView); }
public SearchViewModel(string searchText) { SearchCommand = new Command( execute: async(object address) => { IsLoading = true; var search = await Nominatim.GetAddress(address as string); Update(search); }, canExecute: (object address) => true); BackCommand = new Command( execute: async() => { await Application.Current.MainPage.Navigation.PopModalAsync(); }, canExecute: () => true); SearchText = searchText; }
private WeatherViewModel() { SearchCommand = new Command( execute: async(object address) => { var page = new SearchPage(); var model = new SearchViewModel(address as string); page.BindingContext = model; await Application.Current.MainPage.Navigation.PushModalAsync(page); SearchText = ""; var search = await Nominatim.GetAddress(address as string); model.Update(search); }, canExecute: (object address) => true); CurrentLocationCommand = new Command( execute: async() => { try { DateText = DateTime.Now.ToString("d"); RefreshFavoritePlaces(); var location = await Geolocation.GetLocationAsync(); if (location != null) { var placeName = ""; var address = await Nominatim.GetAddress(location.Latitude, location.Longitude); if (!string.IsNullOrEmpty(address.Address.Administrative)) { placeName = address.Address.Administrative; } else if (!string.IsNullOrEmpty(address.Address.City)) { placeName = address.Address.City; } else if (!string.IsNullOrEmpty(address.Address.Village)) { placeName = address.Address.Village; } SetLocation(placeName, location.Latitude, location.Longitude); } else { if (Settings.Settings.Instance.Places.Count == 0) { await Application.Current.MainPage.DisplayAlert(Resources.AppTranslations.MissingLocalizationTitle, Resources.AppTranslations.MissingLocalizationText, Resources.AppTranslations.MissingLocalizationClose); } else { SetLocation(Settings.Settings.Instance.Places.ElementAt(0).Add.PlaceName, Settings.Settings.Instance.Places.ElementAt(0).Add.Latitude, Settings.Settings.Instance.Places.ElementAt(0).Add.Longitude); } } } catch (FeatureNotSupportedException fnsEx) { await Application.Current.MainPage.DisplayAlert(Resources.AppTranslations.MissingLocalizationTitle, Resources.AppTranslations.MissingLocalizationText, Resources.AppTranslations.MissingLocalizationClose); } catch (FeatureNotEnabledException fneEx) { await Application.Current.MainPage.DisplayAlert(Resources.AppTranslations.MissingLocalizationTitle, Resources.AppTranslations.MissingLocalizationText, Resources.AppTranslations.MissingLocalizationClose); } catch (PermissionException pEx) { await Application.Current.MainPage.DisplayAlert(Resources.AppTranslations.MissingLocalizationTitle, Resources.AppTranslations.MissingLocalizationText, Resources.AppTranslations.MissingLocalizationClose); } catch (Exception ex) { if (Settings.Settings.Instance.Places.Count == 0) { await Application.Current.MainPage.DisplayAlert(Resources.AppTranslations.NoInternetTitle, Resources.AppTranslations.NoInternetText, Resources.AppTranslations.NoInternetClose); } else { SetLocation(Settings.Settings.Instance.Places.ElementAt(0).Add.PlaceName, Settings.Settings.Instance.Places.ElementAt(0).Add.Latitude, Settings.Settings.Instance.Places.ElementAt(0).Add.Longitude); } } IsLoading = false; }, canExecute: () => true); Connectivity.ConnectivityChanged += (sender, args) => { Refresh(); }; }