/// <summary> /// Initializes JobsPanePresenter and registers for job update callback from JobsPool. /// </summary> public JobsPanePresenter(IJobsPane pane) { this.pane = pane; JobsPool.RegisterNewJobsPane(JobChanged, out List <IJobView> views); entriesHolder = new UnsortedEntriesHolder <JobEntry>((EntriesPane <JobEntry>)pane); JobEntry[] entries = new JobEntry[views.Count]; int i = 0; foreach (var view in views) { switch (view.LastStatus) { case JobStatus.Waiting: pane.JobsQueued++; break; case JobStatus.Running: pane.JobsQueued++; break; } entries[i] = new JobEntry(view, view.GetJobTypeDescription()); i++; } entriesHolder.AddRange(entries); }
/// <summary> /// Initializes SearchResultPanePresenter and starts the search. /// </summary> public SearchResultPanePresenter(ISearchResultPane pane, ISearchHandle search) { this.pane = pane; entries = new UnsortedEntriesHolder <FileSystemNodeEntry>((EntriesPane <FileSystemNodeEntry>)pane) { HighlightingFilter = _ => false }; Search = search; Search.SearchDone += HandleSearchDone; Search.FoundBatchFull += HandleBatchFound; pane.Status = JobStatus.Waiting; pane.SearchingName = SearchedName; pane.Found = 0; pane.InDirectory = SearchedDirectory.FullName; Search.Start(); pane.Status = JobStatus.Running; }