Example #1
0
 public LibraryLoadProgressArg(LibraryLoadRunArg runArg, int currentLoadCount, int totalLoadCount, Metadata metadata)
 {
     RunArg           = runArg;
     CurrentLoadCount = currentLoadCount;
     TotalLoadCount   = totalLoadCount;
     Metadata         = metadata;
 }
Example #2
0
        private void WebBrowser_PreloadDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            SearchArg searchArg = webBrowser.Tag as SearchArg;

            if (searchArg == null)
            {
                return;
            }

            if (backgroundWorker.IsBusy)
            {
                return;
            }

            LibraryLoadRunArg runArg = new LibraryLoadRunArg(PathFormatter, SearchResultCache, searchArg, LibraryBrowserSettings.NumResultsPerPage, LibraryModel.FileSystemWatcher.Path, LibraryBrowserSettings.SortType, LibraryBrowserSettings.GlobalSortType, LibraryBrowserSettings.SortOrder, LibraryBrowserSettings.GlobalSortOrder);

            backgroundWorker.RunWorkerAsync(runArg);
        }
Example #3
0
 public LibraryLoadCompletedArg(LibraryLoadRunArg runArg, SearchResult searchResult)
 {
     RunArg       = runArg;
     SearchResult = searchResult;
 }
Example #4
0
        private static void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker  backgroundWorker = sender as BackgroundWorker;
            LibraryLoadRunArg runArg           = e.Argument as LibraryLoadRunArg;
            List <int>        galleryIds       = new List <int>();
            SearchResult      searchResult     = new SearchResult();

            searchResult.Result  = new List <Metadata>();
            searchResult.PerPage = runArg.NumItemsPerPage;

            if (Directory.Exists(runArg.LibraryPath))
            {
                DirectoryInfo dirInfo = new DirectoryInfo(runArg.LibraryPath);
                IEnumerable <DirectoryInfo> dirInfos =
                    runArg.PathFormatter.IsEnabled ? dirInfo.EnumerateDirectories("*", SearchOption.AllDirectories)
                                        : dirInfo.EnumerateDirectories();

                dirInfos = dirInfos.OrderAllByTime(runArg.GlobalSortType, runArg.GlobalSortOrder);

                int skipCount      = (runArg.SearchArg.PageIndex - 1) * searchResult.PerPage;
                int itemCount      = 0;
                int totalItemCount = 0;

                foreach (DirectoryInfo subDirInfo in dirInfos)
                {
                    int galleryId = ExtractGalleryIdFromFileName(subDirInfo.Name);

                    if (galleryId == -1)
                    {
                        continue;
                    }

                    ++totalItemCount;

                    if (skipCount > 0)
                    {
                        --skipCount;
                        continue;
                    }

                    if (itemCount == searchResult.PerPage)
                    {
                        continue;
                    }

                    ++itemCount;

                    galleryIds.Add(galleryId);
                }

                int loadCount = 0;

                foreach (int galleryId in galleryIds)
                {
                    Metadata metadata = GetGalleryMetadata(galleryId, runArg.PathFormatter, runArg.SearchResultCache);

                    ++loadCount;

                    LibraryLoadProgressArg progressArg = new LibraryLoadProgressArg(runArg, loadCount, galleryIds.Count, metadata);

                    backgroundWorker.ReportProgress((int)((loadCount / (float)galleryIds.Count) * 100), progressArg);

                    if (metadata == null)
                    {
                        continue;
                    }

                    searchResult.Result.Add(metadata);
                }

                searchResult.NumPages = (int)Math.Ceiling(totalItemCount / (double)searchResult.PerPage);
            }

            SearchResult finalSearchResult;

            if (searchResult.Result != null &&
                runArg.SortType != GallerySortType.None)
            {
                SearchResult customSearchResult = new SearchResult();

                customSearchResult.NumPages = searchResult.NumPages;
                customSearchResult.PerPage  = searchResult.PerPage;

                // NOTE: don't hide items in the library.
                //IEnumerable<Metadata> customResult = searchResult.Result.GetFilteredSearchResult(runArg.MetadataKeywordLists);
                IEnumerable <Metadata> customResult = searchResult.Result.GetSortedSearchResult(runArg.SortType, runArg.SortOrder);

                customSearchResult.Result = customResult.ToList();

                finalSearchResult = customSearchResult;
            }
            else
            {
                finalSearchResult = searchResult;
            }

            LibraryLoadCompletedArg completedArg = new LibraryLoadCompletedArg(runArg, finalSearchResult);

            e.Result = completedArg;
        }