Example #1
0
        internal void UpdateStateButtonState(RadialSegment segment)
        {
            if (this.currentHoveredItem != null && this.currentHoveredItem == segment)
            {
                return;
            }

            if (this.currentHoveredItem != null)
            {
                var visual = this.currentHoveredItem.Visual as DecorationItemButton;

                if (visual != null)
                {
                    visual.IsPointerOver = false;
                }
            }

            if (segment != null)
            {
                this.currentHoveredItem = this.owner.model.GetDecorationSegment(segment.TargetItem);

                var visual = this.currentHoveredItem.Visual as DecorationItemButton;

                if (visual != null)
                {
                    visual.IsPointerOver = true;
                }
            }
        }
        internal void ShowToolTip(RadialSegment itemControlSegment)
        {
            var menuItemControl = itemControlSegment.Visual as RadialMenuItemControl;

            if (this.Owner.ShowToolTip && !this.Owner.tooltip.IsOpen)
            {
                if (this.IsToolTipContentApplied(menuItemControl.Header, itemControlSegment.TargetItem.ToolTipContent))
                {
                    this.Owner.tooltip.IsOpen = true;
                }

                this.delayTimer.Stop();
            }
        }
Example #3
0
        private static PathGeometry GetNavigationButtonArc(RadialSegment segmentModel)
        {
            var layoutSlot = segmentModel.LayoutSlot;

            var        centerPoint = new RadPoint(layoutSlot.OuterRadius, layoutSlot.OuterRadius);
            PathFigure figure      = new PathFigure();

            figure.IsClosed = true;
            figure.IsFilled = true;

            RadPoint startPoint = GetArcPoint(layoutSlot.StartAngle, centerPoint, layoutSlot.OuterRadius);

            figure.StartPoint = new Point(startPoint.X, startPoint.Y);

            ArcSegment firstArc = new ArcSegment();

            firstArc.Size           = new Size(layoutSlot.OuterRadius, layoutSlot.OuterRadius);
            firstArc.IsLargeArc     = layoutSlot.SweepAngle > 180;
            firstArc.SweepDirection = SweepDirection.Counterclockwise;
            var firstArcPoint = GetArcPoint(layoutSlot.StartAngle + layoutSlot.SweepAngle, centerPoint, layoutSlot.OuterRadius);

            firstArc.Point = new Point(firstArcPoint.X, firstArcPoint.Y);
            figure.Segments.Add(firstArc);

            LineSegment firstLine      = new LineSegment();
            var         firstLinePoint = GetArcPoint(layoutSlot.StartAngle + layoutSlot.SweepAngle, centerPoint, layoutSlot.InnerRadius);

            firstLine.Point = new Point(firstLinePoint.X, firstLinePoint.Y);
            figure.Segments.Add(firstLine);

            ArcSegment secondArc = new ArcSegment();

            secondArc.Size           = new Size(layoutSlot.InnerRadius, layoutSlot.InnerRadius);
            secondArc.IsLargeArc     = layoutSlot.SweepAngle > 180;
            secondArc.SweepDirection = SweepDirection.Clockwise;
            var secondArcPoint = GetArcPoint(layoutSlot.StartAngle, centerPoint, layoutSlot.InnerRadius);

            secondArc.Point = new Point(secondArcPoint.X, secondArcPoint.Y);
            figure.Segments.Add(secondArc);

            PathGeometry geometry = new PathGeometry();

            geometry.Figures.Add(figure);

            return(geometry);
        }
Example #4
0
        internal void UpdateMenuItemControlState(RadialSegment segment)
        {
            if (this.lastMenuItemControl != null && this.lastMenuItemControl == segment)
            {
                return;
            }

            if (this.lastMenuItemControl != null)
            {
                var lastMenuItem = this.lastMenuItemControl.Visual as RadialMenuItemControl;

                if (lastMenuItem != null)
                {
                    lastMenuItem.IsPointerOver = false;
                    this.owner.menuToolTipContent.HideToolTip();
                    this.lastMenuItemControl = null;
                }
            }

            if (segment != null)
            {
                this.lastMenuItemControl = segment;

                var lastMenuItem = this.lastMenuItemControl.Visual as RadialMenuItemControl;

                if (lastMenuItem != null)
                {
                    lastMenuItem.IsPointerOver = true;

                    if (this.lastMenuItemControl.TargetItem != null)
                    {
                        this.owner.menuToolTipContent.ShowToolTip(this.lastMenuItemControl);
                    }
                }
            }
        }
Example #5
0
 internal virtual void UpdateItem(RadialSegment menuItem)
 {
     menuItem.LayoutSlot = this.Layout.GetLayoutSlotAtPosition(this, menuItem);
     this.layer.UpdateVisual(menuItem, this.Layout.StartAngle);
 }
Example #6
0
 protected virtual void PrepareItem(RadialSegment menuItem)
 {
     menuItem.LayoutSlot = this.Layout.GetLayoutSlotAtPosition(this, menuItem);
     this.layer.ShowVisual(menuItem, this.Layout.StartAngle);
 }
Example #7
0
 internal virtual void ClearItem(RadialSegment menuItem)
 {
     this.layer.ClearVisual(menuItem);
 }
Example #8
0
        public override RadialLayoutSlot GetLayoutSlotAtPosition(RingModelBase model, RadialSegment segment)
        {
            if (segment.TargetItem.Index >= 8)
            {
                return(RadialLayoutSlot.Invalid);
            }

            return(new RadialLayoutSlot
            {
                InnerRadius = model.InnerRadius,
                OuterRadius = model.OuterRadius,
                StartAngle = (this.StartAngle + this.SegmentAngleLength * segment.TargetItem.Index) % 360,
                SweepAngle = this.SegmentAngleLength
            });
        }
Example #9
0
 internal void UpdateItemHoverState(RadialSegment segment)
 {
     this.UpdateStateButtonState(segment);
     this.UpdateMenuItemControlState(segment);
 }
Example #10
0
 public abstract RadialLayoutSlot GetLayoutSlotAtPosition(RingModelBase model, RadialSegment segment);