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