public LibraryLoadProgressArg(LibraryLoadRunArg runArg, int currentLoadCount, int totalLoadCount, Metadata metadata) { RunArg = runArg; CurrentLoadCount = currentLoadCount; TotalLoadCount = totalLoadCount; Metadata = metadata; }
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); }
public LibraryLoadCompletedArg(LibraryLoadRunArg runArg, SearchResult searchResult) { RunArg = runArg; SearchResult = searchResult; }
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; }