PlayerPlaylistBar.h
上传用户:tangyu_668
上传日期:2014-02-27
资源大小:678k
文件大小:4k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* 
  2.  * Copyright (C) 2003-2006 Gabest
  3.  * http://www.gabest.org
  4.  *
  5.  *  This Program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2, or (at your option)
  8.  *  any later version.
  9.  *   
  10.  *  This Program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13.  *  GNU General Public License for more details.
  14.  *   
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with GNU Make; see the file COPYING.  If not, write to
  17.  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  18.  *  http://www.gnu.org/copyleft/gpl.html
  19.  *
  20.  */
  21. #pragma once
  22. #include <afxcoll.h>
  23. #include "PlayerListCtrl.h"
  24. #include "Playlist.h"
  25. class OpenMediaData;
  26. class CPlayerPlaylistBar : public CSizingControlBarG
  27. {
  28. DECLARE_DYNAMIC(CPlayerPlaylistBar)
  29. private:
  30. enum {COL_NAME, COL_TIME};
  31. CImageList m_fakeImageList;
  32. CPlayerListCtrl m_list;
  33. int m_nTimeColWidth;
  34. void ResizeListColumn();
  35. void AddItem(CString fn, CAtlList<CString>* subs);
  36. void AddItem(CAtlList<CString>& fns, CAtlList<CString>* subs);
  37. void ParsePlayList(CString fn, CAtlList<CString>* subs);
  38. void ParsePlayList(CAtlList<CString>& fns, CAtlList<CString>* subs);
  39. bool ParseMPCPlayList(CString fn);
  40. bool SaveMPCPlayList(CString fn, CTextFile::enc e, bool fRemovePath);
  41. void SetupList();
  42. void UpdateList();
  43. void EnsureVisible(POSITION pos);
  44. int FindItem(POSITION pos);
  45. POSITION FindPos(int i);
  46. CImageList* m_pDragImage;
  47. BOOL m_bDragging;
  48. int m_nDragIndex, m_nDropIndex;
  49. CPoint m_ptDropPoint;
  50. void DropItemOnList();
  51. public:
  52. CPlayerPlaylistBar();
  53. virtual ~CPlayerPlaylistBar();
  54. BOOL Create(CWnd* pParentWnd);
  55. CPlaylist m_pl;
  56. int GetCount();
  57. int GetSelIdx();
  58. void SetSelIdx(int i);
  59. bool IsAtEnd();
  60. bool GetCur(CPlaylistItem& pli);
  61. CString GetCur();
  62. void SetNext(), SetPrev(), SetFirst(), SetLast();
  63. void SetCurValid(bool fValid);
  64. void SetCurTime(REFERENCE_TIME rt);
  65. void Refresh();
  66. void Empty();
  67. void Open(CAtlList<CString>& fns, bool fMulti, CAtlList<CString>* subs = NULL);
  68. void Append(CAtlList<CString>& fns, bool fMulti, CAtlList<CString>* subs = NULL);
  69. void Open(CStringW vdn, CStringW adn, int vinput, int vchannel, int ainput);
  70. void Append(CStringW vdn, CStringW adn, int vinput, int vchannel, int ainput);
  71. OpenMediaData* GetCurOMD(REFERENCE_TIME rtStart = 0);
  72. void LoadPlaylist();
  73. void SavePlaylist();
  74. protected:
  75. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  76. virtual BOOL PreTranslateMessage(MSG* pMsg);
  77. DECLARE_MESSAGE_MAP()
  78. public:
  79. afx_msg void OnSize(UINT nType, int cx, int cy);
  80. afx_msg void OnLvnKeyDown(NMHDR* pNMHDR, LRESULT* pResult);
  81. afx_msg void OnNMDblclkList(NMHDR* pNMHDR, LRESULT* pResult);
  82. afx_msg void OnLvnKeydownList(NMHDR* pNMHDR, LRESULT* pResult);
  83. // afx_msg void OnCustomdrawList(NMHDR* pNMHDR, LRESULT* pResult);
  84. afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
  85. afx_msg BOOL OnFileClosePlaylist(UINT nID);
  86. afx_msg BOOL OnPlayPlay(UINT nID);
  87. afx_msg void OnDropFiles(HDROP hDropInfo);
  88. afx_msg void OnBeginDrag(NMHDR* pNMHDR, LRESULT* pResult);
  89. afx_msg void OnMouseMove(UINT nFlags, CPoint point);
  90. afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  91. afx_msg BOOL OnToolTipNotify(UINT id, NMHDR* pNMHDR, LRESULT* pResult);
  92. afx_msg void OnTimer(UINT nIDEvent);
  93. afx_msg void OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/);
  94. afx_msg void OnLvnEndlabeleditList(NMHDR* pNMHDR, LRESULT* pResult);
  95. };