private void CargarListaHojas() { var listaHojas = new List <ClaseHoja>(); var esTeclaPar = false; foreach (var datosHoja in _listaHojas) { //Sólo lista hojas que contengan la palabra App (es el sufijo que tendrán las hojas para carga de movimientos, las otras son para cálculos y análisis). if (!datosHoja.Title.Text.Contains("App")) { continue; } var linkHoja = datosHoja.Links.FindService(GDataSpreadsheetsNameTable.CellRel, null).HRef.ToString(); var linkHistoricos = datosHoja.Links.FindService(GDataSpreadsheetsNameTable.ListRel, null).HRef.ToString(); var estaSeleccionada = CuentaUsuario.ObtenerLinkHojaConsulta() == linkHoja; // Tiene que ser la actualmente seleccionada var estaUsada = CuentaUsuario.VerificarHojaUsada(linkHoja); // Tiene que haber sido seleccionada alguna vez. var esHistorico = CuentaUsuario.VerificarHojaHistoricosUsada(linkHistoricos); var esPuntosVenta = CuentaUsuario.VerificarHojaPuntosVentaUsada(linkHoja); if (estaSeleccionada || estaUsada) { continue; //Si la hoja está siendo usada para inventario o fue seleccionada en el paso anterior no la exponemos para históricos. } var hoja = new ClaseHoja(linkHistoricos, datosHoja.Title.Text, false, false, esHistorico, esPuntosVenta, esTeclaPar, linkHoja); listaHojas.Add(hoja); esTeclaPar = !esTeclaPar; } var vista = new ListView { RowHeight = 60, VerticalOptions = LayoutOptions.StartAndExpand, HorizontalOptions = LayoutOptions.Fill, ItemsSource = listaHojas, ItemTemplate = new DataTemplate(() => { var nombreHoja = new Label { FontSize = 18, TextColor = Color.FromHex("#1D1D1B"), VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand }; nombreHoja.SetBinding(Label.TextProperty, "Nombre"); var icono = new Image { VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.End, HeightRequest = App.AnchoRetratoDePantalla * .09259 }; icono.SetBinding(Image.SourceProperty, "ArchivoIcono"); icono.SetBinding(IsVisibleProperty, "TieneImagen"); var tecla = new StackLayout { Padding = 7, Orientation = StackOrientation.Horizontal, Children = { nombreHoja, icono } }; tecla.SetBinding(BackgroundColorProperty, "ColorFondo"); var celda = new ViewCell { View = tecla }; celda.Tapped += (sender, args) => { var hoja = (ClaseHoja)((ViewCell)sender).BindingContext; EnviarPaginaPuntosVenta(hoja.Link, hoja.LinkHistoricoCeldas); celda.View.BackgroundColor = Color.Silver; }; return(celda); }) }; ContenedorHojas.Children.Clear(); ContenedorHojas.Children.Add(vista); }
private async void CargarListaHojas() { try { IsBusy = true; await Task.Run(async() => { if (CuentaUsuario.ValidarTokenDeGoogle()) { if (_listaHojas == null || _listaHojas.Count == 0) { _listaHojas = new ServiciosGoogle().ObtenerListaHojas(_linkLibro, _servicio); } } else { //Si se quedó la pantalla abierta un largo tiempo y se venció el token, se cierra y refresca el token var paginaAuntenticacion = new PaginaAuntenticacion(true); Navigation.InsertPageBefore(paginaAuntenticacion, this); await Navigation.PopAsync(); } }); } finally { IsBusy = false; //Remueve el Indicador de Actividad. } var listaHojas = new List <ClaseHoja>(); var esTeclaPar = false; foreach (var datosHoja in _listaHojas) { //Sólo lista hojas que contengan la palabra App (es el sufijo que tendrán las hojas para carga de movimientos, las otras son para cálculos y análisis). if (!datosHoja.Title.Text.Contains("App")) { continue; } var linkHoja = datosHoja.Links.FindService(GDataSpreadsheetsNameTable.CellRel, null).HRef.ToString(); var linkHistoricos = datosHoja.Links.FindService(GDataSpreadsheetsNameTable.ListRel, null).HRef.ToString(); var estaUsada = CuentaUsuario.VerificarHojaUsada(linkHoja); // Tiene que haber sido seleccionada alguna vez. var esHistorico = CuentaUsuario.VerificarHojaHistoricosUsada(linkHistoricos); var esPuntosVenta = CuentaUsuario.VerificarHojaPuntosVentaUsada(linkHoja); //Agrega hoja (tecla) para potencial hoja de stock. //Si ya está siendo usada le agrega ícono. //Si en cambio es hoja de Históricos le pone el ícono correspondiente. //Nunca es hoja en uso de stock y de históricos; es una, otra o ninguna. var hoja = new ClaseHoja(linkHoja, datosHoja.Title.Text, false, estaUsada, esHistorico, esPuntosVenta, esTeclaPar); listaHojas.Add(hoja); esTeclaPar = !esTeclaPar; if (!estaUsada) { continue; } //Si la hoja está siendo usada, agrega hoja (tecla) para desvincular (con ícono). hoja = new ClaseHoja(linkHoja, "Desvincular " + datosHoja.Title.Text, true, false, false, false, esTeclaPar); listaHojas.Add(hoja); esTeclaPar = !esTeclaPar; } var vista = new ListView { RowHeight = 60, VerticalOptions = LayoutOptions.StartAndExpand, HorizontalOptions = LayoutOptions.Fill, ItemsSource = listaHojas, ItemTemplate = new DataTemplate(() => { var nombreHoja = new Label { FontSize = 18, TextColor = Color.FromHex("#1D1D1B"), VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand }; nombreHoja.SetBinding(Label.TextProperty, "Nombre"); var icono = new Image { VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.End, HeightRequest = App.AnchoRetratoDePantalla * .09259 }; icono.SetBinding(Image.SourceProperty, "ArchivoIcono"); icono.SetBinding(IsVisibleProperty, "TieneImagen"); var tecla = new StackLayout { Padding = 7, Orientation = StackOrientation.Horizontal, Children = { nombreHoja, icono } }; tecla.SetBinding(BackgroundColorProperty, "ColorFondo"); var celda = new ViewCell { View = tecla }; celda.Tapped += (sender, args) => { var hoja = (ClaseHoja)((ViewCell)sender).BindingContext; EnviarPagina(hoja.Link, hoja.Nombre, hoja.Desvincular); celda.View.BackgroundColor = Color.Silver; }; return(celda); }) }; ContenedorHojas.Children.Clear(); ContenedorHojas.Children.Add(vista); }