예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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;
        }