Size GetSwipeItemSize(ISwipeItem swipeItem)
        {
            var items = GetSwipeItemsByDirection();

            if (IsHorizontalSwipe())
            {
                if (swipeItem is SwipeItem)
                {
                    return(new Size(items.Mode == SwipeMode.Execute ? _contentView.Frame.Width / items.Count : SwipeItemWidth, _contentView.Frame.Height));
                }

                if (swipeItem is SwipeItemView horizontalSwipeItemView)
                {
                    var swipeItemViewSizeRequest = horizontalSwipeItemView.Measure(double.PositiveInfinity, double.PositiveInfinity, MeasureFlags.IncludeMargins);
                    return(new Size(swipeItemViewSizeRequest.Request.Width > 0 ? (float)swipeItemViewSizeRequest.Request.Width : SwipeItemWidth, _contentView.Frame.Height));
                }
            }
            else
            {
                if (swipeItem is SwipeItem)
                {
                    return(new Size(_contentView.Frame.Width / items.Count, GetSwipeItemHeight()));
                }

                if (swipeItem is SwipeItemView horizontalSwipeItemView)
                {
                    var swipeItemViewSizeRequest = horizontalSwipeItemView.Measure(double.PositiveInfinity, double.PositiveInfinity, MeasureFlags.IncludeMargins);
                    return(new Size(_contentView.Frame.Width / items.Count, swipeItemViewSizeRequest.Request.Height > 0 ? (float)swipeItemViewSizeRequest.Request.Height : _contentView.Frame.Height));
                }
            }

            return(Size.Zero);
        }
Example #2
0
        void UpdateIsVisibleSwipeItem(ISwipeItem item)
        {
            if (!_isOpen)
            {
                return;
            }

            _swipeItems.TryGetValue(item, out object view);

            if (view != null && view is AView nativeView)
            {
                bool hidden = false;

                if (item is SwipeItem swipeItem)
                {
                    hidden = !swipeItem.IsVisible;
                }

                if (item is SwipeItemView swipeItemView)
                {
                    hidden = !swipeItemView.IsVisible;
                }

                _swipeThreshold       = 0;
                nativeView.Visibility = hidden ? ViewStates.Gone : ViewStates.Visible;
                LayoutSwipeItems(GetNativeSwipeItems());
                SwipeToThreshold(false);
            }
        }
Example #3
0
        void OnSwipeItemInvoked(WSwipeItem sender, Microsoft.UI.Xaml.Controls.SwipeItemInvokedEventArgs args)
        {
            var        windowsSwipeItem = sender;
            ISwipeItem formsSwipeItem   = GetFormsSwipeItem(windowsSwipeItem);

            formsSwipeItem?.OnInvoked();
        }
        void ExecuteSwipeItem(ISwipeItem swipeItem)
        {
            if (swipeItem == null)
            {
                return;
            }

            swipeItem.OnInvoked();
        }
Example #5
0
        bool GetIsVisible(ISwipeItem swipeItem)
        {
            if (swipeItem is IView view)
            {
                return(view.Visibility == Maui.Visibility.Visible);
            }
            else if (swipeItem is ISwipeItemMenuItem menuItem)
            {
                return(menuItem.Visibility == Maui.Visibility.Visible);
            }

            return(true);
        }
Example #6
0
        internal void UpdateIsVisibleSwipeItem(ISwipeItem item)
        {
            if (!_isOpen)
            {
                return;
            }

            if (item?.Handler?.PlatformView is UIView platformView)
            {
                _swipeThreshold = 0;
                LayoutSwipeItems(GetNativeSwipeItems());
                SwipeToThreshold(false);
            }
        }
Example #7
0
        internal void UpdateIsVisibleSwipeItem(ISwipeItem item)
        {
            if (!_isOpen)
            {
                return;
            }

            _swipeItems.TryGetValue(item, out object?view);

            if (view != null && view is AView platformView)
            {
                _swipeThreshold = 0;
                LayoutSwipeItems(GetNativeSwipeItems());
                SwipeToThreshold(false);
            }
        }
Example #8
0
        void ExecuteSwipeItem(ISwipeItem item)
        {
            if (item == null)
            {
                return;
            }

            bool isEnabled = true;

            if (item is ISwipeItemMenuItem swipeItem)
            {
                isEnabled = swipeItem.IsEnabled;
            }

            if (item is ISwipeItemView swipeItemView)
            {
                isEnabled = swipeItemView.IsEnabled;
            }

            if (isEnabled)
            {
                item.OnInvoked();
            }
        }
        Size GetSwipeItemSize(ISwipeItem swipeItem)
        {
            bool isHorizontal  = IsHorizontalSwipe();
            var  items         = GetSwipeItemsByDirection();
            var  contentHeight = _context.FromPixels(_contentView.Height);
            var  contentWidth  = _context.FromPixels(_contentView.Width);

            if (isHorizontal)
            {
                if (swipeItem is SwipeItem)
                {
                    return(new Size(items.Mode == SwipeMode.Execute ? contentWidth / items.Count : SwipeItemWidth, contentHeight));
                }

                if (swipeItem is SwipeItemView horizontalSwipeItemView)
                {
                    var swipeItemViewSizeRequest = horizontalSwipeItemView.Measure(double.PositiveInfinity, double.PositiveInfinity, MeasureFlags.IncludeMargins);
                    return(new Size(swipeItemViewSizeRequest.Request.Width > 0 ? (float)swipeItemViewSizeRequest.Request.Width : SwipeItemWidth, contentHeight));
                }
            }
            else
            {
                if (swipeItem is SwipeItem)
                {
                    return(new Size(contentWidth / items.Count, GetSwipeItemHeight()));
                }

                if (swipeItem is SwipeItemView horizontalSwipeItemView)
                {
                    var swipeItemViewSizeRequest = horizontalSwipeItemView.Measure(double.PositiveInfinity, double.PositiveInfinity, MeasureFlags.IncludeMargins);
                    return(new Size(contentWidth / items.Count, swipeItemViewSizeRequest.Request.Height > 0 ? (float)swipeItemViewSizeRequest.Request.Height : contentHeight));
                }
            }

            return(Size.Zero);
        }
