192deac10Szhongyang #pragma once 292deac10Szhongyang #include "SongInfo.h" 392deac10Szhongyang class CPlaylist 492deac10Szhongyang { 592deac10Szhongyang public: 65fca386fSzhongyang struct PlaylistItem 75fca386fSzhongyang { 85fca386fSzhongyang wstring file_path; 95fca386fSzhongyang bool is_cue{ false }; //�����Ŀ��cue�ֹ죬��Ϊtrue 105fca386fSzhongyang Time start_pos{}; 115fca386fSzhongyang Time end_pos{}; 125fca386fSzhongyang wstring title; 135fca386fSzhongyang wstring artist; 145fca386fSzhongyang wstring album; 155fca386fSzhongyang int track{}; 169570ee20SZhong Yang int bit_rate{}; 175fca386fSzhongyang }; 185fca386fSzhongyang 195fca386fSzhongyang public: 2092deac10Szhongyang CPlaylist(); 2192deac10Szhongyang ~CPlaylist(); 2292deac10Szhongyang void LoadFromFile(const wstring& file_path); 2392deac10Szhongyang void SaveToFile(const wstring& file_path) const; 245fca386fSzhongyang vector<SongInfo> GetPlaylist() const; 2592deac10Szhongyang void AddFiles(const vector<wstring>& files); 265fca386fSzhongyang void AddFiles(const vector<SongInfo>& files); 2792deac10Szhongyang void FromSongList(const vector<SongInfo>& song_list); 2876b3aa86SZhong Yang void ToSongList(vector<SongInfo>& song_list); 29*bb5d4504SZhong Yang bool IsFileInPlaylist(const SongInfo& file); 30c83d5239SZhong Yang void RemoveFile(const wstring& file); 3192deac10Szhongyang 3292deac10Szhongyang private: 335fca386fSzhongyang static SongInfo PlaylistItemToSongInfo(const PlaylistItem& item); 345fca386fSzhongyang static PlaylistItem SongInfoToPlaylistItem(const SongInfo& song); 355fca386fSzhongyang 365fca386fSzhongyang private: 375fca386fSzhongyang vector<PlaylistItem> m_playlist; 3892deac10Szhongyang }; 3992deac10Szhongyang 40