Go to file
zouxiaoyi 9a49b89a10 chore: update changelog 2023-09-21 17:46:51 +08:00
ConfigurationManager Add: Add Copyright 2023-07-24 16:53:58 +08:00
DbusManager refactor: 重构键盘管理器模块。 2023-09-19 11:46:52 +08:00
DeviceModeManager Add: Add Copyright 2023-07-24 16:53:58 +08:00
KmreAppManager Fix:优化旋转模块相关功能和kmre 2023-07-27 17:29:53 +08:00
QtSingleApplication 删除无用文件和无用代码 2023-07-27 17:00:40 +08:00
StatusManager refactor: 去掉特殊设备的判断; 2023-09-19 11:47:13 +08:00
data Delete:删除无用文件 2023-05-12 16:25:45 +08:00
debian chore: update changelog 2023-09-21 17:46:51 +08:00
keyboardmanager refactor: 重构键盘管理器模块。 2023-09-19 11:46:52 +08:00
man Add: Add man page 2023-07-27 10:32:01 +08:00
translate Add:增加翻译文件 2023-05-12 16:16:21 +08:00
.gitignore Add:增加配置文件 2023-05-12 16:21:07 +08:00
COPYING Import Upstream version 3.1.1.0.0k0.3 2022-06-17 10:08:08 +08:00
COPYING.LIB Import Upstream version 3.1.1.0.0k0.3 2022-06-17 10:08:08 +08:00
README.md refactor: 重构键盘管理器模块。 2023-09-19 11:46:52 +08:00
devicerotationmanager.cpp fix(all): fix spelling error 2023-08-02 22:40:15 -04:00
devicerotationmanager.h fix(all): fix spelling error 2023-08-02 22:40:15 -04:00
kylin-status-manager.pro refactor: 重构键盘管理器模块。 2023-09-19 11:46:52 +08:00
main.cpp Fix: 修改调用session 接口的时间和方式 2023-07-27 17:00:40 +08:00
src.qrc Add:增加配置文件 2023-05-12 16:21:07 +08:00

README.md

kylin-status-manager

1.引言

kylin-status-manager是UKUI桌面环境下维护设备状态的程序。状态管理器提供供外部组件如侧边栏、控制面板查询和设置设备状态的接口且在设备模式状态模式变化和自动切换开关变化、设备旋转状态自动旋转开关和设备方向变化和物理键盘可用性变化时通知其他系统组件做出相应改变且状态管理器内部会对Kmre应用进行定制化处理。本文档为用户配置服务介绍针对组件的项目依赖、影响组件、环境部署和目录结构等方面进行介绍。

2.项目依赖

执行: sudo mk-build-deps -ir debian/control 会安装项目所有依赖

3.部署方式

  • 编译部署
  1. mkdir build
  2. cd build && qmake ..
  3. make -j
  4. sudo make install
  5. killall kylin-status-manager状态管理器会在kill后自启
  • 编包部署
  1. 根目录下执行debuild命令在上层目录生成 deb 文件
  2. cd .. 回到上层目录
  3. sudo dpkg -i kylin-status-manager*.deb
  4. 安装后重启机器或killall kylin-status-manager

4.影响和依赖组件

  • 影响组件 ukui-settings-daemon、切换平板模式的包、侧边栏、控制面板、虚拟键盘

  • 依赖组件 依赖硬件设备支持tablet switch event 事件上报 iio-sensor-proxy

5.目录结构描述

.
├── keyboardmanager
│   ├── keyboardmanager.cpp
│   └── keyboardmanager.h
├── ConfigurationManager
│   ├── configurationmanager.cpp
│   └── configurationmanager.h
├── COPYING
├── COPYING.LIB
├── data
│   ├── com.kylin.statusmanager.interface.service
│   ├── conf.ini
│   ├── kylin-status-manager.desktop
│   └── statusManagerConfig.ini
├── DbusManager
│   ├── com.kylin.statusmanager.interface.xml
│   ├── dbusservice.cpp
│   └── dbusservice.h
├── debian
│   ├── changelog
│   ├── control
│   ├── copyright
│   ├── install
│   ├── rules
│   └── source
│       └── format
├── DeviceModeManager
│   ├── devicemodemanager.cpp
│   └── devicemodemanager.h
├── devicerotationmanager.cpp
├── devicerotationmanager.h
├── DevicesStatusManager
│   └── Rotation_Monitoring
│       ├── rotationmonitor.cpp
│       └── rotationmonitor.h
├── KmreAppManager
│   ├── kmremanager.cpp
│   ├── kmremanager.h
│   ├── kmrenotificationwindowmanager.cpp
│   └── kmrenotificationwindowmanager.h
├── kylin-status-manager.pro
├── main.cpp
├── QtSingleApplication
│   ├── qtlocalpeer.cpp
│   ├── qtlocalpeer.h
│   ├── QtLockedFile
│   ├── qtlockedfile.cpp
│   ├── qtlockedfile.h
│   ├── qtlockedfile_unix.cpp
│   ├── qtlockedfile_win.cpp
│   ├── QtSingleApplication
│   ├── qtsingleapplication.cpp
│   ├── qtsingleapplication.h
│   ├── qtsingleapplication.pri
│   ├── qtsinglecoreapplication.cpp
│   ├── qtsinglecoreapplication.h
│   └── qtsinglecoreapplication.pri
├── README.md
├── src.qrc
├── StatusManager
│   ├── machinemodel.cpp
│   ├── statusmanager.cpp
│   └── statusmanager.h
└── translate
    ├── zh.qm
    └── zh.ts

