xref: /MusicPlayer2/MusicPlayer2/PropertyTabDlg.h (revision 6ff78c2af22a2540d4da0cd487a360b3fffc6e91)
1 #pragma once
2 #include "TabDlg.h"
3 #include "IPropertyTabDlg.h"
4 #include "EditEx.h"
5 #include "MyComboBox.h"
6 
7 // CPropertyTabDlg 对话框
8 
9 class CPropertyTabDlg : public CTabDlg, public IPropertyTabDlg
10 {
11 	DECLARE_DYNAMIC(CPropertyTabDlg)
12 
13 public:
14 	CPropertyTabDlg(vector<SongInfo>& all_song_info, int& index, CWnd* pParent = NULL, bool read_only = false);   // 标准构造函数
15 	CPropertyTabDlg(vector<SongInfo>& song_info, CWnd* pParent = NULL);   // 批量编辑
16 	virtual ~CPropertyTabDlg();
17 
18 	//int m_playing_index{};	//正在播放的曲目序号
19 	//wstring m_lyric_name;
20 
GetListRefresh()21 	bool GetListRefresh() const { return m_list_refresh; }
22 
23 // 对话框数据
24 #ifdef AFX_DESIGN_TIME
25 	enum { IDD = IDD_PROPERTY_DIALOG };
26 #endif
27 
28 protected:
29 	//const vector<wstring>& m_all_file_name;
30 	int& m_index;		//当前显示项目的曲目序号
31 	vector<SongInfo>& m_all_song_info;
32 	bool m_write_enable{ false };		//是否允许写入标签
33 	bool m_modified{ false };
34 	bool m_genre_modified{ false };
35 	bool m_list_refresh{ false };		//用于判断窗口关闭后播放列表是否要刷新
36     int m_song_num{};
37     bool m_read_only{};
38 
39     const bool m_batch_edit;
40     int m_no_use{};
41 
42 	//控件变量
43 	CEditEx m_file_name_edit;
44 	CEditEx m_file_path_edit;
45 	CEditEx m_file_type_edit;
46 	CEditEx m_song_length_edit;
47 	CEditEx m_file_size_edit;
48 	CEditEx m_bit_rate_edit;
49 	CEditEx m_title_edit;
50 	CEditEx m_artist_edit;
51 	CEditEx m_album_edit;
52 	CEditEx m_track_edit;
53 	CEditEx m_year_edit;
54 	//CEditEx m_genre_edit;
55 	CMyComboBox m_genre_combo;
56 	CEditEx m_comment_edit;
57 	CEditEx m_lyric_file_edit;
58 
59 	void ShowInfo();
60 	void SetEditReadOnly(bool read_only, bool is_cue);
61 	void SetWreteEnable();
62     void SetSaveBtnEnable();
63     void ResetEditModified();
64 
65     virtual void OnTabEntered() override;      //当标签切换到当前窗口时被调用
66     virtual bool InitializeControls() override;
67 	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
68 
69     void ModifyTagInfo(const SongInfo& song);
70     bool GetTagFromLyrics(SongInfo& song, SongInfo& result);
71 
72 	DECLARE_MESSAGE_MAP()
73 public:
74 	virtual BOOL OnInitDialog();
75     virtual void PagePrevious() override;
76     virtual void PageNext() override;
77 	virtual BOOL PreTranslateMessage(MSG* pMsg);
78 	afx_msg void OnEnChangeTitelEdit();
79 	afx_msg void OnEnChangeArtistEdit();
80 	afx_msg void OnEnChangeAlbumEdit();
81 	afx_msg void OnEnChangeTrackEdit();
82 	afx_msg void OnEnChangeYearEdit();
83 	afx_msg void OnEnChangeCommentEdit();
84 	//afx_msg void OnCbnEditchangeGenreCombo();
85 	virtual int SaveModified() override;
86 	afx_msg void OnCbnSelchangeGenreCombo();
87 	//afx_msg void OnBnClickedButton3();
88     afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
89     afx_msg void OnCbnEditchangeGenreCombo();
90     afx_msg void OnBnClickedGetTagOnlineButton();
91 protected:
92     afx_msg LRESULT OnPorpertyOnlineInfoAcquired(WPARAM wParam, LPARAM lParam);
93 public:
94     afx_msg void OnBnClickedGetTagFromLyricButton();
95     afx_msg void OnBnClickedGetTagFromFileNameButton();
96 };
97