00001 #pragma once
00002
00009 class PlayList : public CObject, public Observer
00010 {
00011
00012 private:
00013
00014 CList<Music*, Music*> m_MusicList;
00015
00016 POSITION m_CurrentPosition;
00017
00018 public:
00019
00020 CMutex AccessMusicList;
00021
00022 private:
00023
00024 POSITION GetRandomIterator();
00025
00026 public:
00027
00031 PlayList();
00032
00036 ~PlayList();
00037
00041 void ClearList();
00042
00046 void Manage();
00047
00052 Music* GetCurrent();
00053
00058 Music* GetLast();
00059
00064 void Next(bool _Force = false);
00065
00069 void Previous();
00070
00074 void Stop();
00075
00079 bool AddMusic(const CString& _FileName);
00080
00084 virtual void Serialize(CArchive& _Archive);
00085
00089 virtual void Update();
00090
00095 CList<Music*, Music*>& GetMusicList();
00096
00101 void PlayAt(const POSITION& _Pos);
00102
00107 void RemoveAt(const POSITION& _Pos);
00108
00113 void SetCurrentPosition(const POSITION& _Pos);
00114
00115
00116 DECLARE_SERIAL(PlayList);
00117
00118 };