/// <summary> /// Moves an event to a new start date (preserving duration) and updates labels. /// </summary> /// <param name="ev">Event to move</param> /// <param name="newStartDate">New start date for event</param> private void MoveEvent(Event ev, DateTime newStartDate) { var newRange = new TimeRange(ev.Start, ev.End); newRange.MoveToDate(newStartDate); UpdateEvent(ev, newRange); }
/// <summary> /// Highlights destination cells during drag /// </summary> private void HandleDragging(object sender, DragEventArgs args) { var label = sender as DraggableView; if (label == null) { return; } var ev = label.BindingContext as Event; if (ev == null) { return; } var destinationPoint = GetDragDestinationPoint(args.Center, label); var newDate = GetDateAtPoint(destinationPoint); if (newDate.HasValue) { // Offset for this not being the first label of the event newDate = newDate.Value.AddDays(-_dragLabelDayOffset); var newRange = new TimeRange(ev.Start, ev.End); newRange.MoveToDate(newDate.Value); // Highlight target cells, un-highlight previously-targeted cells // HighlightCells(newRange.StartDate, newRange.EndDate); } }