xref: /MusicPlayer2/MusicPlayer2/FindListDlg.h (revision 9cffa0df29e4d7309e6a99c32ae9bd86c2ad1b1e)
1*9cffa0dfSzhongyang219 #pragma once
2*9cffa0dfSzhongyang219 #include "afxdialogex.h"
3*9cffa0dfSzhongyang219 #include "TabDlg.h"
4*9cffa0dfSzhongyang219 #include "ListCtrlEx.h"
5*9cffa0dfSzhongyang219 #include "SearchEditCtrl.h"
6*9cffa0dfSzhongyang219 #include "ListCache.h"
7*9cffa0dfSzhongyang219 
8*9cffa0dfSzhongyang219 // CFindListDlg 对话框
9*9cffa0dfSzhongyang219 
10*9cffa0dfSzhongyang219 class CFindListDlg : public CTabDlg
11*9cffa0dfSzhongyang219 {
12*9cffa0dfSzhongyang219 	DECLARE_DYNAMIC(CFindListDlg)
13*9cffa0dfSzhongyang219 
14*9cffa0dfSzhongyang219 public:
15*9cffa0dfSzhongyang219 	CFindListDlg(CWnd* pParent = nullptr);   // 标准构造函数
16*9cffa0dfSzhongyang219 	virtual ~CFindListDlg();
17*9cffa0dfSzhongyang219 
18*9cffa0dfSzhongyang219 // 对话框数据
19*9cffa0dfSzhongyang219 #ifdef AFX_DESIGN_TIME
20*9cffa0dfSzhongyang219 	enum { IDD = IDD_FIND_LIST_DIALOG };
21*9cffa0dfSzhongyang219 #endif
22*9cffa0dfSzhongyang219 
23*9cffa0dfSzhongyang219 private:
24*9cffa0dfSzhongyang219 	enum COLUMN
25*9cffa0dfSzhongyang219 	{
26*9cffa0dfSzhongyang219 		COL_NAME,
27*9cffa0dfSzhongyang219 		COL_TRACK_NUM,
28*9cffa0dfSzhongyang219 		COL_MAX
29*9cffa0dfSzhongyang219 	};
30*9cffa0dfSzhongyang219 
31*9cffa0dfSzhongyang219 	CSearchEditCtrl m_search_edit;
32*9cffa0dfSzhongyang219 	std::vector<ListItem> m_all_list_items;
33*9cffa0dfSzhongyang219 	CListCtrlEx m_list_ctrl;
34*9cffa0dfSzhongyang219 	CListCtrlEx::ListData m_list_data;              // 列表数据
35*9cffa0dfSzhongyang219 	CListCtrlEx::ListData m_list_data_searched;     // 搜索后的列表数据
36*9cffa0dfSzhongyang219 	vector<int> m_search_result;		//保存搜索后的索引
37*9cffa0dfSzhongyang219 
38*9cffa0dfSzhongyang219 	bool m_searched{ false };           // 是否处于搜索状态
39*9cffa0dfSzhongyang219 	bool m_initialized{ false };
40*9cffa0dfSzhongyang219 
41*9cffa0dfSzhongyang219 private:
42*9cffa0dfSzhongyang219 	void InitListData();
43*9cffa0dfSzhongyang219 	virtual void OnTabEntered() override;
44*9cffa0dfSzhongyang219 
45*9cffa0dfSzhongyang219 	void AddListCacheData(const CListCache& list_cache);	//向m_all_list_items中添加一个CListCache中的所有项目
46*9cffa0dfSzhongyang219 	void AddMediaLibItem(CMediaClassifier::ClassificationType type);	//向m_all_list_items中添加媒体库中指定类型的所有项目
47*9cffa0dfSzhongyang219 
48*9cffa0dfSzhongyang219 	void ShowList();
49*9cffa0dfSzhongyang219 	void QuickSearch(const wstring& key_word);      //根据关键字执行快速查找,将结果保存在m_list_data_searched中
50*9cffa0dfSzhongyang219 
51*9cffa0dfSzhongyang219 	//向父窗口发送消息以更新“播放选中”按钮的状态
52*9cffa0dfSzhongyang219 	void SetPlaySelectedEnable(bool enable);
53*9cffa0dfSzhongyang219 
54*9cffa0dfSzhongyang219 protected:
55*9cffa0dfSzhongyang219 	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
56*9cffa0dfSzhongyang219 
57*9cffa0dfSzhongyang219 	DECLARE_MESSAGE_MAP()
58*9cffa0dfSzhongyang219 public:
59*9cffa0dfSzhongyang219 	virtual BOOL OnInitDialog();
60*9cffa0dfSzhongyang219 	virtual void OnOK();
61*9cffa0dfSzhongyang219 protected:
62*9cffa0dfSzhongyang219 	afx_msg LRESULT OnSearchEditBtnClicked(WPARAM wParam, LPARAM lParam);
63*9cffa0dfSzhongyang219 public:
64*9cffa0dfSzhongyang219 	afx_msg void OnEnChangeSearchEdit();
65*9cffa0dfSzhongyang219 	afx_msg void OnNMClickSongList(NMHDR* pNMHDR, LRESULT* pResult);
66*9cffa0dfSzhongyang219 };
67