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