1 // AppearanceSettingDlg.cpp : 实现文件
2 //
3
4 #include "stdafx.h"
5 #include "MusicPlayer2.h"
6 #include "AppearanceSettingDlg.h"
7 #include "FilterHelper.h"
8
9
10 // CAppearanceSettingDlg 对话框
11
IMPLEMENT_DYNAMIC(CAppearanceSettingDlg,CTabDlg)12 IMPLEMENT_DYNAMIC(CAppearanceSettingDlg, CTabDlg)
13
14 CAppearanceSettingDlg::CAppearanceSettingDlg(CWnd* pParent /*=NULL*/)
15 : CTabDlg(IDD_APPEREANCE_SETTING_DLG, pParent)
16 {
17
18 }
19
~CAppearanceSettingDlg()20 CAppearanceSettingDlg::~CAppearanceSettingDlg()
21 {
22 }
23
InitializeControls()24 bool CAppearanceSettingDlg::InitializeControls()
25 {
26 wstring temp;
27 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_VISUAL_EFFECTS");
28 SetDlgItemTextW(IDC_VISUAL_EFFECTS_STATIC, temp.c_str());
29 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_SPECTRUM_SHOW");
30 SetDlgItemTextW(IDC_SHOW_SPECTRUM_CHECK, temp.c_str());
31 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_SPECTRUM_LOW_FREQ_IN_CENTER");
32 SetDlgItemTextW(IDC_LOW_FREQ_IN_CENTER_CHECK, temp.c_str());
33 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_SPECTRUM_HEIGHT");
34 SetDlgItemTextW(IDC_TXT_SPECTRUM_HIGHT_STATIC, temp.c_str());
35 // IDC_SPECTRUM_HEIGHT_SLIDER
36 // IDC_SPECTRUM_HEIGHT_STATIC
37 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_SHOW");
38 SetDlgItemTextW(IDC_SHOW_ALBUM_COVER_CHECK, temp.c_str());
39 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_FIT");
40 SetDlgItemTextW(IDC_TXT_COVER_FIT_STATIC, temp.c_str());
41 // IDC_ALBUM_FIT_COMBO
42 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_LYRIC_BG");
43 SetDlgItemTextW(IDC_LYRIC_BACKGROUND_CHECK, temp.c_str());
44 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_ROUND_CORNERS");
45 SetDlgItemTextW(IDC_BTN_ROUND_CORNERS_CHECK, temp.c_str());
46 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_DARK_MODE");
47 SetDlgItemTextW(IDC_DARK_MODE_CHECK, temp.c_str());
48 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_MAIN_WINDOW_TRANSPARENCY");
49 SetDlgItemTextW(IDC_TXT_TRANSPARENT_STATIC, temp.c_str());
50 // IDC_TRANSPARENT_SLIDER
51 // IDC_TRANSPARENT_STATIC
52
53 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_SETTING");
54 SetDlgItemTextW(IDC_TXT_BG_SETTING_STATIC, temp.c_str());
55 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_ENABLE");
56 SetDlgItemTextW(IDC_ENABLE_BACKGROUND_CHECK, temp.c_str());
57 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_USE_DESKTOP");
58 SetDlgItemTextW(IDC_USE_DESKTOP_BACKGROUND_CHECK, temp.c_str());
59 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_TRANSPARENCY");
60 SetDlgItemTextW(IDC_TXT_BG_TRANSPARENCY_STATIC, temp.c_str());
61 // IDC_BACKGROUND_TRANSPARENCY_SLIDER
62 // IDC_BACKGROUND_TRANSPARENCY_STATIC
63 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_USE_COVER");
64 SetDlgItemTextW(IDC_ALBUM_COVER_BACKGROUND_CHECK, temp.c_str());
65 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_GAUSS_BLUR");
66 SetDlgItemTextW(IDC_BACKGROUND_GAUSS_BLUR_CHECK, temp.c_str());
67 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_GAUSS_BLUR_RADIUS");
68 SetDlgItemTextW(IDC_TXT_GAUSS_BLUR_RADIUS_STATIC, temp.c_str());
69 // IDC_GAUSS_BLURE_RADIUS_SLIDER
70 // IDC_GAUSS_BLUR_RADIUS_STATIC
71 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_BG_DEFAULT_IMAGE");
72 SetDlgItemTextW(IDC_TXT_DEFAULT_BG_PATH_EDIT_STATIC, temp.c_str());
73 // IDC_DEFAULT_BACKGROUND_PATH_EDIT
74
75 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_OPT");
76 SetDlgItemTextW(IDC_TXT_COVER_OPT_STATIC, temp.c_str());
77 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_USE_INNER_FIRST");
78 SetDlgItemTextW(IDC_USE_INNER_IMAGE_FIRST_CHECK, temp.c_str());
79 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_OUT_IMAGE_ALLOW");
80 SetDlgItemTextW(IDC_USE_OUT_IMAGE_CHECK, temp.c_str());
81 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_OUT_IMAGE_FILE_NAME");
82 SetDlgItemTextW(IDC_TXT_EXT_COVER_FILE_NAME_STATIC, temp.c_str());
83 // IDC_DEFAULT_COVER_NAME_EDIT
84 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_OUT_FOLDER");
85 SetDlgItemTextW(IDC_TXT_EXT_COVER_FOLDER_STATIC, temp.c_str());
86 // IDC_ALBUM_COVER_PATH_EDIT
87
88 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COLOR_THEME");
89 SetDlgItemTextW(IDC_TXT_THEME_COLOR_STATIC, temp.c_str());
90 // IDC_COLOR_STATIC
91 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COLOR_PRESET");
92 SetDlgItemTextW(IDC_PRESET_COLOR_STATIC, temp.c_str());
93 // IDC_COLOR_STATIC2
94 // IDC_COLOR_STATIC3
95 // IDC_COLOR_STATIC4
96 // IDC_COLOR_STATIC5
97 // IDC_COLOR_STATIC6
98 // IDC_COLOR_STATIC7
99 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COLOR_MORE");
100 SetDlgItemTextW(IDC_SET_PROGRESS_COLOR_BUTTON, temp.c_str());
101 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COLOR_FOLLOW_SYSTEM");
102 SetDlgItemTextW(IDC_FOLLOW_SYSTEM_COLOR_CHECK, temp.c_str());
103
104 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_STATUS_BAR");
105 SetDlgItemTextW(IDC_TXT_STATUS_BAR_STATIC, temp.c_str());
106 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_ALWAYS_SHOW_STATUS_BAR");
107 SetDlgItemTextW(IDC_ALWAYS_SHOW_STATUSBAR_CHECK, temp.c_str());
108 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_SHOW_NEXT_TRACK");
109 SetDlgItemTextW(IDC_SHOW_NEXT_CHECK, temp.c_str());
110 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_SHOW_FPS");
111 SetDlgItemTextW(IDC_SHOW_FPS_CHECK, temp.c_str());
112
113 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR");
114 SetDlgItemTextW(IDC_TXT_TITLE_BAR_STATIC, temp.c_str());
115
116 SetDlgControlText(IDC_USE_SYSTEM_TITLEBAR_RADIO, L"TXT_OPT_APC_USE_SYSTEM_TITLE_BAR");
117 SetDlgControlText(IDC_USE_OWNER_DRAW_TITLEBAR_RADIO, L"TXT_OPT_APC_USE_OWNER_DRAW_TITLE_BAR");
118
119 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR_BTN_SEL");
120 SetDlgItemTextW(IDC_TXT_TITLE_BAR_BTN_SEL_STATIC, temp.c_str());
121 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR_BTN_SETTING");
122 SetDlgItemTextW(IDC_SHOW_SETTINGS_BTN_CHECK, temp.c_str());
123 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR_BTN_SKIN");
124 SetDlgItemTextW(IDC_SHOW_SKIN_BTN_CHECK, temp.c_str());
125 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR_BTN_MINI_MODE");
126 SetDlgItemTextW(IDC_SHOW_MINI_MODE_BTN_CHECK, temp.c_str());
127 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR_BTN_FULLSCREEN");
128 SetDlgItemTextW(IDC_SHOW_FULLSCREEN_BTN_CHECK, temp.c_str());
129 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR_BTN_MINIMIZE");
130 SetDlgItemTextW(IDC_SHOW_MINIMIZE_BTN_CHECK, temp.c_str());
131 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_TITLE_BAR_BTN_MAXIMIZE");
132 SetDlgItemTextW(IDC_SHOW_MAXIMIZE_BTN_CHECK, temp.c_str());
133 SetDlgControlText(IDC_SHOW_DARK_LIGHT_BTN_CHECK, L"TXT_OPT_APC_TITLE_BAR_BTN_DARK_KIGHT");
134
135 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_NOTIFY_ICON");
136 SetDlgItemTextW(IDC_NA_ICO_STATIC, temp.c_str());
137 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_NOTIFY_ICON_PREVIEW");
138 SetDlgItemTextW(IDC_PREVIEW_STATIC, temp.c_str());
139 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_NOTIFY_ICON_SEL");
140 SetDlgItemTextW(IDC_TXT_NA_ICO_SEL_STATIC, temp.c_str());
141 // IDC_COMBO1
142 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_NOTIFY_ICON_AUTO_ADAPT");
143 SetDlgItemTextW(IDC_NOTIFY_ICON_AUTO_ADAPT_CHECK, temp.c_str());
144
145 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_ADVANCED");
146 SetDlgItemTextW(IDC_TXT_ADV_STATIC, temp.c_str());
147 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_UI_REFRESH_INTERVAL");
148 SetDlgItemTextW(IDC_TXT_UI_INTERVAL_STATIC, temp.c_str());
149 // IDC_UI_INTERVAL_EDIT
150 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_UI_REFRESH_INTERVAL_RESTORE");
151 SetDlgItemTextW(IDC_RESTORE_DEFAULT_BUTTON, temp.c_str());
152 temp = theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_HQ");
153 SetDlgItemTextW(IDC_DEFAULT_ALBUM_COVER_HQ, temp.c_str());
154
155 return true;
156 }
157
DoDataExchange(CDataExchange * pDX)158 void CAppearanceSettingDlg::DoDataExchange(CDataExchange* pDX)
159 {
160 CTabDlg::DoDataExchange(pDX);
161 DDX_Control(pDX, IDC_TRANSPARENT_SLIDER, m_transparency_slid);
162 DDX_Control(pDX, IDC_COLOR_STATIC, m_color_static);
163 DDX_Control(pDX, IDC_COLOR_STATIC2, m_color_static1);
164 DDX_Control(pDX, IDC_COLOR_STATIC3, m_color_static2);
165 DDX_Control(pDX, IDC_COLOR_STATIC4, m_color_static3);
166 DDX_Control(pDX, IDC_COLOR_STATIC5, m_color_static4);
167 DDX_Control(pDX, IDC_COLOR_STATIC6, m_color_static5);
168 DDX_Control(pDX, IDC_COLOR_STATIC7, m_color_static6);
169 DDX_Control(pDX, IDC_COLOR_STATIC8, m_color_static7);
170 DDX_Control(pDX, IDC_FOLLOW_SYSTEM_COLOR_CHECK, m_follow_system_color_check);
171 DDX_Control(pDX, IDC_SPECTRUM_HEIGHT_SLIDER, m_spectrum_height_slid);
172 DDX_Control(pDX, IDC_SHOW_ALBUM_COVER_CHECK, m_show_album_cover_chk);
173 DDX_Control(pDX, IDC_ALBUM_FIT_COMBO, m_album_cover_fit_combo);
174 DDX_Control(pDX, IDC_ALBUM_COVER_BACKGROUND_CHECK, m_album_cover_as_background_chk);
175 DDX_Control(pDX, IDC_SHOW_SPECTRUM_CHECK, m_show_spectrum_chk);
176 DDX_Control(pDX, IDC_BACKGROUND_TRANSPARENCY_SLIDER, m_back_transparency_slid);
177 DDX_Control(pDX, IDC_USE_OUT_IMAGE_CHECK, m_use_out_image_chk);
178 DDX_Control(pDX, IDC_GAUSS_BLURE_RADIUS_SLIDER, m_gauss_blur_radius_sld);
179 DDX_Control(pDX, IDC_BACKGROUND_GAUSS_BLUR_CHECK, m_background_gauss_blur_chk);
180 DDX_Control(pDX, IDC_LYRIC_BACKGROUND_CHECK, m_lyric_background_chk);
181 DDX_Control(pDX, IDC_DARK_MODE_CHECK, m_dark_mode_chk);
182 DDX_Control(pDX, IDC_USE_INNER_IMAGE_FIRST_CHECK, m_use_inner_image_first_chk);
183 DDX_Control(pDX, IDC_ENABLE_BACKGROUND_CHECK, m_enable_background_chk);
184 DDX_Control(pDX, IDC_LOW_FREQ_IN_CENTER_CHECK, m_low_freq_in_center_chk);
185 DDX_Control(pDX, IDC_DEFAULT_ALBUM_COVER_HQ, m_default_cover_hq_chk);
186 DDX_Control(pDX, IDC_UI_INTERVAL_EDIT, m_ui_refresh_interval_edit);
187 DDX_Control(pDX, IDC_COMBO1, m_icon_select_combo);
188 DDX_Control(pDX, IDC_NOTIFY_ICON_AUTO_ADAPT_CHECK, m_notify_icon_auto_adapt_chk);
189 DDX_Control(pDX, IDC_BTN_ROUND_CORNERS_CHECK, m_btn_round_corners_chk);
190 DDX_Control(pDX, IDC_DEFAULT_BACKGROUND_PATH_EDIT, m_default_background_edit);
191 DDX_Control(pDX, IDC_DEFAULT_COVER_NAME_EDIT, m_album_cover_name_edit);
192 DDX_Control(pDX, IDC_ALBUM_COVER_PATH_EDIT, m_album_cover_path_edit);
193 }
194
SetTransparency()195 void CAppearanceSettingDlg::SetTransparency()
196 {
197 ::SetWindowLong(m_hMainWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
198 ::SetLayeredWindowAttributes(m_hMainWnd, 0, m_data.window_transparency * 255 / 100, LWA_ALPHA); //透明度取值范围为0~255
199 }
200
ClickColor()201 void CAppearanceSettingDlg::ClickColor()
202 {
203 //点击了预置颜色中的其中一个时,取消“跟随系统主题色”复选按钮的选中
204 m_color_static.SetFillColor(m_data.theme_color.original_color);
205 m_data.theme_color_follow_system = false;
206 m_follow_system_color_check.SetCheck(FALSE);
207 //GetDlgItem(IDC_SET_PROGRESS_COLOR_BUTTON)->EnableWindow();
208 }
209
SpectrumHeightChg(int value)210 int CAppearanceSettingDlg::SpectrumHeightChg(int value)
211 {
212 int rtn;
213 rtn = static_cast<int>(22.72727272727 * std::sqrt(0.088 * value - 0.39) - 15.9090909090);
214 if (rtn < 0) rtn = 0;
215 if (rtn > 100) rtn = 100;
216 return rtn;
217 }
218
SpectrumHeightRChg(int value)219 int CAppearanceSettingDlg::SpectrumHeightRChg(int value)
220 {
221 int rtn;
222 rtn = static_cast<int>(0.022 * value * value + 0.7 * value + 10);
223 if (rtn < 10) rtn = 10;
224 if (rtn > 300) rtn = 300;
225 return rtn;
226 }
227
SetControlEnable()228 void CAppearanceSettingDlg::SetControlEnable()
229 {
230 m_album_cover_fit_combo.EnableWindow(m_data.show_album_cover);
231 m_album_cover_name_edit.EnableWindow(m_data.use_out_image);
232 m_album_cover_path_edit.EnableWindow(m_data.use_out_image);
233 m_spectrum_height_slid.EnableWindow(m_data.show_spectrum);
234 m_album_cover_as_background_chk.EnableWindow(m_data.enable_background);
235 m_back_transparency_slid.EnableWindow(m_data.enable_background);
236 m_background_gauss_blur_chk.EnableWindow(m_data.enable_background && m_data.album_cover_as_background);
237 m_gauss_blur_radius_sld.EnableWindow(m_data.enable_background && m_data.album_cover_as_background && m_data.background_gauss_blur);
238
239 m_default_background_edit.EnableWindow(m_data.enable_background && !m_data.use_desktop_background);
240 EnableDlgCtrl(IDC_USE_DESKTOP_BACKGROUND_CHECK, m_data.enable_background);
241
242 EnableDlgCtrl(IDC_SHOW_NEXT_CHECK, m_data.always_show_statusbar);
243 EnableDlgCtrl(IDC_SHOW_FPS_CHECK, m_data.always_show_statusbar);
244
245 EnableDlgCtrl(IDC_SHOW_MINIMIZE_BTN_CHECK, !m_data.show_window_frame);
246 EnableDlgCtrl(IDC_SHOW_MAXIMIZE_BTN_CHECK, !m_data.show_window_frame);
247 }
248
CalculatePreviewBitmapRect()249 void CAppearanceSettingDlg::CalculatePreviewBitmapRect()
250 {
251 CWnd* pStatic = GetDlgItem(IDC_PREVIEW_STATIC);
252 if (pStatic != nullptr)
253 {
254 CRect rc_static;
255 ::GetWindowRect(pStatic->GetSafeHwnd(), rc_static);
256 ScreenToClient(rc_static);
257 m_notify_icon_preview.top = rc_static.bottom + theApp.DPI(4);
258 m_notify_icon_preview.left = rc_static.left;
259 m_notify_icon_preview.right = m_notify_icon_preview.left + PREVIEW_WIDTH;
260 m_notify_icon_preview.bottom = m_notify_icon_preview.top + PREVIEW_HEIGHT;
261 }
262
263 CWnd* use_system_titlebar_radio = GetDlgItem(IDC_USE_SYSTEM_TITLEBAR_RADIO);
264 if (use_system_titlebar_radio != nullptr)
265 {
266 ::GetWindowRect(use_system_titlebar_radio->GetSafeHwnd(), m_system_titlebar_preview_rect);
267 ScreenToClient(m_system_titlebar_preview_rect);
268 m_system_titlebar_preview_rect.bottom = m_system_titlebar_preview_rect.top - theApp.DPI(4);
269 m_system_titlebar_preview_rect.top = m_system_titlebar_preview_rect.bottom - theApp.DPI(50);
270 }
271
272 CWnd* use_owner_draw_titlebar_radio = GetDlgItem(IDC_USE_OWNER_DRAW_TITLEBAR_RADIO);
273 if (use_owner_draw_titlebar_radio != nullptr)
274 {
275 ::GetWindowRect(use_owner_draw_titlebar_radio->GetSafeHwnd(), m_owner_draw_titlebar_preview_rect);
276 ScreenToClient(m_owner_draw_titlebar_preview_rect);
277 m_owner_draw_titlebar_preview_rect.bottom = m_owner_draw_titlebar_preview_rect.top - theApp.DPI(4);
278 m_owner_draw_titlebar_preview_rect.top = m_owner_draw_titlebar_preview_rect.bottom - theApp.DPI(50);
279 m_owner_draw_titlebar_preview_rect.right = m_owner_draw_titlebar_preview_rect.left + m_system_titlebar_preview_rect.Width();
280 }
281
282 }
283
GetDataFromUi()284 void CAppearanceSettingDlg::GetDataFromUi()
285 {
286 m_data.ui_refresh_interval = m_ui_refresh_interval_edit.GetValue();
287
288 m_data.always_show_statusbar = (IsDlgButtonChecked(IDC_ALWAYS_SHOW_STATUSBAR_CHECK) != 0);
289 m_data.show_window_frame = (IsDlgButtonChecked(IDC_USE_SYSTEM_TITLEBAR_RADIO) != 0);
290
291 m_data.show_settings_btn_in_titlebar = (IsDlgButtonChecked(IDC_SHOW_SETTINGS_BTN_CHECK) != 0);
292 m_data.show_skin_btn_in_titlebar = (IsDlgButtonChecked(IDC_SHOW_SKIN_BTN_CHECK) != 0);
293 m_data.show_minimode_btn_in_titlebar = (IsDlgButtonChecked(IDC_SHOW_MINI_MODE_BTN_CHECK) != 0);
294 m_data.show_fullscreen_btn_in_titlebar = (IsDlgButtonChecked(IDC_SHOW_FULLSCREEN_BTN_CHECK) != 0);
295 m_data.show_minimize_btn_in_titlebar = (IsDlgButtonChecked(IDC_SHOW_MINIMIZE_BTN_CHECK) != 0);
296 m_data.show_maximize_btn_in_titlebar = (IsDlgButtonChecked(IDC_SHOW_MAXIMIZE_BTN_CHECK) != 0);
297 m_data.show_dark_light_btn_in_titlebar = (IsDlgButtonChecked(IDC_SHOW_DARK_LIGHT_BTN_CHECK) != 0);
298 }
299
ApplyDataToUi()300 void CAppearanceSettingDlg::ApplyDataToUi()
301 {
302 m_color_static.SetFillColor(theApp.m_app_setting_data.theme_color.original_color);
303 }
304
DrawColor()305 void CAppearanceSettingDlg::DrawColor()
306 {
307 m_color_static.SetFillColor(m_data.theme_color.original_color);
308 m_color_static1.SetFillColor(m_color1);
309 m_color_static2.SetFillColor(m_color2);
310 m_color_static3.SetFillColor(m_color3);
311 m_color_static4.SetFillColor(m_color4);
312 m_color_static5.SetFillColor(m_color5);
313 m_color_static6.SetFillColor(m_color6);
314 m_color_static7.SetFillColor(m_color7);
315 }
316
317
BEGIN_MESSAGE_MAP(CAppearanceSettingDlg,CTabDlg)318 BEGIN_MESSAGE_MAP(CAppearanceSettingDlg, CTabDlg)
319 // ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_TRANSPARENT_SLIDER, &CAppearanceSettingDlg::OnNMReleasedcaptureTransparentSlider)
320 ON_WM_HSCROLL()
321 ON_BN_CLICKED(IDC_SET_PROGRESS_COLOR_BUTTON, &CAppearanceSettingDlg::OnBnClickedSetThemeButton)
322 ON_STN_CLICKED(IDC_COLOR_STATIC2, &CAppearanceSettingDlg::OnStnClickedColorStatic2)
323 ON_STN_CLICKED(IDC_COLOR_STATIC3, &CAppearanceSettingDlg::OnStnClickedColorStatic3)
324 ON_STN_CLICKED(IDC_COLOR_STATIC4, &CAppearanceSettingDlg::OnStnClickedColorStatic4)
325 ON_STN_CLICKED(IDC_COLOR_STATIC5, &CAppearanceSettingDlg::OnStnClickedColorStatic5)
326 ON_STN_CLICKED(IDC_COLOR_STATIC6, &CAppearanceSettingDlg::OnStnClickedColorStatic6)
327 ON_STN_CLICKED(IDC_COLOR_STATIC7, &CAppearanceSettingDlg::OnStnClickedColorStatic7)
328 ON_STN_CLICKED(IDC_COLOR_STATIC8, &CAppearanceSettingDlg::OnStnClickedColorStatic8)
329 ON_BN_CLICKED(IDC_FOLLOW_SYSTEM_COLOR_CHECK, &CAppearanceSettingDlg::OnBnClickedFollowSystemColorCheck)
330 ON_BN_CLICKED(IDC_SHOW_ALBUM_COVER_CHECK, &CAppearanceSettingDlg::OnBnClickedShowAlbumCoverCheck)
331 ON_CBN_SELCHANGE(IDC_ALBUM_FIT_COMBO, &CAppearanceSettingDlg::OnCbnSelchangeAlbumFitCombo)
332 ON_BN_CLICKED(IDC_ALBUM_COVER_BACKGROUND_CHECK, &CAppearanceSettingDlg::OnBnClickedAlbumCoverBackgroundCheck)
333 ON_BN_CLICKED(IDC_SHOW_SPECTRUM_CHECK, &CAppearanceSettingDlg::OnBnClickedShowSpectrumCheck)
334 ON_BN_CLICKED(IDC_USE_OUT_IMAGE_CHECK, &CAppearanceSettingDlg::OnBnClickedUseOutImageCheck)
335 ON_BN_CLICKED(IDC_BACKGROUND_GAUSS_BLUR_CHECK, &CAppearanceSettingDlg::OnBnClickedBackgroundGaussBlurCheck)
336 ON_BN_CLICKED(IDC_LYRIC_BACKGROUND_CHECK, &CAppearanceSettingDlg::OnBnClickedLyricBackgroundCheck)
337 ON_BN_CLICKED(IDC_DARK_MODE_CHECK, &CAppearanceSettingDlg::OnBnClickedDarkModeCheck)
338 ON_BN_CLICKED(IDC_USE_INNER_IMAGE_FIRST_CHECK, &CAppearanceSettingDlg::OnBnClickedUseInnerImageFirstCheck)
339 ON_BN_CLICKED(IDC_ENABLE_BACKGROUND_CHECK, &CAppearanceSettingDlg::OnBnClickedEnableBackgroundCheck)
340 ON_BN_CLICKED(IDC_LOW_FREQ_IN_CENTER_CHECK, &CAppearanceSettingDlg::OnBnClickedLowFreqInCenterCheck)
341 ON_BN_CLICKED(IDC_DEFAULT_ALBUM_COVER_HQ, &CAppearanceSettingDlg::OnBnClickedDefaultAlbumCoverHq)
342 ON_BN_CLICKED(IDC_RESTORE_DEFAULT_BUTTON, &CAppearanceSettingDlg::OnBnClickedRestoreDefaultButton)
343 ON_CBN_SELCHANGE(IDC_COMBO1, &CAppearanceSettingDlg::OnCbnSelchangeCombo1)
344 ON_WM_PAINT()
345 ON_BN_CLICKED(IDC_NOTIFY_ICON_AUTO_ADAPT_CHECK, &CAppearanceSettingDlg::OnBnClickedNotifyIconAutoAdaptCheck)
346 ON_BN_CLICKED(IDC_BTN_ROUND_CORNERS_CHECK, &CAppearanceSettingDlg::OnBnClickedBtnRoundCornersCheck)
347 ON_MESSAGE(WM_EDIT_BROWSE_CHANGED, &CAppearanceSettingDlg::OnEditBrowseChanged)
348 ON_BN_CLICKED(IDC_USE_DESKTOP_BACKGROUND_CHECK, &CAppearanceSettingDlg::OnBnClickedUseDesktopBackgroundCheck)
349 ON_BN_CLICKED(IDC_SHOW_NEXT_CHECK, &CAppearanceSettingDlg::OnBnClickedShowNextCheck)
350 ON_BN_CLICKED(IDC_SHOW_FPS_CHECK, &CAppearanceSettingDlg::OnBnClickedShowFpsCheck)
351 ON_BN_CLICKED(IDC_ALWAYS_SHOW_STATUSBAR_CHECK, &CAppearanceSettingDlg::OnBnClickedAlwaysShowStatusbarCheck)
352 ON_BN_CLICKED(IDC_USE_SYSTEM_TITLEBAR_RADIO, &CAppearanceSettingDlg::OnBnClickedUseSystemTitlebarRadio)
353 ON_BN_CLICKED(IDC_USE_OWNER_DRAW_TITLEBAR_RADIO, &CAppearanceSettingDlg::OnBnClickedUseOwnerDrawTitlebarRadio)
354 END_MESSAGE_MAP()
355
356
357 // CAppearanceSettingDlg 消息处理程序
358
359
360 BOOL CAppearanceSettingDlg::OnInitDialog()
361 {
362 CTabDlg::OnInitDialog();
363
364 // TODO: 在此添加额外的初始化
365
366 m_transparency_slid.SetRange(20, 100);
367 m_transparency_slid.SetPos(m_data.window_transparency);
368 CString str;
369 str.Format(_T("%d%%"), m_data.window_transparency);
370 SetDlgItemText(IDC_TRANSPARENT_STATIC, str);
371
372 m_spectrum_height_slid.SetRange(0, 100);
373 m_spectrum_height_slid.SetPos(SpectrumHeightChg(theApp.m_app_setting_data.sprctrum_height));
374 str.Format(_T("%d%%"), theApp.m_app_setting_data.sprctrum_height);
375 SetDlgItemText(IDC_SPECTRUM_HEIGHT_STATIC, str);
376
377 //为控件设置SS_NOTIFY属性,以允许响应消息
378 DWORD dwStyle = m_color_static.GetStyle();
379 ::SetWindowLong(m_color_static.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
380 ::SetWindowLong(m_color_static1.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
381 ::SetWindowLong(m_color_static2.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
382 ::SetWindowLong(m_color_static3.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
383 ::SetWindowLong(m_color_static4.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
384 ::SetWindowLong(m_color_static5.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
385 ::SetWindowLong(m_color_static6.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
386 ::SetWindowLong(m_color_static7.GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
387
388 m_toolTip.Create(this);
389 m_toolTip.SetMaxTipWidth(theApp.DPI(300));
390 m_toolTip.AddTool(&m_color_static, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_CURRENT").c_str());
391 m_toolTip.AddTool(&m_color_static1, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_LIGNT_BLUE").c_str());
392 m_toolTip.AddTool(&m_color_static2, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_GREEN").c_str());
393 m_toolTip.AddTool(&m_color_static3, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_ORANGE").c_str());
394 m_toolTip.AddTool(&m_color_static4, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_CYAN_GREEN").c_str());
395 m_toolTip.AddTool(&m_color_static5, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_PINK").c_str());
396 m_toolTip.AddTool(&m_color_static6, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_LIGHT_PURPLE").c_str());
397 m_toolTip.AddTool(&m_color_static7, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COLOR_GRAY").c_str());
398
399 m_toolTip.SetWindowPos(&CWnd::wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
400
401 DrawColor();
402
403 ////设置“更多颜色”按钮的可用状态
404 //GetDlgItem(IDC_SET_PROGRESS_COLOR_BUTTON)->EnableWindow(!m_data.theme_color_follow_system);
405 //根据是否跟随系统设置复选按钮的初始状态
406 #ifdef COMPILE_IN_WIN_XP
407 m_follow_system_color_check.EnableWindow(FALSE);
408 #else
409 //if (CWinVersionHelper::IsWindows8OrLater())
410 m_follow_system_color_check.SetCheck(m_data.theme_color_follow_system);
411 //else
412 // m_follow_system_color_check.EnableWindow(FALSE); //Win8以下系统禁用此复选按钮
413 #endif // !COMPILE_IN_WIN_XP
414
415 //
416 m_show_album_cover_chk.SetCheck(m_data.show_album_cover);
417 m_album_cover_fit_combo.AddString(theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_FIT_STRETCH").c_str());
418 m_album_cover_fit_combo.AddString(theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_FIT_FILL").c_str());
419 m_album_cover_fit_combo.AddString(theApp.m_str_table.LoadText(L"TXT_OPT_APC_COVER_FIT_ADAPT").c_str());
420 m_album_cover_fit_combo.SetCurSel(static_cast<int>(m_data.album_cover_fit));
421 m_toolTip.AddTool(&m_album_cover_fit_combo, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COVER_FIT").c_str());
422 m_toolTip.AddTool(&m_use_out_image_chk, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COVER_OUT_IMAGE_ALLOW").c_str());
423 m_toolTip.AddTool(&m_album_cover_name_edit, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COVER_OUT_IMAGE_FILE_NAME").c_str());
424 m_toolTip.AddTool(&m_album_cover_path_edit, theApp.m_str_table.LoadText(L"TIP_OPT_APC_COVER_OUT_FOLDER").c_str());
425
426 m_album_cover_name_edit.SetWindowTextW(CCommon::StringMerge(m_data.default_album_name, L',').c_str());
427 m_album_cover_name_edit.SetEditBrowseMode(CBrowseEdit::EditBrowseMode::LIST);
428 m_album_cover_name_edit.SetPopupDlgTitle(theApp.m_str_table.LoadText(L"TITLE_BROWSE_EDIT_SET_MULTI_OUT_ALBUM_COVER_FILE_NAME"));
429 m_album_cover_path_edit.SetWindowTextW(m_data.album_cover_path.c_str());
430
431 m_enable_background_chk.SetCheck(m_data.enable_background);
432 m_album_cover_as_background_chk.SetCheck(m_data.album_cover_as_background);
433 m_show_spectrum_chk.SetCheck(m_data.show_spectrum);
434
435 m_back_transparency_slid.SetRange(10, 98);
436 m_back_transparency_slid.SetPos(theApp.m_app_setting_data.background_transparency);
437 str.Format(_T("%d%%"), theApp.m_app_setting_data.background_transparency);
438 SetDlgItemText(IDC_BACKGROUND_TRANSPARENCY_STATIC, str);
439
440 m_use_out_image_chk.SetCheck(m_data.use_out_image);
441
442 m_background_gauss_blur_chk.SetCheck(m_data.background_gauss_blur);
443 m_gauss_blur_radius_sld.SetRange(10, 300);
444 m_gauss_blur_radius_sld.SetPos(m_data.gauss_blur_radius);
445 str.Format(_T("%.1f"), static_cast<float>(m_data.gauss_blur_radius) / 10);
446 SetDlgItemText(IDC_GAUSS_BLUR_RADIUS_STATIC, str);
447 m_lyric_background_chk.SetCheck(m_data.lyric_background);
448 m_dark_mode_chk.SetCheck(m_data.dark_mode);
449 m_use_inner_image_first_chk.SetCheck(m_data.use_inner_image_first);
450 m_low_freq_in_center_chk.SetCheck(m_data.spectrum_low_freq_in_center);
451
452 m_default_background_edit.SetWindowText(m_data.default_background.c_str());
453 wstring img_fliter = FilterHelper::GetImageFileFilter();
454 m_default_background_edit.EnableFileBrowseButton(NULL, img_fliter.c_str());
455 CheckDlgButton(IDC_USE_DESKTOP_BACKGROUND_CHECK, m_data.use_desktop_background);
456
457 m_default_cover_hq_chk.SetCheck(m_data.draw_album_high_quality);
458
459 m_ui_refresh_interval_edit.SetRange(MIN_UI_INTERVAL, MAX_UI_INTERVAL, UI_INTERVAL_STEP);
460 m_ui_refresh_interval_edit.SetValue(m_data.ui_refresh_interval);
461
462 m_icon_select_combo.AddString(theApp.m_str_table.LoadText(L"TXT_OPT_APC_NOTIFY_ICON_DEFAULT").c_str());
463 m_icon_select_combo.AddString(theApp.m_str_table.LoadText(L"TXT_OPT_APC_NOTIFY_ICON_LIGHT").c_str());
464 m_icon_select_combo.AddString(theApp.m_str_table.LoadText(L"TXT_OPT_APC_NOTIFY_ICON_DARK").c_str());
465 m_icon_select_combo.SetCurSel(m_data.notify_icon_selected);
466
467 m_notify_icon_auto_adapt_chk.SetCheck(m_data.notify_icon_auto_adapt);
468 m_btn_round_corners_chk.SetCheck(m_data.button_round_corners);
469
470 CheckDlgButton(IDC_ALWAYS_SHOW_STATUSBAR_CHECK, m_data.always_show_statusbar);
471 CheckDlgButton(IDC_SHOW_NEXT_CHECK, m_data.show_next_track);
472 CheckDlgButton(IDC_SHOW_FPS_CHECK, m_data.show_fps);
473
474 if (m_data.show_window_frame)
475 CheckDlgButton(IDC_USE_SYSTEM_TITLEBAR_RADIO, TRUE);
476 else
477 CheckDlgButton(IDC_USE_OWNER_DRAW_TITLEBAR_RADIO, TRUE);
478 CheckDlgButton(IDC_SHOW_SETTINGS_BTN_CHECK, m_data.show_settings_btn_in_titlebar);
479 CheckDlgButton(IDC_SHOW_SKIN_BTN_CHECK, m_data.show_skin_btn_in_titlebar);
480 CheckDlgButton(IDC_SHOW_MINI_MODE_BTN_CHECK, m_data.show_minimode_btn_in_titlebar);
481 CheckDlgButton(IDC_SHOW_FULLSCREEN_BTN_CHECK, m_data.show_fullscreen_btn_in_titlebar);
482 CheckDlgButton(IDC_SHOW_MINIMIZE_BTN_CHECK, m_data.show_minimize_btn_in_titlebar);
483 CheckDlgButton(IDC_SHOW_MAXIMIZE_BTN_CHECK, m_data.show_maximize_btn_in_titlebar);
484 CheckDlgButton(IDC_SHOW_DARK_LIGHT_BTN_CHECK, m_data.show_dark_light_btn_in_titlebar);
485
486 //设置通知区图标预览区域的位置
487 CalculatePreviewBitmapRect();
488
489 //载入预览图
490 m_preview_dark.LoadFromResource(AfxGetResourceHandle(), IDB_NOTIFY_ICON_PREVIEW);
491 m_preview_light.LoadFromResource(AfxGetResourceHandle(), IDB_NOTIFY_ICON_PREVIEW_LIGHT);
492 m_preview_system_titlebar.LoadFromResource(AfxGetResourceHandle(), IDB_SYSTEM_TITLEBAR_PREVIEW);
493 m_preview_owner_draw_titlebar.LoadFromResource(AfxGetResourceHandle(), IDB_OWNER_DRAW_TITLEBAR_PREVIEW);
494
495 SetControlEnable();
496
497 //设置控件不响应鼠标滚轮消息
498 m_spectrum_height_slid.SetMouseWheelEnable(false);
499 m_transparency_slid.SetMouseWheelEnable(false);
500 m_album_cover_fit_combo.SetMouseWheelEnable(false);
501 m_back_transparency_slid.SetMouseWheelEnable(false);
502 m_gauss_blur_radius_sld.SetMouseWheelEnable(false);
503 m_ui_refresh_interval_edit.SetMouseWheelEnable(false);
504 m_icon_select_combo.SetMouseWheelEnable(false);
505
506 return TRUE; // return TRUE unless you set the focus to a control
507 // 异常: OCX 属性页应返回 FALSE
508 }
509
510
511 //void CAppearanceSettingDlg::OnNMReleasedcaptureTransparentSlider(NMHDR *pNMHDR, LRESULT *pResult)
512 //{
513 // // TODO: 在此添加控件通知处理程序代码
514 // m_data.window_transparency = m_transparency_slid.GetPos();
515 // CString str;
516 // str.Format(_T("不透明度:%%%d"), m_data.window_transparency);
517 // SetDlgItemText(IDC_TRANSPARENT_STATIC, str);
518 // *pResult = 0;
519 //}
520
521
OnHScroll(UINT nSBCode,UINT nPos,CScrollBar * pScrollBar)522 void CAppearanceSettingDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
523 {
524 // TODO: 在此添加消息处理程序代码和/
525 //滑动水平滑动条时响应此函数
526 if ((pScrollBar->GetDlgCtrlID() == IDC_TRANSPARENT_SLIDER))
527 {
528 m_data.window_transparency = m_transparency_slid.GetPos();
529 CString str;
530 str.Format(_T("%d%%"), m_data.window_transparency);
531 SetDlgItemText(IDC_TRANSPARENT_STATIC, str);
532
533 SetTransparency(); //实时设置窗口不透明度
534 }
535 if ((pScrollBar->GetDlgCtrlID() == IDC_SPECTRUM_HEIGHT_SLIDER))
536 {
537 theApp.m_app_setting_data.sprctrum_height = SpectrumHeightRChg(m_spectrum_height_slid.GetPos());
538 m_data.sprctrum_height = theApp.m_app_setting_data.sprctrum_height;
539 CString str;
540 str.Format(_T("%d%%"), theApp.m_app_setting_data.sprctrum_height);
541 SetDlgItemText(IDC_SPECTRUM_HEIGHT_STATIC, str);
542 }
543 if ((pScrollBar->GetDlgCtrlID() == IDC_BACKGROUND_TRANSPARENCY_SLIDER))
544 {
545 theApp.m_app_setting_data.background_transparency = m_back_transparency_slid.GetPos();
546 m_data.background_transparency = theApp.m_app_setting_data.background_transparency;
547 CString str;
548 str.Format(_T("%d%%"), theApp.m_app_setting_data.background_transparency);
549 SetDlgItemText(IDC_BACKGROUND_TRANSPARENCY_STATIC, str);
550 }
551 if ((pScrollBar->GetDlgCtrlID() == IDC_GAUSS_BLURE_RADIUS_SLIDER))
552 {
553 m_data.gauss_blur_radius = m_gauss_blur_radius_sld.GetPos();
554 CString str;
555 str.Format(_T("%.1f"), static_cast<float>(m_data.gauss_blur_radius) / 10);
556 SetDlgItemText(IDC_GAUSS_BLUR_RADIUS_STATIC, str);
557 }
558
559 CTabDlg::OnHScroll(nSBCode, nPos, pScrollBar);
560 }
561
562
OnBnClickedSetThemeButton()563 void CAppearanceSettingDlg::OnBnClickedSetThemeButton()
564 {
565 // TODO: 在此添加控件通知处理程序代码
566 CColorDialog colorDlg(m_data.theme_color.original_color, 0, this);
567 if (colorDlg.DoModal() == IDOK)
568 {
569 m_data.theme_color.original_color = colorDlg.GetColor();
570 //if (m_data.theme_color.original_color == 0)
571 // MessageBox(_T("警告:将主题颜色设置成黑色会使播放列表中正在播放的项目看不见!"), NULL, MB_ICONWARNING);
572 //if(m_data.theme_color.original_color == RGB(255,255,255))
573 // MessageBox(WHITE_THEME_COLOR_WARNING), NULL, MB_ICONWARNING);
574 m_color_static.SetFillColor(m_data.theme_color.original_color);
575 //设置了“更多颜色”之后,取消“跟随系统主题色”复选按钮的选中
576 m_data.theme_color_follow_system = false;
577 m_follow_system_color_check.SetCheck(FALSE);
578 }
579 }
580
581
OnStnClickedColorStatic2()582 void CAppearanceSettingDlg::OnStnClickedColorStatic2()
583 {
584 // TODO: 在此添加控件通知处理程序代码
585 m_data.theme_color.original_color = m_color1;
586 ClickColor();
587 }
588
589
OnStnClickedColorStatic3()590 void CAppearanceSettingDlg::OnStnClickedColorStatic3()
591 {
592 // TODO: 在此添加控件通知处理程序代码
593 m_data.theme_color.original_color = m_color2;
594 ClickColor();
595 }
596
597
OnStnClickedColorStatic4()598 void CAppearanceSettingDlg::OnStnClickedColorStatic4()
599 {
600 // TODO: 在此添加控件通知处理程序代码
601 m_data.theme_color.original_color = m_color3;
602 ClickColor();
603 }
604
605
OnStnClickedColorStatic5()606 void CAppearanceSettingDlg::OnStnClickedColorStatic5()
607 {
608 // TODO: 在此添加控件通知处理程序代码
609 m_data.theme_color.original_color = m_color4;
610 ClickColor();
611 }
612
613
OnStnClickedColorStatic6()614 void CAppearanceSettingDlg::OnStnClickedColorStatic6()
615 {
616 // TODO: 在此添加控件通知处理程序代码
617 m_data.theme_color.original_color = m_color5;
618 ClickColor();
619 }
620
621
OnStnClickedColorStatic7()622 void CAppearanceSettingDlg::OnStnClickedColorStatic7()
623 {
624 // TODO: 在此添加控件通知处理程序代码
625 m_data.theme_color.original_color = m_color6;
626 ClickColor();
627 }
628
OnStnClickedColorStatic8()629 void CAppearanceSettingDlg::OnStnClickedColorStatic8()
630 {
631 m_data.theme_color.original_color = m_color7;
632 ClickColor();
633 }
634
635
PreTranslateMessage(MSG * pMsg)636 BOOL CAppearanceSettingDlg::PreTranslateMessage(MSG* pMsg)
637 {
638 // TODO: 在此添加专用代码和/或调用基类
639 if (pMsg->message == WM_MOUSEMOVE)
640 m_toolTip.RelayEvent(pMsg);
641
642 return CTabDlg::PreTranslateMessage(pMsg);
643 }
644
645
OnBnClickedFollowSystemColorCheck()646 void CAppearanceSettingDlg::OnBnClickedFollowSystemColorCheck()
647 {
648 // TODO: 在此添加控件通知处理程序代码
649 m_data.theme_color_follow_system = (m_follow_system_color_check.GetCheck() != 0);
650 //GetDlgItem(IDC_SET_PROGRESS_COLOR_BUTTON)->EnableWindow(!m_data.theme_color_follow_system);
651 }
652
653
OnBnClickedShowAlbumCoverCheck()654 void CAppearanceSettingDlg::OnBnClickedShowAlbumCoverCheck()
655 {
656 // TODO: 在此添加控件通知处理程序代码
657 m_data.show_album_cover = (m_show_album_cover_chk.GetCheck() != 0);
658 SetControlEnable();
659 }
660
661
OnCbnSelchangeAlbumFitCombo()662 void CAppearanceSettingDlg::OnCbnSelchangeAlbumFitCombo()
663 {
664 // TODO: 在此添加控件通知处理程序代码
665 m_data.album_cover_fit = static_cast<CDrawCommon::StretchMode>(m_album_cover_fit_combo.GetCurSel());
666 }
667
668
OnBnClickedAlbumCoverBackgroundCheck()669 void CAppearanceSettingDlg::OnBnClickedAlbumCoverBackgroundCheck()
670 {
671 // TODO: 在此添加控件通知处理程序代码
672 m_data.album_cover_as_background = (m_album_cover_as_background_chk.GetCheck() != 0);
673 SetControlEnable();
674 }
675
676
OnBnClickedShowSpectrumCheck()677 void CAppearanceSettingDlg::OnBnClickedShowSpectrumCheck()
678 {
679 // TODO: 在此添加控件通知处理程序代码
680 m_data.show_spectrum = (m_show_spectrum_chk.GetCheck() != 0);
681 SetControlEnable();
682 }
683
684
OnBnClickedUseOutImageCheck()685 void CAppearanceSettingDlg::OnBnClickedUseOutImageCheck()
686 {
687 // TODO: 在此添加控件通知处理程序代码
688 m_data.use_out_image = (m_use_out_image_chk.GetCheck() != 0);
689 SetControlEnable();
690 }
691
692
OnBnClickedBackgroundGaussBlurCheck()693 void CAppearanceSettingDlg::OnBnClickedBackgroundGaussBlurCheck()
694 {
695 // TODO: 在此添加控件通知处理程序代码
696 m_data.background_gauss_blur = (m_background_gauss_blur_chk.GetCheck() != 0);
697 SetControlEnable();
698 }
699
700
OnBnClickedLyricBackgroundCheck()701 void CAppearanceSettingDlg::OnBnClickedLyricBackgroundCheck()
702 {
703 // TODO: 在此添加控件通知处理程序代码
704 m_data.lyric_background = (m_lyric_background_chk.GetCheck() != 0);
705 }
706
707
OnBnClickedDarkModeCheck()708 void CAppearanceSettingDlg::OnBnClickedDarkModeCheck()
709 {
710 // TODO: 在此添加控件通知处理程序代码
711 m_data.dark_mode = (m_dark_mode_chk.GetCheck() != 0);
712 }
713
714
OnBnClickedUseInnerImageFirstCheck()715 void CAppearanceSettingDlg::OnBnClickedUseInnerImageFirstCheck()
716 {
717 // TODO: 在此添加控件通知处理程序代码
718 m_data.use_inner_image_first = (m_use_inner_image_first_chk.GetCheck() != 0);
719 }
720
721
OnBnClickedEnableBackgroundCheck()722 void CAppearanceSettingDlg::OnBnClickedEnableBackgroundCheck()
723 {
724 // TODO: 在此添加控件通知处理程序代码
725 m_data.enable_background = (m_enable_background_chk.GetCheck() != 0);
726 SetControlEnable();
727 }
728
729
OnBnClickedLowFreqInCenterCheck()730 void CAppearanceSettingDlg::OnBnClickedLowFreqInCenterCheck()
731 {
732 // TODO: 在此添加控件通知处理程序代码
733 m_data.spectrum_low_freq_in_center = (m_low_freq_in_center_chk.GetCheck() != 0);
734 }
735
736
OnBnClickedDefaultAlbumCoverHq()737 void CAppearanceSettingDlg::OnBnClickedDefaultAlbumCoverHq()
738 {
739 // TODO: 在此添加控件通知处理程序代码
740 m_data.draw_album_high_quality = (m_default_cover_hq_chk.GetCheck() != 0);
741 }
742
743
OnBnClickedRestoreDefaultButton()744 void CAppearanceSettingDlg::OnBnClickedRestoreDefaultButton()
745 {
746 // TODO: 在此添加控件通知处理程序代码
747 m_ui_refresh_interval_edit.SetValue(UI_INTERVAL_DEFAULT);
748 }
749
750
OnCbnSelchangeCombo1()751 void CAppearanceSettingDlg::OnCbnSelchangeCombo1()
752 {
753 // TODO: 在此添加控件通知处理程序代码
754 m_data.notify_icon_selected = m_icon_select_combo.GetCurSel();
755 InvalidateRect(m_notify_icon_preview, FALSE);
756 }
757
758
OnPaint()759 void CAppearanceSettingDlg::OnPaint()
760 {
761 CPaintDC dc(this); // device context for painting
762 // TODO: 在此处添加消息处理程序代码
763 // 不为绘图消息调用 CTabDlg::OnPaint()
764
765 CalculatePreviewBitmapRect();
766 CDrawCommon drawer;
767 drawer.Create(&dc);
768
769 //绘制通知区图标预览图
770 CImage& image{ m_data.notify_icon_selected == 2 ? m_preview_light : m_preview_dark };
771 //绘制背景
772 drawer.DrawImage(image, m_notify_icon_preview.TopLeft(), m_notify_icon_preview.Size(), CDrawCommon::StretchMode::STRETCH);
773 //绘制图标
774 if (m_data.notify_icon_selected >= 0 && m_data.notify_icon_selected < MAX_NOTIFY_ICON)
775 {
776 drawer.DrawIcon(theApp.GetNotifyIncon(m_data.notify_icon_selected),
777 CPoint(m_notify_icon_preview.left + ICON_X, m_notify_icon_preview.top + ICON_Y),
778 CSize(theApp.DPI(16), theApp.DPI(16)));
779 }
780
781 //绘制标题栏预览图
782 drawer.DrawImage(m_preview_system_titlebar, m_system_titlebar_preview_rect.TopLeft(), m_system_titlebar_preview_rect.Size(), CDrawCommon::StretchMode::FIT);
783 drawer.DrawImage(m_preview_owner_draw_titlebar, m_owner_draw_titlebar_preview_rect.TopLeft(), m_owner_draw_titlebar_preview_rect.Size(), CDrawCommon::StretchMode::FIT);
784 }
785
786
OnBnClickedNotifyIconAutoAdaptCheck()787 void CAppearanceSettingDlg::OnBnClickedNotifyIconAutoAdaptCheck()
788 {
789 // TODO: 在此添加控件通知处理程序代码
790 m_data.notify_icon_auto_adapt = (m_notify_icon_auto_adapt_chk.GetCheck() != 0);
791 }
792
793
OnBnClickedBtnRoundCornersCheck()794 void CAppearanceSettingDlg::OnBnClickedBtnRoundCornersCheck()
795 {
796 // TODO: 在此添加控件通知处理程序代码
797 m_data.button_round_corners = (m_btn_round_corners_chk.GetCheck() != 0);
798 }
799
800
OnEditBrowseChanged(WPARAM wParam,LPARAM lParam)801 afx_msg LRESULT CAppearanceSettingDlg::OnEditBrowseChanged(WPARAM wParam, LPARAM lParam)
802 {
803 CBrowseEdit* pEdit = (CBrowseEdit*)lParam;
804 if (pEdit == &m_default_background_edit)
805 {
806 CString str;
807 m_default_background_edit.GetWindowText(str);
808 m_data.default_background = str.GetString();
809 }
810 else if (pEdit == &m_album_cover_name_edit)
811 {
812 CString temp;
813 m_album_cover_name_edit.GetWindowTextW(temp);
814 temp.Replace(L'/', L'\\');
815 CCommon::StringSplit(wstring(temp), L',', m_data.default_album_name);
816 for (auto& album_name : m_data.default_album_name)
817 {
818 // 虽然开头的.\\不是后续识别必须的但是如果发现缺少还是加上
819 // 这是一个非简写的相对路径,绝对路径此处不做处理
820 if (album_name.find(L'\\') != wstring::npos && album_name.front() != L'\\' && !CCommon::IsPath(album_name))
821 {
822 // 确保相对路径以".\\"开头
823 if (album_name.at(0) == L'.' && album_name.at(1) == L'\\')
824 continue;
825 album_name = L".\\" + album_name;
826 }
827 }
828 m_album_cover_name_edit.SetWindowTextW(CCommon::StringMerge(m_data.default_album_name, L',').c_str());
829 }
830 else if (pEdit == &m_album_cover_path_edit)
831 {
832 CString str;
833 m_album_cover_path_edit.GetWindowTextW(str);
834 m_data.album_cover_path = str.GetString();
835 }
836 return 0;
837 }
838
839
OnBnClickedUseDesktopBackgroundCheck()840 void CAppearanceSettingDlg::OnBnClickedUseDesktopBackgroundCheck()
841 {
842 // TODO: 在此添加控件通知处理程序代码
843 m_data.use_desktop_background = (IsDlgButtonChecked(IDC_USE_DESKTOP_BACKGROUND_CHECK) != 0);
844 SetControlEnable();
845 }
846
847
OnBnClickedShowNextCheck()848 void CAppearanceSettingDlg::OnBnClickedShowNextCheck()
849 {
850 // TODO: 在此添加控件通知处理程序代码
851 m_data.show_next_track = (IsDlgButtonChecked(IDC_SHOW_NEXT_CHECK) != 0);
852 }
853
854
OnBnClickedShowFpsCheck()855 void CAppearanceSettingDlg::OnBnClickedShowFpsCheck()
856 {
857 // TODO: 在此添加控件通知处理程序代码
858 m_data.show_fps = (IsDlgButtonChecked(IDC_SHOW_FPS_CHECK) != 0);
859 }
860
861
OnBnClickedAlwaysShowStatusbarCheck()862 void CAppearanceSettingDlg::OnBnClickedAlwaysShowStatusbarCheck()
863 {
864 m_data.always_show_statusbar = (IsDlgButtonChecked(IDC_ALWAYS_SHOW_STATUSBAR_CHECK) != 0);
865 SetControlEnable();
866 }
867
868
OnBnClickedUseSystemTitlebarRadio()869 void CAppearanceSettingDlg::OnBnClickedUseSystemTitlebarRadio()
870 {
871 m_data.show_window_frame = true;
872 SetControlEnable();
873 }
874
875
OnBnClickedUseOwnerDrawTitlebarRadio()876 void CAppearanceSettingDlg::OnBnClickedUseOwnerDrawTitlebarRadio()
877 {
878 m_data.show_window_frame = false;
879 SetControlEnable();
880 }
881