QML-тип DBusInterface
Предоставляет доступ к службе на шине D-Bus. Подробнее…
| Строка импорта: | import Nemo.DBus 2.0 |
Свойства
- bus : enum
- iface : string
- path : string
- service : string
- signalsEnabled : bool
Сигналы
Методы
- void call(string method, variant arguments, variant callback, variant errorCallback)
- variant getProperty(string name)
- void setProperty(string name, variant value)
- bool typedCall(string method, variant arguments, variant callback, variant errorCallback)
Подробное описание
Объект типа DBusInterface используется для вызова методов объектов системной и
сессионной шин, а также для получения сигналов (см. подробнее свойство
signalsEnabled) и чтения свойств этих объектов.
Тип DBusInterface является удобным способом получения доступа к объектам через D-Bus.
Значения свойств и аргументы методов автоматически конвертируются между QML/JS и D-Bus.
Управление данным процессом ограничено. Для более сложных сценариев рекомендуется
использовать C++ и модуль Qt D-Bus.
Обработка сигналов D-Bus
При значении true свойства signalsEnabled,
сигналы целевого объекта будут подключены к одноимённым методам объекта.
Пусть для примера имеется объект D-Bus, в котором заданы служба org.example.service,
путь /org/example/service и интерфейс org.example.intf, а также два сигнала
UpdateAll и UpdateOne. Организовать обработку этих сигналов можно следующим
образом:
DBusInterface {
service: 'org.example.service'
path: '/org/example/service'
iface: 'org.example.intf'
signalsEnabled: true
function updateAll() {
// Метод будет вызван при получении сигнала "UpdateAll"
}
function updateOne(a, b) {
// Метод будет вызван при получении сигнала "UpdateOne"
}
}
Примечание: в D-Bus имена сигналов обычно начинаются с заглавной буквы, но в QML имена
методов объектов должны начинаться со строчной буквы. Плагин выполняет соединение таких
сигналов и методов (например, в D-Bus сигнал UpdateOne будет обрабатываться
QML/JavaScript-методом updateOne).
Вызов методов D-Bus
Дистанционные методы D-Bus могут вызываться посредством методов call() или typedCall(). Метод call() предоставляет более простой API, который поддерживает только простые типы данных и при этом отбрасывает возвращаемое значение вызванного метода. Метод typedCall() поддерживает большее количество типов данных, а также функции обратного вызова (callbacks) в случае успеха и неудачи вызванного метода.
Допустим, что имеется объект D-Bus, в котором заданы служба org.example.service, путь
/org/example/service и интерфейс org.example.intf, а также имеются два метода:
RegisterObjectс одним параметром object path и возвращаемым значением типаbool;Updateбез параметров.
Организовать вызов этих методов можно следующим образом:
DBusInterface {
service: 'org.example.service'
path: '/org/example/service'
iface: 'org.example.intf'
// Локальная функция для вызова дистанционного метода RegisterObject
function registerObject(object) {
typedCall('RegisterObject',
{ 'type': 'o', 'value': '/example/object/path' },
function(result) { console.log('call completed with:', result) },
function(error, message) { console.log('call failed', error, 'message:', message) })
}
// Локальная функция для вызова дистанционного метода Update
function update() {
call('Update', undefined)
}
}
Описание свойств
bus : enum
Определяет, сессионную или системную шину D-Bus нужно использовать. Возможные значения:
DBus.SessionBus— сессионная шина D-Bus;DBus.SystemBus— системная шина D-Bus.
iface : string
Содержит интерфейс.
path : string
Содержит путь, по которому можно получить доступ к объекту.
service : string
Содержит имя службы для подключения.
signalsEnabled : bool
Определяет, будет ли данный объект прослушивать сигналы, испускаемые дистанционным объектом D-Bus. Подробнее см. раздел Обработка сигналов D-Bus.
Описание сигналов
propertiesChanged()
Испускается при изменении свойств объекта D-Bus (только при условии, что сам объект D-Bus испускает сигналы при изменении значений своих свойств). В настоящий момент сигнал не уточняет, какие именно свойства изменились и каковы их новые значения.
Данный QML-сигнал был представлен в версии 2.0.8.
Описание методов
void call(string method, variant arguments, variant callback, variant errorCallback)
Вызывает метод D-Bus с именем method применительно к объекту с аргументами
arguments, заданными либо как отдельное значение, либо как массив. Для метода без
аргументов в качестве значения этого параметра передаётся константа undefined.
После возврата значения вызванного метода это значение можно передать в качестве
единственного параметра функции обратного вызова с именем callback. Аргумент
callback является необязательным. При значении undefined (по умолчанию)
возвращаемое значение не будет учитываться. Если вызываемый метод завершился неудачей,
будет вызвана функция обратного вызова с именем errorCallback при условии, что
значением этого параметра не является константа undefined (по умолчанию).
Примечание: данный метод поддерживает простые типы данных; если сигнатура
дистанционного метода не соответствует сигнатуре, указанной в параметре arguments,
вызов метода завершится неудачей. Используя метод
typedCall(), можно явным образом указать тип
каждого элемента в параметре arguments.
variant getProperty(string name)
Возвращает свойство D-Bus с именем name для указанного объекта.
void setProperty(string name, variant value)
Устанавливает свойству D-Bus с именем name значение value.
Данный QML-метод был представлен в версии 2.0.0.
bool typedCall(string method, variant arguments, variant callback, variant errorCallback)
Вызывает на объекте метод D-Bus с именем method с аргументами arguments. Каждый
параметр описывается в виде объекта:
{
'type': 'o'
'value': '/org/example'
}
Здесь type — это объект типа D-Bus, значение value которого должно быть задано.
Значением параметра arguments может быть как одиночный объект, описывающий параметр, так
и массив объектов.
После возврата значения вызванного метода это значение можно передать в качестве
единственного параметра функции обратного вызова с именем callback. Аргумент
callback является необязательным. При значении undefined (по умолчанию)
возвращаемое значение не будет учитываться. Если вызываемый метод завершился неудачей,
будет вызвана функция обратного вызова с именем errorCallback при условии, что
значением этого параметра не является константа undefined (по умолчанию).