# **ukui-sidebar介绍**

## **简介**

          ukui-sidebar作为桌面环境组件，主要的功能为作为显示用户的应用消息，并为用户提供快捷操作入口。常驻在任务栏托盘部分，随时可调起。

#### **体系结构**

          侧边栏主要机制为插件，所有功能模块都是插件，当插件没有加载时，侧边栏就只是一块空的界面，里面不包含任何功能，这样设计目的是将程序功能分开，各功能模块之间互不影响，便于以后升级推进，添加功能以及删除某一些功能提供很大的便利，不需要去修改侧边栏主程序的代码，降低代码耦合度，只需要重新添加插件或者删除插件就可以达到升级目的。

#### **功能模块划分**

          侧边栏主要分为上下俩个部分，上部分为通知中心，下半部分为快捷操作面板部分。

          通知功能是将用户没有来得及关注或等待处理的消息进行收纳并集中管理。在通知中心内部交互中，具有管理消息通知的相关功能：重要的通知、不重要的通知、点击通知跳转、设置通知收纳规则等。

          快捷操作面板是一些功能的集合，为用户提供了快速操作的功能。

## **运行**

          ukui-sidebar开机自启动，常驻在任务栏。

## **快捷键、命令行和dbus接口**

呼出ukui-sidebar的系统快捷键为Win + A

ukui-sidebar 的命令行参数：

ukui-sidebar -show   //呼出

ukui-sidebar -hide   //隐藏

ukui-sidebar -state  //根据当前状态隐藏或显示ukui-sidebar 的dbus接口

Dbus名称: org.ukui.Sidebar

对象路径: /org/ukui/Sidebar

接口: org.ukui.Sidebar



方法：

getSidebarState () //获取侧边栏状态

getPresentSidebarWidth ()  //获取侧边栏实时宽度



信号：

animationAction(uint32,int32) //动画移动后的信号参数



Dbus名称: org.ukui.Sidebar

对象路径: /org/ukui/Sidebar/notification

接口: org.ukui.Sidebar.notification



方法：

sidebarNotification (String appName, String appIcon, String summary, String body, String urlStr, String actions) //设置通知



##  **交互**

          通知中心消息来源为ukui-notification-daemon，ukui-notification-daemon收到消息后调用接口发送给侧边栏，接口名称：

sidebarNotification (String appName, String appIcon, String summary, String body, String urlStr, String actions)                快捷操作面板功能有用户信息调用、关机操作、节能模式、蓝牙、飞行模式、投屏、夜间模式、截图、系统设置、剪贴板。

          用户信息调用使用了如下接口：

Dbus名称: org.freedesktop.Accounts

方法：

"GetAll", "org.freedesktop.Accounts.User"

关机操作调用了如下接口：

ukui-session-tools

节能模式调用了如下接口：

gsetting名称: org.freedesktop.Accounts

key值：

 “brightness-ac”

 "sleep-display-ac"

蓝牙调用了如下接口：

Dbus名称: "com.ukui.bluetooth"

信号：

devConnectStatusSignal

devRemoveSignal

飞行模式调用了如下接口：

Dbus名称: org.ukui.SettingsDaemon

方法

getFlightState

投屏调用了如下接口：

ukydisplayswitch

夜间模式调用了如下接口：

Dbus名称：org.ukui.style

截图调用了如下接口：

kylin-screenshot gui

系统设置调用了如下接口：

ukui-control-center

剪贴板调用了如下接口：

ukui-paste



## **原理与功能特点**

          侧边栏主体框架只是空的一块界面，它是通过加载通知中心插件和剪贴板插件以及小插件才组合成为了侧边栏，然而主体框架所做的事情就是加载插件操作、实例化插件与主体框架之间通信信号、插件管理机制、自适应屏幕分辨率、主屏、双屏，界面动画效果、系统托盘栏显示、根据任务栏的位置调整侧边栏弹出位置。

          通知中心主要是接收ukui-notification-daemon的信息，读取dbus接口notify的输入情况，如果有输入则会创建一个条目，然后将条目放入到通知列表中。

          快捷操作面板即初始化时就与各功能组件进行信号连接，以此来实现相关功能。

## **编译&调试**

#### **编译**

cd ukui-sidebar

mkdir build

cd build

qmake ../

make -j12

sudo  make install

#### **调试** 

ukui-sidebar采用ukui-log4qt模块的日志功能，在程序运行时，可在家目录中的.log查看相应打印

tail -f .log/ukui-sidebar.log
