Skip to content

Commit f06bd76

Browse files
52cybdeepin-bot[bot]
authored andcommitted
docs: update v25 dcc interface documentation
更新 V25 DCC 接口文档,更正插件的安装路径,补充部分关键类的属性和接口说明 Log: 更新插件文档
1 parent 35b0cb0 commit f06bd76

1 file changed

Lines changed: 69 additions & 7 deletions

File tree

docs/v25-dcc-interface.zh_CN.md

Lines changed: 69 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
7. 插件支持多语言,支持多语言切换
2020
8. 插件显示禁用支持统一配置。配置修改立即生效
2121
## V25控制中心插件安装路径必要说明
22-
1. V25控制中心插件安装路径为`${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.0`
22+
1. V25控制中心插件安装路径为`${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.1`
2323
2. 该路径下插件以单个文件夹形式存在,文件夹名为插件名,文件夹内为插件文件,假设插件名为example,则插件文件夹内容为:
2424
```bash
25-
${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.0/example/
25+
${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.1/example/
2626
├── qmldir
2727
├── libexample_qml.so
2828
└── example.so
@@ -43,13 +43,14 @@ ${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.0/example/
4343
5. 将example.so导出的对象设置为dccData,加载ExampleMain.qml。此时,ExampleMain.qml中可以使用dccData.xxx()调用example.so导出的函数
4444
6. 加载完成,将DccObject对象插入到模块树中
4545
## V25控制中心插件开发必要说明
46-
1. 控制中心有一个option,可以用来加载一个文件夹下的插件,比如一般插件会放置到`build`文件夹下,这时候可以`dde-control-center --spec ./lib/plugins_v1.0`来加载单独一个插件进行调试。另外提醒,调试时候不要使用asan,因为没有使用asan的控制中心无法加载使用了asan编译的插件
46+
1. 控制中心有一个option,可以用来加载一个文件夹下的插件,比如一般插件会放置到`build`文件夹下,这时候可以`dde-control-center --spec ./lib/plugins_v1.1/`来加载单独一个插件进行调试。另外提醒,调试时候不要使用asan,因为没有使用asan的控制中心无法加载使用了asan编译的插件
4747
2. 控制中心插件加载是在线程中,但最终会将插件对象移到主线程。所以example.so构造函数中创建的对象需要在example.so导出类的树结构中(即子对象的父对象或祖先对象是example.so导出类),否则不会被移动到主线程,导致其中信号槽线程等不到,无法正常使用。
4848
3. example.so导出类是唯一的,插件中不建议使用单例,可在example.so导出类中创建一个单例对象
4949
## V25控制中心开发接口说明
5050
控制中心导出的qml类有:
5151
### 关键类
5252
#### DccObject
53+
控制中心的树形结构的数据节点,可表示界面的一个菜单项或功能项。
5354
| 属性名称 | 说明 | 备注 |
5455
|---|---|---|
5556
| name | 名称 | 作为唯一id使用,结合父项的name组成url,用于定位跳转、配置隐藏禁用等,由字符、数字组成,不建议有符号空格,不可有‘/’(url分隔符,会影响解析) |
@@ -64,6 +65,7 @@ ${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.0/example/
6465
| visibleToApp | 可见 | 只读,包含配置与visible的结果,与控件显示关联 |
6566
| enabledToApp | 启用 | 只读,包含配置与enabled的结果,与控件状态关联 |
6667
| canSearch | 可搜索 | 默认true |
68+
| children | 子对象 | 只读,获取子控件列表 |
6769
| backgroundType | 背景样式 | 默认AutoBg |
6870
| pageType | 界面类型 | Menu、Editor、Item等,影响page显示方式,取值范围:0-255 |
6971
| page | 界面控件 | |
@@ -73,7 +75,8 @@ ${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.0/example/
7375
|---|---|---|
7476
| active | 激活 | backgroundType为Clickable时,点击控件出发,参数为空。DBus的ShowPage方法出发,如:ShowPage("aa/bb?param=1"),则aa/bb项会收到active("param=1")信号 |
7577
| deactive | 停用 | 页面退出时触发 |
76-
#### DccApp 全局单例
78+
#### DccApp
79+
全局单例,管理控制中心的整个模块树
7780
| 函数 | 说明 | 备注 |
7881
|---|---|---|
7982
| root | 根结点 | 属性 |
@@ -91,17 +94,72 @@ ${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.0/example/
9194
| root | 根结点 | |
9295
#### DccRepeater
9396
使用提供的model实例化多个基于DccObject的对象,并添加到父项中,与Repeater类似
97+
| 属性 | 说明 | 备注 |
98+
|---|---|---|
99+
| model | 数据源 | 对象的数据源,为QVariant类型,支持多种数据类型 |
100+
| delegate | 模板 | 用于生成对象的模板,为model中的每一项数据生成一个DccObject对象 |
101+
| count | model生成对象的数量 | 只读 |
102+
103+
| 信号 | 说明 | 备注 |
104+
|---|---|---|
105+
| objAdded | 添加DccObject对象 | model实例化新对象时触发 |
106+
| objRemoved | 移除DccObject对象 | model移除对象时触发 |
107+
94108
#### DccDBusInterface
95109
与DBus交互的类,支持属性、信号、方法
110+
| 属性 | 说明 | 备注 |
111+
|---|---|---|
112+
| service | 服务名 | D-Bus 服务的唯一标识符 |
113+
| path | 路径 | D-Bus 服务的对象路径 |
114+
| inter | 接口名 | D-Bus 服务的对象接口 |
115+
| connection | 总线类型 | SystemBus系统总线/SessionBus会话总线 |
116+
| suffix | 属性前缀 | 为动态属性添加前缀,避免与QML保留字冲突 |
117+
118+
| 函数 | 说明 | 备注 |
119+
|---|---|---|
120+
| callWithCallback | 异步调用 D-Bus 方法,并通过JS回调处理结果 | |
121+
96122
### 界面类
123+
#### DccLoader
124+
用于加载DccObject的page控件的加载器,继承自Qt Quick的Loader。
125+
| 属性 | 说明 | 备注 |
126+
|---|---|---|
127+
| dccObj | 要加载的DccObject | var |
128+
| dccObjItem | 控件父项 | Item |
97129
#### DccGroupView
98-
一个组样式的控件
130+
一个组样式的控件,根据子项DccObject的pageType进行渲染,并将所有子项放在一个组容器中。可通过 DccRepeater 批量创建子项。
131+
| 属性 | 说明 | 备注 |
132+
|---|---|---|
133+
| isGroup | 是否显示组样式,默认为true | 值为true:子项无间距,显示分隔线;值为false:子项有间距,无分隔线 |
99134
#### DccRightView
100-
控制中心右侧样式控件,Menu类型的DccObject未指定page时,会自动使用该控件
135+
控制中心右侧样式控件,用于展示菜单项的子页面内容,支持滚动、拖动。Menu类型的DccObject未指定page时,page会自动使用该控件
136+
#### DccRowView
137+
横向排列子项的行布局容器,通过DccLoader加载子项的page控件,将子项水平排列
101138
#### DccSettingsView
102-
与DccRightView类似,但可以显示一个下方悬浮区域,需要其对应的DccObject有两个子项
139+
与DccRightView类似,但可以显示一个下方悬浮区域。需要其对应的DccObject有两个子项,一个为主内容区域,未指定page时默认使用DccGroupView,一个为下方悬浮区域,未指定page时默认使用DccRowView
140+
#### DccSettingsObject
141+
封装了DccSettingsView所需结构的DccObject模板,预创建了所需的两个子项
142+
| 属性 | 说明 | 备注 |
143+
|---|---|---|
144+
| bodyUrl | 子项body的 URL | 用于向body中添加子项 |
145+
| footerUrl | 子项footer的 URL | 用于向footer中添加子项 |
103146
#### DccItemBackground
104147
处理控件背景的控件,在DccRightView中用到
148+
#### DccCheckIcon
149+
显示勾选图标的控件,用于显示和切换选中状态
150+
#### DccLabel
151+
支持自动省略和悬浮提示的Label
152+
#### DccTitleObject
153+
包含标题和描述的分组标题控件
154+
#### SearchBar
155+
搜索框控件,支持搜索、搜索结果弹窗显示和键盘导航
156+
#### DccTimeRange
157+
选择或编辑时间范围的控件,显示格式为"时:分"
158+
| 属性 | 说明 | 备注 |
159+
|---|---|---|
160+
| hour || |
161+
| minute || |
162+
105163
## 代码示例:
106164
### 代码文件夹结构
107165
假设插件名为example,代码文件夹内容为:
@@ -211,6 +269,10 @@ public Q_SLOTS:
211269
Q_SIGNALS:
212270
void nameChanged(const QString &name);
213271
void calcTypeChanged(int calcType);
272+
273+
private:
274+
QString m_name;
275+
int m_calcType;
214276
};
215277
```
216278
### pluginexample.cpp

0 commit comments

Comments
 (0)