Публикация

Terrasoft 3.4.1: Работа с панелью задач Windows 7

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

В этой версии мы реализовали поддержку всех основных возможностей панели задач новых ОС: JumpList-меню, Overlay-значки, ProgressBars. Все новые возможности реализованы максимально гибко, полностью настраиваются из конфигурации. И так по-порядку.

JumpList-меню

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

Как это реализовано в Terrasoft

Так выглядит построенное JumpList-меню приложения Terrasoft:
Меню

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

Настройка команд

Для задания меню нужно вызвать метод, где amJumpActionsMenu специально подготовленное ActionMenu

    System.UpdateJumpListMenu(amJumpActionsMenu);

Настроенное ActionMenu: меню содержит категории - подменю, в каждой из категорий необходимые команды - вложенные элементы. Это меню может создаваться либо изменяться на этапе выполнения, для применения изменений в JumpList, нужно также вызывать метод System.UpdateJumpListMenu(amJumpActionsMenu);
Настройка ActionMenu

Каждому элементу меню задается Имя, Иконка (изображение из ImageList размером 16х16) и обязательно Тэг. По спецификации Windows, выполняемая команда элемента JumpList должна быть обычной shell-командой. Именно в Тэге элемента задается shell-команда выполняемого действия.

Примеры shell-команд, которые можно задавать в Тэге элемента:
1. Команда "Перейти на сайт Terrasoft" - http://www.terrasoft.ru/
2. "Перейти в раздел Задачи" - terrasoft://goto/wnd_TasksWorkspace/ - по аналогии можно перейти в любой раздел
3. "Глобальный поиск" - terrasoft://open/wnd_GlobalSearchResults/ - по аналогии можно открыть любое другое окно
4. При необходимости можно в конфигурации реализовать обработку других команд (кроме goto и open)
5. Любые другие shell-команды, запуск любой программы с параметрами, открытие файла и т.д. В итоге это может быть любая команда.

Overlay-значки

Overlay - мини-иконки, которые отображаются внизу в правом углу основной иконки приложения в панели задач. Они могут служить для указания состояние приложения: разорвано соединение, ошибка приложения, предупреждение, есть новые напоминания и другое.

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

Так выглядит иконка приложения при открытом окне быстрого поиска (устанавливается ядром):
Иконка быстрого фильтра

Так выглядит иконка Terrasoft если у пользователя есть новые напоминания (устанавливается из конфигурации):
Напоминания

Пример задания из конфигурации:

System.SetOverlayIcon(ImageList, 'RemindingIcon', 'Some Description');

ProgressBars

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

Например, при переходе в раздел и вычитывании данных на кнопке приложения отображается "занятось приложения", а при выполнении синхронизации с MS Outlook прогресс выполнения из окна синхронизации дублируется на кнопку в панели задач.

Так выглядит иконка TSAdmin при поиске по конфигурации:
ProgressBar

Состояние занятости будет отображаться между вызовами

System.BeginProcessing(); и System.EndProcessing();

из конфигурации. А прогресс состояния будет автоматически отображаться, если на окне есть активный ProgressBar.

Иконка в трее

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

Теперь из конфигурации можно установить одну или более иконок в системном трее:
Иконка в трее

Как это реализовано

Для этой задачи реализован новый невизуальный компонент окна TrayIcon и несколько вспомогательных методов глобального объекта System.

Управляя свойствами компонента TrayIcon можно показать, скрыть, изменить изображение (берется из назначенного ImageList'a в конфигурации) иконки в трее. Также у этого объекта есть контекстное меню (PopupMenu), с помощью которого может быть реализована любая функциональность по управлению приложением. На текущий момент реализован минимальный набор функций в меню основной трей-иконки: свернуть приложение в трей, восстановить, сворачивать в трей при сворачивании главного окна Terrasoft и выход :):
Контекстное меню

У TrayIcon есть также и события OnClick, OnDblClick. В базовой логике на двойной клик по иконке назначено сворачивание\разворачивание приложения в трей.

Для сворачивания\разворачивания приложения в трей разработан метод:

System.ToggleApplication();

Заключение

Данная функциональность была разработана в рамках Проекта 10%. Спасибо всем, кто участвовал в разработке новых возможностей. Надеюсь моя статья не была слишком скучной и материал будет полезен всем, кто работает с Terrasoft 3.x.

Приятной разработки :).

Нравится

Поделиться

5 комментариев

Хорошая новость. Теперь пора осваивать фичи Windows 8.:smile:

Наполнение System.UpdateJumpListMenu запоминается системой, его не нужно инициализировать при каждом запуске? Там не может быть выпадающих подменю, только группировка?

TrayIcon работает и в XP?

А когда на 3.4.1 переходить то уже можно будет? :smile:

"Зверев Александр" написал:Наполнение System.UpdateJumpListMenu запоминается системой, его не нужно инициализировать при каждом запуске? Там не может быть выпадающих подменю, только группировка?

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

"Зверев Александр" написал:TrayIcon работает и в XP?

Да, и в Windows 2000 тоже

"Александр Кудряшов" написал:

А когда на 3.4.1 переходить то уже можно будет?


Точной информации пока нет, сейчас 3.4.1 в стадии активной разработки и тестирования.

Сворачиваем приложение.
Нажимаем по кнопке панели задач, выводим меню, выбираем Создать задачу.
Задача появляется в фоновом виде. Логично было бы вывести задачу перед всеми окнами.

Показать все комментарии