xref: /MusicPlayer2/MusicPlayer2/FindDlg.h (revision e8eaa7abac42941dd06cf0af1de5916e9466ba9f)
1877f5f92SZhongYang #pragma once
2f5eefe2fSzhongyang219 #include "afxcmn.h"
3f5eefe2fSzhongyang219 #include "AudioCommon.h"
4f5eefe2fSzhongyang219 #include "afxwin.h"
52a4f25ddSzhongyang219 #include "ListCtrlEx.h"
6f5eefe2fSzhongyang219 #include "Common.h"
7d5347edbSZhong Yang #include "BaseDialog.h"
8f5eefe2fSzhongyang219 
9f5eefe2fSzhongyang219 
10877f5f92SZhongYang // CFindDlg 对话框
11f5eefe2fSzhongyang219 
12d5347edbSZhong Yang class CFindDlg : public CBaseDialog
13f5eefe2fSzhongyang219 {
14f5eefe2fSzhongyang219     DECLARE_DYNAMIC(CFindDlg)
15f5eefe2fSzhongyang219 
16f5eefe2fSzhongyang219 public:
17877f5f92SZhongYang     CFindDlg(CWnd* pParent = NULL);   // 标准构造函数
18f5eefe2fSzhongyang219     virtual ~CFindDlg();
19f5eefe2fSzhongyang219 
20f5eefe2fSzhongyang219     //wstring m_config_path;
21f5eefe2fSzhongyang219 
22b4eab87cSzhongyang     //int GetSelectedTrack() const;
23b4eab87cSzhongyang     bool IsFindCurrentPlaylist() const;
24*e8eaa7abSlrisora     // 根据多选索引m_find_result从m_find_result查找歌曲放入songs
25*e8eaa7abSlrisora     void GetSongsSelected(vector<SongInfo>& songs) const;
26f5eefe2fSzhongyang219     void SaveConfig();
27f5eefe2fSzhongyang219     void LoadConfig();
28f5eefe2fSzhongyang219 
29877f5f92SZhongYang // 对话框数据
30f5eefe2fSzhongyang219 #ifdef AFX_DESIGN_TIME
31f5eefe2fSzhongyang219     enum { IDD = IDD_FIND_DIALOG };
32f5eefe2fSzhongyang219 #endif
33f5eefe2fSzhongyang219 
34f5eefe2fSzhongyang219 protected:
353b6b1eeaSZhong Yang     enum ColumeIndex
363b6b1eeaSZhong Yang     {
373b6b1eeaSZhong Yang         COL_INDEX = 0,
383b6b1eeaSZhong Yang         COL_FILE_NAME,
393b6b1eeaSZhong Yang         COL_TITLE,
403b6b1eeaSZhong Yang         COL_ARTIST,
413b6b1eeaSZhong Yang         COL_ALBUM,
423b6b1eeaSZhong Yang         COL_PATH,
433b6b1eeaSZhong Yang     };
44f5eefe2fSzhongyang219 
45877f5f92SZhongYang     wstring m_key_word;             //查找的字符串
46877f5f92SZhongYang     vector<SongInfo> m_find_result;     //储存所有播放列表的查找结果
47f5eefe2fSzhongyang219 
48877f5f92SZhongYang     CListCtrlEx m_find_result_list;     //查找结果控件
49877f5f92SZhongYang     int m_item_selected{ -1 };      //鼠标选中的项目序号
50*e8eaa7abSlrisora     vector<int> m_items_selected;   // 多选列表
51f5eefe2fSzhongyang219 
52f5eefe2fSzhongyang219     CButton m_find_file_check;
53f5eefe2fSzhongyang219     CButton m_find_title_check;
54f5eefe2fSzhongyang219     CButton m_find_artist_check;
55f5eefe2fSzhongyang219     CButton m_find_album_check;
56f5eefe2fSzhongyang219 
57*e8eaa7abSlrisora     bool m_find_current_playlist{ true };       //如果查找范围为当前播放列表(设置情况),则为true,如果是所有播放列表,则为false
58*e8eaa7abSlrisora     bool m_result_in_current_playlist{ true };  //查找结果是否为当前播放列表(结果情况)
59f5eefe2fSzhongyang219     bool m_find_file{ true };
60f5eefe2fSzhongyang219     bool m_find_title{ true };
61f5eefe2fSzhongyang219     bool m_find_artist{ true };
62f5eefe2fSzhongyang219     bool m_find_album{ true };
63f5eefe2fSzhongyang219 
64877f5f92SZhongYang     int m_find_option_data{};       //保存查找选项的数据,用每一个bit位表示每个查找选项是否选中
65f5eefe2fSzhongyang219 
661a0bed10Szhongyang219     CString m_selected_string;
671a0bed10Szhongyang219 
68d5347edbSZhong Yang     virtual CString GetDialogName() const override;
69877f5f92SZhongYang     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
70f5eefe2fSzhongyang219     void ShowFindResult();
711a0bed10Szhongyang219     void ShowFindInfo();
72877f5f92SZhongYang     bool _OnAddToNewPlaylist(std::wstring& playlist_path);       //执行添加到新建播放列表命令,成功返回true,playlist_path用于接收新播放列表的路径
73877f5f92SZhongYang     static UINT ViewOnlineThreadFunc(LPVOID lpParam);   //执行在线查看的线程函数
743b6b1eeaSZhong Yang 
751a0bed10Szhongyang219 public:
761a0bed10Szhongyang219     void ClearFindResult();
77f5eefe2fSzhongyang219 
78f5eefe2fSzhongyang219     DECLARE_MESSAGE_MAP()
79f5eefe2fSzhongyang219 
80f5eefe2fSzhongyang219     afx_msg void OnEnChangeFindEdit();
81f5eefe2fSzhongyang219     afx_msg void OnNMClickFindList(NMHDR *pNMHDR, LRESULT *pResult);
82f5eefe2fSzhongyang219     afx_msg void OnBnClickedFindButton();
83f5eefe2fSzhongyang219     virtual BOOL OnInitDialog();
84f5eefe2fSzhongyang219     afx_msg void OnNMDblclkFindList(NMHDR *pNMHDR, LRESULT *pResult);
85f5eefe2fSzhongyang219     virtual BOOL PreTranslateMessage(MSG* pMsg);
86f5eefe2fSzhongyang219 public:
87f5eefe2fSzhongyang219     afx_msg void OnBnClickedFindFileCheck();
88f5eefe2fSzhongyang219     afx_msg void OnBnClickedFindTitleCheck();
89f5eefe2fSzhongyang219     afx_msg void OnBnClickedFindArtistCheck();
90f5eefe2fSzhongyang219     afx_msg void OnBnClickedFindAlbumCheck();
911a0bed10Szhongyang219     afx_msg void OnBnClickedFindCurrentPlaylistRadio();
921a0bed10Szhongyang219     afx_msg void OnBnClickedFindAllPlaylistRadio();
931a0bed10Szhongyang219     afx_msg void OnSize(UINT nType, int cx, int cy);
9432c6db59Szhongyang     afx_msg void OnPlayItem();
9532c6db59Szhongyang     afx_msg void OnExploreTrack();
961a0bed10Szhongyang219     afx_msg void OnNMRClickFindList(NMHDR *pNMHDR, LRESULT *pResult);
9732c6db59Szhongyang     afx_msg void OnCopyText();
9832c6db59Szhongyang     afx_msg void OnPlayItemInFolderMode();
9932c6db59Szhongyang     afx_msg void OnAddToNewPlaylist();
10032c6db59Szhongyang     afx_msg void OnExploreOnline();
10132c6db59Szhongyang     afx_msg void OnFormatConvert();
10232c6db59Szhongyang     afx_msg void OnItemProperty();
1033b6b1eeaSZhong Yang     virtual void OnOK();
1043b6b1eeaSZhong Yang     afx_msg void OnAddToNewPalylistAndPlay();
1053b6b1eeaSZhong Yang private:
106b4eab87cSzhongyang public:
107b4eab87cSzhongyang     afx_msg void OnInitMenu(CMenu* pMenu);
108ee1527dbSzhongyang     virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
10967c5a5b1Szhongyang219     afx_msg void OnDeleteFromDisk();
110f5eefe2fSzhongyang219 };
111