Esempio n. 1
0
        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);
        }
        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 || esHistorico)
                {
                    continue;
                }
                var hoja = new ClaseHoja(linkHoja, datosHoja.Title.Text, false, false, false, esPuntosVenta, 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;
                        EnviarPaginaSeleccionColumnas(hoja.Link);
                        celda.View.BackgroundColor = Color.Silver;
                    };

                    return(celda);
                })
            };

            ContenedorHojas.Children.Clear();
            ContenedorHojas.Children.Add(vista);
        }