软件架构
主要模块
| 名字 | 模块 |
|---|---|
| 爬虫 | common.crawler |
| 设置 | common.config.Config |
| 音乐库 | common.library.Library |
| 主界面 | View.main_window.MainWindow |
| 播放器 | components.media_player.MediaPlayer |
| 播放列表 | components.media_player.MediaPlaylist |
| 事件总线 | common.signal_bus.SignalBus |
| 元数据管理 | common.meta_data |
界面结构
主界面

选择模式界面
Groove 音乐中大多数界面的结构如下图所示,由 view 和 SelectionModeBar 组成:

由于 SelectionModeBar 种类多样,代码中使用工厂模式来创建 SelectionModeBar,这样可以增强代码的可拓展性:

选择模式界面的类图如下所示,SelectionModeInterface 的子类使用 setView(view) 方法更换视图为专辑卡视图、歌曲列表部件、歌手卡视图或者播放列表卡视图,这些视图都实现了 SelectionModeViewBase 的两个抽象方法:

以专辑卡视图为例,AlbumCardViewBase 通过 AlbumCardFactory 创建各种类型的专辑卡,由于专辑卡视图有网格布局和水平布局两种,所以相应地有 GridAlbumCardView 和 HorizonAlbumCardView 子类:
