/// ------------------------------------------------------------------------------------ public void SetIgnoredFlagForSegment(AnnotationSegment segment, bool ignore) { if (segment != null) { var segmentIndex = TimeTier.GetIndexOfSegment(segment); var timeRange = segment.TimeRange.Copy(); if (ignore) { Action restoreState = GetActionToRestoreStateWhenUndoingAnIgnore(segment); Tiers.MarkSegmentAsIgnored(segmentIndex); _undoStack.Push(new SegmentChange(SegmentChangeType.Ignored, timeRange, timeRange, sc => { Tiers.MarkSegmentAsUnignored(segmentIndex); restoreState(); })); } else { Tiers.MarkSegmentAsUnignored(segmentIndex); _undoStack.Push(new SegmentChange(SegmentChangeType.Unignored, timeRange, timeRange, sc => Tiers.MarkSegmentAsIgnored(segmentIndex))); } } else { if (!ignore) { throw new InvalidOperationException("New segment can never be unignored."); } AddIgnoredSegment(VirtualBoundaryBeyondLastSegment); } }
/// ------------------------------------------------------------------------------------ public bool DeleteBoundary(TimeSpan boundary) { var seg = TimeTier.GetSegmentHavingEndBoundary((float)boundary.TotalSeconds); if (!Tiers.RemoveTierSegments(TimeTier.GetIndexOfSegment(seg))) { return(false); } OnSegmentDeleted(seg); OnSegmentBoundaryChanged(); return(true); }
/// ------------------------------------------------------------------------------------ public bool GetIsSegmentIgnored(AnnotationSegment segment) { return(GetIsSegmentIgnored(TimeTier.GetIndexOfSegment(segment))); }
public void GetIndexOfSegment_SegmentIsNull_ReturnsNegOne() { Assert.AreEqual(-1, _tier.GetIndexOfSegment(null)); }