/// <summary> /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private async void RefreshClicked(object sender, EventArgs args) { XameteoDialogs.ShowLoading(); await XameteoApp.Instance.RefreshPlaces(0); XameteoDialogs.HideLoading(); }
/// <summary> /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private async void SelectClicked(object sender, EventArgs args) { try { var dateTime = DateTime.Now; var dialogResult = await XameteoDialogs.DatePicker(dateTime.AddDays(-30), dateTime.AddDays(-1)); if (dialogResult.Ok == false) { return; } XameteoDialogs.ShowLoading(); _selected = dialogResult.SelectedDate; OnPropertyChanged(nameof(Selected)); var parsed = _selected.Date.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture); var history = (await XameteoApp.Instance.Apixu.History(_adapter, parsed)).Forecast.Days; if (history.Count > 0) { HistoryView.Content = new HistoryView(history[0]); } XameteoDialogs.HideLoading(); } catch (Exception exception) { XameteoDialogs.HideLoading(); XameteoDialogs.Alert(exception); } }
/// <summary> /// </summary> private static async void LocationByGeocoding() { var dialogResult = await XameteoDialogs.Prompt(Resx.Resources.Geolocation_Title, Resx.Resources.Geolocation_Message, string.Empty); if (dialogResult.Ok == false) { return; } var userChoice = dialogResult.Text.Trim(); if (userChoice.Length > 0) { XameteoDialogs.ShowLoading(); try { var googleResponse = await XameteoApp.Instance.Geocoding.Get(userChoice); if (googleResponse.Status != "OK") { throw new InvalidOperationException(string.Format(Resx.Resources.Geolocation_Error, googleResponse.Status)); } var geocodingResults = googleResponse.Results; if (geocodingResults.Count < 1) { throw new InvalidOperationException(Resx.Resources.Geolocation_Zero); } XameteoDialogs.HideLoading(); if (geocodingResults.Count == 1) { SaveLocation(new CoordinatesAdapter(googleResponse.Results[0].GeocodingGeometry.Location)); } else { XameteoDialogs.ActionSheet( geocodingResults.Select(it => new ActionSheetOption(it.Address, () => SaveLocation(new CoordinatesAdapter(it.GeocodingGeometry.Location)))).ToList(), Resx.Resources.Geolocation_Multiple ); } } catch (Exception exception) { XameteoDialogs.HideLoading(); XameteoDialogs.Alert(exception); } } else { XameteoDialogs.Alert(Resx.Resources.Geolocation_Title, Resx.Resources.Prompt_Error); } }
/// <summary> /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private async void DeleteClicked(object sender, EventArgs args) { if (sender is MenuItem menuItem && menuItem.CommandParameter is ApixuPlace model) { if (await XameteoDialogs.PromptYesNo(Resx.Resources.Remove_Title, string.Format(Resx.Resources.Remove_Message, model.Forecast.Location))) { XameteoApp.Instance.RemovePlace(model); } } }
/// <summary> /// </summary> private async void ResetSettings(SettingsModel source) { if (await XameteoDialogs.PromptYesNo(Resources.Reset_Title, Resources.Reset_Prompt) == false) { return; } Items.Clear(); XameteoApp.Instance.ResetSettngs(); RefreshView(); }
/// <summary> /// </summary> /// <param name="apixuPlace"></param> public LocationView(ApixuPlace apixuPlace) { try { _place = apixuPlace; InitializeView(apixuPlace.Forecast); ToolbarItems.Add(new ToolbarItem(Resx.Resources.Button_Refresh, "icon_refresh.png", RefreshPlace)); } catch (Exception exception) { XameteoDialogs.Alert(exception); } }
/// <summary> /// </summary> private static async void LocationByDevice() { try { XameteoDialogs.ShowLoading(); SaveLocation(new CoordinatesAdapter(await XameteoApp.Instance.DeviceLocation())); XameteoDialogs.HideLoading(); } catch (Exception exception) { XameteoDialogs.HideLoading(); XameteoDialogs.Alert(exception); } }
/// <summary> /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs args) { try { if (args.SelectedItem is MainModel item) { IsPresented = false; Detail = new NavigationPage(item.ViewModel == null ? (Page)Activator.CreateInstance(item.TargetType) : new LocationView(item.ViewModel)); } } catch (Exception exception) { XameteoDialogs.Alert(exception); } }
/// <summary> /// </summary> /// <param name="previousIndex"></param> /// <returns></returns> public MainModel RefreshView(int previousIndex) { try { MenuItems.Clear(); MenuItems.Add(_homePage); MenuItems.Add(_settingsPage); XameteoApp.Instance.Places.ForEach(InsertLocation); } catch (Exception exception) { XameteoDialogs.Alert(exception); } return(MenuItems[previousIndex]); }
/// <summary> /// </summary> private async void InitializeView() { try { MenuItems.Add(_homePage); MenuItems.Add(_settingsPage); XameteoDialogs.ShowLoading(); await XameteoApp.Instance.RefreshPlaces(0); XameteoDialogs.HideLoading(); } catch (Exception exception) { XameteoDialogs.HideLoading(); XameteoDialogs.Alert(exception); } }
/// <summary> /// </summary> /// <param name="source"></param> private static async void UpdateApixuKey(SettingsModel source) { var dialogResult = await XameteoDialogs.Prompt(Resources.ApixuKey_Title, Resources.ApixuKey_Message, XameteoApp.Instance.ApixuKey); if (dialogResult.Ok == false) { return; } var userChoice = dialogResult.Text.Trim(); if (userChoice.Length > 0) { source.Value = userChoice; XameteoApp.Instance.ApixuKey = userChoice; } else if (dialogResult.Ok) { XameteoDialogs.Alert(Resources.ApixuKey_Title, Resources.Prompt_Error); } }
/// <summary> /// </summary> /// <param name="apixuAdapter"></param> private static async void SaveLocation(ApixuAdapter apixuAdapter) { try { XameteoDialogs.ShowLoading(); if (await XameteoApp.Instance.InsertPlace(apixuAdapter) == false) { XameteoDialogs.HideLoading(); XameteoDialogs.Alert(Resx.Resources.Exists_Title, Resx.Resources.Exists_Message); } else { XameteoDialogs.HideLoading(); } } catch (Exception exception) { XameteoDialogs.HideLoading(); XameteoDialogs.Alert(exception); } }
/// <summary> /// </summary> public async void RefreshPlace() { XameteoDialogs.ShowLoading(); try { var place = await XameteoApp.Instance.RefreshPlace(_place); if (place != null) { Children.Clear(); _place = place; InitializeView(place.Forecast); } XameteoDialogs.HideLoading(); } catch (Exception exception) { XameteoDialogs.HideLoading(); XameteoDialogs.Alert(exception); } }
/// <summary> /// </summary> /// <typeparam name="T"></typeparam> /// <param name="units"></param> /// <param name="generator"></param> /// <returns></returns> public static IDisposable SelectUnit <T>(T[] units, Action <T> generator) where T : Unit => XameteoDialogs.ActionSheet( units.Select(unit => new ActionSheetOption(unit.ToString(), () => generator(unit))).ToList(), string.Format(Resources.Settings_Units, units[0].Type) );
/// <summary> /// </summary> private static void LocationByAirport() => XameteoDialogs.ActionSheet(Airport.Instances.Select( airport => new ActionSheetOption(airport.ToString(), () => SaveLocation(new AirportAdapter(airport))) ).ToList(), Resx.Resources.Prompt_Airport);
/// <summary> /// </summary> public void InsertClicked(object sender, EventArgs ags) { XameteoDialogs.ActionSheet(_options, Resx.Resources.Prompt_Source); }