13 directories, 52 files

6.模块介绍

模块 功能介绍
状态管理器 管理着下述模块之间的交互
物理键盘管理器 记录着键盘的可用性,以及更新键盘可用性的功能
设备模式管理器 记录着模式状态、自动切换开关状态和唤起用户手册、弹窗等功能
设备旋转管理器 监听这QSensor传感器获取、更新当前设备方向和自动旋转开关状态的维护
kmre管理器 处理关于kmre应用的相关功能
DBUS服务 暴露给外接设置和获取设备状态的接口,以及更新状态后发送信号通知其他组件
配置文件管理器 对设备状态做持久化处理

7.DBus接口介绍

  1. Dbus基本详情
TYPE INFO
DBUS TYPE SESSION BUS
DBUS NAME com.kylin.statusmanager.interface
OBJECT PATH /
INTERFACE NAME com.kylin.statusmanager.interface
  1. 获取方法
method call args return means
get_inputmethod_mode() NULL 返回值int 切换虚拟键盘0 切换物理键盘1 返回值错误(-1 获得当前系统应该显示的键盘模式
get_current_tabletmode() NULL 返回值bool平板truepcfalse 获得当前的机器模式
get_current_rotation() NULL 返回值stringnormal upside-down left right 获得当前的旋转情况
get_modemonitor() NULL 返回值bool开启自动切换true关闭自动切换false 用于控制翻折时的平板与pc的自动切换获得是否开启自动切换情况
get_auto_rotation() NULL 返回值bool开启自动旋转true关闭自动旋转false 用于控制旋转时的屏幕状态监测,获得是否开启自动旋转情况
is_supported_autorotation() NULL 返回值bool支持true不支持false 当前设备是否支持方向传感器
  1. 设置方法
method call args return means
set_tabletmode(bool tablet_mode,QString who,QString why) bool tablet_mode(true/false),QString who使用该接口的组件名,QString why为使用的目的 返回值bool设置成功1设置失败0) 设置当前的机器模式
set_rotation(QString rotation,QString who,QString why) bool rotationnormal/upside-down/left/right,QString who同上,QString why同上 返回值bool设置成功1设置失败0 设置当前的旋转情况
set_modemonitor(bool modemonitor,QString who,QString why) bool modemonitor(true/false),QString who同上,QString why同上 返回值bool设置成功1设置失败0 设置自动切换开关
set_auto_rotation(bool autorotation,QString who,QString why) bool autorotation,QString who,QString why 返回值bool设置成功1设置失败0 设置自动旋转开关
  1. 信号
method call return/args means
inputmethod_change_signal(bool) 切换虚拟键盘false切换物理键盘true 系统状态改变发送当前应该显示的键盘模式
rotations_change_signal(QString rotations) normal upside-down left right 返回当前的旋转模式
mode_change_signal(bool tablet_mode) 平板模式truePC模式false 根据当前翻折情况返回当前的机器模式
void modemonitor_change_signal(bool modemonitor) 开启自动切换true关闭自动切换false 自动切换状态改变时发送信号
void auto_rotation_change_signal(bool auto_rotation) 开启自动旋转true关闭自动旋转false 自动旋转状态改变时发送信号

8.配置文件

~/.config/statusManager.ini 存储这当前用户设置的设备状态;

  • 字段说明

[DeviceMode] —— 设备模式字段

autoSwitchEnable=true —— 自动切换是否开启

tabletMode=false —— 当前设备模式

[Rotation] —— 设备旋转方向字段

autoRotateEnbale=false —— 自动旋转是都开启

deviceOrientation=normal —— 设备的屏幕方向

[StartupOptions] —— 启动项字段

firstSwitchDeviceMode=true —— 记录是否第一次切换设备模式

changed

1、修改启动顺序在desktop设置为、 OnlyShowIn=UKUI; X-UKUI-Autostart-Phase=Initialization X-UKUI-AutoRestart=true 并修改调用session的dbus,告知session程序已启动

接口链接

https://docs.qq.com/doc/DUVpOU2t5Tm1VYklj (内部使用)

https://docs.qq.com/doc/DUUx6WXBvV0dsZ09D