Поиск
Функция поиска так распространена среди приложений, что разработчики Windows 8 решили предоставить системный интерфейс для поиска по ключевым словам (с встроенной поддержкой редактора методов ввода (Input Method Editor) среди чудо-кнопок Общий доступ, Устройства и Параметры на панели чудо-кнопок, как можно видеть на рис. 2.1. Это означает, что приложениям не нужно (и обычно не следует) предоставлять собственный интерфейс для поиска. И, пользуясь средствами этого контракта, пользователь не только может осуществлять поиск по приложению переднего плана, но и очень просто и быстро осуществлять поиск по другим приложениям без необходимости выходить из текущего режима работы и запускать эти приложения. И, потому что другие приложения могут выполнять поиск по содержимому, которое необязательно содержится на вашем компьютере, чудо-кнопка Поиск является связующим звеном между данными в вашей файловой системе и остальным миром. Весьма мощная возможность!
Наличие чудо-кнопки Поиск так же подразумевает то, что пользователю никогда не придется явным образом запускать ваше приложение для того, чтобы выполнять поиск по нему. Простое изменение целевых объекты поиска в панели поиска приводит к тому, что целевые приложения запускаются и у них запрашивается поиск по введенным ключевым словам. Это же позволяет контракту Поиск работать даже в том случае, если текущее приложение переднего плана не поддерживает его – целевым объектом поиска становится первое приложение в списке.
Совет. Если вам нужно знать, на какой стороне экрана появляется панель чудо-кнопки Поиск, чтобы вы могли разместить элементы управления на странице результатов без перекрытия, проверьте свойство Windows.UI.Application-Settings.SettingsPane.edge (http://msdn.microsoft.com/library/windows/apps/windows.ui.applicationsettings.settingspane.edge.aspx ).
Контракт Поиск, который все это делает, составлен из набора взаимодействий между пользовательским интерфейсом, предоставленным Windows и целевым приложением поиска. (В данном разделе, когда я упоминаю целевое приложение, я имею в виду приложение, по которому осуществляется поиск, а не то, которое участвует в операции общего доступа к данным). При этом взаимодействии ключевые слова (даже если они не заданы) передаются приложению, когда пользователь нажимает клавишу Enter, щелкает по значку в правой части поля ввода или меняет приложение. Взаимодействие так же позволяет целевому приложению предоставить предполагаемые варианты запросов, и варианты результаты поиска (с изображениями), которые появляются непосредственно в панели поиска, как показано на рис. 2.2.
увеличить изображение
Рис. 2.1. Панель поиска, активированная посредством чудо-кнопки Поиск, с результатами, показанными для приложений Games (Игры) и Music (Музыка). Как и в случае с Общим доступом, пользователь может управлять тем, какие приложения здесь будут отображаться с помощью настроек, расположенных по адресу Изменение параметров компьютера > Поиск (Change PC Settings > Search). Там же пользователь может очистить историю поиска и настроить некоторые другие параметры пользовательского интерфейса
Поиск должен быть спроектирован так, чтобы он работал с любыми данными, с которыми может работать приложение, являются ли они локальными или онлайновыми (или и теми и другими(. Это, на самом деле, основная задача – осуществлять поиск по всем местам, куда есть доступ у приложения. По этой причине Microsoft настоятельно рекомендует, чтобы приложения не предоставляли своего собственного пользовательского интерфейса для поиска (который отвлекает пользователя от содержимого приложения), если только это не является основной функцией приложения, и если только не требуются дополнительные критерии поиска. В противном случае, лучше всего позволить пользователю начать поиск с чудо-кнопки, а затем фильтровать, сортировать и организовывать результаты поиска в приложении, посредством команд на полотне приложения или в панели приложений. С другой стороны, чудо-кнопка Поиск не предназначена для организации поиска по странице. Таким образом, ожидается, что приложение предоставит свои собственные элементы управления для выполнения поиска по странице и выделения уже отображаемых результатов (так работает функция поиска по странице в браузере). Подробности об этих вопросах дизайна можно найти в материале "Руководство и контрольный список для поиска" ( http://msdn.microsoft.com/library/windows/apps/hh465233.aspx).
Рис. 2.2. Предложеные целевым приложением варианты запросов (слева) и предложенные варианты результатов поиска (справа) отображаются непосредственно в панели поиска
При поиске по приложению происходит перенаправление на страницу результатов поиска, как показано на рис. 2.1., что активирует приложение в том же скриптовом контексте, в котором оно находится при нормальном запуске. Опять же, если приложение нужно запустить для обслуживания поискового контракта, оно будет запущено со страницей поиска (мы скоро рассмотрим этот механизм). Прикосновение к результату при навигации по результатам приведет к переходу к странице с подробными сведениями о результате. Конечно, если приложение уже выполняется, когда происходит обращение к нему из интерфейса чудо-кнопки Поиск, кнопка Назад страницы результатов должна осуществлять переход к той странице, на которой до этого находился пользователь. Даже если приложение запущено специально для обслуживания нужд чудо-кнопки Поиск, полезно предоставить пользователю средства навигации на домашнюю страницу, особенно если на странице поиска нет результатов, посредством которых пользователь может перемещаться по приложению.
Посмотрим на основные взаимодействия с контрактом Поиск, после чего рассмотрим расширенные возможности поиска: варианты запросов, варианты результатов, и функция ввода для поиска (type to search).
Настройки поиска в манифесте приложения и шаблон элемента контракта "Поиск"
Существование приложения в роли целевого приложения поиска, начинается, как и в случае с другими контрактами, в манифесте приложения, на закладке Объявления (Declarations), как показано на рис. 2.3.
Рис. 2.3. Страница объявления параметров поиска в Visual Studio. Параметры в разделе App Settings для приложений на HTML/JavaScript не заполняются
Так как поиск не привязан к какому-то определенному формату данных (как привязан общий доступ), все, что вам нужно – это задать начальную страницу поиска, которая отделена от остального приложения. В отличие от контракта общего доступа, поисковый контракт гораздо сильнее интегрирован с навигацией по приложению: когда пользователь касается одного из результатов на странице результатов поиска, осуществляется переход на соответствующую страницу приложения, как если бы пользователь прикоснулся к тому же элементу в каком-нибудь другом списке. Похожим образом, если пользователь нажимает на кнопку Назад на странице результатов, его следует перенаправить на страницу, на которой он был до того, как воспользовался чудо-кнопкой Поиск. По этой причине активация приложения посредством поискового контракта обычно обрабатывается с помощью события activated основного приложения. Мы увидим это в следующем разделе.
Простой способ добавить поддержку контракта Поиск заключается в использовании Шаблона элемента контракта "Поиск" в Visual Studio и Blend. (Его можно увидеть чуть выше шаблона элемента для контракта общего доступа на рис. 2.4). Если вы щелкните правой кнопкой по проекту и выберете команду Добавить > Создать элемент (Add > New Item), или воспользуетесь командой меню Проект > Создать новый элемент (Project > Add New Item), вы сможете выбрать Шаблон элемента контракта "Поиск" из списка шаблонов. Эта команда добавит объявление о поддержке поискового контракта в манифест, добавит три файла элемента управления страницы (.html, .js и .css) для страницы результатов поиска. Внешний вид страницы не особенно интересен, чтобы его показывать, так как код шаблона очень сильно полагается на работу с полученными реальными данными. Несмотря на это, шаблона дает вам отличную структуру, с которой можно работать, включая рекомендованный пользовательский интерфейс для обеспечения фильтрации и так далее. Некоторые дополнительные подробности можно найти в материале "Добавление шаблона элемента контракта "Поиск" (http://msdn.microsoft.com/library/windows/apps/hh923025.aspx ).