Алан Дэй (Allan Day)
aday@gnome.org
Калум Бенсон (Calum Benson)
Адам Элман (Adam Elman)
Сэт Никел (Seth Nickell)
Колин Робертсон (Colin Robertson)

# Индикаторы выполнения

Индикаторы выполнения используются для того, чтобы показать пользователю, что выполняется некоторое задание, а также степень выполнения этого задания.

# Когда использовать

Обычно индикаторы применяются, когда на выполнение операции требуется больше трёх секунд. В этом случае пользователь понимает, что никакой ошибки не возникло и ему нужно подождать.

Главный вопрос, который возникает при необходимости индикации выполнения,— что применить, индикатор выполнения или индикатор ожидания. Индикатор выполнения показывает степень выполнения задачи, поэтому они полезны для индикации выполнения продолжительных задач. Применяйте индикаторы выполнения только в том случае, если задача занимает больше 30 секунд. Для менее продолжительных задач лучше применить индикатор ожидания.

# Типы индикаторов

Существует три разновидности индикаторов выполнения:

Оставшееся время. Эти индикаторы показывают сколько времени осталось для завершения задачи.

Типичное время. Эти индикаторы показывают оставшееся время, исходя из оценки необходимого времени.

Неопределённый. Эти индикаторы применяются для задач, для которых нельзя определить необходимое для их выполнения время.

Индикаторы выполнения должны быть по возможности точными. Применяйте индикаторы на основе времени с указанием типичного времени, если это возможно. Избегайте неопределённых индикаторов.

# Текст

Индикатор выполнения может содержать текстовое описание, которое говорит о том, какая часть задания уже выполнена. При составлении текста учитывайте следующие факторы:

представленный текст должен максимально удовлетворять интересы пользователя.

Часто вместо процентов лучше предоставить какие-то определённые сведения. Например, Повёрнуто 13 из 19 изображений или Загружено 12.1 из 30 МБ лучше, чем Завершено 13%.

For long-running tasks, it can be desirable to show an estimate of the time remaining in the progress bar text. If other relevant information isn't available, this can be shown on its own. Alternatively, it can appear alongside text about task progress; however, be careful not to overwhelm the user with too much information when doing this, and use typographic conventions to differentiate the most useful information.

Если оставшееся время известно лишь приблизительно, используйте слово «около» (about). Например: Осталось около 3 минут (About 3 minutes left).

# Этапы выполнения задач

Некоторые задачи выполняются в виде последовательности этапов, у каждого из которых есть собственные параметры по времени выполнения. Возможна такая ситуация, когда оставшееся время известно для части задачи, но для другой части оно неизвестно. В этих случаях:

Разбивайте задачу на этапы только в том случае, если это действительно необходимо для пользователя. В противном случае, объединять этапы не только не нужно, но и нежелательно.

Если задача состоит из этапов для которых известно время, необходимое для их выполнения (хотя бы приблизительно), попробуйте создать простой индикатор с типичным временем выполнения.

Если задача содержит этап с неопределённой степенью исполнения, для части задачи индикатор выполнения можно показать в виде неопределённого выполнения. Однако не следует показывать неопределённый индикатор длительное время, старайтесь свести к минимуму изменения режима индикатора выполнения. Применяйте неопределённый индикатор только в крайнем случае.

# Подзадачи

Если задача состоит из нескольких подзадач (например, одновременная загрузка нескольких файлов), настоятельно рекомендуется показывать один индикатор, который будет отображать общее выполнение всех задач. Однако в некоторых случаях можно сделать исключение:

Есть пользователю необходимо видеть степень выполнения каждой отдельной подзадачи. (Как вариант, выполнение каждой подзадачи можно отображать с помощью текста в индикаторе выполнения).

Если есть необходимость в приостановке или отмене подзадачи (подробнее см. раздел общие рекомендации).

Если подзадачи уже каким-либо образом обозначены в интерфейсе пользователя. В этом случае можно показывать встроенный индикатор выполнения для каждого элемента.

Если для подзадач применяются индикаторы выполнения:

Каждая подзадача должна удовлетворять общим рекомендациям для индикаторов выполнения (подробнее см. раздел Когда применять.)

Общий индикатор выполнения для всего набора задач показывать не обязательно.

# Окна с индикаторами выполнения

Раньше для индикации выполнения применялись окна с индикаторами выполнения. Эти второстепенные окна должны были находиться на экране во время выполнения задачи и содержали один или несколько индикаторов выполнения. Но мы не рекомендуем применять подобные окна, так как закрытие этих окон может приводить к неочевидным эффектам, а сами окна могут загораживать полезное содержимое и элементы управления.

Индикаторы выполнения, по возможности, должны быть встроены и должны располагаться близко к элементам содержимого или элементам управления, для которых используется индикация.

# Общие рекомендации

Если выполняемое действие потенциально опасно или требовательно к ресурсам, рядом с индикатором выполнения можно разместить кнопку приостановки и/или отмены.

Убедитесь, что индикаторы выполнения, показывающие оставшееся или типичное время, используют общее время выполнения, а не время одного шага.

Корректируйте индикатор выполнения, использующий оставшееся время, всякий раз, когда происходит изменение, в результате чего операция может завершиться быстрее или медленнее.

При использовании индикатора с типичным временем выполнения, если приложению переоценило количество выполненной работы, установите длину индикатора в значение почти завершено до завершения операции. Если приложение недооценило количество выполненной работы, заполните оставшееся место индикатора, после выполнения операции.

# API reference

GtkProgressBar