优麒麟 | 你真的了解【开始菜单】吗?
开始菜单,实际就是物理设备上所安装的应用软件快捷方式的集合。为了便于用户使用,不仅包含简单的应用实时显示,还加入了软件检索、软件分类、固定常用软件等额外功能,进而达到方便用户使用的目的。
本篇文章围绕优麒麟开源操作系统的开始菜单主要功能进行简要介绍。
总体功能设计
UKUI-menu 的总体功能设计分为三个模块:模块切换、窗口切换和搜索,打开开始菜单后默认显示模式切换-所有软件模块页面:
图1 所有软件模块
模块切换
模块切换包含三个功能模块,分别为:所有软件模块、字母排序模块和功能分类模块。提供所有软件模块、字母排序模块与功能分类模块切换外部接口,参数为模块切换按钮指针变量;
接口定义:
void btnGroupClickedSlot(QAbstractButton *btn);
在页面中对应的位置如下:
本次先对所有软件模块进行介绍:
所有软件模块主要用于显示系统中安装的所有软件,并根据软件适应频率实时刷新,同时支持将软件固定到列表顶端,不受使用频率的限制,所有软件模块处理流程图如下:
图3 所有软件模块处理流程
主要函数说明:
A. QVector<QString> getAllClassification(); //获取所有软件分类,返回值为应用信息存储容器
B. void ViewOpenedSlot(QDbusMessage msg); //进程开启监控槽函数,参数为D-Bus总线消息
C. void directoryChangedSlot(const QString &path); //软件安装卸载监控,参数为desktop文件目录
D. void fixToAllActionTriggerSlot(); //将软件固定到所有软件模块
E. void unfixedFromAllActionTriggerSlot(); //从所有软件模块取消固定
F. void updateListView(); //更新应用列表
窗口切换
窗口切换即实现开始菜单窗口大小的切换,默认状态下显示为默认窗口大小,通过调用切换接口实现最大化和恢复默认大小;
接口定义:
void showFullScreenWidget(); //最大化窗口
void showDefaultWidegt(); //恢复默认窗口大小
最大化窗口显示如下:
图4 最大化窗口
恢复默认窗口大小显示如下:
搜索
搜索对于开始菜单的作用,就是能够帮助用户快速查找应用并打开应用,支持中英文及首字母实时搜索,在优麒麟的开始菜单接口中就提供了一个应用开启外部接口,通过搜索框查找到应用后点击应用图标,即可打开应用;
接口定义:
void onClicked(QModelIndex index); //参数为应用索引
以上就是本次对开始菜单的一些介绍,主要分析了开始菜单三大功能模块的功能以及模块切换中所有程序模块的主要函数,对源码有兴趣、想要了解更多的优客可以点击下方链接:
https://github.com/ukui/ukui-menu
往期精选 | Selection in the past