ApplicationIPCManager QML 类型

系统-UI与应用程序通信接口的中央注册表。更多...

导入说明import QtApplicationManager.SystemUI 2.0

方法

详细描述

此单例类型是应用程序管理器中的应用程序到系统-UI IPC 接口的中央管理器。

它只向 QML 系统UI 导出一个单一函数: registerInterface()

有关如何从客户端(应用程序)侧访问已注册的 IPC 接口的信息,请参阅ApplicationInterfaceExtension

方法说明

bool registerInterface(ApplicationIPCInterface interface, string name, var filter)

将 IPC interface 对象注册到扩展应用程序和应用程序管理器本身之间的通信 API。该 interface 对象是一个 ApplicationIPCInterface 项,在整个系统 UI 生命周期中都需要保持有效。接口的name 必须遵循 D-Bus 标准,因此它必须至少包含一个点('.') 字符(例如,io.qt.test)。作为标准、类型化的 D-Bus 接口,接口可供所有符合以下filter标准的应用程序使用(如下所述)的专用对等点 D-Bus 使用。

由于没有办法向 JavaScript 函数的参数添加类型信息,因此接口将扫描用于仅用于推导类型信息的特殊注释属性,但这些属性不导出到应用程序中。

只读属性 var _decltype_<function-name>: { "<return type>": [ "<param 1 type>", "<param 2 type>", ...] }

支持以下类型

类型DBus 类型注意
void-仅作为返回类型有效。
intINT32
string, urlSTRING将 URL 映射为纯文本字符串。
boolBOOLEAN
real, doubleDOUBLE
var, variantVARIANT也可以用于列表和映射。

以下是一个简单示例,说明如何将此类注释添加到函数定义中

readonly property var _decltype_testFunction: { "var": [ "int", "string" ] }
function testFunction(ivar, strvar) {
    return { "strvar": strvar, "intvar": intvar }
}

您可以通过 filter 参数限制接口在应用程序中的可用性:传递空 JavaScript 对象({})或使用以下可用字段名的任何组合

描述
applicationIdslist<string>可以允许使用此接口的应用程序 ID 列表。
categorieslist<string>类别名称列表(参见 info.yaml)。任何属于这些类别的应用程序都可以使用本接口。
capabilitieslist<string>应用程序功能列表(参见 info.yaml)。任何具有这些功能之一的应用程序都可以使用本接口。

所有过滤器字段必须匹配,但只考虑实际设置的字段。

import QtQuick 2.0
import QtApplicationManager.SystemUI 2.0

ApplicationIPCInterface {
    id: extension

    property bool pbool: true
    property double pdouble: 3.14

    signal testSignal(string str, variant list)

    readonly property var _decltype_testFunction: { "void": [ "int", "string" ] }
    function testFunction(foo, bar) {
        console.log("testFunction was called: " + foo + " " + bar)
    }

    Component.onCompleted: {
        ApplicationIPCManager.registerInterface(extension, "io.qt.test.interface",
                                                { "capabilities": [ "media", "camera" ] })
    }
}

如果注册成功,则返回 true,否则返回 false


©2019 瑞典Luxoft AB。本文件中包含的文档贡献归各自所有者所有。本文件提供的文档是根据自由软件基金会发布的GNU自由文档许可1.3版许可条款提供的。Qt和相应的标志是芬兰Qt公司以及其他国家的商标。所有其他商标均归各自所有者所有。