Беларусь |
Состояния, параметры, файлы и документы
Данные пользователя: библиотеки, средства выбора файлов и файловые запросы
Сейчас, когда мы тщательно изучили данные приложений и параметры приложений, мы готовы к тому, чтобы рассмотреть другую часть состояния приложения: пользовательские данные. Пользовательские данные, это все то полезное, не привязанное к приложению, что оно может использовать или создавать. Разные приложения могут работать с одними и теми же файлами, такими, как изображения и музыкальные записи, и пользовательские данные всегда остаются на устройстве, независимо от того, какие приложения на нем присутствуют.
Наша первая задача, касающаяся пользовательских данных, заключается в том, чтобы решить, где их разместить, и как получить к ним доступ. Реализация этой задачи включает в себя различные библиотеки пользовательских данных, съемные носители информации и средства выбора файлов. Использование кэша прав доступа так же важно, так как позволяет запоминать факты предоставления пользователем доступа к файлу или папке, к которым мы, в обычных условиях, не имеем программного доступа. Хорошая новость обо всех этих папках и файлах заключается в том, что работа с ними происходит с помощью те же классов StorageFolder и StorageFile, с которыми мы уже знакомы. Другая важная тема, которую мы рассмотрим, касается использования файловых запросов – наиболее богатого возможностями способа для перечисления содержимого папок и библиотек, которое предоставляет возможности для качественного визуального представления данных в элементах управления наподобие ListView.
Как мы уже видели, приложения для Магазина Windows, по умолчанию, имеют доступ лишь к собственному пакету и к папкам данных приложения. Это означает, что по умолчанию у приложения нет доступа к типичным местам хранения пользовательских файлов! Есть два способа для предоставления такого доступа:
- Объявить возможность доступа к библиотеке в манифесте.
- Позволить пользователю выбрать расположение посредством средства выбора файлов (File Picker).
Посмотрим сначала на средство выбора файлов, так как во многих случаях это все, что, на самом деле, вам понадобится! Но есть и другие сценарии, такие, как приложения, ориентированные на работу с библиотеками – при реализации которых вам нужен прямой доступ к библиотекам. Для этих целей в манифесте предусмотрено пять функциональных возможностей, как показано слева на рис. 2.6. Три из них, Библиотека музыки (Music Library), Библиотека изображений (Pictures Library) и Библиотека видео (Video Library) – предоставляют полный доступ для чтения и записи к пользовательским папкам музыки, изображений и видео. Информация об этих возможностях на странице информации о приложении в Магазине Windows и на панели параметров Разрешения, но пользователь не может управлять ими при исполнении программы. Конечно, если не вполне очевидно, зачем вы объявили эти возможности, убедитесь в том, что вы пояснили это на странице сведений о приложении. Что касается возможностей Библиотека документов (Documents Library) и Съемные носители (Removable Storage), просто объявить эти возможности недостаточно: вам так же нужно задать сопоставление с конкретными типами файлов, которыми ограничено приложение. (Возможность Библиотека документов (Documents Library) предназначена только для приложений, которые нуждаются в открытии встроенного содержимого в другом документе).
Рис. 2.6. Возможности, связанные с данными пользователя в редакторе манифеста (слева), и редакторе сопоставления типов файлов (справа). Обратите внимание на красный знак "Х", который появляется на панели Возможности (Capabilities), когда необходимы дополнительные объявления, связанные с выбранной возможностью. Красный X на панели Объявления (Declarations) показывает, что введенная информация пока не полна.
Врезка: API фоновой передачи данных
Тема, которая относится к пользовательским данным, но которую мы не будем раскрывать в подробностях до Главы 3 курса "Программная логика приложений для Windows 8, созданных с использованием HTML, CSS и JavaScript и их взаимодействие с системой", это API WinRT Windows.Networking.BackgroundTransfer (http://msdn.microsoft.com/library/windows/apps/windows.networking.backgroundtransfer.aspx). Это API позволяет вам выполнять загрузку или отправку файлов независимо от жизненного цикла приложения – то есть – делать это, когда приложение выполняется, приостановлено или полностью остановлено. Это API существует потому, что передача больших файлов на сетевые ресурсы и с них, является обычной потребностью приложений, но при подобной передаче само приложение может и не исполняться в фоновом режиме и не потреблять электроэнергию. Вместо этого приложение настраивает задачу передачи данных с помощью системных средств, и эта задача будет исполняться даже если приложение будет закрыто. Когда приложение будет запущено снова, оно может проверить статус выполнения этой задачи.
Использование средства выбора файлов
Хотя словосочетание "Средство выбора файлов" звучит не особенно шикарно, это, по-моему, одна из самых замечательных возможностей Windows 8. "Подождите минуту!", - скажете вы, "Как, элемент пользовательского интерфейса может выбирать папки и файлы. Да, это здорово!". Причина заключается в том, что используя это средство пользователь может просматривать и выбирать любые данные. Это не только то, что хранится в локальной файловой системе или в локальных сетевых хранилищах, но и те данные, которые доступны благодаря так называемым поставщикам выбора файлов (file picker providers). Эти приложения обычно содержат библиотеки данных, которые в противном случае были бы расположены на веб-сервисе, внутри собственной базы данных приложения, или даже предоставляют файлы, создаваемые по запросу, и предоставляют к ним доступ как к части локальной файловой системы.
Немного подумайте об этом (как я предлагал вам сделать в лекции 1 курса "Введение в разработку приложений для Windows 8 с использованием HTML, CSS и JavaScript"). Когда вы хотите поработать с изображением с фото-сервиса, наподобие Flickr или Picasa, что вы обычно делаете? Первым шагом является загрузка нужного файла и сохранение его в локальной файловой системе с помощью некоторого приложения, которое предоставляет вам интерфейс к веб-сервису (это может быть веб-приложение). Затем вы можете выполнить желаемые правки и модификации, после чего обычно нужно снова загрузить файл в сервис. На самом деле, все не так уж и плохо, за исключением того, что вы тратите время на переключение между разными приложениями, и, очевидно, загрязняете систему множеством временных файлов, взаимоотношения которых с вашими файлами в Интернете скоро будут забыты.
Если у вас есть поставщик выбора файлов, который позволяет получать прямой доступ к подобным файлам, и для записи, и для чтения, все эти дополнительные шаги становятся ненужными, равно как и становится ненужным переключение между приложениями. Это означает, что поставщик выбора файлов фото-сервиса открывает другим приложениям возможность загружать, править и сохранять онлайновое содержимое так, как если бы оно находилось в локальной файловой системе. Приложениям, принимающим данные, не нужно ничего знать о подобных веб-сервисах, и они автоматически получают доступ к тем большему количеству сервисов, чем больше приложений-поставщиков будет установлено. Более того, поставщики могут представлять данные, которые обычно не хранятся в виде файлов так, если бы они были файлами. Например, приложение Camera (Камера) в Windows 8 – это поставщик выбора файлов, который позволяет вам активировать камеру, сделать снимок и затем возвращает этот снимок так, если бы он был взят из файловой системы. Все это дает пользователям естественные средства для работы с данными, и неважно, где эти файлы расположены. Как я и сказал, я думаю, что это – замечательная возможность!
Мы поговорим подробнее о поставщиках выбора файлов в лекции 1 курса "Программная логика приложений для Windows 8, созданных с использованием HTML, CSS и JavaScript и их взаимодействие с системой". Наша более близкая цель заключается в изучении средств выбора файлов для получения объектов StorageFile или StorageFolder.
Пользовательский интерфейс средства выбора файлов
Прежде чем смотреть на код, познакомимся поближе с пользовательским интерфейсом средства выбора файлов. Когда средство запущено, вы увидите его полноэкранное представление ( рис. 2.7), которое представляет средство выбора файлов в режиме выбора одного элемента, данные отображаются в виде миниатюр. В подобном режиме просмотра элементы отображаются в виде значков в элементе управления ListView, со всплывающим элементом управления, содержащим подробную информацию, который появляется, когда указатель мыши зависает над элементом. В некотором смысле, средство выбора файлов похож на приложение, запущенное для определенных целей, и оно создано для того, чтобы быть привлекательным и иммерсивным, как и прочие приложения для Магазина Windows.
На рис. 2.7. заголовок Pictures (Изображения) показывает текущее расположение, открытое в средстве выбора файлов. Выпадающий список Sort By Name (Сортировать по имени) позволяет вам выбирать другие критерии сортировки, так же, как выпадающий список в области заголовка Files (Файлы) позволяет вам выбирать другое расположение, как показано на рис. 2.8. Это расположения включают в себя другие области файловой системы (за исключением защищенных областей, наподобие папок Windows и Program Files), сетевые расположения и другие приложения – поставщики информации.
Рис. 2.7. Средство выбора файлов в режиме выбора одного элемента, открытое для Библиотеки изображений в режиме просмотра миниатюр, со всплывающим элементом подсказки, показанным для одного из элементов (для головы Сфинкса), в то же время рамка выделения присутствует у другого элемента (Тадж-Махал)
Рис. 2.8. Выбор другого расположения для просмотра файлов. Обратите внимание на то, что приложения-поставщики перечислены вместе с расположениями файловой системы
Выбор другого расположения в файловой системе переносит нас туда, конечно, из него можно перейти в другие папки. Выбор приложения, с другой стороны, запускает это приложение посредством контракта поставщика выбора файлов. В подобном случае появляется пользовательский интерфейс, предоставляемый системой (но настраиваемый приложением), наподобие того, который показан на рис. 2.9. Здесь выпадающий список около заголовка позволяет вам переключаться к другим расположениям средства выбора файлов, и кнопки Открыть (Open) и Отменить (Cancel) работают так, как и должны для того, что выделено в средстве выбора файлов. Коротко говоря, приложение-поставщик, на самом деле, лишь расширение пользовательского интерфейса средства выбора файлов, но очень мощное расширение. И в итоге, подобное приложение просто возвращает соответствующий объект StorageFile, который задает его связь с исходным приложением. Много всего происходит всего лишь при одном вызове API средства выбора файлов!
Рис. 2.9. Приложение для работы с камерой, запущенное с помощью средства выбора файлов. Откуда взялся этот поползень?
У средства выбора файлов есть пара других режимов. Один из них позволяет выделять сразу несколько файлов – даже из разных приложений! – как показано на рис. 2.10, где все выделенные файлы помещены в корзину элементов (basket) в нижней части экрана. Средство выбора так же можно использовать для выбора папок, как показано на рис. 2.11. (в данном случае приложения-поставщики не показаны), или место для сохранения файла и его имя ( рис. 2.12.).
Рис. 2.10. Средство выбора файлов в режиме множественного выбора с корзиной выделенных элементов в нижней части. Здесь так же показан режим просмотра в виде "списка", что задается независимо от режима выбора файлов