xref: /MusicPlayer2/MusicPlayer2/MediaLibTabDlg.h (revision 52587cb860c7f13198ae5554d757ec0756061dfe)
1 #pragma once
2 #include "TabDlg.h"
3 #include "SongInfo.h"
4 #include "ListCtrlEx.h"
5 #include "MediaLibHelper.h"
6 
7 class CMediaLibTabDlg : public CTabDlg
8 {
9     DECLARE_DYNAMIC(CMediaLibTabDlg)
10 
11 public:
12     CMediaLibTabDlg(UINT nIDTemplate, CWnd *pParent = NULL);
13     ~CMediaLibTabDlg();
14 
15 protected:
16     // 获取右侧选中歌曲列表(取出GetItemsSelected()指示的GetSongList()项目)
17     virtual void GetSongsSelected(std::vector<SongInfo>& song_list) const;
18     // 获取右侧歌曲列表
19     virtual const vector<SongInfo>& GetSongList() const = 0;
20     //获取右侧列表选中项
21     virtual int GetItemSelected() const = 0;
22     //获取右侧列表多个选中项
23     virtual const vector<int>& GetItemsSelected() const = 0;
24 
25     // 修改文件属性后刷新列表
26     virtual void RefreshSongList() = 0;
27     // 执行从磁盘删除后的操作
28     virtual void AfterDeleteFromDisk(const std::vector<SongInfo>& files) = 0;
29     // 获取选中单元格的文本(用于执行“复制到剪贴板”)
30     virtual wstring GetSelectedString() const = 0;
31     // _OnAddToNewPlaylist以此方法获取建议的新播放列表名称
GetNewPlaylistName()32     virtual wstring GetNewPlaylistName() const { return L""; };
33 
GetClassificationType()34     virtual CMediaClassifier::ClassificationType GetClassificationType() const { return CMediaClassifier::CT_NONE; }
GetClassificationItemName()35     virtual std::wstring GetClassificationItemName() const { return std::wstring(); }
36 
37     virtual void OnTabEntered() override;
38 
39     DECLARE_MESSAGE_MAP()
40 
41 private:
42     // 执行添加到新建播放列表命令,成功返回true,playlist_path用于接收新播放列表的路径
43     bool _OnAddToNewPlaylist(std::wstring& playlist_path);
44     // 执行在线查看的线程函数
45     static UINT ViewOnlineThreadFunc(LPVOID lpParam);
46 
47 public:
48     // 右侧列表没有选中项时无操作
49     // 一个选中项则将右侧列表整体添加到临时播放列表并定位选中曲目
50     // 多个选中项时将选中项添加到临时播放列表
51     // 左侧列表选中的情况下不要调用此方法或重写GetSongsSelected方法以改变此方法行为
52     virtual void OnOK();
53     virtual void OnCancel();
54     virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
55 
56     afx_msg void OnInitMenu(CMenu* pMenu);
57     afx_msg void OnPlayItem();
58     afx_msg void OnPlayAsNext();
59     afx_msg void OnPlayItemInFolderMode();
60     afx_msg void OnAddToNewPlaylist();
61     afx_msg void OnAddToNewPlaylistAndPlay();
62     afx_msg void OnExploreOnline();
63     afx_msg void OnExploreTrack();
64     afx_msg void OnFormatConvert();
65     afx_msg void OnDeleteFromDisk();
66     afx_msg void OnItemProperty();
67     afx_msg void OnCopyText();
68 
69 };
70 
71