Документация
ОС Аврора 5.1.1
Call.Service1
Ниже приведены фрагменты кода или же цельные файлы, которые реализуют интерфейс ru.auroraos.Call.Service1.
Объявление интерфейса
-
src/callapidbus/call1dbusobject.h:#include <QObject> #include <QtDBus/QDBusContext> #include <QtDBus/QDBusObjectPath> class Call1DBusAdaptor; class Dtmf1DBusAdaptor; class Call1DBusObject : public QObject, public QDBusContext { Q_OBJECT public: enum CallStatus { Unknown = 0, Disconnected, Dialing, Ringing, Rejecting, Accepting, Active, Held }; ... } -
src/callapidbus/callservice1dbusinterface.cpp:#include <QtDBus/QDBusReply> #include <QtDBus/QDBusError> #include <QDebug> #include "callservice1dbusinterface.h" static const QString s_callService1DBusService = QStringLiteral("org.nemomobile.voicecall"); static const QString s_callService1DBusObject = QStringLiteral("/ru/auroraos/call/service"); static const QString s_callService1DBusInterface = QStringLiteral("ru.auroraos.Call.Service1"); /*! * Конструктор инициализирует экземпляр QDBusInterface для вызовов DBus-интерфейса. * parent — родительский экземпляр QObject. */ CallService1DBusInterface::CallService1DBusInterface(QObject *parent) : QObject(parent), m_isInitialized(false) { } bool CallService1DBusInterface::isInitialized() const { return m_isInitialized; } /*! * Вызывает метод 'RegisterCallManager' DBus-интерфейса. * dbusObjectPath — путь DBus-объекта для регистрации в качестве менеджера вызовов. */ void CallService1DBusInterface::registerCallManager(const QString &dbusObjectPath) { QVariant dbusObjPathVariant = QVariant::fromValue(QDBusObjectPath(dbusObjectPath)); QDBusReply<void> reply = m_dbusInterface->call("RegisterCallManager", dbusObjPathVariant); if (!reply.isValid()) { QString message = QStringLiteral("Не удалось вызвать метод %1.RegisterCallManager(%2): %3, %4") .arg(s_callService1DBusInterface, dbusObjectPath, reply.error().name(), reply.error().message()); qWarning() << message; emit dbusErrorReceived(message); return; } qInfo() << QStringLiteral("%1.RegisterCallManager('%2') успешно вызван") .arg(s_callService1DBusInterface, dbusObjectPath); emit callManagerRegistered(); } /*! * Инициализирует экземпляр класса QDBusInterface, который будет выполнять запросы к * DBus-интерфейсу ru.auroraos.Call.Service1. */ void CallService1DBusInterface::initialize() { m_dbusInterface.reset(new QDBusInterface(s_callService1DBusService, s_callService1DBusObject, s_callService1DBusInterface, QDBusConnection::sessionBus(), this)); if (m_dbusInterface == nullptr) { QString message = QStringLiteral("DBus-интерфейс %1 не создан").arg(s_callService1DBusService); qWarning() << message; emit dbusErrorReceived(message); return; } if (!m_dbusInterface->isValid()) { QString message = QStringLiteral("DBus-интерфейс %1 недоступен") .arg(s_callService1DBusInterface) .append("\n") .append(QStringLiteral("Ошибка: %1 %2") .arg(m_dbusInterface->lastError().name(), m_dbusInterface->lastError().message())); qWarning() << message; qWarning() << "Тип ошибки:" << m_dbusInterface->lastError().type(); emit dbusErrorReceived(message); return; } qInfo() << QStringLiteral("DBus-интерфейс %1 инициализирован").arg(s_callService1DBusInterface); m_isInitialized = true; emit dbusInterfaceInitialized(); }