192deac10Szhongyang #pragma once 292deac10Szhongyang #include "SongInfo.h" 392deac10Szhongyang class CPlaylist 492deac10Szhongyang { 592deac10Szhongyang public: 6*5fca386fSzhongyang struct PlaylistItem 7*5fca386fSzhongyang { 8*5fca386fSzhongyang wstring file_path; 9*5fca386fSzhongyang bool is_cue{ false }; //�����Ŀ��cue�ֹ죬��Ϊtrue 10*5fca386fSzhongyang Time start_pos{}; 11*5fca386fSzhongyang Time end_pos{}; 12*5fca386fSzhongyang wstring title; 13*5fca386fSzhongyang wstring artist; 14*5fca386fSzhongyang wstring album; 15*5fca386fSzhongyang int track{}; 16*5fca386fSzhongyang }; 17*5fca386fSzhongyang 18*5fca386fSzhongyang public: 1992deac10Szhongyang CPlaylist(); 2092deac10Szhongyang ~CPlaylist(); 2192deac10Szhongyang void LoadFromFile(const wstring& file_path); 2292deac10Szhongyang void SaveToFile(const wstring& file_path) const; 23*5fca386fSzhongyang vector<SongInfo> GetPlaylist() const; 2492deac10Szhongyang void AddFiles(const vector<wstring>& files); 25*5fca386fSzhongyang void AddFiles(const vector<SongInfo>& files); 2692deac10Szhongyang void FromSongList(const vector<SongInfo>& song_list); 2776b3aa86SZhong Yang void ToSongList(vector<SongInfo>& song_list); 28c83d5239SZhong Yang bool IsFileInPlaylist(const wstring& file); 29c83d5239SZhong Yang void RemoveFile(const wstring& file); 3092deac10Szhongyang 3192deac10Szhongyang private: 32*5fca386fSzhongyang static SongInfo PlaylistItemToSongInfo(const PlaylistItem& item); 33*5fca386fSzhongyang static PlaylistItem SongInfoToPlaylistItem(const SongInfo& song); 34*5fca386fSzhongyang 35*5fca386fSzhongyang private: 36*5fca386fSzhongyang vector<PlaylistItem> m_playlist; 3792deac10Szhongyang }; 3892deac10Szhongyang 39