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));
        }
Example #4
0
        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));
        }