コード例 #1
0
ファイル: ChapterViewModel.cs プロジェクト: Soinou/MeliMelo
 /// <summary>
 /// Creates a new ChapterViewModel
 /// </summary>
 /// <param name="manga">Manga</param>
 /// <param name="chapter">Chapter to wrap</param>
 /// <param name="task">Mangas task</param>
 public ChapterViewModel(Manga manga, Chapter chapter, MangasTask task)
 {
     chapter_ = chapter;
     chapter_.Read += OnChapterRead;
     manga_ = manga;
     task_ = task;
 }
コード例 #2
0
ファイル: MangaViewModel.cs プロジェクト: Soinou/MeliMelo
        /// <summary>
        /// Creates a new MangaViewModel
        /// </summary>
        /// <param name="factory">Chapter factory</param>
        /// <param name="manga">Manga to wrap</param>
        /// <param name="task">Mangas task</param>
        public MangaViewModel(IChapterViewModelFactory factory, Manga manga, MangasTask task)
        {
            DisplayName = manga.Name;

            chapters_ = new List<ChapterViewModel>();
            factory_ = factory;
            manga_ = manga;
            manga_.NewChapter += OnMangaNewChapter;
            task_ = task;

            foreach (var chapter in manga_.Chapters)
                chapters_.Add(factory_.Create(manga_, chapter, task_));
        }
コード例 #3
0
ファイル: DialogManager.cs プロジェクト: Soinou/MeliMelo
        /// <summary>
        /// Displays the delete confirmation dialog for the given manga
        /// </summary>
        /// <param name="manga">Manga</param>
        /// <returns>If the user pressed yes</returns>
        public bool DeleteManga(Manga manga)
        {
            bool confirm = false;
            var dialog = delete_manga_.Create(manga);
            var result = manager_.ShowDialog(dialog);

            if (result.HasValue && result.Value)
            {
                confirm = true;
            }

            delete_manga_.Release(dialog);

            return confirm;
        }
コード例 #4
0
ファイル: DialogManager.cs プロジェクト: Soinou/MeliMelo
        /// <summary>
        /// Displays the add manga dialog
        /// </summary>
        /// <returns>Created manga, or null</returns>
        public Manga AddManga()
        {
            Manga manga = null;

            var dialog = add_manga_.Create();
            var result = manager_.ShowDialog(dialog);

            if (result.HasValue && result.Value)
            {
                manga = new Manga();
                manga.Name = dialog.MangaName;
                manga.Link = dialog.MangaLink;
            }

            add_manga_.Release(dialog);

            return manga;
        }
コード例 #5
0
        /// <summary>
        /// Creates a new DeleteMangaViewModel
        /// </summary>
        /// <param name="manga"></param>
        public DeleteMangaViewModel(Manga manga)
        {
            DisplayName = "MeliMelo - Delete Manga";

            manga_ = manga;
        }
コード例 #6
0
ファイル: MangasTask.cs プロジェクト: Soinou/MeliMelo
 /// <summary>
 /// Removes the given manga from the list
 /// </summary>
 /// <param name="manga">Manga to remove</param>
 public void Remove(Manga manga)
 {
     repository_.Remove(manga);
     Save();
 }
コード例 #7
0
ファイル: MangasTask.cs プロジェクト: Soinou/MeliMelo
 /// <summary>
 /// Adds the given manga to the list
 /// </summary>
 /// <param name="manga">Manga to add</param>
 public void Add(Manga manga)
 {
     repository_.Add(manga);
     Save();
 }
コード例 #8
0
ファイル: MangasTask.cs プロジェクト: Soinou/MeliMelo
        /// <summary>
        /// Updates the given manga
        /// </summary>
        /// <param name="manga">Manga to update</param>
        /// <returns>If the manga was updated or not</returns>
        private async Task UpdateManga(Manga manga)
        {
            try
            {
                string data = await HttpHelper.Get(manga.Link);

                if (!string.IsNullOrEmpty(data))
                {
                    var document = XDocument.Parse(data);

                    var items = document.Root.Element("channel").Elements("item");

                    foreach (var item in items)
                    {
                        string description_item = item.Element("description").Value;
                        string link_item = item.Element("link").Value;
                        string title_item = item.Element("title").Value;

                        var description = parser_.ParseDescription(description_item);
                        float? number = parser_.ParseChapterNumber(title_item);

                        // We assume the link never changes (Since we don't have an uuid or something
                        // like that. Thanks MangaFox)
                        var chapter = manga.Chapters.FirstOrDefault(c => c.Link == link_item);

                        // Create a new chapter
                        if (chapter == null)
                        {
                            chapter = new Chapter();

                            chapter.Description = description.Item1;
                            chapter.Team = description.Item2;
                            chapter.Link = link_item;
                            chapter.Number = number;
                            chapter.Title = title_item;

                            manga.Add(chapter);
                        }
                        // Update data
                        else
                        {
                            chapter.Description = description.Item1;
                            chapter.Team = description.Item2;
                            chapter.Number = number;
                            chapter.Title = title_item;
                        }
                    }
                }

                log_.Info("Update", "Successfully updated the manga \"" + manga.Name + "\"");
            }
            catch (Exception e)
            {
                log_.Error("Update", "Could not update the manga \"" + manga.Name + "\": "
                    + e.Message);
            }
        }