QML-тип ShareProvider
Принимает файлы и оповещает о передаче данных другим приложением. Подробнее…
Строка импорта: | import Sailfish.Share 1.0 |
Свойства
- capabilities : list
- method : string
- registerName : bool
Сигналы
- triggered(list resources)
Подробное описание
Принимает отправленные файлы и с помощью ShareProvider::triggered
оповещает о передаче данных другим приложением.
Для реализации обмена данными с приложением необходимо использовать данный элемент. Следует определить метод отправки в desktop-файле. Например:
[Desktop Entry]
Type=Application
Name=My application
Icon=my-application
Exec=my-application
X-Share-Methods=images;
[X-Application]
ApplicationName=MyApplication
OrganizationName=org.example
Permissions=Internet;UserDirs;RemovableMedia
[X-Share Method images]
Description=Send to friends
Capabilities=images/png;images/jpeg
SupportsMultipleFiles=yes
Изменения, которые необходимо внести в приложение, — это определение методов отправки и добавление их списка.
В разделе X-Application
необходимо определить соответствующие разрешения для приложения,
зависящие от расположения ожидаемых файлов.
Общие для всех приложений файлы хранятся на устройстве в каталогах,
определённых разрешением UserDirs
либо одним из более конкретных разрешений каталогов.
Таким же образом с помощью разрешения RemovableMedia
могут быть доступны файлы,
хранящиеся на карте памяти.
Если принимающее приложение не имеет доступа к файлу отправляющего приложения,
передача файла не гарантируется.
Метод отправки должен быть указан в ключе X-Share-Methods
и иметь свой собственный раздел.
В последующем в диалоговом окне будет отображаться информация в виде краткого описания
метода отправки.
Локализация осуществляется с помощью ключей в desktop-файле.
Например, Description[ru]
будет определять русскоязычную версию Description
,
которая загружается, когда на устройстве установлен русский язык.
Если подходящая переведённая версия не может быть найдена,
по умолчанию используется нелокализованная версия.
Необходимо обработать регистрацию имени D-Bus на сеансовой шине в приложении.
Чтобы действия выполнялись последовательно, необходимо использовать средства C++.
Во избежание состояния «гонки» при регистрации объектов на D-Bus
не следует использовать DBusInterface
.
Пример:
int main(int argc, char *argv[])
{
QScopedPointer<QGuiApplication> app(SailfishApp::application(argc, argv));
QScopedPointer<QQuickView> view(SailfishApp::createView());
// ...
view->setSource(SailfishApp::pathToMainQml());
// После загрузки QML регистрируется сервис
QDBusConnection::sessionBus().registerService("org.example.MyApplication");
return app->exec();
}
Можно поместить ShareProvider
непосредственно под ApplicationWindow
и определить в нём
то же значение имени метода.
Например:
ApplicationWindow {
id: root
// ...
ShareProvider {
method: "images"
capabilities: ["image/png", "image/jpeg"]
onTriggered: {
root.activate() // Показать окно
// Передаёт ресурсы для обработки в коде. Диалоговое окно позволяет запросить
// у пользователя дополнительную информацию, прежде чем работать с данными.
var dialog = pageStack.push("SendPicturesDialog.qml", { 'resources': resources })
}
}
}
Можно зарегистрировать несколько методов отправки,
определив несколько разделов X-Share Method
и элементов ShareProvider
.
Необходимо использовать отличающиеся друг от друга имена методов для каждого раздела,
после чего использовать те же имена в соответствующем компоненте QML.
Необходимо проверять все полученные ресурсы перед их использованием.
Описание свойств
capabilities : list
Список MIME-типов, которые принимает метод отправки.
Если требуется принудительно проверять получаемые MIME-типы при отправке, следует установить
для этого параметра то же значение, что и для X-Share Method <method>/Capabilities
.
Например, если Capabilities
— image/png;image/jpeg
,
то значением свойства будет [«image/png», «image/jpeg»]
.
Проверка MIME-типов не будет выполняться, если:
- свойство не заполнено;
- установлено значение
undefined
; - или один из типов имеет значение
*
.
Не следует доверять тому, что содержимое ресурса соответствует заявленному MIME-типу.
Компонент только проверяет, соответствует ли получаемый MIME-тип
установленному здесь значению capabilities
.
См. также ShareAction::mimeType.
method : string
Имя метода отправки, определённое в desktop-файле.
Необходимо установить методу то значение, которое указано в списке X-Share-Methods
и в имени раздела X-Share Method
в desktop-файле приложения.
registerName : bool
Для автоматической регистрации имени на сессионной шине D-Bus,
необходимо установить свойству значение true
.
Это применимо только для простых случаев использования, т. е. когда в приложении имеется
только один ShareProvider
, и оно не предоставляет сервисы D-Bus для чего-либо ещё.
В противном случае требуется зарегистрировать имя в C++ после загрузки компонентов ShareProvider
.
Описание сигналов
triggered(list resources)
Данный сигнал испускается при использовании метода отправки.
Обработчиком сигнала является функция onTriggered
.
Аргумент представляет собой список ресурсов, которые были предоставлены приложению.
Дополнительные сведения о ресурсах см. в разделе ShareResource.