ApplicationManager QML类型
应用程序模型和控制台。更多...
导入语句 | import QtApplicationManager.SystemUI 2.0 |
属性
- containerSelectionFunction : var (containerSelectionFunction属性)
- count : int (count属性)
- securityChecksEnabled : bool (securityChecksEnabled属性)
- shuttingDown : bool (shuttingDown属性)
- singleProcess : bool (singleProcess属性)
- systemProperties : var (systemProperties属性)
- windowManagerCompositorReady : bool (windowManagerCompositorReady属性)
信号
- applicationAboutToBeRemoved(string id) (applicationAboutToBeRemoved信号)
- applicationAdded(string id) (applicationAdded信号)
- applicationChanged(string id, list<string> changedRoles) (applicationChanged信号)
- applicationRunStateChanged(string id, enumeration runState) (applicationRunStateChanged信号)
- applicationWasActivated(string id, string aliasId) (applicationWasActivated信号)
- openUrlRequested(string requestId, string url, string mimeType, list<string> possibleAppIds) (openUrlRequested信号)
方法
- acknowledgeOpenUrlRequest(string requestId, string appId) (acknowledgeOpenUrlRequest方法)
- ApplicationObject application(string id) (application方法)
- ApplicationObject application(int index) (application方法)
- list<string> applicationIds() (applicationIds方法)
- list<string> abilities(string id) (abilities方法)
- bool debugApplication(string id, string debugWrapper, string document) (debugApplication方法)
- object get(string id) (get方法)
- object get(int index) (get方法)
- list<string> identifyAllApplications(int pid) (identifyAllApplications方法)
- string identifyApplication(int pid) (identifyApplication方法)
- int indexOfApplication(ApplicationObject application) (indexOfApplication方法)
- int indexOfApplication(string id) (indexOfApplication方法)
- bool openUrl(string url) (openUrl方法)
- bool rejectOpenUrlRequest(string requestId) (rejectOpenUrlRequest方法)
- bool startApplication(string id, string document) (startApplication方法)
- bool stopAllApplications(bool forceKill) (stopAllApplications方法)
- bool stopApplication(string id, bool forceKill) (stopApplication方法)
详细描述
ApplicationManager单例类型是应用程序管理器的核心。它为所有功能提供DBus和QML API。
此类型由QAbstractListModel
派生,因此可以直接作为应用程序网格视图中的模型使用。
此模型中包含以下角色:
角色名称 | 类型 | 描述 |
---|---|---|
applicationId | 字符串 | 应用程序的唯一标识符,表示为字符串(例如Browser 或com.pelagicore.music ) |
name | 字符串 | 应用程序的名称。如果可能,已经翻译为当前区域设置。 |
icon | 字符串 | 应用程序图标的URL。 |
isRunning | 布尔 | 表示应用程序运行状态的布尔值。 |
isStartingUp | 布尔 | 表示应用程序是否正在启动但尚未完全可操作的布尔值。 |
isShuttingDown | 布尔 | 表示应用程序当前是否正在关闭的布尔值。 |
isBlocked | 布尔 | 当应用程序管理器需要阻止应用程序运行时,此布尔值将被设置:这通常只在没有应用更新时发生。 |
isUpdating | 布尔 | 表示应用程序当前是否正在安装或更新的布尔值。如果为true ,可以使用updateProgress 跟踪实际进度。 |
isRemovable | 布尔 | 表示此应用程序是否可由用户删除;动态安装的所有第三方应用程序为true ,所有系统应用程序为false 。 |
updateProgress | 实数 | 当isUpdating 为true 时,查询此角色返回实际进度,以浮点值在0.0 到1.0 范围内表示。 |
codeFilePath | 字符串 | 主"可执行文件"的文件系统路径。此文件格式取决于实际运行时:对于QML应用程序,"可执行文件"是main.qml 文件。 |
categories | list | 此应用程序通过元数据文件注册的类别(目前尚在开发中)。 |
version | 字符串 | 此应用程序安装的当前版本。 |
application | Application | 底层应用程序对象,可在模型代理之外快速访问属性。 |
注意: 基于索引的API当前无法通过DBus访问。但是,基于ID的API提供了相同的功能。
导入后,您可以像下面这样使用ApplicationManager单例:
import QtQuick 2.0 import QtApplicationManager.SystemUI 2.0 ListView { id: appList model: ApplicationManager delegate: Text { text: name + "(" + applicationId + ")" MouseArea { anchors.fill: parent onClick: ApplicationManager.startApplication(applicationId) } } }
属性文档
[只读] count : int |
此属性保存可用的应用程序数量。
[只读] securityChecksEnabled : bool |
此属性保存是否启用了安全相关检查。
另请参阅 no-security。
[只读] shuttingDown : bool |
此属性用于在应用程序管理器进入其关闭阶段时通知系统UI。已防止新的应用程序启动,但系统UI可能想要在此状态下实施其他限制。
[只读] singleProcess : bool |
此属性指示应用程序管理器是在单进程模式还是多进程模式下运行。
[只读] windowManagerCompositorReady : bool |
此属性初始值为 false
,一旦 Wayland 合成器准备好接受其他进程的连接,就会变为 true
。在多进程模式下,这发生在 System UI 的主 QML 载入后隐式发生。
信号文档
applicationAboutToBeRemoved(string id) |
在通过 ApplicationInstaller 移除由 id 标识的现有应用程序之前,会发出此信号。
注意:除了正常的“低级” QAbstractListModel 信号外,应用程序管理器还将发出这些“高级”信号,以支持无法直接在 ApplicationManager 模型上运行的 System-UI:applicationAdded、applicationAboutToBeRemoved 和 applicationChanged。
注意:相应的处理函数是 onApplicationAboutToBeRemoved
。
applicationAdded(string id) |
当通过 ApplicationInstaller 安装由 id 标识的新应用程序后,会发出此信号。在发出此信号之前,模型已经更新。
注意:除了正常的“低级” QAbstractListModel 信号外,应用程序管理器还将发出这些“高级”信号,以支持无法直接在 ApplicationManager 模型上运行的 System-UI:applicationAdded、applicationAboutToBeRemoved 和 applicationChanged。
注意:相应的处理函数是 onApplicationAdded
。
当由 id 标识的应用程序上任意或多个数据角色(由 changedRoles 标记)发生变化时,会发出信号。如果 changedRoles 参数中的列表为空,则意味着应考虑所有角色都已更改。
注意:除了正常的“低级”QAbstractListModel 信号外,应用程序管理器还将为无法直接在 ApplicationManager 模型上工作的系统界面发出这些“高级”信号:applicationAdded、applicationAboutToBeRemoved 和 applicationChanged。
注意:相应的处理程序为 onApplicationChanged
。
applicationRunStateChanged(string id, enumeration runState) |
当由 id 标识的应用程序的 runState 发生变化时,将发出此信号。可能值为由 runState 在 ApplicationObject 类型中定义。
例如,此信号可以用于在多进程模式下重启崩溃的应用程序。
Connections { target: ApplicationManager function onApplicationRunStateChanged() { if (runState === Am.NotRunning && ApplicationManager.application(id).lastExitStatus === Am.CrashExit) { ApplicationManager.startApplication(id); } } }
另请参阅 Application::runState
注意:相应的处理程序为 onApplicationRunStateChanged
。
当通过 ApplicationManager API(可能通过在 aliasId 中提供的别名)以 id 标识的应用程序(重新)启动时,将发出此信号。
在这种情况下,窗口管理器应负责提升应用程序的窗口。
注意:相应的处理程序为 onApplicationWasActivated
。
当应用程序管理器被请求打开一个URL时,将发出此信号。这可能会发生,通过在应用程序中调用
- Qt.openUrlExternally,
- 在系统 UI 中调用 Qt.openUrlExternally,
- 在系统 UI 中调用 ApplicationManager::openUrl 或
- 通过 D-Bus 调用
io.qt.ApplicationManager.openUrl
。
注意:只有当连接了接收器时,才会发出此信号 - 请参阅 openUrl 了解后备行为。
此信号的接收器可以检查请求的 url 和其 mimeType。然后,它可以选择调用 acknowledgeOpenUrlRequest 从提供的 possibleAppIds 中选择,或调用 rejectOpenUrlRequest 忽略请求。在这两种情况下,都需要发送唯一标识符 requestId。不调用这些函数之一将导致内存泄漏。
注意:相应的处理程序为 onOpenUrlRequested
。
另请参阅openUrl、acknowledgeOpenUrlRequest 和 rejectOpenUrlRequest。
方法文档
指示应用管理器继续处理以打开URL的请求,该URL由requestId标识。所选择的appId必须是提供给openUrlRequested信号接收者的possibleAppIds
之一。
ApplicationObject application(string id) |
返回与给定应用程序id对应的application,如果id不存在则返回null
。
注意:返回的应用程序对象的拥有权仍然属于应用程序管理器。如果您想保存此指针,可以使用QAbstractListModel信号或applicationAboutToBeRemoved信号来得知如果对象即将在C++端被删除。
ApplicationObject application(int index) |
返回模型中给定index的application,如果索引无效则返回null
。
注意:返回的应用程序对象的拥有权仍然属于应用程序管理器。如果您想保存此指针,可以使用QAbstractListModel信号或applicationAboutToBeRemoved信号来得知如果对象即将在C++端被删除。
指示应用程序管理器使用其唯一的id启动应用程序,就像startApplication一样。应用程序是通过给定的debugWrapper启动的。可选参数document将按原样提供给应用程序 - 最常见的情况是,这用于引用要显示的文档。
返回一个表示成功的bool
值。有关更多信息,请参阅ApplicationManager::startApplication的全文档。
有关如何设置和使用这些调试包装器的详细信息,请参阅调试页面。
对象 get(int index) |
以JavaScript对象的形式检索位于index处的模型数据。请参阅角色名称,了解期望的对象字段。
如果指定的index无效,则返回空对象。
注意:如果您只想从QML访问单个属性,这会非常低效;请使用application()来直接访问应用对象的属性。
验证进程标识为pid的进程是否由应用管理器启动。
如果同一个容器进程中运行多个应用,该函数将返回所有这些应用的ID。
成功时返回包含应用ids
的列表,失败时返回空列表。
验证进程标识为pid的进程是否由应用管理器启动。
注意:如果同一个容器进程中运行多个应用,该函数将只返回第一个匹配的应用。要检索所有应用ID,请参阅identifyAllApplications()。
成功时返回应用的id
,失败时返回空字符串。
int indexOfApplication(ApplicationObject application) |
将application映射到此模型中的位置。如果指定的应用无效,则返回-1
。
尝试启动可以处理url的应用。应用管理器将首先查看URL的方案
- 如果是
file:
,将咨询操作系统的MIME数据库。它将尝试根据文件后缀或文件内容找到匹配的MIME类型。如果成功,应用管理器将使用此MIME类型查找所有声称支持它的应用(请参阅应用清单中的mimeTypes字段)。一个能够处理mp3
和wav
文件的播放器应用可以在其清单中添加此内容mimeTypes: [ 'audio/mpeg', 'audio/wav' ]
- 如果不是
file:
,应用管理器将咨询声称支持匹配的x-scheme-handler/...
MIME类型的内部应用程序数据库。要使您的网络浏览器应用处理http:
和https:
URL,您必须在应用清单中添加此信息mimeTypes: [ 'x-scheme-handler/http', 'x-scheme-handler/https' ]
如果至少有一个可能的匹配项,则取决于System UI中连接了openUrlRequested()信号:如果未连接该信号,则将从匹配集合中启动任意一个应用程序。否则,应用管理器将发出openUrlRequested信号并返回true
。收信人需要通过acknowledgeOpenUrlRequest选择一个可能的应用程序,或者通过rejectOpenUrlRequest完全拒绝请求。不调用这两个函数之一会导致内存泄漏。
如果应用程序由这两种机制之一启动,则其url将作为要打开的文档通过其ApplicationInterface提供给应用程序。
如果数据库中找到匹配项则返回true
,否则返回false
。
另请参阅openUrlRequested、acknowledgeOpenUrlRequest和rejectOpenUrlRequest。
rejectOpenUrlRequest(string requestId) |
告知应用程序管理器忽略由requestId标识的打开URL的请求。
指示应用程序管理器启动识别为其唯一id的应用程序。可选参数document将原样提供给应用程序,通常用于指向要显示的文档。如果id有效且应用程序管理器能够启动运行时插件,则返回true
。否则返回false
。请注意,即使此调用可能指示成功,应用程序也可能在以后的某个时间点无法正确启动,因为运行时插件中的实际启动过程可能异步。
stopAllApplications(bool forceKill) |
告知应用程序管理器停止所有正在运行的应用程序。forceKill参数的含义在运行时依赖于,但通常应始终首先尝试将forceKill设置为false
以允许干净的关闭。仅在最后手段的情况下,将forceKill设置为true
来杀掉卡住的应用程序。
告知应用程序管理器停止一个唯一由id识别的应用程序。forceKill参数的含义在运行时依赖于,但通常应始终首先尝试将forceKill设置为false
以允许干净的关闭。仅在最后手段的情况下,将forceKill设置为true
来杀掉卡住的应用程序。
©2019 Luxoft瑞典AB。本文件中包含的文档贡献的版权属于各自的所有者。本文件提供的文档遵照由自由软件基金会发布的《GNU自由文档许可证》第1.3版条款许可。 Qt及其相关标志是芬兰Qt公司及其它国家/地区的商标。所有其他商标均为各自所有者的财产。