public static View RenderSelectAction(this AdaptiveRenderContext context, AdaptiveAction selectAction, View uiElement) { if (!context.Config.SupportsInteractivity) { return(uiElement); } ContentButton button = (ContentButton)context.Render(selectAction); button.HorizontalOptions = LayoutOptions.FillAndExpand; button.VerticalOptions = LayoutOptions.FillAndExpand; button.BackgroundColor = Color.Transparent; button.Margin = 0; button.Content = uiElement; button.Style = context.GetStyle("Adaptive.Action.Tap"); return(button); }
public static void AddContainerElements(Grid uiContainer, IList <AdaptiveElement> elements, AdaptiveRenderContext context) { foreach (AdaptiveElement element in elements) { View view = context.Render(element); if (view == null) { continue; } if (element.Separator && uiContainer.Children.Count > 0) { AddSeperator(context, element, uiContainer); } else if (uiContainer.Children.Count > 0) { double spacing = context.Config.GetSpacing(element.Spacing); if (element is AdaptiveTextBlock) { spacing = spacing + (spacing / 2); } else { spacing = spacing / 2; } view.Margin = new Thickness(0, spacing, 0, 0); } uiContainer.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); Grid.SetRow(view, uiContainer.RowDefinitions.Count - 1); uiContainer.Children.Add(view); } }
public static void AddActions(Grid uiContainer, IList <AdaptiveAction> actions, AdaptiveRenderContext context) { if (!context.Config.SupportsInteractivity) { return; } ActionsConfig actionsConfig = context.Config.Actions; int maxActions = actionsConfig.MaxActions; List <AdaptiveAction> list = actions.Take <AdaptiveAction>(maxActions).ToList <AdaptiveAction>(); if (!list.Any <AdaptiveAction>()) { return; } var flexLayout = new FlexLayout() { JustifyContent = FlexJustify.SpaceEvenly }; if (actionsConfig.ActionsOrientation != ActionsOrientation.Horizontal) { flexLayout.Direction = FlexDirection.Row; } else { flexLayout.Direction = FlexDirection.Column; } flexLayout.AlignItems = FlexAlignItems.Center; flexLayout.Style = context.GetStyle("Adaptive.Actions"); flexLayout.Margin = new Thickness(0, (double)((actionsConfig.ActionsOrientation == ActionsOrientation.Horizontal ? context.Config.GetSpacing(actionsConfig.Spacing) : context.Config.GetSpacing(actionsConfig.Spacing) - actionsConfig.ButtonSpacing)), 0, 0); uiContainer.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); Grid.SetRow(flexLayout, uiContainer.RowDefinitions.Count - 1); uiContainer.Children.Add(flexLayout); bool actionMode = actionsConfig.ShowCard.ActionMode == ShowCardActionMode.Inline; if (actionMode) { if (list.Any <AdaptiveAction>((AdaptiveAction a) => a is AdaptiveShowCardAction)) { uiContainer.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); } } int num = 0; List <View> views = new List <View>(); foreach (AdaptiveAction adaptiveAction in list) { var button = (Button)context.Render(adaptiveAction); if (actionsConfig.ActionsOrientation != ActionsOrientation.Horizontal) { button.Margin = new Thickness(0, (double)actionsConfig.ButtonSpacing, 0, 0); } else if (flexLayout.Children.Count > 0) { button.Margin = new Thickness((double)actionsConfig.ButtonSpacing, 0, 0, 0); } if (actionsConfig.ActionsOrientation == ActionsOrientation.Horizontal) { int num1 = num; num = num1 + 1; Grid.SetColumn(button, num1); } flexLayout.Children.Add(button); AdaptiveShowCardAction adaptiveShowCardAction = adaptiveAction as AdaptiveShowCardAction; AdaptiveShowCardAction adaptiveShowCardAction1 = adaptiveShowCardAction; if (adaptiveShowCardAction == null || !actionMode) { continue; } var grid = new Grid() { Style = context.GetStyle("Adaptive.Actions.ShowCard"), BindingContext = adaptiveShowCardAction1, Margin = new Thickness(0, (double)actionsConfig.ShowCard.InlineTopMargin, 0, 0), IsVisible = false }; var showCardGrid = (Grid)context.Render(adaptiveShowCardAction1.Card); showCardGrid.BackgroundColor = Color.Transparent; showCardGrid.BindingContext = adaptiveShowCardAction1; showCardGrid.Children[0].Margin = new Thickness(0); grid.Children.Add(showCardGrid); views.Add(grid); Grid.SetRow(grid, uiContainer.RowDefinitions.Count - 1); uiContainer.Children.Add(grid); button.Clicked += new EventHandler((object sender, EventArgs e) => { foreach (var actionBarCard in views) { actionBarCard.IsVisible = false; } if (!grid.IsVisible) { grid.IsVisible = true; } }); } }