xref: /MusicPlayer2/MusicPlayer2/FindDlg.h (revision 4b9b29893b3bb42cad0f3ee69501a6a01e2c802f)
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 
22e8eaa7abSlrisora     // 根据多选索引m_find_result从m_find_result查找歌曲放入songs
23e8eaa7abSlrisora     void GetSongsSelected(vector<SongInfo>& songs) const;
24f5eefe2fSzhongyang219     void SaveConfig();
25f5eefe2fSzhongyang219     void LoadConfig();
26f5eefe2fSzhongyang219 
27877f5f92SZhongYang // 对话框数据
28f5eefe2fSzhongyang219 #ifdef AFX_DESIGN_TIME
29f5eefe2fSzhongyang219     enum { IDD = IDD_FIND_DIALOG };
30f5eefe2fSzhongyang219 #endif
31f5eefe2fSzhongyang219 
32f5eefe2fSzhongyang219 protected:
333b6b1eeaSZhong Yang     enum ColumeIndex
343b6b1eeaSZhong Yang     {
353b6b1eeaSZhong Yang         COL_INDEX = 0,
363b6b1eeaSZhong Yang         COL_FILE_NAME,
373b6b1eeaSZhong Yang         COL_TITLE,
383b6b1eeaSZhong Yang         COL_ARTIST,
393b6b1eeaSZhong Yang         COL_ALBUM,
403b6b1eeaSZhong Yang         COL_PATH,
413b6b1eeaSZhong Yang     };
42f5eefe2fSzhongyang219 
43877f5f92SZhongYang     wstring m_key_word;             //查找的字符串
44877f5f92SZhongYang     vector<SongInfo> m_find_result;     //储存所有播放列表的查找结果
45f5eefe2fSzhongyang219 
46877f5f92SZhongYang     CListCtrlEx m_find_result_list;     //查找结果控件
47877f5f92SZhongYang     int m_item_selected{ -1 };      //鼠标选中的项目序号
48e8eaa7abSlrisora     vector<int> m_items_selected;   // 多选列表
49f5eefe2fSzhongyang219 
50f5eefe2fSzhongyang219     CButton m_find_file_check;
51f5eefe2fSzhongyang219     CButton m_find_title_check;
52f5eefe2fSzhongyang219     CButton m_find_artist_check;
53f5eefe2fSzhongyang219     CButton m_find_album_check;
54f5eefe2fSzhongyang219 
55e8eaa7abSlrisora     bool m_find_current_playlist{ true };       //如果查找范围为当前播放列表(设置情况),则为true,如果是所有播放列表,则为false
56f5eefe2fSzhongyang219     bool m_find_file{ true };
57f5eefe2fSzhongyang219     bool m_find_title{ true };
58f5eefe2fSzhongyang219     bool m_find_artist{ true };
59f5eefe2fSzhongyang219     bool m_find_album{ true };
60f5eefe2fSzhongyang219 
61877f5f92SZhongYang     int m_find_option_data{};       //保存查找选项的数据,用每一个bit位表示每个查找选项是否选中
62f5eefe2fSzhongyang219 
631a0bed10Szhongyang219     CString m_selected_string;
641a0bed10Szhongyang219 
65d5347edbSZhong Yang     virtual CString GetDialogName() const override;
666ff78c2aSlrisora     virtual bool InitializeControls() override;
67877f5f92SZhongYang     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
68f5eefe2fSzhongyang219     void ShowFindResult();
691a0bed10Szhongyang219     void ShowFindInfo();
70877f5f92SZhongYang     bool _OnAddToNewPlaylist(std::wstring& playlist_path);       //执行添加到新建播放列表命令,成功返回true,playlist_path用于接收新播放列表的路径
71877f5f92SZhongYang     static UINT ViewOnlineThreadFunc(LPVOID lpParam);   //执行在线查看的线程函数
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();
102*4b9b2989Slrisora     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