/// <summary> /// Borra la lista actual, y agrega los datos actualizados /// lo que permite que se visualizen en la vista inicial de la aplicación /// los datos refrescados, posible mejora obtener los datos directamente con /// el binding de observables - problematica el tipo de lista creada (ViewModels.LestaInicioView.cs) /// </summary> /// <returns></returns> async Task ExecuteLoadHumansCommand() { if (IsBusy) { return; } IsBusy = true; try { _lista.Clear(); var items = await DataStore.GetItemsAsync(true); foreach (var item in items) { Lista.Add(item); } } catch (System.Exception ex) { Debug.WriteLine(ex); throw new Exception(LiteralesService.GetLiteral("ex_2")); } finally { IsBusy = false; } }
/// <summary> /// Botón que elimina a un elemento. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> async void DeleteItem_Clicked(object sender, EventArgs e) { var answer = await DisplayAlert(LiteralesService.GetLiteral("del_Eliminar"), LiteralesService.GetLiteral("del_seguro"), "del_Si", "del_No"); if (answer) { Singleton.Instance.DeleteElement(ItemHumano.IdEntidad); await Navigation.PopModalAsync(); } }
/// <summary> /// Botón que permite elegir una imagen del movil /// se está utilizando la libreria <see cref="CrossMedia"/> /// </summary> /// <param name="sender"></param> /// <param name="e"></param> async void BtnCamara_Clicked(object sender, EventArgs e) { Button btn = (Button)sender; btn.BackgroundColor = Color.FromHex("#aee"); // select btn.Opacity = 1; btn.BorderWidth = 1; // if you want to take a picture use TakePhotoAsync instead of PickPhotoAsync var storageStatus = await CrossPermissions.Current.CheckPermissionStatusAsync(Permission.Storage); if (storageStatus == PermissionStatus.Granted) { //! added using Plugin.Media; await CrossMedia.Current.Initialize(); //// if you want to take a picture use this // if(!CrossMedia.Current.IsTakePhotoSupported || !CrossMedia.Current.IsCameraAvailable) /// if you want to select from the gallery use this if (!CrossMedia.Current.IsPickPhotoSupported) { await DisplayAlert(LiteralesService.GetLiteral("lbl_not_sup"), LiteralesService.GetLiteral("lbl_device"), LiteralesService.GetLiteral("lbl_ok")); return; } //! added using Plugin.Media.Abstractions; // if you want to take a picture use StoreCameraMediaOptions instead of PickMediaOptions var mediaOptions = new PickMediaOptions() { PhotoSize = PhotoSize.Medium }; var selectedImageFile = await CrossMedia.Current.PickPhotoAsync(mediaOptions); if (selectedImageFile == null) { await DisplayAlert(LiteralesService.GetLiteral("ex_error"), LiteralesService.GetLiteral("lbl_no_image"), LiteralesService.GetLiteral("lbl_ok")); return; } ItemHumano.Photo = selectedImageFile.Path; CambiarImagen(selectedImageFile.Path); } else { await DisplayAlert(LiteralesService.GetLiteral("ex_error"), LiteralesService.GetLiteral("ex_2"), LiteralesService.GetLiteral("ex_salida")); } }
/// <summary> /// Oculta el botón en el caso de encontrar una imagen y establece la imagen seleccionada /// usado por la función <see cref="BtnCamara_Clicked"/> /// </summary> /// <param name="path"></param> private void CambiarImagen(string path) { try { ImageSource auximg = ImageSource.FromFile(path); if (auximg != null) { _btnCamara.IsVisible = false; _imgPhoto.Source = auximg; _imgPhoto.IsVisible = true; } } catch (Exception) { DisplayAlert(LiteralesService.GetLiteral("ex_error"), LiteralesService.GetLiteral("lbl_no_image"), LiteralesService.GetLiteral("lbl_ok")); } }
private async void VerBasesLegales(object sender, EventArgs e) { string _basesLegales = LiteralesService.GetLiteral("lbl_bases"); string _acepto = LiteralesService.GetLiteral("lbl_acepto"); string _noacepto = LiteralesService.GetLiteral("lbl_no_acepto"); string _advertencia = LiteralesService.GetLiteral("lbl_adv"); string _leer = LiteralesService.GetLiteral("lbl_leer"); var action = await DisplayActionSheet(_basesLegales, _acepto, _noacepto, _advertencia, _leer); if (action.Equals(_noacepto)) { Singleton.BasesLegales = false; } else if (action.Equals(_leer) || action.Equals(_advertencia)) { await Navigation.PushModalAsync(new NavigationPage(new ScrollTextView())); } }
/// <summary> /// Sobrecarga de la función que permite a Android volver a la pantalla anterior. /// La particularidad es que cuando volvemos hacia atrás guardamos los datos que se han rellenado /// en el caso de haber realizado algún cambio. /// </summary> /// <returns></returns> protected override bool OnBackButtonPressed() { try { if (CETNDomainService.CambioPicker || isBasicFill() || ItemHumano.Sexo != _valorInicialSexo || !String.IsNullOrEmpty(ItemHumano.Photo)) { if (_esNuevo) { ItemHumano = _esMujer ? Singleton.Instance.NewMujerAsync(ItemHumano) : Singleton.Instance.NewHombreAsync(ItemHumano); } else { Singleton.Instance.Update(ItemHumano); if (Singleton.Instance.IsBusy) { DisplayAlert(LiteralesService.GetLiteral("ex_error"), LiteralesService.GetLiteral("ex_1"), LiteralesService.GetLiteral("ex_salida")); return(false); } } } } catch (UnauthorizedAccessException un) { DisplayAlert(LiteralesService.GetLiteral("ex_error"), un.InnerException.Message, LiteralesService.GetLiteral("ex_salida")); return(false); } catch (Exception e) { DisplayAlert(LiteralesService.GetLiteral("ex_error"), e.InnerException.Message, LiteralesService.GetLiteral("ex_salida")); return(false); } return(base.OnBackButtonPressed()); }