xref: /MusicPlayer2/MusicPlayer2/Playlist.h (revision bb5d4504f8fddda61251461887424e49e28f5ce8)
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