xref: /MusicPlayer2/MusicPlayer2/FindDlg.h (revision 9cffa0df29e4d7309e6a99c32ae9bd86c2ad1b1e)
1877f5f92SZhongYang #pragma once
2f5eefe2fSzhongyang219 #include "AudioCommon.h"
32a4f25ddSzhongyang219 #include "ListCtrlEx.h"
4f5eefe2fSzhongyang219 #include "Common.h"
564f8684dSzhongyang219 #include "TabDlg.h"
6f5eefe2fSzhongyang219 
7f5eefe2fSzhongyang219 
8877f5f92SZhongYang // CFindDlg 对话框
9f5eefe2fSzhongyang219 
1064f8684dSzhongyang219 class CFindDlg : public CTabDlg
11f5eefe2fSzhongyang219 {
12f5eefe2fSzhongyang219     DECLARE_DYNAMIC(CFindDlg)
13f5eefe2fSzhongyang219 
14f5eefe2fSzhongyang219 public:
15877f5f92SZhongYang     CFindDlg(CWnd* pParent = NULL);   // 标准构造函数
16f5eefe2fSzhongyang219     virtual ~CFindDlg();
17f5eefe2fSzhongyang219 
18f5eefe2fSzhongyang219     //wstring m_config_path;
19f5eefe2fSzhongyang219 
20e8eaa7abSlrisora     // 根据多选索引m_find_result从m_find_result查找歌曲放入songs
21e8eaa7abSlrisora     void GetSongsSelected(vector<SongInfo>& songs) const;
22f5eefe2fSzhongyang219     void SaveConfig();
23f5eefe2fSzhongyang219     void LoadConfig();
24f5eefe2fSzhongyang219 
25877f5f92SZhongYang // 对话框数据
26f5eefe2fSzhongyang219 #ifdef AFX_DESIGN_TIME
27f5eefe2fSzhongyang219     enum { IDD = IDD_FIND_DIALOG };
28f5eefe2fSzhongyang219 #endif
29f5eefe2fSzhongyang219 
30f5eefe2fSzhongyang219 protected:
313b6b1eeaSZhong Yang     enum ColumeIndex
323b6b1eeaSZhong Yang     {
333b6b1eeaSZhong Yang         COL_INDEX = 0,
343b6b1eeaSZhong Yang         COL_FILE_NAME,
353b6b1eeaSZhong Yang         COL_TITLE,
363b6b1eeaSZhong Yang         COL_ARTIST,
373b6b1eeaSZhong Yang         COL_ALBUM,
383b6b1eeaSZhong Yang         COL_PATH,
393b6b1eeaSZhong Yang     };
40f5eefe2fSzhongyang219 
41877f5f92SZhongYang     wstring m_key_word;             //查找的字符串
42877f5f92SZhongYang     vector<SongInfo> m_find_result;     //储存所有播放列表的查找结果
43f5eefe2fSzhongyang219 
44877f5f92SZhongYang     CListCtrlEx m_find_result_list;     //查找结果控件
45877f5f92SZhongYang     int m_item_selected{ -1 };      //鼠标选中的项目序号
46e8eaa7abSlrisora     vector<int> m_items_selected;   // 多选列表
47f5eefe2fSzhongyang219 
48f5eefe2fSzhongyang219     CButton m_find_file_check;
49f5eefe2fSzhongyang219     CButton m_find_title_check;
50f5eefe2fSzhongyang219     CButton m_find_artist_check;
51f5eefe2fSzhongyang219     CButton m_find_album_check;
52f5eefe2fSzhongyang219 
53e8eaa7abSlrisora     bool m_find_current_playlist{ true };       //如果查找范围为当前播放列表(设置情况),则为true,如果是所有播放列表,则为false
54f5eefe2fSzhongyang219     bool m_find_file{ true };
55f5eefe2fSzhongyang219     bool m_find_title{ true };
56f5eefe2fSzhongyang219     bool m_find_artist{ true };
57f5eefe2fSzhongyang219     bool m_find_album{ true };
58f5eefe2fSzhongyang219 
59877f5f92SZhongYang     int m_find_option_data{};       //保存查找选项的数据,用每一个bit位表示每个查找选项是否选中
60f5eefe2fSzhongyang219 
611a0bed10Szhongyang219     CString m_selected_string;
621a0bed10Szhongyang219 
63*9cffa0dfSzhongyang219     virtual void OnTabEntered() override;
646ff78c2aSlrisora     virtual bool InitializeControls() override;
65877f5f92SZhongYang     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
66f5eefe2fSzhongyang219     void ShowFindResult();
671a0bed10Szhongyang219     void ShowFindInfo();
68877f5f92SZhongYang     bool _OnAddToNewPlaylist(std::wstring& playlist_path);       //执行添加到新建播放列表命令,成功返回true,playlist_path用于接收新播放列表的路径
69877f5f92SZhongYang     static UINT ViewOnlineThreadFunc(LPVOID lpParam);   //执行在线查看的线程函数
7064f8684dSzhongyang219     //向父窗口发送消息以更新“播放选中”按钮的状态
7164f8684dSzhongyang219     void SetPlaySelectedEnable(bool enable);
723b6b1eeaSZhong Yang 
731a0bed10Szhongyang219 public:
741a0bed10Szhongyang219     void ClearFindResult();
75f5eefe2fSzhongyang219 
76f5eefe2fSzhongyang219     DECLARE_MESSAGE_MAP()
77f5eefe2fSzhongyang219 
78f5eefe2fSzhongyang219     afx_msg void OnEnChangeFindEdit();
79f5eefe2fSzhongyang219     afx_msg void OnNMClickFindList(NMHDR *pNMHDR, LRESULT *pResult);
80f5eefe2fSzhongyang219     afx_msg void OnBnClickedFindButton();
81f5eefe2fSzhongyang219     virtual BOOL OnInitDialog();
82f5eefe2fSzhongyang219     afx_msg void OnNMDblclkFindList(NMHDR *pNMHDR, LRESULT *pResult);
83f5eefe2fSzhongyang219     virtual BOOL PreTranslateMessage(MSG* pMsg);
84f5eefe2fSzhongyang219 public:
85f5eefe2fSzhongyang219     afx_msg void OnBnClickedFindFileCheck();
86f5eefe2fSzhongyang219     afx_msg void OnBnClickedFindTitleCheck();
87f5eefe2fSzhongyang219     afx_msg void OnBnClickedFindArtistCheck();
88f5eefe2fSzhongyang219     afx_msg void OnBnClickedFindAlbumCheck();
891a0bed10Szhongyang219     afx_msg void OnBnClickedFindCurrentPlaylistRadio();
901a0bed10Szhongyang219     afx_msg void OnBnClickedFindAllPlaylistRadio();
911a0bed10Szhongyang219     afx_msg void OnSize(UINT nType, int cx, int cy);
9232c6db59Szhongyang     afx_msg void OnPlayItem();
9332c6db59Szhongyang     afx_msg void OnExploreTrack();
941a0bed10Szhongyang219     afx_msg void OnNMRClickFindList(NMHDR *pNMHDR, LRESULT *pResult);
9532c6db59Szhongyang     afx_msg void OnCopyText();
9632c6db59Szhongyang     afx_msg void OnPlayItemInFolderMode();
9732c6db59Szhongyang     afx_msg void OnAddToNewPlaylist();
9832c6db59Szhongyang     afx_msg void OnExploreOnline();
9932c6db59Szhongyang     afx_msg void OnFormatConvert();
10032c6db59Szhongyang     afx_msg void OnItemProperty();
1013b6b1eeaSZhong Yang     virtual void OnOK();
1024b9b2989Slrisora     afx_msg void OnAddToNewPlaylistAndPlay();
1033b6b1eeaSZhong Yang private:
104b4eab87cSzhongyang public:
105b4eab87cSzhongyang     afx_msg void OnInitMenu(CMenu* pMenu);
106ee1527dbSzhongyang     virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
10767c5a5b1Szhongyang219     afx_msg void OnDeleteFromDisk();
108550e940dSlrisora     afx_msg void OnPlayAsNext();
109f5eefe2fSzhongyang219 };
110