xref: /MusicPlayer2/MusicPlayer2/CMediaLibDlg.h (revision 2da1a15f6c2d42810da10546f1f6c4e68fdf97b9)
1 #pragma once
2 #include "BaseDialog.h"
3 #include "CTabCtrlEx.h"
4 #include "SetPathDlg.h"
5 #include "CSelectPlaylist.h"
6 #include "MediaClassifyDlg.h"
7 #include "FolderExploreDlg.h"
8 #include "AllMediaDlg.h"
9 
10 // CMediaLibDlg 对话框
11 
12 class CMediaLibDlg : public CBaseDialog
13 {
14     DECLARE_DYNAMIC(CMediaLibDlg)
15 
16 public:
17     CMediaLibDlg(int cur_tab = 0, CWnd* pParent = nullptr);   // 标准构造函数
18     virtual ~CMediaLibDlg();
19 
20     // 对话框数据
21 #ifdef AFX_DESIGN_TIME
22     enum { IDD = IDD_MEDIA_LIB_DIALOG };
23 #endif
24 
25 public:
26     CSetPathDlg* m_path_dlg{};
27     CSelectPlaylistDlg* m_playlist_dlg{};
28     CMediaClassifyDlg* m_artist_dlg{};
29     CMediaClassifyDlg* m_album_dlg{};
30     CMediaClassifyDlg* m_genre_dlg{};
31     CMediaClassifyDlg* m_year_dlg{};
32     CMediaClassifyDlg* m_type_dlg{};
33     CMediaClassifyDlg* m_bitrate_dlg{};
34     CMediaClassifyDlg* m_rating_dlg{};
35     CAllMediaDlg* m_all_media_dlg{};
36     CAllMediaDlg* m_recent_media_dlg{};
37     CFolderExploreDlg* m_folder_explore_dlg{};
38 
39     void SetCurTab(int tab);
40 
41     //设置要强制显示出来的对话框(即使媒体库设置中为显示此标签)
42     //tabs: 要显示出来的标签,它不是标签的序号,而是多个bit的组合,用于表示多个标签,每个bit的含义为MediaLibDisplayItem枚举的常量
SetTabForceShow(int tabs)43     void SetTabForceShow(int tabs) { m_tab_show_force = tabs; }
44 
45     //跳转到对应项目,例如当前显示的是艺术家标签,则跳转到对应艺术家
46     bool NavigateToItem(const wstring& item);
47 
48 protected:
49     virtual CString GetDialogName() const override;
50     virtual bool InitializeControls() override;
51     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
52 
53     DECLARE_MESSAGE_MAP()
54 
55 private:
56     CTabCtrlEx m_tab_ctrl;
57     int m_init_tab{};
58     static int m_last_tab;
59     int m_tab_show_force{};     //要强制显示出来的标签
60 
61 public:
62     virtual BOOL OnInitDialog();
63     afx_msg void OnBnClickedPlaySelected();
64 protected:
65     afx_msg LRESULT OnPlaySelectedBtnEnable(WPARAM wParam, LPARAM lParam);
66 public:
67     afx_msg void OnBnClickedMediaLibSettingsBtn();
68     afx_msg void OnBnClickedStatisticsInfoButton();
69     afx_msg void OnDestroy();
70     virtual void OnOK();
71     virtual void OnCancel();
72 };
73