Exemplo n.º 1
0
 /// <summary>
 /// Adds a pane to the visited list, and sets it to the current expanded pane
 /// </summary>
 public void VisitPane(AccordionPane pane)
 {
     if (pane != null)
     {
         ExpandedPane = pane;
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// Replace a visited pane with another, deleting the previous history.
        /// </summary>
        public void VisitPane(AccordionPane oldPane, AccordionPane newPane)
        {
            if (oldPane != newPane)
            {
                int index;

                if ((index = visitedPanes.IndexOf(oldPane)) >= 0)
                {
                    visitedPanes[index] = newPane;

                    visitedPanes.RemoveAll((pane) => index < visitedPanes.IndexOf(pane));
                }

                ExpandedPane = newPane;
            }
        }
Exemplo n.º 3
0
            public AccordionHeader(AccordionPane pane)
            {
                HeightRequest     = 50;
                HorizontalOptions = LayoutOptions.FillAndExpand;

                // Setup the AccordionHeader layout

                Content = (titleLayout = new RelativeLayout()
                {
                    HorizontalOptions = LayoutOptions.FillAndExpand,
                    VerticalOptions = LayoutOptions.FillAndExpand
                });

                titleLayout.Children.Add((imageHolder = new StackLayout()
                {
                    VerticalOptions = LayoutOptions.FillAndExpand,
                    WidthRequest = 60
                }), heightConstraint: Constraint.RelativeToParent((parent) => { return(parent.Height); }));

                StackLayout imageContainer;

                imageHolder.Children.Add(imageContainer = new StackLayout()
                {
                    HorizontalOptions = LayoutOptions.FillAndExpand,
                    VerticalOptions   = LayoutOptions.FillAndExpand,
                    Padding           = new Thickness(20, 0, 0, 0)
                });

                imageContainer.Children.Add((iconImage = new Image()
                {
                    HeightRequest = 32,
                    HorizontalOptions = LayoutOptions.Center,
                    VerticalOptions = LayoutOptions.CenterAndExpand
                }));
                titleLayout.Children.Add((titleLabel = new Label()
                {
                    HorizontalOptions = LayoutOptions.Center,
                    VerticalOptions = LayoutOptions.Center,
                    HorizontalTextAlignment = TextAlignment.Center,
                    VerticalTextAlignment = TextAlignment.Center,
                    FontSize = 20f,
                    TextColor = Color.White,
                    FontAttributes = FontAttributes.Bold
                }), widthConstraint: Constraint.RelativeToParent((parent) => { return(parent.Width); }),
                                         heightConstraint: Constraint.RelativeToParent((parent) => { return(parent.Height); }));
            }
Exemplo n.º 4
0
        /// <summary>
        /// Called when ExpandedPane property is changed
        /// </summary>
        private void OnExpandedPaneChanged(AccordionPane oldExpanded)
        {
            bool expandedFound = false;

            if (ExpandedPane != null)
            {
                AccordionPane newExpanded = ExpandedPane;

                if (!visitedPanes.Contains(newExpanded))
                {
                    visitedPanes.Add(newExpanded);
                }

                nextPanes.Children.Clear();
                prevPanes.Children.Clear();


                if (oldExpanded != null)
                {
                    oldExpanded.IsVisible = false;
                    oldExpanded.OnPaneCollapsed();                     // invoke method when the pane collapses
                }

                newExpanded.IsVisible = true;
                newExpanded.OnPaneExpanded();

                foreach (AccordionPane pane in visitedPanes)
                {
                    if (pane == newExpanded)
                    {
                        expandedFound = true;
                    }
                    else
                    {
                        if (expandedFound)
                        {
                            nextPanes.Children.Add(pane.Header);
                        }
                        else
                        {
                            prevPanes.Children.Add(pane.Header);
                        }
                    }
                }
            }
        }
Exemplo n.º 5
0
 /// <summary>
 /// Checks if a pane is visited
 /// </summary>
 public bool IsPaneVisited(AccordionPane pane)
 {
     return(visitedPanes.Contains(pane));
 }