public override async Task Execute(object parameter)
        {
            var model = parameter as MangaSearchViewModel;

            if (model == null)
            {
                return;
            }

            var manga = await Mangas.Create(model.Uri).ConfigureAwait(true);

            if (manga == null)
            {
                return;
            }

            manga.Cover = model.Cover;
            await manga.Refresh().ConfigureAwait(true);

            if (await manga.IsValid().ConfigureAwait(true))
            {
                var explorer  = ExplorerViewModel.Instance;
                var searchTab = new MangaModel(manga);
                explorer.Tabs.Add(searchTab);
                explorer.SelectedTab = searchTab;
            }
        }
        private void DoDownloadAll(object sender, EventArgs e)
        {
            if (App.AppData.Manga == null)
            {
                return;
            }

            SetLoadingStatus(true);

            MangaModel            manga      = App.AppData.Manga;
            List <List <string> > cachePaths = new List <List <string> >(manga.Pages.Count);

            foreach (PageModel page in manga.Pages)
            {
                List <string> tempList = new List <string>();
                cachePaths.Add(tempList);

                int count = 0;
                foreach (ImageModel image in page.Images)
                {
                    tempList.Add(GetCachePath(manga, page, count));
                    count++;
                }
            }

            App.AppData.LoadAllPagesAsync(manga.Pages, cachePaths);

            PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
        }
        public override Task Execute(IEnumerable <IManga> mangas)
        {
            var manga     = mangas.Single();
            var explorer  = ExplorerViewModel.Instance;
            var searchTab = explorer.Tabs.OfType <MangaModel>().SingleOrDefault(t => t.Id == manga.Id);

            if (searchTab == null)
            {
                searchTab = this.LibraryModel.SelectedMangaModels.SingleOrDefault(m => m.Id == manga.Id);
                if (searchTab != null)
                {
                    searchTab.UpdateProperties(manga);
                }
                else
                {
                    searchTab = new MangaModel(manga);
                }
                explorer.Tabs.Add(searchTab);
            }
            else
            {
                searchTab.UpdateProperties(manga);
            }

            explorer.SelectedTab = searchTab;

            return(Task.CompletedTask);
        }
Example #4
0
        //function to update manga from database
        public void Update(MangaModel mangamodel)
        {
            var editManga = MangaMapper.toAggregate(mangamodel);
            var oldEntry  = db.Mangas.FirstOrDefault(x => x.Id.Equals(mangamodel.Id));

            db.Entry(oldEntry).CurrentValues.SetValues(editManga);
            db.SaveChanges();
        }
Example #5
0
        //adds new manga to the database
        public async Task <int> Add(MangaModel mangamodel)
        {
            var newManga = MangaMapper.toAggregate(mangamodel);
            await db.Mangas.AddAsync(newManga);

            await db.SaveChangesAsync();

            return(newManga.Id);
        }
Example #6
0
        public void AuthorInput()
        {
            //Arrange
            var manga1      = new MangaModel();
            var authorinput = manga1.Author = "Kubo Tite";

            //Act
            var result = "Kubo Tite";


            //Assert
            Assert.Equal(authorinput, result);
        }
        private void DoPrevious(object sender, EventArgs e)
        {
            if (App.AppData.Manga == null)
            {
                return;
            }

            SetLoadingStatus(true);
            MangaModel manga = App.AppData.Manga;

            if ((_currentViewingPage - 1) >= 0)
            {
                LoadPage(_currentViewingPage - 1, false);
            }
        }
 void LoadPage(int page, bool forceRefresh)
 {
     if (App.AppData.Manga != null)
     {
         MangaModel    manga      = App.AppData.Manga;
         List <string> cachePaths = new List <string>();
         for (int i = 0; i < manga.Pages[page].Images.Count; i++)
         {
             string cachePath = GetCachePath(manga, manga.Pages[page], i);
             cachePaths.Add(cachePath);
         }
         App.AppData.LoadPageAsync(manga.Pages[page], cachePaths, forceRefresh);
         PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
     }
 }
        private void DoNext(object sender, EventArgs e)
        {
            if (App.AppData.Manga == null)
            {
                return;
            }

            SetLoadingStatus(true);
            MangaModel manga = App.AppData.Manga;

            if (_currentViewingPage + 1 < manga.Pages.Count)
            {
                LoadPage(_currentViewingPage + 1, false);
            }
        }
        public void JumpToPage(int i)
        {
            if (App.AppData.Manga == null || Loading)
            {
                return;
            }

            SetLoadingStatus(true);
            MangaModel manga = App.AppData.Manga;

            if (i >= 0 && i < manga.Pages.Count)
            {
                LoadPage(i, false);
            }
        }
