예제 #1
0
        public void Show(OverlayContent overlayContent)
        {
            if (OverlayContent != null)
            {
                throw new InvalidOperationException($"Show {overlayContent.ComponentTypeName} while {OverlayContent.ComponentTypeName} not yet closed.");
            }

            OverlayContent = overlayContent;
            IsVisible      = true;
            StateHasChanged();
        }
예제 #2
0
        public void AddOverlay(VisualElement ve, OverlayContent content = OverlayContent.All)
        {
            OverlayData overlayData = null;

            if (!m_OverlayData.TryGetValue(ve, out overlayData))
            {
                overlayData       = new OverlayData(ve, kDefaultHighlightAlpha);
                m_OverlayData[ve] = overlayData;
            }

            overlayData.content = content;
        }
예제 #3
0
        public void Close(OverlayContent overlayContent)
        {
            // Check for already closed:
            if (overlayContent != OverlayContent)
            {
                return;
            }

            OverlayContent = null;
            IsVisible      = false;
            StateHasChanged();
        }
예제 #4
0
        protected OverlayContentView(bool isChildOfNavigationPage)
        {
            _backgroundOverlayBoxView = new BoxView
            {
                BackgroundColor = ColorConstants.WhiteWith75Opacity
            };
            _backgroundOverlayBoxView.Opacity = 0;

            _overlayFrame = new Frame
            {
                HasShadow       = true,
                BackgroundColor = Color.White
            };
            _overlayFrame.Scale = 0;

            _relativeLayout = new RelativeLayout();

            _relativeLayout.Children.Add(_backgroundOverlayBoxView,
                                         Constraint.Constant(-10),
                                         Constraint.Constant(0),
                                         Constraint.RelativeToParent(parent => parent.Width + 20),
                                         Constraint.RelativeToParent(parent => parent.Height));

            _relativeLayout.Children.Add(_overlayFrame,
                                         Constraint.RelativeToParent(parent =>
            {
                var preferredX = parent.Width / 2 - getOverlayContentWidth(parent) / 2 - 25;
                return(preferredX < 10 ? 10 : preferredX);
            }),
                                         Constraint.RelativeToParent(parent =>
            {
                if (isChildOfNavigationPage)
                {
                    return(parent.Height / 4 - getOverlayContentHeight(parent) / 2);
                }

                return(parent.Height / 2 - getOverlayContentHeight(parent) / 2 - 10);
            }),
                                         Constraint.RelativeToParent(parent =>
            {
                var preferedWidth = getOverlayContentWidth(parent) + 50;
                return(preferedWidth > parent.Width ? parent.Width - 20 : preferedWidth);
            }),
                                         Constraint.RelativeToParent(parent => getOverlayContentHeight(parent) + 40));

            double getOverlayContentHeight(RelativeLayout p) => OverlayContent?.Measure(p.Width, p.Height).Request.Height ?? default;
            double getOverlayContentWidth(RelativeLayout p) => OverlayContent?.Measure(p.Width, p.Height).Request.Width ?? default;
        }
        protected OverlayContentView(bool isChildOfNavigationPage)
        {
            _backgroundOverlayBoxView = new BoxView
            {
                BackgroundColor = ColorConstants.WhiteWith75Opacity
            };
            _backgroundOverlayBoxView.Opacity = 0;

            _overlayFrame = new Frame
            {
                HasShadow       = true,
                BackgroundColor = Color.White
            };
            _overlayFrame.Scale = 0;

            _relativeLayout = new RelativeLayout();
            Func <RelativeLayout, double> getOverlayContentHeight = (p) => OverlayContent.Measure(_relativeLayout.Width, _relativeLayout.Height).Request.Height;
            Func <RelativeLayout, double> getOverlayContentWidth  = (p) => OverlayContent.Measure(_relativeLayout.Width, _relativeLayout.Height).Request.Width;

            _relativeLayout.Children.Add(_backgroundOverlayBoxView,
                                         Constraint.Constant(-10),
                                         Constraint.Constant(0),
                                         Constraint.RelativeToParent(parent => parent.Width + 20),
                                         Constraint.RelativeToParent(parent => parent.Height)
                                         );
            _relativeLayout.Children.Add(_overlayFrame,
                                         Constraint.RelativeToParent(parent => parent.Width / 2 - getOverlayContentWidth(parent) / 2 - 25),
                                         Constraint.RelativeToParent(parent =>
            {
                switch (isChildOfNavigationPage)
                {
                case true:
                    return(parent.Height / 4 - getOverlayContentHeight(parent) / 2);

                default:
                    return(parent.Height / 2 - getOverlayContentHeight(parent) / 2 - 10);
                }
            }),

                                         Constraint.RelativeToParent(parent => getOverlayContentWidth(parent) + 50),
                                         Constraint.RelativeToParent(parent => getOverlayContentHeight(parent) + 40)
                                         );
        }
예제 #6
0
 public void Close()
 => OverlayContent?.Close();