xref: /MusicPlayer2/MusicPlayer2/Playlist.h (revision b648f77146a4c897979655f46502e42f99f70ef3)
1877f5f92SZhongYang #pragma once
292deac10Szhongyang #include "SongInfo.h"
33cd2a7a0SZhong Yang class CPlaylistFile
492deac10Szhongyang {
592deac10Szhongyang public:
6877f5f92SZhongYang 	enum Type			//播放列表格式
7ef4ab09dSZhong Yang 	{
8877f5f92SZhongYang 		PL_PLAYLIST,	//MusicPlayer2播放列表
9877f5f92SZhongYang 		PL_M3U,			//m3u播放列表
10877f5f92SZhongYang 		PL_M3U8			//m3u8播放列表
11ef4ab09dSZhong Yang 	};
12ef4ab09dSZhong Yang 
133cd2a7a0SZhong Yang     CPlaylistFile();
143cd2a7a0SZhong Yang     ~CPlaylistFile();
1592deac10Szhongyang     void LoadFromFile(const wstring& file_path);
16ef4ab09dSZhong Yang     void SaveToFile(const wstring& file_path, Type type = PL_PLAYLIST) const;
17472d2320Szhongyang219     const vector<SongInfo>& GetPlaylist() const;
18131c3e14SZhong Yang     bool AddFiles(const vector<wstring>& files, bool ignore_exist = false);
19131c3e14SZhong Yang     bool AddFiles(const vector<SongInfo>& files, bool ignore_exist = false);
2092deac10Szhongyang     void FromSongList(const vector<SongInfo>& song_list);
2176b3aa86SZhong Yang     void ToSongList(vector<SongInfo>& song_list);
22bb5d4504SZhong Yang     bool IsFileInPlaylist(const SongInfo& file);
23c83d5239SZhong Yang     void RemoveFile(const wstring& file);
2492deac10Szhongyang 
25997e6edaSZhong Yang 	static bool IsPlaylistFile(const wstring& file_path);
26ada8a249SZhong Yang     static bool IsPlaylistExt(wstring ext);
27997e6edaSZhong Yang 
28997e6edaSZhong Yang public:
29877f5f92SZhongYang     const static vector<wstring> m_surpported_playlist;		//支持的播放列表文件的扩展名列表
30997e6edaSZhong Yang 
3192deac10Szhongyang private:
323cd2a7a0SZhong Yang 	void DisposePlaylistFileLine(const string& str_current_line, bool utf8);
333cd2a7a0SZhong Yang 
343cd2a7a0SZhong Yang private:
35480ef52eSZhong Yang     vector<SongInfo> m_playlist;
36*b648f771SZhong Yang     wstring m_path;
3792deac10Szhongyang };
3892deac10Szhongyang 
39