Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
5c09815
refactor: remove mutex lock and use async processing for image provider
18202781743 Apr 1, 2026
beb9e7e
refactor: move plugin factory preparation before module loading
18202781743 Apr 2, 2026
843af09
fix: synchronize plugin data phase loading
18202781743 Apr 3, 2026
b6a5ff2
fix: defer icon source resolution until component completion
18202781743 Apr 3, 2026
13ff9e4
fix: Optimize the typesetting layout of open-source software declarat…
52cyb Apr 9, 2026
0e4ff7d
fix: fix control center plugin loading and page display logic
caixr23 Apr 1, 2026
f4b0895
fix: dconfig controls whether the username is displayed in the verifi…
52cyb Apr 9, 2026
b746c11
feat: improve DccRepeater parent object assignment
caixr23 Apr 2, 2026
1f42242
chore: bump version to 6.1.81
mhduiy Apr 9, 2026
add1b2e
i18n: Updates for project Deepin Desktop Environment (#3127)
transifex-integration[bot] Apr 10, 2026
4c3f42e
fix(datetime): add real-time display for timezone information
add-uos Apr 9, 2026
02bca99
fix: optimize page visibility management in DccWindow
caixr23 Apr 13, 2026
965e1e5
fix: Window size not correctly restored after maximisation
JWWTSL Apr 10, 2026
8148a8e
fix: prevent control center from not closing properly
18202781743 Apr 15, 2026
35b0cb0
i18n: Updates for project Deepin Desktop Environment (#3170)
transifex-integration[bot] Apr 16, 2026
f06bd76
docs: update v25 dcc interface documentation
52cyb Apr 13, 2026
8ac3cac
fix: use QQmlIncubator for asynchronous plugin object creation
caixr23 Apr 11, 2026
1771977
fix(display): use screen dimensions instead of currentResolution for …
mhduiy Apr 21, 2026
6b0363e
feat(notification): add app notification search functionality
add-uos Apr 21, 2026
0aa7adc
fix: Optimize the typesetting layout of open-source software declarat…
52cyb Apr 21, 2026
438b236
Revert "fix: use QQmlIncubator for asynchronous plugin object creation"
caixr23 Apr 22, 2026
344b313
refactor: simplify plugin loading by removing async loading
caixr23 Apr 22, 2026
5a4b840
perf(wallpaper): optimize wallpaper thumbnail loading with QImageRead…
mhduiy Apr 23, 2026
05d50c6
feat: add event logger integration for control center
Ivy233 Apr 23, 2026
c0a2cbf
chore: bump version to 6.1.82
mhduiy Apr 23, 2026
fa43083
i18n: Updates for project Deepin Desktop Environment (#3179)
transifex-integration[bot] Apr 24, 2026
8279cc8
build: add dde-api-dev build dependency
Ivy233 Apr 24, 2026
28ebdd3
chore: bump version to 6.1.83
mhduiy Apr 24, 2026
6fed072
fix: Make the selected region visible when entering the Regional form…
52cyb Apr 24, 2026
ee0b022
fix: add tooltips to automatically elided text
52cyb Apr 27, 2026
c72e932
refactor: optimize DccObject parent management and simplify memory ha…
caixr23 Apr 27, 2026
3bdcdb3
fix: fix the issue of slow default recovery of system shortcut keys
52cyb Apr 27, 2026
a6d7190
fix: adjust the click area for Time Range Control
52cyb Apr 28, 2026
e60a917
fix: fix activeTimers crash in control center
18202781743 Apr 27, 2026
5ea17aa
fix: Optimize the issue of slow entry into the Bluetooth interface
52cyb Apr 29, 2026
e5225a3
fix: adjust the layout of the custom Repeat time control
52cyb Apr 29, 2026
4786e15
refactor: split PluginManager into DccPluginLoader and DccPluginManager
caixr23 Apr 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,17 @@ endif()
find_package(GTest REQUIRED)
find_package(Threads REQUIRED)

# Check if dde-api eventlogger.hpp exists
# Unset cache to force re-detection every time
unset(DDE_API_EVENTLOGGER_INCLUDE_DIR CACHE)
find_path(DDE_API_EVENTLOGGER_INCLUDE_DIR NAMES dde-api/eventlogger.hpp PATHS /usr/include)
if(DDE_API_EVENTLOGGER_INCLUDE_DIR)
set(HAVE_DDE_API_EVENTLOGGER ON)
message(STATUS "Found dde-api eventlogger.hpp: ${DDE_API_EVENTLOGGER_INCLUDE_DIR}")
else()
message(STATUS "dde-api eventlogger.hpp not found, event logging will be disabled")
endif()

if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "sw_64")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mieee")
endif()
Expand Down
57 changes: 57 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,60 @@
dde-control-center (6.1.83) unstable; urgency=medium

* build: add dde-api-dev build dependency
* i18n: Updates for project Deepin Desktop Environment (#3179)

-- zhangkun <zhangkun2@uniontech.com> Fri, 24 Apr 2026 13:18:28 +0800

dde-control-center (6.1.82) unstable; urgency=medium

* feat: add event logger integration for control center
* perf(wallpaper): optimize wallpaper thumbnail loading with
QImageReader scaling
* refactor: simplify plugin loading by removing async loading
* Revert "fix: use QQmlIncubator for asynchronous plugin object
creation"
* fix: Optimize the typesetting layout of open-source software
declarations
* feat(notification): add app notification search functionality
* fix(display): use screen dimensions instead of currentResolution for
Qt screen matching
* fix: use QQmlIncubator for asynchronous plugin object creation
* docs: update v25 dcc interface documentation
* i18n: Updates for project Deepin Desktop Environment (#3170)
* fix: prevent control center from not closing properly
* fix: Window size not correctly restored after maximisation
* fix: optimize page visibility management in DccWindow
* fix(datetime): add real-time display for timezone information
* i18n: Updates for project Deepin Desktop Environment (#3127)

-- zhangkun <zhangkun2@uniontech.com> Thu, 23 Apr 2026 21:46:05 +0800

dde-control-center (6.1.81) unstable; urgency=medium

* feat: improve DccRepeater parent object assignment
* fix: dconfig controls whether the username is displayed in the
verification password pop-up window
* fix: fix control center plugin loading and page display logic
* fix: Optimize the typesetting layout of open-source software
declarations
* fix: defer icon source resolution until component completion
* fix: synchronize plugin data phase loading
* refactor: move plugin factory preparation before module loading
* refactor: remove mutex lock and use async processing for image
provider
* fix: improve keyboard navigation focus management and rename
property
* fix(sound): fix Bluetooth audio mode detection and switching logic
* fix: DConfig controls whether the boot menu item area supports
editing the wallpaper
* fix: Modify the background transparency of the account creation
screen
* fix: correct text color property type and logic
* fix(datetime): fix layout overlap in RegionFormatDialog
* fix(ui): optimize layout and visibility control for list items

-- zhangkun <zhangkun2@uniontech.com> Thu, 09 Apr 2026 20:27:22 +0800

dde-control-center (6.1.80) unstable; urgency=medium

* fix: add support for markdown format in user license
Expand Down
3 changes: 2 additions & 1 deletion debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ Build-Depends:
libwayland-dev,
libssl-dev,
libdde-shell-dev(>= 1.99.20),
libdpkg-dev
libdpkg-dev,
dde-api-dev(>>6.0.38)
Standards-Version: 4.5.0
Homepage: https://github.com/linuxdeepin/dde-control-center

Expand Down
76 changes: 69 additions & 7 deletions docs/v25-dcc-interface.zh_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@
7. 插件支持多语言,支持多语言切换
8. 插件显示禁用支持统一配置。配置修改立即生效
## V25控制中心插件安装路径必要说明
1. V25控制中心插件安装路径为`${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.0`
1. V25控制中心插件安装路径为`${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.1`
2. 该路径下插件以单个文件夹形式存在,文件夹名为插件名,文件夹内为插件文件,假设插件名为example,则插件文件夹内容为:
```bash
${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.0/example/
${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.1/example/
├── qmldir
├── libexample_qml.so
└── example.so
Expand All @@ -43,13 +43,14 @@ ${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.0/example/
5. 将example.so导出的对象设置为dccData,加载ExampleMain.qml。此时,ExampleMain.qml中可以使用dccData.xxx()调用example.so导出的函数
6. 加载完成,将DccObject对象插入到模块树中
## V25控制中心插件开发必要说明
1. 控制中心有一个option,可以用来加载一个文件夹下的插件,比如一般插件会放置到`build`文件夹下,这时候可以`dde-control-center --spec ./lib/plugins_v1.0`来加载单独一个插件进行调试。另外提醒,调试时候不要使用asan,因为没有使用asan的控制中心无法加载使用了asan编译的插件
1. 控制中心有一个option,可以用来加载一个文件夹下的插件,比如一般插件会放置到`build`文件夹下,这时候可以`dde-control-center --spec ./lib/plugins_v1.1/`来加载单独一个插件进行调试。另外提醒,调试时候不要使用asan,因为没有使用asan的控制中心无法加载使用了asan编译的插件
2. 控制中心插件加载是在线程中,但最终会将插件对象移到主线程。所以example.so构造函数中创建的对象需要在example.so导出类的树结构中(即子对象的父对象或祖先对象是example.so导出类),否则不会被移动到主线程,导致其中信号槽线程等不到,无法正常使用。
3. example.so导出类是唯一的,插件中不建议使用单例,可在example.so导出类中创建一个单例对象
## V25控制中心开发接口说明
控制中心导出的qml类有:
### 关键类
#### DccObject
控制中心的树形结构的数据节点,可表示界面的一个菜单项或功能项。
| 属性名称 | 说明 | 备注 |
|---|---|---|
| name | 名称 | 作为唯一id使用,结合父项的name组成url,用于定位跳转、配置隐藏禁用等,由字符、数字组成,不建议有符号空格,不可有‘/’(url分隔符,会影响解析) |
Expand All @@ -64,6 +65,7 @@ ${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.0/example/
| visibleToApp | 可见 | 只读,包含配置与visible的结果,与控件显示关联 |
| enabledToApp | 启用 | 只读,包含配置与enabled的结果,与控件状态关联 |
| canSearch | 可搜索 | 默认true |
| children | 子对象 | 只读,获取子控件列表 |
| backgroundType | 背景样式 | 默认AutoBg |
| pageType | 界面类型 | Menu、Editor、Item等,影响page显示方式,取值范围:0-255 |
| page | 界面控件 | |
Expand All @@ -73,7 +75,8 @@ ${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.0/example/
|---|---|---|
| active | 激活 | backgroundType为Clickable时,点击控件出发,参数为空。DBus的ShowPage方法出发,如:ShowPage("aa/bb?param=1"),则aa/bb项会收到active("param=1")信号 |
| deactive | 停用 | 页面退出时触发 |
#### DccApp 全局单例
#### DccApp
全局单例,管理控制中心的整个模块树
| 函数 | 说明 | 备注 |
|---|---|---|
| root | 根结点 | 属性 |
Expand All @@ -91,17 +94,72 @@ ${CMAKE_INSTALL_LIBDIR}/dde-control-center/plugins_v1.0/example/
| root | 根结点 | |
#### DccRepeater
使用提供的model实例化多个基于DccObject的对象,并添加到父项中,与Repeater类似
| 属性 | 说明 | 备注 |
|---|---|---|
| model | 数据源 | 对象的数据源,为QVariant类型,支持多种数据类型 |
| delegate | 模板 | 用于生成对象的模板,为model中的每一项数据生成一个DccObject对象 |
| count | model生成对象的数量 | 只读 |

| 信号 | 说明 | 备注 |
|---|---|---|
| objAdded | 添加DccObject对象 | model实例化新对象时触发 |
| objRemoved | 移除DccObject对象 | model移除对象时触发 |

#### DccDBusInterface
与DBus交互的类,支持属性、信号、方法
| 属性 | 说明 | 备注 |
|---|---|---|
| service | 服务名 | D-Bus 服务的唯一标识符 |
| path | 路径 | D-Bus 服务的对象路径 |
| inter | 接口名 | D-Bus 服务的对象接口 |
| connection | 总线类型 | SystemBus系统总线/SessionBus会话总线 |
| suffix | 属性前缀 | 为动态属性添加前缀,避免与QML保留字冲突 |

| 函数 | 说明 | 备注 |
|---|---|---|
| callWithCallback | 异步调用 D-Bus 方法,并通过JS回调处理结果 | |

### 界面类
#### DccLoader
用于加载DccObject的page控件的加载器,继承自Qt Quick的Loader。
| 属性 | 说明 | 备注 |
|---|---|---|
| dccObj | 要加载的DccObject | var |
| dccObjItem | 控件父项 | Item |
#### DccGroupView
一个组样式的控件
一个组样式的控件,根据子项DccObject的pageType进行渲染,并将所有子项放在一个组容器中。可通过 DccRepeater 批量创建子项。
| 属性 | 说明 | 备注 |
|---|---|---|
| isGroup | 是否显示组样式,默认为true | 值为true:子项无间距,显示分隔线;值为false:子项有间距,无分隔线 |
#### DccRightView
控制中心右侧样式控件,Menu类型的DccObject未指定page时,会自动使用该控件
控制中心右侧样式控件,用于展示菜单项的子页面内容,支持滚动、拖动。Menu类型的DccObject未指定page时,page会自动使用该控件
#### DccRowView
横向排列子项的行布局容器,通过DccLoader加载子项的page控件,将子项水平排列
#### DccSettingsView
与DccRightView类似,但可以显示一个下方悬浮区域,需要其对应的DccObject有两个子项
与DccRightView类似,但可以显示一个下方悬浮区域。需要其对应的DccObject有两个子项,一个为主内容区域,未指定page时默认使用DccGroupView,一个为下方悬浮区域,未指定page时默认使用DccRowView
#### DccSettingsObject
封装了DccSettingsView所需结构的DccObject模板,预创建了所需的两个子项
| 属性 | 说明 | 备注 |
|---|---|---|
| bodyUrl | 子项body的 URL | 用于向body中添加子项 |
| footerUrl | 子项footer的 URL | 用于向footer中添加子项 |
#### DccItemBackground
处理控件背景的控件,在DccRightView中用到
#### DccCheckIcon
显示勾选图标的控件,用于显示和切换选中状态
#### DccLabel
支持自动省略和悬浮提示的Label
#### DccTitleObject
包含标题和描述的分组标题控件
#### SearchBar
搜索框控件,支持搜索、搜索结果弹窗显示和键盘导航
#### DccTimeRange
选择或编辑时间范围的控件,显示格式为"时:分"
| 属性 | 说明 | 备注 |
|---|---|---|
| hour | 时 | |
| minute | 分 | |

## 代码示例:
### 代码文件夹结构
假设插件名为example,代码文件夹内容为:
Expand Down Expand Up @@ -211,6 +269,10 @@ public Q_SLOTS:
Q_SIGNALS:
void nameChanged(const QString &name);
void calcTypeChanged(int calcType);

private:
QString m_name;
int m_calcType;
};
```
### pluginexample.cpp
Expand Down
11 changes: 11 additions & 0 deletions misc/configs/org.deepin.dde.control-center.commoninfo.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,17 @@
"description[zh_CN]": "\"启动菜单\"grub背景图片可否编辑",
"permissions": "readwrite",
"visibility": "public"
},
"bootGrubUserNameVisible": {
"value": true,
"serial": 0,
"flags": [],
"name": "boot grub userName visible",
"name[zh_CN]": "显示用户名",
"description": "Whether to show the username in the verification password pop-up window of \"Startup Menu Verification\"",
"description[zh_CN]": "是否在\"启动菜单验证\"的验证密码弹窗中显示用户名",
"permissions": "readwrite",
"visibility": "public"
}
}
}
4 changes: 4 additions & 0 deletions src/dde-control-center/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ target_link_libraries(${Control_Center_Name} PRIVATE
${Control_Center_Libraries}
)

if (HAVE_DDE_API_EVENTLOGGER)
target_compile_definitions(${Control_Center_Name} PRIVATE HAVE_DDE_API_EVENTLOGGER)
endif()

file(GLOB_RECURSE DCC_Translation_QML_FILES ${DCC_PROJECT_ROOT_DIR}/qml/*.qml ${DCC_PROJECT_ROOT_DIR}/src/*.qml)
file(GLOB_RECURSE DCC_Translation_SOURCE_FILES ${DCC_PROJECT_ROOT_DIR}/src/*.cpp ${DCC_PROJECT_ROOT_DIR}/src/*.h)
dcc_handle_plugin_translation(NAME ${Control_Center_Name} SOURCE_DIR ${DCC_PROJECT_ROOT_DIR} QML_FILES ${DCC_Translation_QML_FILES} SOURCE_FILES ${DCC_Translation_SOURCE_FILES})
Expand Down
Loading
Loading