Beispiel #1
0
 public UnitOfWork(BlogDbContext context)
 {
     this.context          = context;
     CategoriesRepository  = new CategoriesRepository(context);
     PostsRepository       = new PostsRepository(context);
     PostsFetcher          = new PostsFetcher(context);
     TagsRepository        = new TagsRepository(context);
     CommentsFetcher       = new CommentsFetcher(context);
     CommentsRepository    = new CommentsRepository(context);
     PollsRepository       = new PollsRepository(context);
     PollAnswersRepository = new PollAnswersRepository(context);
     PostPhotosRepository  = new PostPhotosRepository(context);
     PollsFetcher          = new PollsFetcher(context);
     VotesRepository       = new VotesRepository(context);
 }
        /// <summary>
        /// Main view model for the BooruReader window
        /// </summary>
        public MainScreenVM() : base()
        {
            _imageList   = new ObservableCollection <BasePost>();
            _previewList = new List <PrviewScreenView>();
            _postFetcher = new PostsFetcher();
            _threadList  = new List <BasePost>();
            _imageLoader = new BackgroundWorker();
            _cache       = new ImageCache();
            DownloadList = new ObservableCollection <BasePost>();
            DownloadList.CollectionChanged         += DowloadList_CollectionChanged;
            _imageLoader.DoWork                    += BackgroundLoaderWork;
            _imageLoader.RunWorkerCompleted        += ServerListLoadWorkerCompleted;
            _imageLoader.WorkerSupportsCancellation = true;
            _showedLastPageWarning                  = false;
            //Ugly hack for settings vm
            GlobalSettings.Instance.MainScreenVM = this;
            SettingsOpen    = false;
            IsFavoritesMode = false;
            _favorites      = new FavoriteHandler();

            InitialiseDelegates();

            ProgressBarVisibility = Visibility.Hidden;
        }
        /// <summary>
        /// Checks that the board user is adding is valid
        /// </summary>
        private string IsValidBooru()
        {
            string retval    = null;
            bool   hadErrors = false;

            try
            {
                if (!string.IsNullOrEmpty(CurrentSelectedBoard.Name) && !string.IsNullOrEmpty(CurrentSelectedBoard.URL))
                {
                    CurrentSelectedBoard.URL = NormalizeURL(CurrentSelectedBoard.URL);

                    //Now we try and fetch a page until we get result... or an exception
                    PostsFetcher posts = new PostsFetcher(true);

                    try
                    {
                        CurrentSelectedBoard.ProviderType = ProviderAccessType.DanbooruV2;
                        if (posts.GetImages(1).Count > 0)
                        {
                            hadErrors = false;
                        }
                    }
                    catch
                    {
                        hadErrors = true;
                    }

                    if (hadErrors)
                    {
                        try
                        {
                            CurrentSelectedBoard.ProviderType = ProviderAccessType.XML;
                            if (posts.GetImages(1).Count > 0)
                            {
                                hadErrors = false;
                            }
                        }
                        catch
                        {
                            hadErrors = true;
                        }
                    }

                    if (hadErrors)
                    {
                        try
                        {
                            CurrentSelectedBoard.ProviderType = ProviderAccessType.JSON;
                            if (posts.GetImages(1).Count > 0)
                            {
                                hadErrors = false;
                            }
                        }
                        catch
                        {
                            hadErrors = true;
                        }
                    }

                    if (hadErrors)
                    {
                        try
                        {
                            CurrentSelectedBoard.ProviderType = ProviderAccessType.Gelbooru;
                            if (posts.GetImages(1).Count > 0)
                            {
                                hadErrors = false;
                            }
                        }
                        catch
                        {
                            hadErrors = true;
                        }
                    }

                    if (hadErrors)
                    {
                        retval = "Invalid or unsupported booru.";
                    }
                }
                else
                {
                    hadErrors = true;
                    retval    = "Enter address and name.";
                }
            }
            catch
            {
                hadErrors = true;
                retval    = "Invalid or unsupported booru.";
            }
            finally
            {
                if (!hadErrors)
                {
                    retval = null;
                }
            }

            return(retval);
        }