1 #pragma once 2 #include "ListCtrlEx.h" 3 #include "SearchEditCtrl.h" 4 #include "TreeCtrlEx.h" 5 #include "MediaLibTabDlg.h" 6 #include "HorizontalSplitter.h" 7 8 9 // CFolderExploreDlg 对话框 10 11 class CFolderExploreDlg : public CMediaLibTabDlg 12 { 13 DECLARE_DYNAMIC(CFolderExploreDlg) 14 15 public: 16 CFolderExploreDlg(CWnd* pParent = nullptr); // 标准构造函数 17 virtual ~CFolderExploreDlg(); 18 19 // 对话框数据 20 #ifdef AFX_DESIGN_TIME 21 enum { IDD = IDD_FOLDER_EXPLORE_DIALOG }; 22 #endif 23 24 public: 25 void RefreshData(); 26 27 protected: 28 enum SongColumeIndex 29 { 30 COL_FILE_NAME = 0, 31 COL_TITLE, 32 COL_ARTIST, 33 COL_ALBUM, 34 COL_PATH, 35 }; 36 37 protected: 38 CSearchEditCtrl m_search_edit; 39 CTreeCtrlEx m_folder_explore_tree; 40 CListCtrlEx m_song_list_ctrl; 41 CListCtrlEx::ListData m_list_data; // 右侧列表数据 42 43 44 bool m_left_selected{}; // 最后一次选中的是左侧还是右侧 45 HTREEITEM m_tree_item_selected{}; 46 wstring m_folder_path_selected; 47 48 int m_right_selected_item{ -1 }; // 右侧列表选中的项目的序号 49 std::vector<int> m_right_selected_items; // 右侧列表多选选中的项目的序号 50 vector<SongInfo> m_right_items; // 右侧列表歌曲(以路径在媒体库内加载得到,cue未解析) 51 52 wstring m_selected_string; 53 bool m_searched{ false }; 54 bool m_initialized{ false }; 55 CHorizontalSplitter m_splitter_ctrl; 56 57 protected: 58 59 void ShowFolderTree(); 60 void ShowSongList(); 61 void FolderTreeClicked(HTREEITEM hItem); 62 void SongListClicked(int index); 63 void SetButtonsEnable(bool enable); 64 65 virtual void OnTabEntered() override; 66 67 virtual void GetSongsSelected(std::vector<SongInfo>& song_list) const override; 68 virtual const vector<SongInfo>& GetSongList() const override; 69 virtual int GetItemSelected() const override; 70 virtual const vector<int>& GetItemsSelected() const override; 71 virtual void RefreshSongList() override; 72 virtual void AfterDeleteFromDisk(const std::vector<SongInfo>& files) override; 73 virtual wstring GetSelectedString() const override; 74 virtual wstring GetNewPlaylistName() const override; // 添加到新建播放列表命令以此方法获取建议的新播放列表名称 75 76 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 77 78 DECLARE_MESSAGE_MAP() 79 public: 80 virtual BOOL OnInitDialog(); 81 afx_msg void OnNMRClickFolderExploreTree(NMHDR *pNMHDR, LRESULT *pResult); 82 afx_msg void OnNMClickFolderExploreTree(NMHDR *pNMHDR, LRESULT *pResult); 83 afx_msg void OnNMClickSongList(NMHDR *pNMHDR, LRESULT *pResult); 84 afx_msg void OnNMRClickSongList(NMHDR *pNMHDR, LRESULT *pResult); 85 afx_msg void OnNMDblclkFolderExploreTree(NMHDR *pNMHDR, LRESULT *pResult); 86 afx_msg void OnNMDblclkSongList(NMHDR *pNMHDR, LRESULT *pResult); 87 afx_msg void OnEnChangeMfceditbrowse1(); 88 protected: 89 afx_msg LRESULT OnSearchEditBtnClicked(WPARAM wParam, LPARAM lParam); 90 public: 91 virtual void OnOK(); 92 afx_msg void OnBrowsePath(); 93 }; 94