Example #10
0
        internal static Size GetSwipeItemSize(this ISwipeView swipeView, ISwipeItem swipeItem, UIView contentView, SwipeDirection?swipeDirection)
        {
            var    items     = GetSwipeItemsByDirection(swipeView, swipeDirection);
            double threshold = swipeView.Threshold;

            if (items == null)
            {
                return(Size.Zero);
            }

            var contentHeight = contentView.Frame.Height;
            var contentWidth  = contentView.Frame.Width;

            if (swipeDirection.IsHorizontalSwipe())
            {
                if (swipeItem is ISwipeItemMenuItem)
                {
                    return(new Size(items.Mode == SwipeMode.Execute ? (threshold > 0 ? threshold : contentWidth) / items.Count : (threshold < SwipeItemWidth ? SwipeItemWidth : threshold), contentHeight));
                }

                if (swipeItem is ISwipeItemView horizontalSwipeItemView)
                {
                    var swipeItemViewSizeRequest = horizontalSwipeItemView.Measure(double.PositiveInfinity, double.PositiveInfinity);

                    double swipeItemWidth;

                    if (swipeItemViewSizeRequest.Width > 0)
                    {
                        swipeItemWidth = threshold > swipeItemViewSizeRequest.Width ? threshold : swipeItemViewSizeRequest.Width;
                    }
                    else
                    {
                        swipeItemWidth = threshold > SwipeItemWidth ? threshold : SwipeItemWidth;
                    }

                    return(new Size(swipeItemWidth, contentHeight));
                }
            }
            else
            {
                if (swipeItem is ISwipeItemMenuItem)
                {
                    var swipeItemHeight = GetSwipeItemHeight(swipeView, swipeDirection, contentView);
                    return(new Size(contentWidth / items.Count, (threshold > 0 && threshold < swipeItemHeight) ? threshold : swipeItemHeight));
                }

                if (swipeItem is ISwipeItemView verticalSwipeItemView)
                {
                    var swipeItemViewSizeRequest = verticalSwipeItemView.Measure(double.PositiveInfinity, double.PositiveInfinity);

                    double swipeItemHeight;

                    if (swipeItemViewSizeRequest.Width > 0)
                    {
                        swipeItemHeight = threshold > swipeItemViewSizeRequest.Height ? threshold : (float)swipeItemViewSizeRequest.Height;
                    }
                    else
                    {
                        swipeItemHeight = threshold > contentHeight ? threshold : contentHeight;
                    }

                    return(new Size(contentWidth / items.Count, swipeItemHeight));
                }
            }

            return(Size.Zero);
        }
Example #11
0
        Size GetSwipeItemSize(ISwipeItem swipeItem)
        {
            if (_contentView == null || Element == null)
            {
                return(Size.Zero);
            }

            bool isHorizontal = IsHorizontalSwipe();
            var  items        = GetSwipeItemsByDirection();

            if (items == null)
            {
                return(Size.Zero);
            }

            double threshold     = Element.Threshold;
            double contentHeight = _context.FromPixels(_contentView.Height);
            double contentWidth  = _context.FromPixels(_contentView.Width);

            if (isHorizontal)
            {
                if (swipeItem is ISwipeItem)
                {
                    return(new Size(items.Mode == SwipeMode.Execute ? (threshold > 0 ? threshold : contentWidth) / items.Count : (threshold < SwipeViewExtensions.SwipeItemWidth ? SwipeViewExtensions.SwipeItemWidth : threshold), contentHeight));
                }

                if (swipeItem is ISwipeItemView horizontalSwipeItemView)
                {
                    var swipeItemViewSizeRequest = horizontalSwipeItemView.Measure(double.PositiveInfinity, double.PositiveInfinity);

                    double swipeItemWidth;

                    if (swipeItemViewSizeRequest.Width > 0)
                    {
                        swipeItemWidth = threshold > swipeItemViewSizeRequest.Width ? threshold : (float)swipeItemViewSizeRequest.Width;
                    }
                    else
                    {
                        swipeItemWidth = threshold > SwipeViewExtensions.SwipeItemWidth ? threshold : SwipeViewExtensions.SwipeItemWidth;
                    }

                    return(new Size(swipeItemWidth, contentHeight));
                }
            }
            else
            {
                if (swipeItem is ISwipeItem)
                {
                    var swipeItemHeight = GetSwipeItemHeight();
                    return(new Size(contentWidth / items.Count, (threshold > 0 && threshold < swipeItemHeight) ? threshold : swipeItemHeight));
                }

                if (swipeItem is ISwipeItemView verticalSwipeItemView)
                {
                    var swipeItemViewSizeRequest = verticalSwipeItemView.Measure(double.PositiveInfinity, double.PositiveInfinity);

                    double swipeItemHeight;

                    if (swipeItemViewSizeRequest.Width > 0)
                    {
                        swipeItemHeight = threshold > swipeItemViewSizeRequest.Height ? threshold : (float)swipeItemViewSizeRequest.Height;
                    }
                    else
                    {
                        swipeItemHeight = threshold > contentHeight ? threshold : contentHeight;
                    }

                    return(new Size(contentWidth / items.Count, swipeItemHeight));
                }
            }

            return(Size.Zero);
        }