Example #1
0
        public void Handle(ToggleDownload command)
        {
            var comic = command.Comic;

            if (comic.HasFinished)
            {
                return;
            }

            switch (comic.Status)
            {
            case Status.Paused:
                comic.Status = Status.Running;
                appController.Raise(new ComicChanged(comic));
                appController.Execute(new StartDownload(comic));
                break;

            case Status.Running:
                comic.Status = Status.Paused;
                appController.Raise(new ComicChanged(comic));
                appController.Execute(new PauseDownload(comic));
                break;

            default:
                throw new InvalidEnumArgumentException("command.Comic.Status", (int)command.Comic.Status, typeof(Status));
            }
        }
Example #2
0
        public void Handle(DeactivateComic command)
        {
            var comic = command.Comic;

            appController.Execute(new PauseDownload(comic));

            comic.Status           = Status.Inactive;
            comic.CurrentPage      = null;
            comic.DownloadedStrips = 0;
            comic.HasFinished      = false;

            appController.Raise(new ComicChanged(comic));
            appController.Raise(new ComicRemoved(comic));
        }
Example #3
0
        public void Handle(DownloadFinished eventData)
        {
            var comic = comicStore.Find(eventData.ComicId);

            comic.HasFinished = true;

            appController.Raise(new ComicChanged(comic));
        }
        public void Handle(CurrentPageChanged eventData)
        {
#warning race condition (although there should be at most one thread updating any given comic).
            var comic = comicStore.Find(eventData.ComicId);
            comic.CurrentPage = eventData.Url;

            appController.Raise(new ComicChanged(comic));
        }
Example #5
0
        public void Handle(StripDownloaded eventData)
        {
#warning race condition
            var comic = comicStore.Find(eventData.ComicId);
            comic.DownloadedStrips++;

            appController.Raise(new ComicChanged(comic));
        }
Example #6
0
        public void AddComic(AddInputModel inputModel)
        {
            var comic = comicStore.Find(inputModel.ComicId);

            comic.Status = Status.Running;
            comic.PrependIndexToStrips = inputModel.PrependIndexToStrips;
            comic.EmbedMetadata        = inputModel.EmbedMetadata;

            comicStore.PersistComics();
            appController.Raise(new ComicActivated(comic));
        }
Example #7
0
 public void Send(string message)
 {
     appController.Raise(new AppLogEntryAdded(message));
 }
Example #8
0
 private void ReportVisitingPage(Uri page, Context context)
 {
     Log(context, "{0}", page);
     appController.Raise(new CurrentPageChanged(context.ComicId, page));
 }
Example #9
0
 private void ReportStripDownloaded(Uri link, Context context)
 {
     Log(context, "downloaded {0}", link);
     appController.Raise(new StripDownloaded(context.ComicId));
 }