xref: /MusicPlayer2/MusicPlayer2/FindListDlg.h (revision c1fa382b6dc582665d7ede9b222314265bb88c8f)
19cffa0dfSzhongyang219 #pragma once
29cffa0dfSzhongyang219 #include "afxdialogex.h"
39cffa0dfSzhongyang219 #include "TabDlg.h"
49cffa0dfSzhongyang219 #include "ListCtrlEx.h"
59cffa0dfSzhongyang219 #include "SearchEditCtrl.h"
69cffa0dfSzhongyang219 #include "ListCache.h"
79cffa0dfSzhongyang219 
89cffa0dfSzhongyang219 // CFindListDlg 对话框
99cffa0dfSzhongyang219 
109cffa0dfSzhongyang219 class CFindListDlg : public CTabDlg
119cffa0dfSzhongyang219 {
129cffa0dfSzhongyang219 	DECLARE_DYNAMIC(CFindListDlg)
139cffa0dfSzhongyang219 
149cffa0dfSzhongyang219 public:
159cffa0dfSzhongyang219 	CFindListDlg(CWnd* pParent = nullptr);   // 标准构造函数
169cffa0dfSzhongyang219 	virtual ~CFindListDlg();
179cffa0dfSzhongyang219 
189cffa0dfSzhongyang219 // 对话框数据
199cffa0dfSzhongyang219 #ifdef AFX_DESIGN_TIME
209cffa0dfSzhongyang219 	enum { IDD = IDD_FIND_LIST_DIALOG };
219cffa0dfSzhongyang219 #endif
229cffa0dfSzhongyang219 
239cffa0dfSzhongyang219 private:
249cffa0dfSzhongyang219 	enum COLUMN
259cffa0dfSzhongyang219 	{
269cffa0dfSzhongyang219 		COL_NAME,
279cffa0dfSzhongyang219 		COL_TRACK_NUM,
289cffa0dfSzhongyang219 		COL_MAX
299cffa0dfSzhongyang219 	};
309cffa0dfSzhongyang219 
319cffa0dfSzhongyang219 	CSearchEditCtrl m_search_edit;
329cffa0dfSzhongyang219 	std::vector<ListItem> m_all_list_items;
339cffa0dfSzhongyang219 	CListCtrlEx m_list_ctrl;
349cffa0dfSzhongyang219 	CListCtrlEx::ListData m_list_data;              // 列表数据
359cffa0dfSzhongyang219 	CListCtrlEx::ListData m_list_data_searched;     // 搜索后的列表数据
369cffa0dfSzhongyang219 	vector<int> m_search_result;		//保存搜索后的索引
379cffa0dfSzhongyang219 
389cffa0dfSzhongyang219 	bool m_searched{ false };           // 是否处于搜索状态
399cffa0dfSzhongyang219 	bool m_initialized{ false };
409cffa0dfSzhongyang219 
419cffa0dfSzhongyang219 private:
429cffa0dfSzhongyang219 	void InitListData();
439cffa0dfSzhongyang219 	virtual void OnTabEntered() override;
449cffa0dfSzhongyang219 
459cffa0dfSzhongyang219 	void AddListCacheData(const CListCache& list_cache);	//向m_all_list_items中添加一个CListCache中的所有项目
469cffa0dfSzhongyang219 	void AddMediaLibItem(CMediaClassifier::ClassificationType type);	//向m_all_list_items中添加媒体库中指定类型的所有项目
47*c1fa382bSzhongyang219 	void AddAllFolders();	//向m_all_list_items中添加媒体库中所有文件夹
489cffa0dfSzhongyang219 
499cffa0dfSzhongyang219 	void ShowList();
509cffa0dfSzhongyang219 	void QuickSearch(const wstring& key_word);      //根据关键字执行快速查找,将结果保存在m_list_data_searched中
519cffa0dfSzhongyang219 
529cffa0dfSzhongyang219 	//向父窗口发送消息以更新“播放选中”按钮的状态
539cffa0dfSzhongyang219 	void SetPlaySelectedEnable(bool enable);
549cffa0dfSzhongyang219 
559cffa0dfSzhongyang219 protected:
569cffa0dfSzhongyang219 	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
579cffa0dfSzhongyang219 
589cffa0dfSzhongyang219 	DECLARE_MESSAGE_MAP()
599cffa0dfSzhongyang219 public:
609cffa0dfSzhongyang219 	virtual BOOL OnInitDialog();
619cffa0dfSzhongyang219 	virtual void OnOK();
629cffa0dfSzhongyang219 protected:
639cffa0dfSzhongyang219 	afx_msg LRESULT OnSearchEditBtnClicked(WPARAM wParam, LPARAM lParam);
649cffa0dfSzhongyang219 public:
659cffa0dfSzhongyang219 	afx_msg void OnEnChangeSearchEdit();
669cffa0dfSzhongyang219 	afx_msg void OnNMClickSongList(NMHDR* pNMHDR, LRESULT* pResult);
6705b6c2f7Szhongyang219 	afx_msg void OnSize(UINT nType, int cx, int cy);
689cffa0dfSzhongyang219 };
69