From 07a67cc2fead7c299d3aaa3948ed2372ac67112e Mon Sep 17 00:00:00 2001 From: lrisora <43085437+lrisora@users.noreply.github.com> Date: Fri, 18 Aug 2023 21:52:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=8A=A8=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E5=AA=92=E4=BD=93=E5=BA=93=E6=97=B6=E7=95=A5=E8=BF=87?= =?UTF-8?q?=E8=BF=87=E7=9F=AD=E6=96=87=E4=BB=B6=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MusicPlayer2/CommonData.h | 2 + MusicPlayer2/MediaLibSettingDlg.cpp | 21 ++- MusicPlayer2/MediaLibSettingDlg.h | 9 + MusicPlayer2/MusicPlayer2.rc | 260 +++++++++++++------------- MusicPlayer2/MusicPlayerCmdHelper.cpp | 5 + MusicPlayer2/MusicPlayerDlg.cpp | 82 ++++---- MusicPlayer2/resource.h | 4 +- 7 files changed, 219 insertions(+), 164 deletions(-) diff --git a/MusicPlayer2/CommonData.h b/MusicPlayer2/CommonData.h index 3f71fbc0..bb65b610 100644 --- a/MusicPlayer2/CommonData.h +++ b/MusicPlayer2/CommonData.h @@ -359,6 +359,8 @@ struct MediaLibSettingData bool disable_delete_from_disk; //禁用从磁盘删除 bool show_tree_tool_tips; //树控件显示鼠标提示 bool update_media_lib_when_start_up; //启动时自动更新媒体库 + bool ignore_too_short_when_update; // 自动更新/刷新媒体库时忽略时长低于阈值的文件(不影响手动加入) + int file_too_short_sec; // 音频低时长阈值(清理媒体库功能也使用这个设置) bool remove_file_not_exist_when_update{}; //更新媒体库时移除不存在的音频文件 bool disable_drag_sort; //禁止通过拖放排序 DisplayFormat display_format{}; //播放列表中项目的显示样式 diff --git a/MusicPlayer2/MediaLibSettingDlg.cpp b/MusicPlayer2/MediaLibSettingDlg.cpp index 513bf26a..18904a57 100644 --- a/MusicPlayer2/MediaLibSettingDlg.cpp +++ b/MusicPlayer2/MediaLibSettingDlg.cpp @@ -46,6 +46,8 @@ void CMediaLibSettingDlg::DoDataExchange(CDataExchange* pDX) DDX_Control(pDX, IDC_DISABLE_DRAGE_SORT_CHECK, m_disable_drag_sort_chk); DDX_Control(pDX, IDC_PLAYLIST_DISPLAY_MODE_OMBO, m_playlist_display_mode_combo); DDX_Control(pDX, IDC_RECENT_PLAYED_RANGE_OMBO, m_recent_played_range_combo); + DDX_Control(pDX, IDC_IGNORE_TOO_SHORT_CHECK, m_ignore_too_short_chk); + DDX_Control(pDX, IDC_FILE_TOO_SHORT_SEC_EDIT, m_file_too_short_sec_edit); DDX_Control(pDX, IDC_IGNORE_EXIST_CHECK, m_ignore_exist_chk); DDX_Control(pDX, IDC_ID3V2_TYPE_COMBO, m_id3v2_type_combo); DDX_Control(pDX, IDC_ENABLE_LASTFM, m_enable_lastfm); @@ -90,9 +92,13 @@ void CMediaLibSettingDlg::GetDataFromUi() m_data.lastfm_least_dur = m_lastfm_least_dur.GetValue(); m_data.lastfm_auto_scrobble_min = m_lastfm_auto_scrobble_min.GetValue(); m_data.playlist_item_height = m_playlist_item_height_edit.GetValue(); + m_data.file_too_short_sec = m_file_too_short_sec_edit.GetValue(); m_data.remove_file_not_exist_when_update = (IsDlgButtonChecked(IDC_REMOVE_FILE_NOT_EXIST_WHEN_UPDATE_CHECK)); } +// void CMediaLibSettingDlg::ApplyDataToUi() +// { +// } BEGIN_MESSAGE_MAP(CMediaLibSettingDlg, CTabDlg) ON_WM_TIMER() @@ -119,6 +125,7 @@ BEGIN_MESSAGE_MAP(CMediaLibSettingDlg, CTabDlg) ON_BN_CLICKED(IDC_LASTFM_ENABLE_HTTPS, &CMediaLibSettingDlg::OnBnClickedLastfmEnableHttps) ON_BN_CLICKED(IDC_LASTFM_ENABLE_NOWPLAYING, &CMediaLibSettingDlg::OnBnClickedLastfmEnableNowplaying) ON_MESSAGE(WM_EDIT_BROWSE_CHANGED, &CMediaLibSettingDlg::OnEditBrowseChanged) + ON_BN_CLICKED(IDC_IGNORE_TOO_SHORT_CHECK, &CMediaLibSettingDlg::OnBnClickedIgnoreTooShortCheck) END_MESSAGE_MAP() @@ -171,6 +178,7 @@ BOOL CMediaLibSettingDlg::OnInitDialog() m_recent_played_range_combo.SetCurSel(static_cast(m_data.recent_played_range)); m_ignore_exist_chk.SetCheck(m_data.ignore_songs_already_in_playlist); + m_ignore_too_short_chk.SetCheck(m_data.ignore_too_short_when_update); CheckDlgButton(IDC_SHOW_PLAYLIST_TOOLTIP_CHECK, m_data.show_playlist_tooltip); CheckDlgButton(IDC_FLOAT_PLAYLIST_FOLLOW_MAIN_WND_CHECK, m_data.float_playlist_follow_main_wnd); @@ -202,6 +210,8 @@ BOOL CMediaLibSettingDlg::OnInitDialog() m_playlist_item_height_edit.SetRange(MIN_PLAYLIST_ITEM_HEIGHT, MAX_PLAYLIST_ITEM_HEIGHT); m_playlist_item_height_edit.SetValue(m_data.playlist_item_height); + m_file_too_short_sec_edit.SetRange(1, 60); + m_file_too_short_sec_edit.SetValue(m_data.file_too_short_sec); //设置控件不响应鼠标滚轮消息 m_playlist_display_mode_combo.SetMouseWheelEnable(false); @@ -211,6 +221,8 @@ BOOL CMediaLibSettingDlg::OnInitDialog() m_lastfm_least_dur.SetMouseWheelEnable(false); m_lastfm_auto_scrobble_min.SetMouseWheelEnable(false); m_playlist_item_height_edit.SetMouseWheelEnable(false); + m_file_too_short_sec_edit.SetMouseWheelEnable(false); + UpdateLastFMStatus(); SetTimer(TIMER_1_SEC, 1000, NULL); @@ -308,7 +320,7 @@ void CMediaLibSettingDlg::OnBnClickedCleanDataFileButton() { clear_cnt += CMusicPlayerCmdHelper::CleanUpSongData([&](const SongInfo& song) { - return song.length().toInt() < 30 * 1000; + return song.length().toInt() < m_data.file_too_short_sec * 1000; }); } if (clear_cnt > 0) @@ -521,3 +533,10 @@ afx_msg LRESULT CMediaLibSettingDlg::OnEditBrowseChanged(WPARAM wParam, LPARAM l } return 0; } + + +void CMediaLibSettingDlg::OnBnClickedIgnoreTooShortCheck() +{ + // TODO: 在此添加控件通知处理程序代码 + m_data.ignore_too_short_when_update = (m_ignore_too_short_chk.GetCheck() != 0); +} diff --git a/MusicPlayer2/MediaLibSettingDlg.h b/MusicPlayer2/MediaLibSettingDlg.h index 7381e6c2..8436d141 100644 --- a/MusicPlayer2/MediaLibSettingDlg.h +++ b/MusicPlayer2/MediaLibSettingDlg.h @@ -31,6 +31,8 @@ private: CButton m_disable_drag_sort_chk; CMyComboBox m_playlist_display_mode_combo; CMyComboBox m_recent_played_range_combo; + CButton m_ignore_too_short_chk; + CSpinEdit m_file_too_short_sec_edit; CButton m_ignore_exist_chk; CMyComboBox m_id3v2_type_combo; CButton m_enable_lastfm; @@ -54,7 +56,12 @@ protected: void ShowDataSizeInfo(); virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + // 在点击选项设置对话框的“应用”或“确定”时CMusicPlayerDlg::ApplySettings()将所有m_data写入theApp前被调用 + // 这里是设置应用前最后的更新ui到m_data的机会,不需要实时更新到m_data的ui也可以只在这里获取 virtual void GetDataFromUi() override; + // 在点击选项设置对话框的“应用”时,时CMusicPlayerDlg::ApplySettings()将所有m_data写入theApp后被调用 + // 进行一些只有在CMusicPlayerDlg::ApplySettings()后才能做的ui更新 + // virtual void ApplyDataToUi() override; void UpdateLastFMStatus(); void UpdateLastFMCacheStatus(); afx_msg void OnTimer(UINT_PTR nIDEvent); @@ -88,4 +95,6 @@ public: afx_msg void OnBnClickedLastfmEnableNowplaying(); protected: afx_msg LRESULT OnEditBrowseChanged(WPARAM wParam, LPARAM lParam); +public: + afx_msg void OnBnClickedIgnoreTooShortCheck(); }; diff --git a/MusicPlayer2/MusicPlayer2.rc b/MusicPlayer2/MusicPlayer2.rc index 22de3d5e..ebd9ee85 100644 --- a/MusicPlayer2/MusicPlayer2.rc +++ b/MusicPlayer2/MusicPlayer2.rc @@ -1153,75 +1153,79 @@ BEGIN CONTROL "",IDC_HSPLITER_STATIC,"Static",SS_BLACKFRAME,111,19,3,136 END -IDD_MEDIA_LIB_SETTING_DIALOG DIALOGEX 0, 0, 243, 559 +IDD_MEDIA_LIB_SETTING_DIALOG DIALOGEX 0, 0, 243, 567 STYLE DS_SETFONT | WS_CHILD | WS_SYSMENU FONT 9, "微软雅黑", 400, 0, 0x0 BEGIN - GROUPBOX "媒体库目录",IDC_STATIC,6,93,230,66 - CONTROL "",IDC_DIR_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,14,105,156,47 - PUSHBUTTON "添加(&A)...",IDC_ADD_BUTTON,176,109,50,14 - PUSHBUTTON "删除(&D)",IDC_DELETE_BUTTON,176,127,50,14 - GROUPBOX "媒体库选项",IDC_STATIC,6,5,230,82 + GROUPBOX "媒体库目录",IDC_STATIC,6,103,230,66 + CONTROL "",IDC_DIR_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,14,115,156,47 + PUSHBUTTON "添加(&A)...",IDC_ADD_BUTTON,176,119,50,14 + PUSHBUTTON "删除(&D)",IDC_DELETE_BUTTON,176,137,50,14 + GROUPBOX "媒体库选项",IDC_STATIC,6,5,230,92 CONTROL "将只有一项的分类归到其他类中",IDC_CLASSIFY_OTHER_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,18,133,10 - CONTROL "启动时自动更新媒体库",IDC_UPDATE_MEDIA_LIB_CHK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,29,132,10 - LTEXT "当前数据文件大小:",IDC_SIZE_STATIC,14,358,178,8 - PUSHBUTTON "清理(&C)...",IDC_CLEAN_DATA_FILE_BUTTON,14,370,53,14 - GROUPBOX "清理媒体库",IDC_STATIC,6,346,230,43 - PUSHBUTTON "清空最近播放曲目列表(&R)...",IDC_CLEAR_RECENT_PLAYED_LIST_BTN,13,320,95,14 - GROUPBOX "最近播放",IDC_STATIC,6,294,230,45 - GROUPBOX "播放列表",IDC_STATIC,6,211,230,76 - CONTROL "禁用播放列表拖放排序",IDC_DISABLE_DRAGE_SORT_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,222,89,10 - LTEXT "播放列表显示方式:",IDC_STATIC,107,223,64,8 - COMBOBOX IDC_PLAYLIST_DISPLAY_MODE_OMBO,173,221,59,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "最近播放显示范围:",IDC_STATIC,14,306,66,8 - COMBOBOX IDC_RECENT_PLAYED_RANGE_OMBO,85,304,111,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "禁止向播放列表中添加已存在的曲目",IDC_IGNORE_EXIST_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,235,175,10 - GROUPBOX "在媒体库中显示的项目",IDC_STATIC,6,165,230,39 - CONTROL "艺术家",IDC_ARTIST_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,177,36,10 - CONTROL "唱片集",IDC_ALBUM_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,55,176,36,10 - CONTROL "流派",IDC_GENRE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,99,176,29,10 - CONTROL "年份",IDC_YEAR_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143,176,29,10 - CONTROL "文件类型",IDC_FILE_TYPE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,176,43,10 - CONTROL "比特率",IDC_BITRATE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,190,36,10 - CONTROL "所有曲目",IDC_ALL_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,99,189,43,10 - CONTROL "最近播放",IDC_RECENT_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143,189,43,10 - CONTROL "文件夹浏览",IDC_FOLDER_EXPLORE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,189,49,10 - CONTROL "分级",IDC_RATING_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,55,189,29,10 - GROUPBOX "标签读写",IDC_STATIC,6,393,230,32 - LTEXT "ID3v2写入类型:",IDC_STATIC,14,407,61,8 - COMBOBOX IDC_ID3V2_TYPE_COMBO,74,406,48,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "启动时自动更新媒体库",IDC_UPDATE_MEDIA_LIB_CHK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,29,95,10 + LTEXT "当前数据文件大小:",IDC_SIZE_STATIC,14,365,178,8 + PUSHBUTTON "清理(&C)...",IDC_CLEAN_DATA_FILE_BUTTON,14,377,53,14 + GROUPBOX "清理媒体库",IDC_STATIC,6,353,230,43 + PUSHBUTTON "清空最近播放曲目列表(&R)...",IDC_CLEAR_RECENT_PLAYED_LIST_BTN,13,328,95,14 + GROUPBOX "最近播放",IDC_STATIC,6,302,230,45 + GROUPBOX "播放列表",IDC_STATIC,6,219,230,76 + CONTROL "禁用播放列表拖放排序",IDC_DISABLE_DRAGE_SORT_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,230,89,10 + LTEXT "播放列表显示方式:",IDC_STATIC,107,231,64,8 + COMBOBOX IDC_PLAYLIST_DISPLAY_MODE_OMBO,173,229,59,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "最近播放显示范围:",IDC_STATIC,14,314,66,8 + COMBOBOX IDC_RECENT_PLAYED_RANGE_OMBO,85,312,111,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "禁止向播放列表中添加已存在的曲目",IDC_IGNORE_EXIST_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,243,175,10 + GROUPBOX "在媒体库中显示的项目",IDC_STATIC,6,175,230,39 + CONTROL "艺术家",IDC_ARTIST_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,187,36,10 + CONTROL "唱片集",IDC_ALBUM_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,55,186,36,10 + CONTROL "流派",IDC_GENRE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,99,186,29,10 + CONTROL "年份",IDC_YEAR_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143,186,29,10 + CONTROL "文件类型",IDC_FILE_TYPE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,186,43,10 + CONTROL "比特率",IDC_BITRATE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,200,36,10 + CONTROL "所有曲目",IDC_ALL_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,99,199,43,10 + CONTROL "最近播放",IDC_RECENT_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,143,199,43,10 + CONTROL "文件夹浏览",IDC_FOLDER_EXPLORE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,187,199,49,10 + CONTROL "分级",IDC_RATING_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,55,199,29,10 + GROUPBOX "标签读写",IDC_STATIC,6,403,230,32 + LTEXT "ID3v2写入类型:",IDC_STATIC,14,417,61,8 + COMBOBOX IDC_ID3V2_TYPE_COMBO,74,416,48,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "刷新媒体库(&R)",IDC_REFRESH_MEDIA_LIB_BUTTON,153,20,59,14 - CONTROL "禁用从磁盘删除",IDC_DISABLE_DELETE_FROM_DISK_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,53,118,10 - CONTROL "显示播放列表鼠标提示",IDC_SHOW_PLAYLIST_TOOLTIP_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,247,87,10 + CONTROL "禁用从磁盘删除",IDC_DISABLE_DELETE_FROM_DISK_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,63,73,10 + CONTROL "显示播放列表鼠标提示",IDC_SHOW_PLAYLIST_TOOLTIP_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,255,87,10 CONTROL "浮动播放列表跟随主窗口",IDC_FLOAT_PLAYLIST_FOLLOW_MAIN_WND_CHECK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,259,159,10 - LTEXT "播放列表项目高度:",IDC_STATIC,14,273,66,8 - EDITTEXT IDC_PLAYLIST_ITEM_HEIGHT_EDIT,81,271,34,12,ES_AUTOHSCROLL - LTEXT "像素",IDC_STATIC,117,273,26,8 - GROUPBOX "Last.fm",IDC_STATIC,6,432,230,118 - CONTROL "启用 last.fm 相关功能",IDC_ENABLE_LASTFM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,443,80,10 - LTEXT "当前状态:",IDC_STATIC,14,456,34,8 - LTEXT "状态",IDC_LASTFM_STATUS,46,456,124,8 - PUSHBUTTON "登录",IDC_LASTFM_LOGIN,177,452,50,14,WS_DISABLED - LTEXT "当播放进度满足以下所有条件时将记录计入缓存:",IDC_STATIC,14,469,207,8 - LTEXT "至少播放歌曲的",IDC_STATIC,14,481,52,8 - EDITTEXT IDC_LASTFM_LEAST_PERDUR,66,480,29,12,ES_AUTOHSCROLL - LTEXT "% 并至少播放",IDC_STATIC,98,481,46,8 - EDITTEXT IDC_LASTFM_LEAST_DUR,144,480,29,12,ES_AUTOHSCROLL - LTEXT "秒。",IDC_STATIC,175,482,18,8 - CONTROL "当缓存中的记录数超过",IDC_LASTFM_AUTO_SCROBBLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,496,80,10 - EDITTEXT IDC_LASTFM_AUTO_SCROBBLE_MIN,94,495,29,12,ES_AUTOHSCROLL - LTEXT "条时,自动上传缓存。",IDC_STATIC,126,497,97,8 - LTEXT "缓存状态:",IDC_STATIC,14,510,34,8 - LTEXT "X条记录",IDC_LASTFM_CACHE_STATUS,46,510,123,8 - PUSHBUTTON "上传缓存",IDC_LASTFM_UPLOAD_CACHE,177,509,50,14,WS_DISABLED + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,267,159,10 + LTEXT "播放列表项目高度:",IDC_STATIC,14,281,66,8 + EDITTEXT IDC_PLAYLIST_ITEM_HEIGHT_EDIT,81,279,34,12,ES_AUTOHSCROLL + LTEXT "像素",IDC_STATIC,117,281,26,8 + GROUPBOX "Last.fm",IDC_STATIC,6,442,230,118 + CONTROL "启用 last.fm 相关功能",IDC_ENABLE_LASTFM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,453,80,10 + LTEXT "当前状态:",IDC_STATIC,14,466,34,8 + LTEXT "状态",IDC_LASTFM_STATUS,46,466,124,8 + PUSHBUTTON "登录",IDC_LASTFM_LOGIN,177,462,50,14,WS_DISABLED + LTEXT "当播放进度满足以下所有条件时将记录计入缓存:",IDC_STATIC,14,479,207,8 + LTEXT "至少播放歌曲的",IDC_STATIC,14,491,52,8 + EDITTEXT IDC_LASTFM_LEAST_PERDUR,66,490,29,12,ES_AUTOHSCROLL + LTEXT "% 并至少播放",IDC_STATIC,98,491,46,8 + EDITTEXT IDC_LASTFM_LEAST_DUR,144,490,29,12,ES_AUTOHSCROLL + LTEXT "秒。",IDC_STATIC,175,492,18,8 + CONTROL "当缓存中的记录数超过",IDC_LASTFM_AUTO_SCROBBLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,506,80,10 + EDITTEXT IDC_LASTFM_AUTO_SCROBBLE_MIN,94,505,29,12,ES_AUTOHSCROLL + LTEXT "条时,自动上传缓存。",IDC_STATIC,126,507,97,8 + LTEXT "缓存状态:",IDC_STATIC,14,520,34,8 + LTEXT "X条记录",IDC_LASTFM_CACHE_STATUS,46,520,123,8 + PUSHBUTTON "上传缓存",IDC_LASTFM_UPLOAD_CACHE,177,519,50,14,WS_DISABLED CONTROL "使用 HTTPS 与 last.fm 服务器通信",IDC_LASTFM_ENABLE_HTTPS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,522,116,10 - CONTROL "上传当前播放歌曲",IDC_LASTFM_ENABLE_NOWPLAYING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,535,67,10 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,532,116,10 + CONTROL "上传当前播放歌曲",IDC_LASTFM_ENABLE_NOWPLAYING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,545,67,10 CONTROL "更新媒体库时移除不存在的音频文件",IDC_REMOVE_FILE_NOT_EXIST_WHEN_UPDATE_CHECK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,41,147,10 - CONTROL "",IDC_ARTIST_SPLIT_EXT_EDIT,"MfcEditBrowse",WS_BORDER | WS_TABSTOP | 0x80,70,65,160,14 - LTEXT "艺术家识别例外:",IDC_STATIC,14,67,54,8 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,51,147,10 + CONTROL "",IDC_ARTIST_SPLIT_EXT_EDIT,"MfcEditBrowse",WS_BORDER | WS_TABSTOP | 0x80,69,78,157,11 + LTEXT "艺术家识别例外:",IDC_STATIC,14,79,54,8 + CONTROL "更新媒体库时忽略时长低于阈值的文件",IDC_IGNORE_TOO_SHORT_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,40,132,10 + LTEXT "音频文件低时长阈值:",IDC_STATIC,122,64,73,8 + LTEXT "秒",IDC_STATIC,217,64,8,8 + EDITTEXT IDC_FILE_TOO_SHORT_SEC_EDIT,187,62,27,12,ES_AUTOHSCROLL END IDD_ADD_TO_PLAYLIST_DIALOG DIALOGEX 0, 0, 186, 152 @@ -1708,7 +1712,7 @@ BEGIN RIGHTMARGIN, 236 VERTGUIDE, 14 TOPMARGIN, 5 - BOTTOMMARGIN, 555 + BOTTOMMARGIN, 563 END IDD_ADD_TO_PLAYLIST_DIALOG, DIALOG @@ -3928,8 +3932,7 @@ BEGIN IDS_DEFAULT_UI "默认界面" IDS_ALIGN_AUTO "自动" IDS_SET_MULTI_ARTIST_SPLIT_EXT "设置多个艺术家识别例外" - IDS_ARTIST_SPLIT_EXT_TIP_INFO - "添加所有名称本身含有‘/’,‘;’,‘&&’以及‘、’的艺术家作为例外,避免程序误识别。" + IDS_ARTIST_SPLIT_EXT_TIP_INFO "添加所有名称本身含有“/;&&、”的艺术家作为例外,避免程序误识别。" IDS_FILES_TOO_SHORT "过短的文件" END @@ -4728,80 +4731,85 @@ BEGIN CONTROL "",IDC_SEARCH_EDIT,"MfcEditBrowse",WS_BORDER | WS_TABSTOP | 0x80,7,7,172,12 END -IDD_MEDIA_LIB_SETTING_DIALOG DIALOGEX 0, 0, 342, 554 +IDD_MEDIA_LIB_SETTING_DIALOG DIALOGEX 0, 0, 342, 573 STYLE DS_SETFONT | WS_CHILD | WS_SYSMENU FONT 9, "Segoe UI", 400, 0, 0x0 BEGIN - GROUPBOX "Media Library Directory",IDC_STATIC,6,91,329,66 - CONTROL "",IDC_DIR_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,14,103,228,47 - PUSHBUTTON "&Add...",IDC_ADD_BUTTON,251,107,50,14 - PUSHBUTTON "&Delete",IDC_DELETE_BUTTON,251,125,50,14 - GROUPBOX "Media Library Options",IDC_STATIC,6,4,329,81 + GROUPBOX "Media Library Directory",IDC_STATIC,6,108,329,66 + CONTROL "",IDC_DIR_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,14,120,228,47 + PUSHBUTTON "&Add...",IDC_ADD_BUTTON,251,124,50,14 + PUSHBUTTON "&Delete",IDC_DELETE_BUTTON,251,142,50,14 + GROUPBOX "Media Library Options",IDC_STATIC,6,4,329,98 CONTROL "Classify only-one items into others",IDC_CLASSIFY_OTHER_CHECK, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,18,187,10 CONTROL "Automatically update media library on startup",IDC_UPDATE_MEDIA_LIB_CHK, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,30,185,10 - LTEXT "Current data file size:",IDC_SIZE_STATIC,14,356,297,8 - PUSHBUTTON "&Clean up...",IDC_CLEAN_DATA_FILE_BUTTON,14,367,59,14 - GROUPBOX "Clean up the media library",IDC_STATIC,6,345,329,40 - PUSHBUTTON "Clear recently played tracks list...",IDC_CLEAR_RECENT_PLAYED_LIST_BTN,14,321,123,14 - GROUPBOX "Recently played",IDC_STATIC,6,295,329,45 - GROUPBOX "Playlist",IDC_STATIC,6,208,329,82 + LTEXT "Current data file size:",IDC_SIZE_STATIC,14,376,297,8 + PUSHBUTTON "&Clean up...",IDC_CLEAN_DATA_FILE_BUTTON,14,387,59,14 + GROUPBOX "Clean up the media library",IDC_STATIC,6,365,329,40 + PUSHBUTTON "Clear recently played tracks list...",IDC_CLEAR_RECENT_PLAYED_LIST_BTN,14,341,123,14 + GROUPBOX "Recently played",IDC_STATIC,6,315,329,45 + GROUPBOX "Playlist",IDC_STATIC,6,226,329,82 CONTROL "Disable drag and drop sorting of playlist",IDC_DISABLE_DRAGE_SORT_CHECK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,219,149,11 - LTEXT "Playlist Display Mode:",IDC_STATIC,14,234,80,9 - COMBOBOX IDC_PLAYLIST_DISPLAY_MODE_OMBO,96,232,133,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Recently played display range:",IDC_STATIC,16,308,113,8 - COMBOBOX IDC_RECENT_PLAYED_RANGE_OMBO,131,306,125,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,237,149,11 + LTEXT "Playlist Display Mode:",IDC_STATIC,14,252,80,9 + COMBOBOX IDC_PLAYLIST_DISPLAY_MODE_OMBO,96,250,133,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Recently played display range:",IDC_STATIC,16,328,113,8 + COMBOBOX IDC_RECENT_PLAYED_RANGE_OMBO,131,326,125,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "Prohibit adding existing tracks to the playlist",IDC_IGNORE_EXIST_CHECK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,247,216,10 - GROUPBOX "Items displayed in the media library",IDC_STATIC,12,163,323,39 - CONTROL "Artist",IDC_ARTIST_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,175,41,10 - CONTROL "Album",IDC_ALBUM_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60,175,41,10 - CONTROL "Genre",IDC_GENRE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,111,175,39,10 - CONTROL "Year",IDC_YEAR_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,175,33,10 - CONTROL "File type",IDC_FILE_TYPE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,238,175,49,10 - CONTROL "Bitrate",IDC_BITRATE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,188,41,10 - CONTROL "All tracks",IDC_ALL_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,111,188,49,10 - CONTROL "Recently played",IDC_RECENT_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,188,69,10 - CONTROL "Folder explore",IDC_FOLDER_EXPLORE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,238,188,73,10 - CONTROL "Rating",IDC_RATING_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60,188,33,10 - GROUPBOX "Music tag reading and writing",IDC_STATIC,12,390,323,30 - LTEXT "ID3v2 write type:",IDC_STATIC,15,403,66,9 - COMBOBOX IDC_ID3V2_TYPE_COMBO,80,402,52,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Refresh media library",IDC_REFRESH_MEDIA_LIB_BUTTON,206,20,85,13 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,265,216,10 + GROUPBOX "Items displayed in the media library",IDC_STATIC,6,180,329,39 + CONTROL "Artist",IDC_ARTIST_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,192,41,10 + CONTROL "Album",IDC_ALBUM_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60,192,41,10 + CONTROL "Genre",IDC_GENRE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,111,192,39,10 + CONTROL "Year",IDC_YEAR_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,192,33,10 + CONTROL "File type",IDC_FILE_TYPE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,238,192,49,10 + CONTROL "Bitrate",IDC_BITRATE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,205,41,10 + CONTROL "All tracks",IDC_ALL_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,111,205,49,10 + CONTROL "Recently played",IDC_RECENT_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,167,205,69,10 + CONTROL "Folder explore",IDC_FOLDER_EXPLORE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,238,205,73,10 + CONTROL "Rating",IDC_RATING_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60,205,33,10 + GROUPBOX "Music tag reading and writing",IDC_STATIC,6,412,329,30 + LTEXT "ID3v2 write type:",IDC_STATIC,15,425,66,9 + COMBOBOX IDC_ID3V2_TYPE_COMBO,80,424,52,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "&Refresh media library",IDC_REFRESH_MEDIA_LIB_BUTTON,218,20,85,13 CONTROL "Disable delete from disk",IDC_DISABLE_DELETE_FROM_DISK_CHECK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,54,128,9 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,66,128,9 CONTROL "Show playlist tool tip",IDC_SHOW_PLAYLIST_TOOLTIP_CHECK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,260,167,9 - GROUPBOX "Last.fm",IDC_STATIC,6,426,329,119 - CONTROL "Enable last.fm support",IDC_ENABLE_LASTFM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,435,87,10 - LTEXT "Current status: ",IDC_STATIC,14,448,49,8 - LTEXT "Status",IDC_LASTFM_STATUS,65,448,190,8 - PUSHBUTTON "Log in",IDC_LASTFM_LOGIN,264,444,50,14,WS_DISABLED - LTEXT "Cache scrobble when following conditions are meeted:",IDC_STATIC,14,460,289,8 - LTEXT "Played",IDC_STATIC,14,473,28,8 - EDITTEXT IDC_LASTFM_LEAST_PERDUR,44,472,30,12,ES_AUTOHSCROLL - LTEXT "% of the song and",IDC_STATIC,78,473,64,8 - EDITTEXT IDC_LASTFM_LEAST_DUR,142,472,30,12,ES_AUTOHSCROLL - LTEXT "Seconds.",IDC_STATIC,176,473,34,8 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,278,167,9 + GROUPBOX "Last.fm",IDC_STATIC,6,447,329,119 + CONTROL "Enable last.fm support",IDC_ENABLE_LASTFM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,456,87,10 + LTEXT "Current status: ",IDC_STATIC,14,469,49,8 + LTEXT "Status",IDC_LASTFM_STATUS,65,469,190,8 + PUSHBUTTON "Log in",IDC_LASTFM_LOGIN,264,465,50,14,WS_DISABLED + LTEXT "Cache scrobble when following conditions are meeted:",IDC_STATIC,14,481,289,8 + LTEXT "Played",IDC_STATIC,14,494,28,8 + EDITTEXT IDC_LASTFM_LEAST_PERDUR,44,493,30,12,ES_AUTOHSCROLL + LTEXT "% of the song and",IDC_STATIC,78,494,64,8 + EDITTEXT IDC_LASTFM_LEAST_DUR,142,493,30,12,ES_AUTOHSCROLL + LTEXT "Seconds.",IDC_STATIC,176,494,34,8 CONTROL "Upload scrobbles in cache if the number of cached scrobbles is greater than ",IDC_LASTFM_AUTO_SCROBBLE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,486,267,10 - EDITTEXT IDC_LASTFM_AUTO_SCROBBLE_MIN,281,486,30,12,ES_AUTOHSCROLL - LTEXT "Cache status:",IDC_STATIC,14,502,42,8 - LTEXT "X scrobbles",IDC_LASTFM_CACHE_STATUS,58,502,196,8 - PUSHBUTTON "Upload cache",IDC_LASTFM_UPLOAD_CACHE,264,501,50,14 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,507,267,10 + EDITTEXT IDC_LASTFM_AUTO_SCROBBLE_MIN,281,507,30,12,ES_AUTOHSCROLL + LTEXT "Cache status:",IDC_STATIC,14,523,42,8 + LTEXT "X scrobbles",IDC_LASTFM_CACHE_STATUS,58,523,196,8 + PUSHBUTTON "Upload cache",IDC_LASTFM_UPLOAD_CACHE,264,522,50,14 CONTROL "Use HTTPS when communicating with the last.fm server.",IDC_LASTFM_ENABLE_HTTPS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,515,263,10 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,536,263,10 CONTROL "Upload now playing track",IDC_LASTFM_ENABLE_NOWPLAYING, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,528,97,10 - LTEXT "Playlist item height:",IDC_STATIC,14,275,83,8 - EDITTEXT IDC_PLAYLIST_ITEM_HEIGHT_EDIT,97,273,39,12,ES_AUTOHSCROLL - LTEXT "pixel",IDC_STATIC,138,275,30,8 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,549,97,10 + LTEXT "Playlist item height:",IDC_STATIC,14,293,83,8 + EDITTEXT IDC_PLAYLIST_ITEM_HEIGHT_EDIT,97,291,39,12,ES_AUTOHSCROLL + LTEXT "pixel",IDC_STATIC,138,293,30,8 CONTROL "Remove non-existing audio files when updating media library",IDC_REMOVE_FILE_NOT_EXIST_WHEN_UPDATE_CHECK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,42,244,10 - LTEXT "Artist Recognition Exception:",IDC_STATIC,14,66,99,8 - CONTROL "",IDC_ARTIST_SPLIT_EXT_EDIT,"MfcEditBrowse",WS_BORDER | WS_TABSTOP | 0x80,114,63,186,14 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,54,244,10 + LTEXT "Artist Recognition Exception:",IDC_STATIC,16,81,99,8 + CONTROL "",IDC_ARTIST_SPLIT_EXT_EDIT,"MfcEditBrowse",WS_BORDER | WS_TABSTOP | 0x80,117,80,203,11 + CONTROL "Ignore audio files with durations below the threshold when updating the media library",IDC_IGNORE_TOO_SHORT_CHECK, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,42,301,10 + LTEXT "Audio file low duration threshold:",IDC_STATIC,135,66,113,8 + LTEXT "seconds",IDC_STATIC,291,66,28,8 + EDITTEXT IDC_FILE_TOO_SHORT_SEC_EDIT,248,64,40,12,ES_AUTOHSCROLL END IDD_LYRIC_RELATE_DIALOG DIALOGEX 0, 0, 329, 178 @@ -5195,7 +5203,7 @@ BEGIN RIGHTMARGIN, 335 VERTGUIDE, 14 TOPMARGIN, 4 - BOTTOMMARGIN, 550 + BOTTOMMARGIN, 569 END IDD_LYRIC_RELATE_DIALOG, DIALOG @@ -7283,8 +7291,8 @@ BEGIN IDS_SET_MULTI_ARTIST_SPLIT_EXT "Set multiple artist recognition exceptions" IDS_ARTIST_SPLIT_EXT_TIP_INFO - "Add all artists whose names contain '/', ';', '&&', or '、' as exceptions to prevent inadvertent recognition errors." - IDS_FILES_TOO_SHORT "过短的文件" + "Add all artists whose names contain ""/;&&、"" as exceptions to prevent inadvertent recognition errors." + IDS_FILES_TOO_SHORT "Too short files" END #endif // 英语(美国) resources diff --git a/MusicPlayer2/MusicPlayerCmdHelper.cpp b/MusicPlayer2/MusicPlayerCmdHelper.cpp index fbba8b16..61e720c6 100644 --- a/MusicPlayer2/MusicPlayerCmdHelper.cpp +++ b/MusicPlayer2/MusicPlayerCmdHelper.cpp @@ -539,6 +539,9 @@ int CMusicPlayerCmdHelper::UpdateMediaLib(bool refresh) // refresh为true时会强制更新cue的时长与标签(直接更新到媒体库) CAudioCommon::GetCueTracks(all_media_songs, CPlayer::GetInstance().GetPlayerCore(), index, refresh); + // 根据设置阻止非cue的过短文件被自动加入媒体库(这也会阻止获取时长失败的一般文件)(手动仍然可以) + bool ignore_too_short_when_update{ theApp.m_media_lib_setting_data.ignore_too_short_when_update }; + int file_too_short_ms{ theApp.m_media_lib_setting_data.file_too_short_sec * 1000 }; theApp.m_media_update_para.total_num = all_media_songs.size(); //保存音频总数 //std::unordered_map new_songs_map; for (const auto& song : all_media_songs) @@ -561,6 +564,8 @@ int CMusicPlayerCmdHelper::UpdateMediaLib(bool refresh) IPlayerCore* pPlayerCore = CPlayer::GetInstance().GetPlayerCore(); if (pPlayerCore != nullptr) pPlayerCore->GetAudioInfo(song_info.file_path.c_str(), song_info, flag); + if (ignore_too_short_when_update && !song_info.is_cue && song_info.length().toInt() < file_too_short_ms) + continue; if (is_osu_file) COSUPlayerHelper::GetOSUAudioTitleArtist(song_info); diff --git a/MusicPlayer2/MusicPlayerDlg.cpp b/MusicPlayer2/MusicPlayerDlg.cpp index 2ac6b7f9..53a91351 100644 --- a/MusicPlayer2/MusicPlayerDlg.cpp +++ b/MusicPlayer2/MusicPlayerDlg.cpp @@ -510,6 +510,8 @@ void CMusicPlayerDlg::SaveConfig() ini.WriteBool(L"media_lib", L"disable_delete_from_disk", theApp.m_media_lib_setting_data.disable_delete_from_disk); ini.WriteBool(L"media_lib", L"show_tree_tool_tips", theApp.m_media_lib_setting_data.show_tree_tool_tips); ini.WriteBool(L"media_lib", L"update_media_lib_when_start_up", theApp.m_media_lib_setting_data.update_media_lib_when_start_up); + ini.WriteBool(L"media_lib", L"ignore_too_short_when_update", theApp.m_media_lib_setting_data.ignore_too_short_when_update); + ini.WriteInt(L"media_lib", L"file_too_short_sec", theApp.m_media_lib_setting_data.file_too_short_sec); ini.WriteBool(L"media_lib", L"remove_file_not_exist_when_update", theApp.m_media_lib_setting_data.remove_file_not_exist_when_update); ini.WriteBool(L"media_lib", L"disable_drag_sort", theApp.m_media_lib_setting_data.disable_drag_sort); ini.WriteBool(L"media_lib", L"ignore_songs_already_in_playlist", theApp.m_media_lib_setting_data.ignore_songs_already_in_playlist); @@ -723,6 +725,8 @@ void CMusicPlayerDlg::LoadConfig() theApp.m_media_lib_setting_data.disable_delete_from_disk = ini.GetBool(L"media_lib", L"disable_delete_from_disk", false); theApp.m_media_lib_setting_data.show_tree_tool_tips = ini.GetBool(L"media_lib", L"show_tree_tool_tips", true); theApp.m_media_lib_setting_data.update_media_lib_when_start_up = ini.GetBool(L"media_lib", L"update_media_lib_when_start_up", true); + theApp.m_media_lib_setting_data.ignore_too_short_when_update = ini.GetBool(L"media_lib", L"ignore_too_short_when_update", true); + theApp.m_media_lib_setting_data.file_too_short_sec = ini.GetInt(L"media_lib", L"file_too_short_sec", 30); theApp.m_media_lib_setting_data.remove_file_not_exist_when_update = ini.GetBool(L"media_lib", L"remove_file_not_exist_when_update", true); theApp.m_media_lib_setting_data.disable_drag_sort = ini.GetBool(L"media_lib", L"disable_drag_sort", false); theApp.m_media_lib_setting_data.ignore_songs_already_in_playlist = ini.GetBool(L"media_lib", L"ignore_songs_already_in_playlist", true); @@ -1918,46 +1922,52 @@ void CMusicPlayerDlg::SetPlaylistDragEnable() void CMusicPlayerDlg::_OnOptionSettings(CWnd* pParent) { theApp.m_hot_key.UnRegisterAllHotKey(); - - COptionsDlg optionDlg(pParent); - //初始化对话框中变量的值 - optionDlg.m_tab_selected = m_tab_selected; - optionDlg.m_tab1_dlg.m_data = theApp.m_lyric_setting_data; - optionDlg.m_tab1_dlg.m_pDesktopLyric = &m_desktop_lyric; - if (m_miniModeDlg.m_hWnd == NULL) - optionDlg.m_tab2_dlg.m_hMainWnd = m_hWnd; - else - optionDlg.m_tab2_dlg.m_hMainWnd = m_miniModeDlg.m_hWnd; - optionDlg.m_tab2_dlg.m_data = theApp.m_app_setting_data; - optionDlg.m_tab3_dlg.m_data = theApp.m_general_setting_data; - optionDlg.m_tab4_dlg.m_data = theApp.m_play_setting_data; - optionDlg.m_tab5_dlg.m_hotkey_group = theApp.m_hot_key.GetHotKeyGroup(); - optionDlg.m_tab5_dlg.m_data = theApp.m_hot_key_setting_data; - optionDlg.m_media_lib_dlg.m_data = theApp.m_media_lib_setting_data; - - int sprctrum_height = theApp.m_app_setting_data.sprctrum_height; //保存theApp.m_app_setting_data.sprctrum_height的值,如果用户点击了选项对话框的取消,则需要把恢复为原来的 - int background_transparency = theApp.m_app_setting_data.background_transparency; //同上 - int desktop_lyric_opacity = theApp.m_lyric_setting_data.desktop_lyric_data.opacity; - - if (optionDlg.DoModal() == IDOK) + try { - ApplySettings(optionDlg); + // 设置窗口类的内存申请从栈移动到堆以修正警告 + std::shared_ptr pOptionDlg = std::make_shared(pParent); + //初始化对话框中变量的值 + pOptionDlg->m_tab_selected = m_tab_selected; + pOptionDlg->m_tab1_dlg.m_data = theApp.m_lyric_setting_data; + pOptionDlg->m_tab1_dlg.m_pDesktopLyric = &m_desktop_lyric; + if (m_miniModeDlg.m_hWnd == NULL) + pOptionDlg->m_tab2_dlg.m_hMainWnd = m_hWnd; + else + pOptionDlg->m_tab2_dlg.m_hMainWnd = m_miniModeDlg.m_hWnd; + pOptionDlg->m_tab2_dlg.m_data = theApp.m_app_setting_data; + pOptionDlg->m_tab3_dlg.m_data = theApp.m_general_setting_data; + pOptionDlg->m_tab4_dlg.m_data = theApp.m_play_setting_data; + pOptionDlg->m_tab5_dlg.m_hotkey_group = theApp.m_hot_key.GetHotKeyGroup(); + pOptionDlg->m_tab5_dlg.m_data = theApp.m_hot_key_setting_data; + pOptionDlg->m_media_lib_dlg.m_data = theApp.m_media_lib_setting_data; + + int sprctrum_height = theApp.m_app_setting_data.sprctrum_height; //保存theApp.m_app_setting_data.sprctrum_height的值,如果用户点击了选项对话框的取消,则需要把恢复为原来的 + int background_transparency = theApp.m_app_setting_data.background_transparency; //同上 + int desktop_lyric_opacity = theApp.m_lyric_setting_data.desktop_lyric_data.opacity; + + if (pOptionDlg->DoModal() == IDOK) + { + ApplySettings(*pOptionDlg); + } + else + { + SetTransparency(); //如果点击了取消,则需要重新设置窗口透明度 + SetDesptopLyricTransparency(); + + if (m_miniModeDlg.m_hWnd != NULL) + m_miniModeDlg.SetTransparency(); + + theApp.m_app_setting_data.sprctrum_height = sprctrum_height; + theApp.m_app_setting_data.background_transparency = background_transparency; + theApp.m_lyric_setting_data.desktop_lyric_data.opacity = desktop_lyric_opacity; + } + + m_tab_selected = pOptionDlg->m_tab_selected; } - else + catch (std::bad_alloc& ex) { - SetTransparency(); //如果点击了取消,则需要重新设置窗口透明度 - SetDesptopLyricTransparency(); - - if (m_miniModeDlg.m_hWnd != NULL) - m_miniModeDlg.SetTransparency(); - - theApp.m_app_setting_data.sprctrum_height = sprctrum_height; - theApp.m_app_setting_data.background_transparency = background_transparency; - theApp.m_lyric_setting_data.desktop_lyric_data.opacity = desktop_lyric_opacity; + // 这里暂时不处理了,只是保险起见 } - - m_tab_selected = optionDlg.m_tab_selected; - if (theApp.m_hot_key_setting_data.hot_key_enable) theApp.m_hot_key.RegisterAllHotKey(); } diff --git a/MusicPlayer2/resource.h b/MusicPlayer2/resource.h index 66c97def..c2c26db4 100644 --- a/MusicPlayer2/resource.h +++ b/MusicPlayer2/resource.h @@ -999,6 +999,7 @@ #define IDC_LYRIC_PATH_EDIT2 1065 #define IDC_ARTIST_EDIT1 1065 #define IDC_VBR_QUA_EDIT 1065 +#define IDC_FILE_TOO_SHORT_SEC_EDIT 1065 #define IDC_SPIN1 1066 #define IDC_SIZE_STATIC 1067 #define IDC_TITLE_EDIT1 1069 @@ -1237,6 +1238,7 @@ #define IDC_ACKNOWLEDGEMENT_SYSLINK 1225 #define IDC_HSPLITER_STATIC 1226 #define IDC_ARTIST_SPLIT_EXT_EDIT 1227 +#define IDC_IGNORE_TOO_SHORT_CHECK 1228 #define ID_32771 32771 #define ID_32772 32772 #define ID_OPEN 32773 @@ -1692,7 +1694,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 591 #define _APS_NEXT_COMMAND_VALUE 33464 -#define _APS_NEXT_CONTROL_VALUE 1228 +#define _APS_NEXT_CONTROL_VALUE 1229 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif