В этой статье хочу рассказать о новых возможностях версии 3.4.1, касающихся работы с панелью задач Windows 7.
В этой версии мы реализовали поддержку всех основных возможностей панели задач новых ОС: JumpList-меню, Overlay-значки, ProgressBars. Все новые возможности реализованы максимально гибко, полностью настраиваются из конфигурации. И так по-порядку.
JumpList-меню
JumpList - некий набор команд, быстрых действий приложения, доступных для вызова из панели задач. Примечательно также то, что любую из этих команд можно вызвать даже если приложение не запущено, но его иконка прикреплена (pinned) на панель задач. Если при вызове команды приложение не запущено, оно сразу же запускается и выполняется выбранная команда.
Как это реализовано в Terrasoft
Так выглядит построенное JumpList-меню приложения Terrasoft:
Задание и настройка команд меню, категорий, названий, иконок и выполняемых действий реализовано максимально гибко и выполняется исключительно из конфигурации. При этом любой клиент сможет настроить себе такое меню по своим требованиям.
Настройка команд
Для задания меню нужно вызвать метод, где amJumpActionsMenu специально подготовленное ActionMenu
System.UpdateJumpListMenu(amJumpActionsMenu);
Настроенное ActionMenu: меню содержит категории - подменю, в каждой из категорий необходимые команды - вложенные элементы. Это меню может создаваться либо изменяться на этапе выполнения, для применения изменений в JumpList, нужно также вызывать метод System.UpdateJumpListMenu(amJumpActionsMenu);
Каждому элементу меню задается Имя, Иконка (изображение из 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 при поиске по конфигурации:
Состояние занятости будет отображаться между вызовами
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.
Приятной разработки :).