private void AddVisualItem(FrameworkElement visual, DayScheduleItemsArranger.BaseScheduleItem item)
        {
            FrameworkElement root;

            if (item.NumOfColumns > 1)
            {
                Grid grid = new Grid()
                {
                    Margin = new Windows.UI.Xaml.Thickness(0, 0, -6, 0)
                };
                for (int i = 0; i < item.NumOfColumns; i++)
                {
                    grid.ColumnDefinitions.Add(new ColumnDefinition()
                    {
                        Width = new GridLength(1, GridUnitType.Star)
                    });
                }
                visual.Margin = new Thickness(0, 0, 6, 0);
                Grid.SetColumn(visual, item.Column);
                grid.Children.Add(visual);
                root = grid;
            }
            else
            {
                root = visual;
            }

            root.Margin = new Thickness(item.LeftOffset, item.TopOffset, 0, 0);
            Grid.SetColumn(root, 2);
            Grid.SetRowSpan(root, int.MaxValue);

            _schedulesGrid.Children.Add(root);
        }
Пример #2
0
        private void AddVisualItem(UIView visual, DayScheduleItemsArranger.BaseScheduleItem item, DayOfWeek day)
        {
            var col = _scheduleColumns[GetColumn(day)];

            AddVisualItem(visual, item, col, COL_PADDING);

            PinTopRelativeToStart(visual, item.TopOffset + INITIAL_MARGIN);
        }
Пример #3
0
        private void AddVisualItem(View visual, DayScheduleItemsArranger.BaseScheduleItem item)
        {
            View root;

            if (item.NumOfColumns > 1)
            {
                var grid = new LinearLayout(Context)
                {
                    LayoutParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.WrapContent),
                    Orientation      = Orientation.Horizontal
                };

                for (int i = 0; i < item.NumOfColumns; i++)
                {
                    View colView;

                    if (i == item.Column)
                    {
                        colView = visual;
                    }
                    else
                    {
                        colView = new View(Context);
                    }

                    colView.LayoutParameters = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MatchParent)
                    {
                        Weight = 1
                    };
                    grid.AddView(colView);
                }

                root = grid;
            }
            else
            {
                root = visual;
            }

            root.LayoutParameters = new RelativeLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.WrapContent)
            {
                LeftMargin = ThemeHelper.AsPx(Context, item.LeftOffset) + TimeIndicatorSize + GapSize,
                TopMargin  = ThemeHelper.AsPx(Context, item.TopOffset)
            };

            if (item is DayScheduleItemsArranger.ScheduleItem)
            {
                root.LayoutParameters.Height = ThemeHelper.AsPx(Context, item.Height);
            }

            _schedulesContent.AddView(root);
        }
Пример #4
0
        private void AddVisualItem(View visual, DayScheduleItemsArranger.BaseScheduleItem item, DayOfWeek day)
        {
            View root;

            if (item.NumOfColumns > 1)
            {
                var grid = new LinearLayout(Context)
                {
                    LayoutParameters = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.WrapContent),
                    Orientation      = Orientation.Horizontal
                };

                for (int i = 0; i < item.NumOfColumns; i++)
                {
                    View colView;

                    if (i == item.Column)
                    {
                        colView = visual;
                    }
                    else
                    {
                        colView = new View(Context);
                    }

                    colView.LayoutParameters = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MatchParent)
                    {
                        Weight = 1
                    };
                    grid.AddView(colView);
                }

                root = grid;
            }
            else
            {
                root = visual;
            }

            double leftMargin = item.LeftOffset;

            leftMargin += 12;


            root.LayoutParameters = new FrameLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.WrapContent)
            {
                LeftMargin   = ThemeHelper.AsPx(Context, leftMargin),
                TopMargin    = ThemeHelper.AsPx(Context, item.TopOffset + INITIAL_MARGIN + _currAllDayItemsViewsHeight),
                RightMargin  = ThemeHelper.AsPx(Context, 12),
                BottomMargin = ThemeHelper.AsPx(Context, 24)
            };

            if (item is DayScheduleItemsArranger.ScheduleItem)
            {
                root.LayoutParameters.Height = ThemeHelper.AsPx(Context, item.Height);
            }

            ViewGroup viewGroup = _scheduleHost.GetChildAt(getColumn(day)) as ViewGroup;

            viewGroup.AddView(root);
        }
Пример #5
0
        private void AddVisualItem(UIView visual, DayScheduleItemsArranger.BaseScheduleItem item)
        {
            UIScheduleView.AddVisualItem(visual, item, _scheduleItemsColumn, colPadding: 0);

            visual.PinToTop(_scheduleItemsColumn, (int)item.TopOffset);
        }
Пример #6
0
        public static void AddVisualItem(UIView visual, DayScheduleItemsArranger.BaseScheduleItem item, UIView addTo, int colPadding)
        {
            visual.TranslatesAutoresizingMaskIntoConstraints = false;

            addTo.Add(visual);

            int leftStart = (int)item.LeftOffset + colPadding;

            if (item.NumOfColumns > 1)
            {
                const float spacingBetweenConflicting = 4;
                float       spacingOffset             = spacingBetweenConflicting / item.NumOfColumns;

                try
                {
                    if (item.Column == 0)
                    {
                        visual.PinToLeft(addTo, left: leftStart);
                    }
                    else
                    {
                        addTo.AddConstraint(NSLayoutConstraint.Create(
                                                visual,
                                                NSLayoutAttribute.Leading,
                                                NSLayoutRelation.Equal,
                                                addTo,
                                                NSLayoutAttribute.Trailing, // Trailing == width of column
                                                multiplier: (float)item.Column / item.NumOfColumns,
                                                constant: spacingBetweenConflicting * (item.Column - 1) + spacingOffset));
                    }

                    if (item.Column == item.NumOfColumns - 1)
                    {
                        visual.PinToRight(addTo, right: colPadding);
                    }
                    else
                    {
                        addTo.AddConstraint(NSLayoutConstraint.Create(
                                                visual,
                                                NSLayoutAttribute.Trailing,
                                                NSLayoutRelation.Equal,
                                                addTo,
                                                NSLayoutAttribute.Trailing,
                                                multiplier: (float)(item.Column + 1) / item.NumOfColumns,
                                                constant: spacingBetweenConflicting * -1 * (item.NumOfColumns - item.Column - 2) - spacingOffset));
                    }

                    // Note that this results in middle items being wider than left/right, but the case where there's three items is a niche case anyways
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex);
                }
            }
            else
            {
                visual.StretchWidth(addTo, left: leftStart, right: colPadding);
            }

            if (item is DayScheduleItemsArranger.ScheduleItem)
            {
                visual.SetHeight((int)item.Height);
            }
        }