xref: /MusicPlayer2/MusicPlayer2/UiMediaLibItemMgr.h (revision 4a21136c335c405880a2939f7037034b060a4c64)
1ee577835SZhong Yang #pragma once
2ee577835SZhong Yang #include <map>
3ee577835SZhong Yang #include "MediaLibHelper.h"
4ee577835SZhong Yang 
5ee577835SZhong Yang class CUiMediaLibItemMgr
6ee577835SZhong Yang {
7ee577835SZhong Yang public:
8ee577835SZhong Yang     ~CUiMediaLibItemMgr();
9ee577835SZhong Yang     static CUiMediaLibItemMgr& Instance();
10ee577835SZhong Yang 
11ee577835SZhong Yang     void Init();
12ee577835SZhong Yang 
13ee577835SZhong Yang     int GetItemCount(CMediaClassifier::ClassificationType type) const;
14ee577835SZhong Yang     std::wstring GetItemDisplayName(CMediaClassifier::ClassificationType type, int index) const;
15ee577835SZhong Yang     const std::wstring& GetItemName(CMediaClassifier::ClassificationType type, int index) const;
16cda444b5SZhong Yang     int GetItemSongCount(CMediaClassifier::ClassificationType type, int index) const;
17ee577835SZhong Yang     void SetCurrentName(CMediaClassifier::ClassificationType type, const std::wstring& name);
18ee577835SZhong Yang     int GetCurrentIndex(CMediaClassifier::ClassificationType type);
19ee577835SZhong Yang 
20ee577835SZhong Yang private:
21ee577835SZhong Yang     CUiMediaLibItemMgr();
22ee577835SZhong Yang     void GetClassifiedMeidaLibItemList(CMediaClassifier::ClassificationType type);
23ee577835SZhong Yang 
24ee577835SZhong Yang     static CUiMediaLibItemMgr m_instance;
25cda444b5SZhong Yang     struct ItemInfo
26cda444b5SZhong Yang     {
27cda444b5SZhong Yang         std::wstring name;
28cda444b5SZhong Yang         int count{};
29cda444b5SZhong Yang     };
30cda444b5SZhong Yang 
31cda444b5SZhong Yang     const ItemInfo& GetItemInfo(CMediaClassifier::ClassificationType type, int index) const;
32cda444b5SZhong Yang 
33cda444b5SZhong Yang     std::map<CMediaClassifier::ClassificationType, std::vector<ItemInfo>> m_item_map;   //保存媒体库中所有分类的名称列表
34ee577835SZhong Yang     bool m_loading{};
35ee577835SZhong Yang     std::map<CMediaClassifier::ClassificationType, int> m_current_index_map;    //保存媒体库模式下每种模式正在播放的曲目
36ee577835SZhong Yang     std::map<CMediaClassifier::ClassificationType, std::wstring> m_current_name_map;    //保存媒体库模式下每种模式正在播放的曲目
37ee577835SZhong Yang };
38ee577835SZhong Yang 
39817fc88aSZhong Yang 
40817fc88aSZhong Yang class CUiMyFavouriteItemMgr
41817fc88aSZhong Yang {
42817fc88aSZhong Yang public:
43817fc88aSZhong Yang     ~CUiMyFavouriteItemMgr();
44817fc88aSZhong Yang     static CUiMyFavouriteItemMgr& Instance();
45817fc88aSZhong Yang 
46817fc88aSZhong Yang     int GetSongCount() const;
47817fc88aSZhong Yang     const SongInfo& GetSongInfo(int index) const;
48817fc88aSZhong Yang     void UpdateMyFavourite();
49817fc88aSZhong Yang     bool IsLoading() const { return m_loading; }
50*4a21136cSZhong Yang     void GetSongList(std::vector<SongInfo>& song_list) const;
51817fc88aSZhong Yang 
52817fc88aSZhong Yang private:
53817fc88aSZhong Yang     CUiMyFavouriteItemMgr();
54817fc88aSZhong Yang     static CUiMyFavouriteItemMgr m_instance;
55817fc88aSZhong Yang 
56817fc88aSZhong Yang     vector<SongInfo> m_may_favourite_song_list;     //“我喜欢的音乐”列表
57817fc88aSZhong Yang     bool m_loading{};
58817fc88aSZhong Yang 
59817fc88aSZhong Yang };
60817fc88aSZhong Yang 
61