private void RefreshProgressBar(Progress.Item[] progressItems)
        {
            var taskCount = Progress.GetRunningProgressCount();

            if (taskCount == 0)
            {
                m_LastProgressId  = -1;
                m_LastElapsedTime = 0f;
                m_CurrentProgressNotResponding  = false;
                m_ProgressStatus.text           = String.Empty;
                m_ProgressPercentageStatus.text = String.Empty;
            }
            else
            {
                var currentItem = progressItems[0];
                if (!String.IsNullOrEmpty(currentItem.description))
                {
                    m_ProgressStatus.tooltip = currentItem.name + "\r\n" + currentItem.description;
                }
                m_ProgressPercentageStatus.text = Progress.globalProgress.ToString("P", percentageFormat);

                var remainingTimeText = "";
                if (Progress.EnumerateItems().Any(item => item.timeDisplayMode == Progress.TimeDisplayMode.ShowRemainingTime) && Progress.EnumerateItems().All(item => !item.indefinite) && Progress.globalRemainingTime.TotalSeconds > 0)
                {
                    remainingTimeText = $" [{Progress.globalRemainingTime:g}]";
                }

                if (taskCount > 1)
                {
                    m_ProgressStatus.text = $"Multiple tasks ({taskCount}){remainingTimeText}";
                }
                else
                {
                    m_ProgressStatus.text = $"{currentItem.name}{remainingTimeText}";
                }


                m_LastProgressId = currentItem.id;
                m_CurrentProgressNotResponding = true;
                for (int i = 0; i < progressItems.Length; ++i)
                {
                    if (!progressItems[i].responding)
                    {
                        m_LastProgressId = progressItems[i].id;
                        continue;
                    }
                    m_CurrentProgressNotResponding = false;
                    break;
                }

                m_LastElapsedTime = Mathf.Max(m_LastElapsedTime, currentItem.elapsedTime);
                if (m_CurrentProgressNotResponding)
                {
                    m_LastElapsedTime = float.MaxValue;
                }
            }
            RepaintProgress(progressItems);
        }
        private void RefreshProgressBar(Progress.Item[] progressItems)
        {
            if (!this)
            {
                return;
            }

            if (!Progress.running)
            {
                // If we enter here, it means the last remaining progresses just finished or paused.
                ClearProgressStatus();
                RepaintProgress(progressItems);
                return;
            }

            var idleCount = Progress.EnumerateItems().Count(item => item.running && item.priority == (int)Progress.Priority.Idle);
            var taskCount = Progress.GetRunningProgressCount() - idleCount;

            if (taskCount == 0)
            {
                ClearProgressStatus();
            }
            else
            {
                var currentItem = progressItems.FirstOrDefault(item => item.priority != (int)Progress.Priority.Idle);
                if (currentItem != null && !String.IsNullOrEmpty(currentItem.description))
                {
                    m_ProgressStatus.tooltip = currentItem.name + "\r\n" + currentItem.description;
                }
                m_ProgressPercentageStatus.text = Progress.globalProgress.ToString("P", percentageFormat);

                var remainingTimeText = "";
                var runningProgresses = Progress.EnumerateItems().Where(item => item.running);
                if (Progress.globalRemainingTime.TotalSeconds > 0 && runningProgresses.Any(item => item.timeDisplayMode == Progress.TimeDisplayMode.ShowRemainingTime && item.priority != (int)Progress.Priority.Idle) &&
                    runningProgresses.All(item => !item.indefinite))
                {
                    remainingTimeText = $" [{Progress.globalRemainingTime:g}]";
                }

                if (taskCount > 1)
                {
                    m_ProgressStatus.text = $"Multiple tasks ({taskCount}){remainingTimeText}";
                }
                else
                {
                    m_ProgressStatus.text = $"{currentItem?.name}{remainingTimeText}";
                }

                ScheduleCheckProgressUnresponsive();
            }

            RepaintProgress(progressItems);
        }
Beispiel #3
0
        private void RefreshProgressBar(ProgressItem[] progressItems)
        {
            var taskCount = Progress.GetRunningProgressCount();

            if (taskCount == 0)
            {
                m_LastProgressId  = -1;
                m_LastElapsedTime = 0f;
                m_CurrentProgressNotResponding  = false;
                m_ProgressStatus.text           = String.Empty;
                m_ProgressPercentageStatus.text = String.Empty;
            }
            else
            {
                var currentItem = progressItems[0];
                if (!String.IsNullOrEmpty(currentItem.description))
                {
                    m_ProgressStatus.tooltip = currentItem.name + "\r\n" + currentItem.description;
                }
                m_ProgressPercentageStatus.text = Progress.GlobalProgress.ToString("P", percentageFormat);

                if (taskCount > 1)
                {
                    m_ProgressStatus.text = $"Multiple tasks ({taskCount})";
                }
                else
                {
                    m_ProgressStatus.text = currentItem.name;
                }


                m_LastProgressId = currentItem.id;
                m_CurrentProgressNotResponding = true;
                for (int i = 0; i < progressItems.Length; ++i)
                {
                    if (!progressItems[i].responding)
                    {
                        m_LastProgressId = progressItems[i].id;
                        continue;
                    }
                    m_CurrentProgressNotResponding = false;
                    break;
                }

                m_LastElapsedTime = Mathf.Max(m_LastElapsedTime, currentItem.elapsedTime);
                if (m_CurrentProgressNotResponding)
                {
                    m_LastElapsedTime = float.MaxValue;
                }
            }
            RepaintProgress(progressItems);
        }
Beispiel #4
0
        private void RefreshProgressBar(Progress.Item[] progressItems)
        {
            var taskCount = Progress.GetRunningProgressCount();

            if (taskCount == 0)
            {
                m_ProgressStatus.text           = String.Empty;
                m_ProgressPercentageStatus.text = String.Empty;
            }
            else
            {
                var currentItem = progressItems[0];
                if (!String.IsNullOrEmpty(currentItem.description))
                {
                    m_ProgressStatus.tooltip = currentItem.name + "\r\n" + currentItem.description;
                }
                m_ProgressPercentageStatus.text = Progress.globalProgress.ToString("P", percentageFormat);

                var remainingTimeText = "";
                if (progressItems.Any(item => item.timeDisplayMode == Progress.TimeDisplayMode.ShowRemainingTime) &&
                    progressItems.All(item => !item.indefinite) && Progress.globalRemainingTime.TotalSeconds > 0)
                {
                    remainingTimeText = $" [{Progress.globalRemainingTime:g}]";
                }

                if (taskCount > 1)
                {
                    m_ProgressStatus.text = $"Multiple tasks ({taskCount}){remainingTimeText}";
                }
                else
                {
                    m_ProgressStatus.text = $"{currentItem.name}{remainingTimeText}";
                }

                DelayCheckProgressUnresponsive();
            }

            RepaintProgress(progressItems);
        }