00001 /* 00002 * Copyright (C) 2003-2005 Gabest 00003 * http://www.gabest.org 00004 * 00005 * This Program is free software; you can redistribute it and/or modify 00006 * it under the terms of the GNU General Public License as published by 00007 * the Free Software Foundation; either version 2, or (at your option) 00008 * any later version. 00009 * 00010 * This Program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU General Public License 00016 * along with GNU Make; see the file COPYING. If not, write to 00017 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 00018 * http://www.gnu.org/copyleft/gpl.html 00019 * 00020 */ 00021 00022 #pragma once 00023 00024 #include <afxcoll.h> 00025 00026 class CPlaylistItem 00027 { 00028 static UINT m_globalid; 00029 00030 public: 00031 UINT m_id; 00032 CString m_label; 00033 CList<CString> m_fns; 00034 CList<CString> m_subs; 00035 enum type_t {file, device} m_type; 00036 REFERENCE_TIME m_duration; 00037 int m_vinput, m_vchannel; 00038 int m_ainput; 00039 long m_country; 00040 00041 bool m_fInvalid; 00042 00043 public: 00044 CPlaylistItem(); 00045 virtual ~CPlaylistItem(); 00046 00047 CPlaylistItem(const CPlaylistItem& pli); 00048 CPlaylistItem& operator = (const CPlaylistItem& pli); 00049 00050 POSITION FindFile(CString path); 00051 00052 CString GetLabel(int i = 0); 00053 }; 00054 00055 class CPlaylist : public CList<CPlaylistItem> 00056 { 00057 protected: 00058 POSITION m_pos; 00059 00060 public: 00061 CPlaylist(); 00062 virtual ~CPlaylist(); 00063 00064 void RemoveAll(); 00065 bool RemoveAt(POSITION pos); 00066 00067 void SortById(), SortByName(), SortByPath(), Randomize(); 00068 00069 POSITION GetPos(); 00070 void SetPos(POSITION pos); 00071 CPlaylistItem& GetNextWrap(POSITION& pos); 00072 CPlaylistItem& GetPrevWrap(POSITION& pos); 00073 };