xref: /MusicPlayer2/MusicPlayer2/FolderExploreDlg.h (revision 5d7216914a1b19cf365c749c30f3baf5ea39f692)
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