예제 #1
0
        private void AddToQueue(object obj)
        {
            string url = ((SearchItem)obj).StoryUrl;

            Downloader dl = Downloader.Resolve(url);
            var story = dl.RequestInfo(url);

            string saveFolder = SettingForm.GetSetting().StogareFolder +"\\"+ story.Name.ConvertToValidFileName();


            foreach (var chap in story.Chapters)
            {

                chap.FolderName = chap.Name.ConvertToValidFileName();
                chap.Folder = Path.Combine(saveFolder, chap.FolderName);
                chap.PdfFileName = chap.FolderName + ".pdf";
                chap.PdfPath = Path.Combine(saveFolder, "PDF\\" + chap.PdfFileName);
                chap.Status = DownloadStatus.Waiting;
            }
            QueueDownloadItem item = new QueueDownloadItem()
            {
                ProviderName = dl.Name,
                Downloader = dl.GetType().FullName,
                StoryUrl = url,
                StoryName = story.Name,
                SelectedChapters = story.Chapters,
                Status = DownloadStatus.Waiting,
                SaveFolder = SettingForm.GetSetting().StogareFolder,
            };

            QueueDownloadForm.AddDownloadItem(item);

            this.Invoke(new MethodInvoker(delegate() {
                lblStatus.Text = string.Format("Added {0}[{1} Chapters]", story.Name, story.Chapters.Count);
            }));

        }
        internal static void AddDownloadItem(QueueDownloadItem item)
        {
            lock (locker)
            {
                if (DownloadItems == null)
                {
                    DownloadItems = GetHistoryItems();
                }

                item.Sequence = DownloadItems.Count + 1;
                item.Priority = 3;
                DownloadItems.Add(item);
                //doing merge here :)
                SaveHistoryItem(DownloadItems);
            }
        }