Примеры

В примерах ниже демонстрируется использование различных возможностей данного API.

Вызов метода в объекте сессионной шины

В данном фрагменте кода происходит обращение к демону профилей и установка текущего профиля в значение 'silent'.

 import QtQuick 2.0
 import Nemo.DBus 2.0

 Item {
     DBusInterface {
         id: profiled

         service: 'com.nokia.profiled'
         iface: 'com.nokia.profiled'
         path: '/com/nokia/profiled'
     }

     Component.onCompleted: {
         // Вызовем метод "set_profile"
         profiled.call('set_profile', ['silent']);
     }
 }

Вызов метода и получение возвращаемого значения

Поскольку вызовы методов являются асинхронными, нам потребуется предоставить функцию обратного вызова, которая будет вызываться после получения результата вызванного метода:

 import QtQuick 2.0
 import Nemo.DBus 2.0

 Item {
     DBusInterface {
         id: profiled

         service: 'com.nokia.profiled'
         iface: 'com.nokia.profiled'
         path: '/com/nokia/profiled'
     }

     Component.onCompleted: {
         // Вызовем метод "get_profile" без аргументов и, 
         // когда он вернет значение, вызовем переданную функцию обратного вызова
         profiled.typedCall('get_profile', [], function (result) {
             // Этот код будет исполнен после получения результата вызванного метода
             console.log('Получен профиль: ' + result);
         });
     }
 }

Прослушивание сигналов объекта D-Bus

 import QtQuick 2.0
 import Nemo.DBus 2.0

 Item {
     DBusInterface {
         id: profiled

         service: 'com.nokia.profiled'
         iface: 'com.nokia.profiled'
         path: '/com/nokia/profiled'

         signalsEnabled: true

         function profile_changed(changed, active, profile, values) {
             if (changed && active)
                 console.log("Профиль изменен на:", profile)
         }
     }
 }