public override BaseAction Handle(string inputString)
        {
            State = ActionState.NotFound;
            var actionWord = Type.ToLower();

            if (inputString.ToLower().Contains(actionWord))
            {
                IEnumerable <int> sequence = null;
                foreach (var piece in inputString.Split(' '))
                {
                    sequence = MenuChooseItem.ValidateInput(piece);
                    if (sequence != null)
                    {
                        sequence = sequence.Select(i => i - 1).Where(i => i >= 0);
                        break;
                    }
                }

                ConfirmAction($"{actionWord} the last selection",
                              () =>
                {
                    State           = ActionState.FoundAndHandled;
                    var stagesDepth = SharedVars.ChosenItemsTillNow.Count;
                    switch (stagesDepth)
                    {
                    case 0 when sequence == null:
                        HandleLink("https://courses.finki.ukim.mk/");
                        break;
示例#2
0
        /// <summary>
        /// if no numbers given => add/remove previously selected links or whole course or section
        /// if numbers given    => add/remove selected links or whole course or section
        /// </summary>
        public override BaseAction Handle(string inputString)
        {
            State = ActionState.NotFound;

            if (inputString.ToLower().Contains(Type.ToLower()))
            {
                IEnumerable <int> sequence = null;
                foreach (var piece in inputString.Split(' '))
                {
                    sequence = MenuChooseItem.ValidateInput(piece);
                    if (sequence != null)
                    {
                        sequence = sequence.Select(i => i - 1).Where(i => i >= 0);
                        break;
                    }
                }

                ConfirmAction(
                    $"will {Type.ToLower()} selected/chosen items (recursively) {ToFromWord.ToLower()} download queue",
                    () =>
                {
                    State = ActionState.FoundAndHandled;
                    AddRemoveSelectedItems(sequence);
                });
            }

            return(this);
        }
示例#3
0
        private static int OnInQueueActionWords(string fullInputString, string linksPage, int page, int pageSize)
        {
            if (fullInputString.ToLower().Contains("clear"))
            {
                SharedVars.DownloadQueue.Clear();
                return(0);
            }

            if (fullInputString.ToLower().Contains("download"))
            {
                throw new DownloadAction();
            }

            if (fullInputString.ToLower().Contains("remove"))
            {
                IEnumerable <int> sequence = null;
                foreach (var piece in fullInputString.Split(' '))
                {
                    sequence = MenuChooseItem.ValidateInput(piece);
                    if (sequence != null)
                    {
                        sequence = sequence.Select(i => i - 1)
                                   .Where(i => i >= 0 &&
                                          i < linksPage.Split('\n').Length);
                        break;
                    }

                    if (piece.ToLower() == "all")
                    {
                        SharedVars.DownloadQueue.Clear();
                        return(0);
                    }
                }

                if (sequence != null)
                {
                    page = page > 0 ? --page : page;

                    var matchingLinks = SharedVars.DownloadQueue.Skip(page * pageSize)
                                        .Take(pageSize)
                                        .Where((_, i) => sequence.Contains(i));
                    SharedVars.DownloadQueue.RemoveAll(link => matchingLinks.Contains(link));
                }
            }

            return(page);
        }