mirror of
https://github.com/zhongyang219/MusicPlayer2.git
synced 2026-10-22 00:46:20 +08:00
新增跳转到媒体库中当前歌曲艺术家和唱片集的功能
This commit is contained in:
@@ -21,6 +21,21 @@ CMediaLibDlg::~CMediaLibDlg()
|
||||
SaveConfig();
|
||||
}
|
||||
|
||||
void CMediaLibDlg::SetCurTab(int tab)
|
||||
{
|
||||
m_tab_ctrl.SetCurTab(tab);
|
||||
}
|
||||
|
||||
bool CMediaLibDlg::NavigateToItem(const wstring& item)
|
||||
{
|
||||
CMediaClassifyDlg* pCurTab = dynamic_cast<CMediaClassifyDlg*>(m_tab_ctrl.GetCurrentTab());
|
||||
if (pCurTab != nullptr)
|
||||
{
|
||||
return pCurTab->SetLeftListSel(item);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void CMediaLibDlg::SaveConfig() const
|
||||
{
|
||||
CIniHelper ini{ theApp.m_config_path };
|
||||
|
||||
@@ -33,6 +33,9 @@ public:
|
||||
CAllMediaDlg m_recent_media_dlg{ CAllMediaDlg::DT_RECENT_MEDIA };
|
||||
CFolderExploreDlg m_folder_explore_dlg;
|
||||
|
||||
void SetCurTab(int tab);
|
||||
bool NavigateToItem(const wstring& item); //跳转到对应项目,例如当前显示的是艺术家标签,则跳转到对应艺术家
|
||||
|
||||
protected:
|
||||
void SaveConfig() const;
|
||||
void LoadConfig();
|
||||
|
||||
@@ -96,6 +96,23 @@ void CMediaClassifyDlg::RefreshData()
|
||||
}
|
||||
}
|
||||
|
||||
bool CMediaClassifyDlg::SetLeftListSel(const wstring & item)
|
||||
{
|
||||
int list_size = static_cast<int>(m_list_data_left.size());
|
||||
for (int i = 0; i < list_size; i++)
|
||||
{
|
||||
|
||||
wstring name = m_list_data_left[i][0];
|
||||
if (CCommon::StringCompareNoCase(name, item))
|
||||
{
|
||||
m_classify_list_ctrl.SetCurSel(i);
|
||||
ClassifyListClicked(i);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void CMediaClassifyDlg::RefreshSongList()
|
||||
{
|
||||
ShowSongList();
|
||||
|
||||
@@ -23,6 +23,7 @@ public:
|
||||
public:
|
||||
virtual void GetSongsSelected(std::vector<wstring>& song_list) const override;
|
||||
void RefreshData();
|
||||
bool SetLeftListSel(const wstring& item);
|
||||
|
||||
protected:
|
||||
enum SongColumeIndex
|
||||
|
||||
@@ -631,6 +631,8 @@ void CMusicPlayerApp::InitMenuResourse()
|
||||
CMenuIcon::AddIconToMenuItem(m_menu_set.m_main_popup_menu.GetSubMenu(0)->GetSafeHmenu(), 2, TRUE, m_icon_set.add.GetIcon(true));
|
||||
CMenuIcon::AddIconToMenuItem(m_menu_set.m_main_popup_menu.GetSafeHmenu(), ID_ADD_TO_NEW_PLAYLIST, FALSE, m_icon_set.add.GetIcon(true));
|
||||
CMenuIcon::AddIconToMenuItem(m_menu_set.m_main_popup_menu.GetSafeHmenu(), ID_ADD_TO_MY_FAVOURITE, FALSE, m_icon_set.favourite.GetIcon(true));
|
||||
CMenuIcon::AddIconToMenuItem(m_menu_set.m_main_popup_menu.GetSafeHmenu(), ID_VIEW_ARTIST, FALSE, m_icon_set.artist.GetIcon(true));
|
||||
CMenuIcon::AddIconToMenuItem(m_menu_set.m_main_popup_menu.GetSafeHmenu(), ID_VIEW_ALBUM, FALSE, m_icon_set.album.GetIcon(true));
|
||||
CMenuIcon::AddIconToMenuItem(m_menu_set.m_main_popup_menu.GetSafeHmenu(), ID_SET_PATH, FALSE, m_icon_set.media_lib.GetIcon(true));
|
||||
CMenuIcon::AddIconToMenuItem(m_menu_set.m_main_popup_menu.GetSafeHmenu(), ID_FIND, FALSE, m_icon_set.find_songs.GetIcon(true));
|
||||
CMenuIcon::AddIconToMenuItem(m_menu_set.m_main_popup_menu.GetSafeHmenu(), ID_EXPLORE_PATH, FALSE, m_icon_set.folder_explore.GetIcon(true));
|
||||
|
||||
Binary file not shown.
@@ -535,6 +535,31 @@ bool CMusicPlayerCmdHelper::Rename(SongInfo & song, const wstring & new_name)
|
||||
return true;
|
||||
}
|
||||
|
||||
void CMusicPlayerCmdHelper::ShowMediaLib(int cur_tab /*= -1*/)
|
||||
{
|
||||
CMusicPlayerDlg* pPlayerDlg = dynamic_cast<CMusicPlayerDlg*>(theApp.m_pMainWnd);
|
||||
if (pPlayerDlg == nullptr)
|
||||
return;
|
||||
|
||||
if (pPlayerDlg->m_pMediaLibDlg != nullptr && IsWindow(pPlayerDlg->m_pMediaLibDlg->m_hWnd)) //如果媒体库对话框已经存在,则将其激活
|
||||
{
|
||||
pPlayerDlg->m_pMediaLibDlg->ShowWindow(SW_SHOWNORMAL);
|
||||
pPlayerDlg->m_pMediaLibDlg->SetForegroundWindow();
|
||||
if (cur_tab >= 0)
|
||||
pPlayerDlg->m_pMediaLibDlg->SetCurTab(cur_tab);
|
||||
}
|
||||
else
|
||||
{
|
||||
CCommon::DeleteModelessDialog(pPlayerDlg->m_pMediaLibDlg);
|
||||
int tab_index = cur_tab;
|
||||
if (tab_index < 0)
|
||||
tab_index = CPlayer::GetInstance().IsPlaylistMode() ? 1 : 0;
|
||||
pPlayerDlg->m_pMediaLibDlg = new CMediaLibDlg(tab_index);
|
||||
pPlayerDlg->m_pMediaLibDlg->Create(IDD_MEDIA_LIB_DIALOG/*, GetDesktopWindow()*/);
|
||||
pPlayerDlg->m_pMediaLibDlg->ShowWindow(SW_SHOW);
|
||||
}
|
||||
}
|
||||
|
||||
bool CMusicPlayerCmdHelper::AddToPlaylist(const std::vector<SongInfo>& songs, const std::wstring& playlist_path)
|
||||
{
|
||||
if (CPlayer::GetInstance().IsPlaylistMode() && playlist_path == CPlayer::GetInstance().GetPlaylistPath())
|
||||
|
||||
@@ -38,6 +38,18 @@ public:
|
||||
|
||||
static bool Rename(SongInfo& song, const wstring& new_name);
|
||||
|
||||
enum eMediaLibTab
|
||||
{
|
||||
ML_FOLDER = 0,
|
||||
ML_PLAYLIST = 1,
|
||||
ML_ARTIST = 2,
|
||||
ML_ALBUM = 3
|
||||
};
|
||||
|
||||
//显示媒体库对话框
|
||||
//cur_tab:打开对话框后要切换的标签
|
||||
void ShowMediaLib(int cur_tab = -1);
|
||||
|
||||
protected:
|
||||
bool AddToPlaylist(const std::vector<SongInfo>& songs, const std::wstring& playlist_path);
|
||||
|
||||
|
||||
@@ -272,6 +272,8 @@ BEGIN_MESSAGE_MAP(CMusicPlayerDlg, CMainDialogBase)
|
||||
ON_COMMAND(ID_SWITCH_UI_2, &CMusicPlayerDlg::OnSwitchUi2)
|
||||
ON_COMMAND(ID_SWITCH_UI_LYRICS_FULL_SCREEN, &CMusicPlayerDlg::OnSwitchUiLyricsFullScreen)
|
||||
ON_COMMAND(ID_SHOW_LYRIC_TRANSLATE, &CMusicPlayerDlg::OnShowLyricTranslate)
|
||||
ON_COMMAND(ID_VIEW_ARTIST, &CMusicPlayerDlg::OnViewArtist)
|
||||
ON_COMMAND(ID_VIEW_ALBUM, &CMusicPlayerDlg::OnViewAlbum)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
@@ -2215,20 +2217,8 @@ void CMusicPlayerDlg::OnSetPath()
|
||||
// //IniPlaylistPopupMenu();
|
||||
//}
|
||||
|
||||
if (m_pMediaLibDlg != nullptr && IsWindow(m_pMediaLibDlg->m_hWnd)) //如果媒体库对话框已经存在,则将其激活
|
||||
{
|
||||
m_pMediaLibDlg->ShowWindow(SW_SHOWNORMAL);
|
||||
m_pMediaLibDlg->SetForegroundWindow();
|
||||
}
|
||||
else
|
||||
{
|
||||
CCommon::DeleteModelessDialog(m_pMediaLibDlg);
|
||||
int cur_tab{ CPlayer::GetInstance().IsPlaylistMode() ? 1 : 0 };
|
||||
m_pMediaLibDlg = new CMediaLibDlg(cur_tab);
|
||||
m_pMediaLibDlg->Create(IDD_MEDIA_LIB_DIALOG/*, GetDesktopWindow()*/);
|
||||
m_pMediaLibDlg->ShowWindow(SW_SHOW);
|
||||
}
|
||||
|
||||
CMusicPlayerCmdHelper helper;
|
||||
helper.ShowMediaLib();
|
||||
}
|
||||
|
||||
|
||||
@@ -5383,3 +5373,29 @@ void CMusicPlayerDlg::OnShowLyricTranslate()
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
theApp.m_ui_data.show_translate = !theApp.m_ui_data.show_translate;
|
||||
}
|
||||
|
||||
|
||||
void CMusicPlayerDlg::OnViewArtist()
|
||||
{
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
CMusicPlayerCmdHelper helper;
|
||||
wstring artist = CPlayer::GetInstance().GetCurrentSongInfo().GetArtist();
|
||||
helper.ShowMediaLib(CMusicPlayerCmdHelper::ML_ARTIST);
|
||||
if (!m_pMediaLibDlg->NavigateToItem(artist))
|
||||
{
|
||||
MessageBox(CCommon::LoadTextFormat(IDS_CONNOT_FIND_ARTIST_WARNING, { artist }), NULL, MB_OK | MB_ICONWARNING);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CMusicPlayerDlg::OnViewAlbum()
|
||||
{
|
||||
// TODO: 在此添加命令处理程序代码
|
||||
CMusicPlayerCmdHelper helper;
|
||||
wstring album = CPlayer::GetInstance().GetCurrentSongInfo().GetAlbum();
|
||||
helper.ShowMediaLib(CMusicPlayerCmdHelper::ML_ALBUM);
|
||||
if (!m_pMediaLibDlg->NavigateToItem(album))
|
||||
{
|
||||
MessageBox(CCommon::LoadTextFormat(IDS_CONNOT_FIND_ALBUM_WARNING, { album }), NULL, MB_OK | MB_ICONWARNING);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -463,4 +463,6 @@ public:
|
||||
afx_msg void OnSwitchUi2();
|
||||
afx_msg void OnSwitchUiLyricsFullScreen();
|
||||
afx_msg void OnShowLyricTranslate();
|
||||
afx_msg void OnViewArtist();
|
||||
afx_msg void OnViewAlbum();
|
||||
};
|
||||
|
||||
@@ -95,19 +95,22 @@ BOOL CPropertyDlg::OnInitDialog()
|
||||
//创建子对话框
|
||||
m_property_dlg.Create(IDD_PROPERTY_DIALOG);
|
||||
m_album_cover_dlg.Create(IDD_PROPERTY_ALBUM_COVER_DIALOG);
|
||||
m_advanced_dlg.Create(IDD_PROPERTY_ADVANCED_DIALOG);
|
||||
if (!m_batch_edit) //批量编辑时不添加“高级标签信息”标签
|
||||
m_advanced_dlg.Create(IDD_PROPERTY_ADVANCED_DIALOG);
|
||||
|
||||
//添加对话框
|
||||
m_tab_ctrl.AddWindow(&m_property_dlg, CCommon::LoadText(IDS_FILE_PROPERTY));
|
||||
m_tab_ctrl.AddWindow(&m_album_cover_dlg, CCommon::LoadText(IDS_ALBUM_COVER));
|
||||
m_tab_ctrl.AddWindow(&m_advanced_dlg, CCommon::LoadText(IDS_ADVANCED_PROPERTY));
|
||||
if (!m_batch_edit)
|
||||
m_tab_ctrl.AddWindow(&m_advanced_dlg, CCommon::LoadText(IDS_ADVANCED_PROPERTY));
|
||||
|
||||
//为每个标签添加图标
|
||||
CImageList ImageList;
|
||||
ImageList.Create(theApp.DPI(16), theApp.DPI(16), ILC_COLOR32 | ILC_MASK, 2, 2);
|
||||
ImageList.Add(theApp.m_icon_set.file_relate);
|
||||
ImageList.Add(theApp.m_icon_set.album_cover);
|
||||
ImageList.Add(theApp.m_icon_set.tag);
|
||||
if (!m_batch_edit)
|
||||
ImageList.Add(theApp.m_icon_set.tag);
|
||||
m_tab_ctrl.SetImageList(&ImageList);
|
||||
ImageList.Detach();
|
||||
|
||||
@@ -115,7 +118,8 @@ BOOL CPropertyDlg::OnInitDialog()
|
||||
m_tab_ctrl.AdjustTabWindowSize();
|
||||
|
||||
m_album_cover_dlg.AdjustColumnWidth();
|
||||
m_advanced_dlg.AdjustColumnWidth();
|
||||
if (!m_batch_edit)
|
||||
m_advanced_dlg.AdjustColumnWidth();
|
||||
|
||||
m_tab_ctrl.SetCurTab(m_tab_index);
|
||||
|
||||
|
||||
@@ -645,6 +645,8 @@
|
||||
#define IDS_RENAME_INFO 520
|
||||
#define IDS_PLAY_TRACK 521
|
||||
#define IDS_ADVANCED_PROPERTY 522
|
||||
#define IDS_CONNOT_FIND_ARTIST_WARNING 523
|
||||
#define IDS_CONNOT_FIND_ALBUM_WARNING 524
|
||||
#define IDC_STATIC_PATH 1001
|
||||
#define IDC_LIST1 1002
|
||||
#define IDC_PATH_LIST 1002
|
||||
@@ -1406,13 +1408,16 @@
|
||||
#define ID_1_33216 33216
|
||||
#define ID_1_33217 33217
|
||||
#define ID_COPY_ALL_TEXT 33218
|
||||
#define ID_VIEW_ARTIST 33219
|
||||
#define ID_33220 33220
|
||||
#define ID_VIEW_ALBUM 33221
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 505
|
||||
#define _APS_NEXT_COMMAND_VALUE 33219
|
||||
#define _APS_NEXT_COMMAND_VALUE 33222
|
||||
#define _APS_NEXT_CONTROL_VALUE 1185
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user