public override TimeTagCaretPosition MoveToLast() { var timeTags = Lyrics.SelectMany(x => x.TimeTags ?? new TimeTag[] { }).ToArray(); var lastTag = timeTags.LastOrDefault(timeTagMovable); return(timeTagToPosition(lastTag)); }
public override TimeTagCaretPosition MoveLeft(TimeTagCaretPosition currentPosition) { var timeTags = Lyrics.SelectMany(x => x.TimeTags ?? new TimeTag[] { }).ToArray(); var previousTimeTag = timeTags.GetPreviousMatch(currentPosition.TimeTag, timeTagMovable); return(timeTagToPosition(previousTimeTag)); }
public override TimeTagCaretPosition MoveRight(TimeTagCaretPosition currentPosition) { var timeTags = Lyrics.SelectMany(x => x.TimeTags ?? new TimeTag[] { }).ToArray(); var nextTimeTag = timeTags.GetNextMatch(currentPosition.TimeTag, timeTagMovable); return(timeTagToPosition(nextTimeTag)); }
public override EditTextTagCaretPosition MoveLeft(EditTextTagCaretPosition currentPosition) { base.MoveLeft(currentPosition); var currentTextTag = currentPosition.TextTag; var textTags = Lyrics.SelectMany(x => getRelatedTypeTextTag(x, currentPosition) ?? new ITextTag[] { }).ToArray(); var previousTextTag = textTags.GetPrevious(currentTextTag); var currentLyric = currentPosition.Lyric; if (getRelatedTypeTextTag(currentLyric, currentPosition).Contains(previousTextTag)) { return(new EditTextTagCaretPosition(currentLyric, previousTextTag)); } var previousLyric = getPreviousLyricWithTextTag(currentLyric, currentTextTag); if (previousLyric == null) { return(null); } return(new EditTextTagCaretPosition(previousLyric, previousTextTag)); }