Example #11
0
        private static void Init()
        {
            var proxy = new MangaProxy();

            proxy.Id              = -1;
            proxy.Uri             = new Uri("https://mintmanga.com/berserk");
            proxy.ServerName      = "Berserk";
            proxy.IsNameChanged   = true;
            proxy.LocalName       = "Берсерк";
            proxy.Name            = proxy.LocalName;
            proxy.Folder          = "C:\\Manga\\Берсерк";
            proxy.CompressionMode = Compression.CompressionMode.Volume;
            proxy.NeedCompress    = null;
            proxy.Status          = "Томов: 40 , выпуск продолжается\r\nПеревод: продолжается\r\nПросмотров: 34891310\r\nЖанры: трагедия, приключения, фэнтези, героическое фэнтези, сэйнэн, боевик …\r\nАвтор: Миура Кэнтаро\r\nГод выпуска: 1989\r\nИздательства: Hakusensha, Comix-ART\r\nЖурналы: Animal House, Young Animal\r\nПереводчики: The Berserk World, Majin Scanlation, Okami";
            proxy.Description     = "Гатс, известный как Чёрный Мечник, ищет убежища от демонов, охотящихся за ним, и отмщения человеку, сделавшему из него жертву на своём алтаре. С помощью только своей титанической силы, умения и меча, Гатс должен биться против жестокого рока, пока битва с ненавистью мало-помалу лишает его человечности.\r\nБерсерк — это тёмная и погружающая в раздумья история о неистовых сражениях и безжалостном роке.\r\nby South Wind";
            MangaModel            = new MangaModel(proxy);
        }
        public override async Task Execute(object parameter)
        {
            if (isLoading)
            {
                return;
            }

            var model = parameter as MangaSearchViewModel;

            if (model == null)
            {
                return;
            }

            try
            {
                this.isLoading = true;
                this.OnCanExecuteChanged();
                this.Name = "Loading...";
                var manga = await Mangas.Create(model.Uri).ConfigureAwait(true);

                if (manga == null)
                {
                    return;
                }

                await manga.Refresh().ConfigureAwait(true);

                if (await manga.IsValid().ConfigureAwait(true))
                {
                    var explorer  = ExplorerViewModel.Instance;
                    var searchTab = new MangaModel(manga);
                    explorer.Tabs.Add(searchTab);
                    explorer.SelectedTab = searchTab;
                    var covers = await manga.Parser.GetPreviews(manga).ConfigureAwait(true);

                    searchTab.Cover = covers.FirstOrDefault();
                }
            }
            finally
            {
                this.isLoading = false;
                this.OnCanExecuteChanged();
                this.Name = "Preview";
            }
        }
Example #13
0
        //function to return new Manga object
        public static Mangas toAggregate(MangaModel mangamodel)
        {
            var result = new Mangas()
            {
                Id             = mangamodel.Id,
                Title          = mangamodel.Title,
                Author         = mangamodel.Author,
                Chapters       = mangamodel.Chapters,
                Genre          = mangamodel.Genre,
                Releasedate    = mangamodel.Releasedate,
                Status         = mangamodel.Status,
                Description    = mangamodel.Description,
                Rating         = mangamodel.Rating,
                MangaImagePath = mangamodel.fileName,
            };

            return(result);
        }
Example #14
0
        //function to return new MangaModel object
        public static MangaModel toViewModel(Mangas mangamodel)
        {
            var result = new MangaModel()
            {
                Id          = mangamodel.Id,
                Title       = mangamodel.Title,
                Author      = mangamodel.Author,
                Chapters    = mangamodel.Chapters,
                Genre       = mangamodel.Genre,
                Releasedate = mangamodel.Releasedate,
                Status      = mangamodel.Status,
                Description = mangamodel.Description,
                Rating      = mangamodel.Rating,
                fileName    = mangamodel.MangaImagePath
            };

            return(result);
        }
Example #15
0
        public async Task <IActionResult> Create(MangaModel model)
        {
            if (model.MangaImage != null)
            {
                string folder    = "images/Uploaded_covers/";
                string imagePath = Path.Combine(webHostEnvironment.WebRootPath, folder);

                var fileName = Guid.NewGuid().ToString() + model.MangaImage.FileName;
                model.fileName = fileName;
                await model.MangaImage.CopyToAsync(new FileStream(imagePath + fileName, FileMode.Create));

                await db.Add(model);

                return(RedirectToAction("Index", "Home"));
            }
            ;
            return(RedirectToAction(nameof(Create)));
        }
