1 #pragma once 2 #include "ListCtrlEx.h" 3 #include "SearchEditCtrl.h" 4 #include "MediaLibTabDlg.h" 5 6 7 // CAllMediaDlg 对话框 8 9 class CAllMediaDlg : public CMediaLibTabDlg 10 { 11 DECLARE_DYNAMIC(CAllMediaDlg) 12 13 public: 14 enum DialogType 15 { 16 DT_ALL_MEDIA, //所有曲目 17 DT_RECENT_MEDIA //最近播放的曲目 18 }; 19 20 public: 21 CAllMediaDlg(CAllMediaDlg::DialogType type, CWnd* pParent = nullptr); // 标准构造函数 22 virtual ~CAllMediaDlg(); 23 24 // 对话框数据 25 #ifdef AFX_DESIGN_TIME 26 enum { IDD = IDD_ALL_MEDIA_DIALOG }; 27 #endif 28 29 public: 30 void RefreshData(); 31 32 protected: 33 enum SongColumeIndex 34 { 35 COL_INDEX = 0, 36 COL_TITLE, 37 COL_ARTIST, 38 COL_ALBUM, 39 COL_TRACK, 40 COL_GENRE, 41 COL_BITRATE, 42 COL_YEAR, 43 COL_PATH, 44 COL_LAST_PLAYED_TIME, 45 COL_MAX, 46 }; 47 48 protected: 49 CListCtrlEx m_song_list_ctrl; 50 CSearchEditCtrl m_search_edit; 51 52 CListCtrlEx::ListData m_list_data; // 列表数据 53 CListCtrlEx::ListData m_list_data_searched; // 搜索后的列表数据 54 vector<SongInfo> m_list_songs; // 与列表数据同步 55 vector<SongInfo> m_list_songs_searched; // 与搜索后的列表数据同步 56 57 bool m_initialized{ false }; 58 bool m_searched{ false }; // 是否处于搜索状态 59 std::vector<int> m_selected_items; // 列表选中的项目的序号 60 int m_selected_item{ -1 }; 61 wstring m_selected_string; 62 63 DialogType m_type{}; 64 65 protected: 66 void InitListData(); 67 void SetRowData(CListCtrlEx::RowData& row_data, const SongInfo& song); 68 void UpdateListIndex(); 69 void ShowSongList(); 70 void QuickSearch(const wstring& key_word); //根据关键字执行快速查找,将结果保存在m_list_data_searched中 71 void SongListClicked(int index); 72 void SetButtonsEnable(bool enable); 73 void SetPlayButtonText(bool selected_valid); //设置父窗口中“播放”按钮的文本 74 75 virtual void OnTabEntered() override; 76 virtual void OnTabExited() override; 77 78 virtual const vector<SongInfo>& GetSongList() const override; 79 virtual int GetItemSelected() const override; 80 virtual const vector<int>& GetItemsSelected() const override; 81 virtual void RefreshSongList() override; //刷新选中行的信息 82 virtual void AfterDeleteFromDisk(const std::vector<SongInfo>& files) override; 83 virtual wstring GetSelectedString() const override; 84 85 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 86 87 DECLARE_MESSAGE_MAP() 88 public: 89 virtual BOOL OnInitDialog(); 90 virtual void OnOK(); 91 afx_msg void OnHdnItemclickSongList(NMHDR *pNMHDR, LRESULT *pResult); 92 afx_msg void OnEnChangeSearchEdit(); 93 afx_msg void OnNMClickSongList(NMHDR *pNMHDR, LRESULT *pResult); 94 afx_msg void OnNMRClickSongList(NMHDR *pNMHDR, LRESULT *pResult); 95 afx_msg void OnNMDblclkSongList(NMHDR *pNMHDR, LRESULT *pResult); 96 protected: 97 afx_msg LRESULT OnSearchEditBtnClicked(WPARAM wParam, LPARAM lParam); 98 public: 99 afx_msg void OnInitMenu(CMenu* pMenu); 100 }; 101