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(); } }
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); }
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); } } } }
internal virtual void UpdateItem(RadialSegment menuItem) { menuItem.LayoutSlot = this.Layout.GetLayoutSlotAtPosition(this, menuItem); this.layer.UpdateVisual(menuItem, this.Layout.StartAngle); }
protected virtual void PrepareItem(RadialSegment menuItem) { menuItem.LayoutSlot = this.Layout.GetLayoutSlotAtPosition(this, menuItem); this.layer.ShowVisual(menuItem, this.Layout.StartAngle); }
internal virtual void ClearItem(RadialSegment menuItem) { this.layer.ClearVisual(menuItem); }
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 }); }
internal void UpdateItemHoverState(RadialSegment segment) { this.UpdateStateButtonState(segment); this.UpdateMenuItemControlState(segment); }
public abstract RadialLayoutSlot GetLayoutSlotAtPosition(RingModelBase model, RadialSegment segment);