xref: /MusicPlayer2/MusicPlayer2/UiMediaLibItemMgr.h (revision cda444b5c7b3b70e7bb5f99f5ea3c463790e4ada)
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;
16*cda444b5SZhong 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;
25*cda444b5SZhong Yang     struct ItemInfo
26*cda444b5SZhong Yang     {
27*cda444b5SZhong Yang         std::wstring name;
28*cda444b5SZhong Yang         int count{};
29*cda444b5SZhong Yang     };
30*cda444b5SZhong Yang 
31*cda444b5SZhong Yang     const ItemInfo& GetItemInfo(CMediaClassifier::ClassificationType type, int index) const;
32*cda444b5SZhong Yang 
33*cda444b5SZhong 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 
39