1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
/*
* (C) 2003-2006 Gabest
* (C) 2006-2013 see Authors.txt
*
* This file is part of MPC-HC.
*
* MPC-HC is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* MPC-HC is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#pragma once
#include <afxcoll.h>
#include "PlayerBar.h"
#include "PlayerListCtrl.h"
#include "Playlist.h"
class OpenMediaData;
class CPlayerPlaylistBar : public CPlayerBar
{
DECLARE_DYNAMIC(CPlayerPlaylistBar)
private:
enum { COL_NAME, COL_TIME };
CImageList m_fakeImageList;
CPlayerListCtrl m_list;
int m_nTimeColWidth;
void ResizeListColumn();
void AddItem(CString fn, CAtlList<CString>* subs);
void AddItem(CAtlList<CString>& fns, CAtlList<CString>* subs);
void ParsePlayList(CString fn, CAtlList<CString>* subs);
void ParsePlayList(CAtlList<CString>& fns, CAtlList<CString>* subs);
void ResolveLinkFiles(CAtlList<CString>& fns);
bool ParseBDMVPlayList(CString fn);
bool ParseMPCPlayList(CString fn);
bool SaveMPCPlayList(CString fn, CTextFile::enc e, bool fRemovePath);
void SetupList();
void UpdateList();
void EnsureVisible(POSITION pos);
int FindItem(POSITION pos) const;
POSITION FindPos(int i);
CImageList* m_pDragImage;
BOOL m_bDragging;
int m_nDragIndex, m_nDropIndex;
CPoint m_ptDropPoint;
void DropItemOnList();
bool m_bHiddenDueToFullscreen;
public:
CPlayerPlaylistBar();
virtual ~CPlayerPlaylistBar();
BOOL Create(CWnd* pParentWnd, UINT defDockBarID);
virtual void LoadState(CFrameWnd* pParent);
virtual void SaveState();
bool IsHiddenDueToFullscreen() const;
void SetHiddenDueToFullscreen(bool bHidenDueToFullscreen);
CPlaylist m_pl;
INT_PTR GetCount() const;
int GetSelIdx() const;
void SetSelIdx(int i);
bool IsAtEnd();
bool GetCur(CPlaylistItem& pli) const;
CPlaylistItem* GetCur();
CString GetCurFileName();
bool SetNext();
bool SetPrev();
void SetFirstSelected();
void SetFirst();
void SetLast();
void SetCurValid(bool fValid);
void SetCurTime(REFERENCE_TIME rt);
void Refresh();
bool Empty();
void Open(CAtlList<CString>& fns, bool fMulti, CAtlList<CString>* subs = nullptr);
void Append(CAtlList<CString>& fns, bool fMulti, CAtlList<CString>* subs = nullptr);
void Open(CStringW vdn, CStringW adn, int vinput, int vchannel, int ainput);
void Append(CStringW vdn, CStringW adn, int vinput, int vchannel, int ainput);
OpenMediaData* GetCurOMD(REFERENCE_TIME rtStart = 0);
void LoadPlaylist(LPCTSTR filename);
void SavePlaylist();
bool SelectFileInPlaylist(LPCTSTR filename);
protected:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
virtual BOOL PreTranslateMessage(MSG* pMsg);
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnSize(UINT nType, int cx, int cy);
afx_msg void OnLvnKeyDown(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnNMDblclkList(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnLvnKeydownList(NMHDR* pNMHDR, LRESULT* pResult);
// afx_msg void OnCustomdrawList(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
afx_msg BOOL OnPlayPlay(UINT nID);
afx_msg void OnDropFiles(HDROP hDropInfo);
afx_msg void OnBeginDrag(NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg BOOL OnToolTipNotify(UINT id, NMHDR* pNMHDR, LRESULT* pResult);
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnContextMenu(CWnd* /*pWnd*/, CPoint /*point*/);
afx_msg void OnLvnEndlabeleditList(NMHDR* pNMHDR, LRESULT* pResult);
};
|