程序架构
FeelUOwn 中有一个核心对象 app, 它是我们进行几乎一切操作的入口。
在初始化 app 时,我们会实例化一些类,比如 Library/LiveLyric, 这些实例工作不依赖
app 对象,我们把它们放在 feeluown 包中。另外,我们也会创建很多 Manager 实例,
比如 PluginManager/HotkeyManager 等,它们往往都是依赖 app 的,
我们目前将它们各自作为一个模块放在 feeluown 包中。
主要模块
稳定 |
名字 |
模块 |
|---|---|---|
🔴 |
音乐资源模型 |
|
🔴 |
音乐库 |
|
🔴 |
播放器 |
|
🔴 |
fuo 协议 |
|
🔴 |
版本 |
|
🔴 |
小提示管理 |
|
🔴 |
本地收藏管理 |
|
🔴 |
浏览历史记录 |
|
🔴 |
快捷键管理 |
|
🔴 |
图片管理 |
|
🔴 |
资源提供方 UI |
|
🔴 |
我的音乐 UI |
|
🔴 |
歌单列表 UI |
|
界面
FeelUOwn 启动时有两种模式可以选择,CLI 模式和 GUI 模式,大部分 Manager 可以在两种模式下工作,也有一部分 Manager只在 GUI 模式下工作,这些 Manager 往往和 UI 操作相关。
FeelUOwn UI 部分的核心对象是 app.ui, 我们下面就从界面开始,
来详细了解 FeelUOwn 程序的整体架构。
整个 GUI 区域划分比较简单和规整,下图大致的描述了 GUI 的几个主要组成部分。
图中文字部分对应的都是代码中的变量,它们也比较好的反映了对应区域的功能。 一开始对项目可能不是特别熟悉,大家可以对照这个图来看代码。
从区域划分来看,程序主界面主要分为四大块(蓝色部分):
magicbox: 用户搜索、显示用户操作通知、执行 fuo 命令、 执行 Python 代码相关操作都在此组件中完成left_panel: 显示音乐库、用户操作历史记录、用户歌单列表right_panel: 目前显示歌单列表详情、歌手详情等。 之后可能会支持更多其实形式的展示:比如批量展示专辑。pc_panel: 与播放器相关的控制部分,主要是播放/暂停、进度条、 音量调节、显示当前播放列表、修改播放模式等操作按钮。
各大块可以拆分成小块(红色部分):
left_panel 区域
provider_view组件展示应用支持的音乐提供方histories_view组件展示用户浏览记录playlists_view组件展示用户歌单列表
right_panel 区域
songs_table批量展示歌曲,比如:歌单中的歌曲、搜索结果的歌曲部分等,table_overview是对 songs_table 的概览,由封面图和描述组成。