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