BzReader.Indexer.ReportProgress C# (CSharp) Method

ReportProgress() private method

private ReportProgress ( int percentage, IndexingProgress status, string message ) : void
percentage int
status IndexingProgress
message string
return void
        private void ReportProgress(int percentage, IndexingProgress.State status, string message)
        {
            int eta;
            IndexingProgress ip = new IndexingProgress();

            ip.IndexingState = status;
            ip.Message = message;

            // a naive ETA formula: ETA = ElapsedMinutes * 100 / percentDone - Elapsed

            if (percentage > 0)
            {
                elapsed = (DateTime.Now.Subtract(startTime));
                eta = (int)(elapsed.TotalMinutes * 100 / percentage - elapsed.TotalMinutes);

                if (eta <= 0)
                {
                    ip.ETA = Properties.Resources.FinishingSoon;
                }
                else
                {
                    TimeSpan remaining = TimeSpan.FromMinutes(eta + 1);
                    ip.ETA = String.Format(Properties.Resources.FinishingInHours, (int)remaining.TotalHours, remaining.Minutes);
                }
            }
            else
            {
                ip.ETA = "n/a";
            }

            OnProgressChanged(new ProgressChangedEventArgs(percentage, ip));
        }