Example #16
0
        public async Task <IActionResult> Index()
        {
            var mangaModel = new MangaModel();

            try
            {
                var response = await client.GetAsync($"{urlApi}/Mangas");

                var responseData = JsonConvert.DeserializeObject <IEnumerable <DTOMangas> >(await response.Content.ReadAsStringAsync());

                if (responseData.Count() == 0)
                {
                    return(View(mangaModel));
                }

                var listDtoManga = new List <DTOMangas>();
                foreach (var item in responseData)
                {
                    var base64 = Convert.ToBase64String(item.CAPA);
                    var img    = String.Format("data:image/gif;base64,{0}", base64);

                    var dtoManga = new DTOMangas()
                    {
                        ID_MANGA    = item.ID_MANGA,
                        ID_SITUACAO = item.ID_SITUACAO,
                        TITULO      = item.TITULO,
                        SINOPSE     = item.SINOPSE,
                        CAPABASE64  = img
                    };

                    listDtoManga.Add(dtoManga);
                }

                mangaModel.DtoManga = listDtoManga;

                return(View(mangaModel));
            }
            catch (Exception)
            {
                return(View(mangaModel));
            }
        }
Example #17
0
 public override async Task Execute(object parameter)
 {
     model = (MangaModel)parameter;
     await base.Execute(parameter).ConfigureAwait(true);
 }
Example #18
0
 public MangaSaveCommand(MangaModel model, LibraryViewModel library) : base(library)
 {
     this.model = model;
     this.Name  = model.Saved ? "Save" : "Subscribe";
 }
 private string GetCachePath(MangaModel mangaModel, PageModel pageModel, int count)
 {
     return(mangaModel.SeriesId + "_" + mangaModel.MangaId + "_" + pageModel.Page + "_" + count + ".img");
 }
        void OnGetPageAsyncCompleted(object sender, PageModel pageModel)
        {
            if (pageModel != null && pageModel.Images.Count >= 1)
            {
                if (App.AppData.Manga != null)
                {
                    MangaModel manga = App.AppData.Manga;

                    string content = string.Empty;

                    if (pageModel.Images.Count == 1)
                    {
                        string cachePath = GetCachePath(manga, pageModel, 0);
                        content = "<html><head><meta name=\"Viewport\" content=\"width=800; height=800; user-scaleable=yes;\"/></head><body><img src=\"" + cachePath + "\"/></body></html>";
                    }
                    else
                    {
                        StringBuilder bodyBuilder  = new StringBuilder();
                        StringBuilder styleBuilder = new StringBuilder();
                        for (int i = 0; i < pageModel.Images.Count; i++)
                        {
                            ImageModel imageModel = pageModel.Images[i];
                            styleBuilder.Append("#p" + i + "{position:absolute;z-index:" + imageModel.ZIndex + ";width:" + imageModel.Width + "px;height:" + imageModel.Height + "px;top:" + imageModel.Top + "px;left:" + imageModel.Left + "px}\n");
                            bodyBuilder.Append("<div id=\"p" + i + "\"><img src=\"" + GetCachePath(manga, pageModel, i) + "\"/></div>");
                        }

                        content = "<html><head><meta name=\"Viewport\" content=\"width=800; height=800; user-scaleable=yes;\"/><style type=\"text/css\">" + styleBuilder.ToString() + "</style></head><body><div>" + bodyBuilder.ToString() + "</div></body></html>";
                    }

                    IsolatedStorageFileStream stream = null;
                    try
                    {
                        byte[] buffer             = Encoding.UTF8.GetBytes(content);
                        IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication();
                        stream = store.CreateFile("index.html");
                        stream.Write(buffer, 0, buffer.Length);
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Couldn't show content");
                    }
                    finally
                    {
                        if (stream != null)
                        {
                            stream.Close();
                        }
                    }

                    _currentViewingPage = pageModel.Page - 1;

                    bool oldNextAllowed = NextAllowed;
                    NextAllowed = (_currentViewingPage < manga.Pages.Count - 1);
                    if (oldNextAllowed != NextAllowed)
                    {
                        NotifyPropertyChanged("NextAllowed");
                    }

                    bool oldPreviousAllowed = PreviousAllowed;
                    PreviousAllowed = (_currentViewingPage > 0);
                    if (oldPreviousAllowed != PreviousAllowed)
                    {
                        NotifyPropertyChanged("PreviousAllowed");
                    }
                }
                else
                {
                    // Couldn't display content
                }
                DisplayContent = "index.html";
                NotifyPropertyChanged("DisplayContent");
            }
            else
            {
                MessageBox.Show("Failed to retrieve images. Please try refresh again.");
            }
            PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Enabled;
            SetLoadingStatus(false);
        }
 public override void Execute(object parameter)
 {
     model = (MangaModel)parameter;
     base.Execute(parameter);
 }
Example #22
0
 public MangaSaveCommand(MangaModel model, LibraryViewModel library) : base(library)
 {
     this.model = model;
     this.Name  = "Принять";
 }