📄 playlistdlg.cpp
字号:
if( g_bSmallScreen && g_AygshellHelper.Loaded() )
{
SHINITDLGINFO shidi;
shidi.dwMask = SHIDIM_FLAGS;
shidi.dwFlags = SHIDIF_SIZEDLGFULLSCREEN | SHIDIF_SIPDOWN | SHIDIF_DONEBUTTON;
shidi.hDlg = m_hwndDlg;
g_AygshellHelper.SHInitDialog( &shidi );
}
break;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
case IDCANCEL:
{
CPlaylist * pPlaylist = NULL;
if (m_pPlaylist)
{
pPlaylist = m_pPlaylist;
}
else if (m_bOrganizeFavorites && pManager)
{
pPlaylist = pManager->GetFavorites();
}
if (pPlaylist) pPlaylist->Save();
EndDialog(m_hwndDlg, 0);
}
return TRUE;
case ID_ADD_TRACKS:
{
CPlaylist * pPlaylist = NULL;
if (NULL != m_pPlaylist)
{
pPlaylist = m_pPlaylist;
}
else if (m_bOrganizeFavorites && pManager)
{
pPlaylist = pManager->GetFavorites();
}
// Don't handle this message if the playlist is invalid.
if (NULL != pPlaylist)
{
CAddTracksDialog addTracks(m_hwndDlg, pPlaylist);
addTracks.DoModal();
fHandled = TRUE;
}
UpdateInfo();
}
break;
case ID_DELETE_TRACKS:
{
CPlaylist * pPlaylist = NULL;
int iCount = (int)ListView_GetSelectedCount(m_hwndTrackList);
int iIndex = (int)ListView_GetNextItem(m_hwndTrackList, -1,
LVNI_SELECTED);
if (1 == iCount && iIndex >= 0)
{
if (NULL != m_pPlaylist)
{
pPlaylist = m_pPlaylist;
}
else if (m_bOrganizeFavorites && pManager)
{
pPlaylist = pManager->GetFavorites();
}
else if (pManager)
{
int cmd;
TCHAR szCaption[MAX_PATH];
TCHAR szTemp[MAX_PATH];
pPlaylist = pManager->LocalContent();
LoadString(g_hInst, IDS_APP_TITLE, szCaption, MAX_PATH);
LoadString(g_hInst, IDS_DELETE_TRACK, szTemp, MAX_PATH);
cmd = MessageBox(m_hwndDlg, szTemp, szCaption, MB_YESNO | MB_ICONEXCLAMATION);
if (IDYES == cmd)
{
CMediaClip * pClip = pPlaylist->GetTrack(iIndex);
if (NULL != pClip)
{
_tcsncpy(szTemp, pClip->GetPath(), MAX_PATH);
if (DeleteFile(szTemp))
{
pPlaylist->DeleteTrack(iIndex);
UpdateInfo();
}
else
{
DWORD dwError = GetLastError();
LoadString(g_hInst, IDS_APP_TITLE, szCaption, MAX_PATH);
LoadString(g_hInst, IDS_DELETE_FAIL, szTemp, MAX_PATH);
MessageBox(m_hwndDlg, szTemp, szCaption, MB_OK | MB_ICONWARNING);
}
if (iIndex >= (int)pPlaylist->GetCount())
{
iIndex = (int)pPlaylist->GetCount() - 1;
}
if (iIndex >= 0)
{
ListView_SetItemState(m_hwndTrackList, iIndex, LVIS_SELECTED, LVIS_SELECTED);
ListView_EnsureVisible(m_hwndTrackList, iIndex, FALSE);
}
}
}
pPlaylist = NULL;
}
if (NULL != pPlaylist)
{
// we need to stop this track if it is
// currently playing
if (pPlaylist->IsPlaying(iIndex))
{
SendMessage(m_hwndParent, WM_COMMAND,
ID_PLAYLIST_NEXT, (LPARAM)pPlaylist);
}
pPlaylist->DeleteTrack(iIndex);
UpdateInfo();
if (iIndex >= (int)pPlaylist->GetCount())
{
iIndex = (int)pPlaylist->GetCount() - 1;
}
if (iIndex >= 0)
{
ListView_SetItemState(m_hwndTrackList, iIndex, LVIS_SELECTED, LVIS_SELECTED);
ListView_EnsureVisible(m_hwndTrackList, iIndex, FALSE);
}
}
}
fHandled = TRUE;
}
break;
case ID_REORDER_UP:
{
CPlaylist * pPlaylist = NULL;
int iCount = (int)ListView_GetSelectedCount(m_hwndTrackList);
int iIndex = ListView_GetNextItem(m_hwndTrackList, -1, LVNI_SELECTED);
if (NULL != m_pPlaylist)
{
pPlaylist = m_pPlaylist;
}
else if (m_bOrganizeFavorites && pManager)
{
pPlaylist = pManager->GetFavorites();
}
if (NULL != pPlaylist
&& iIndex > 0
&& pPlaylist->ShiftTrackUp(iIndex))
{
iIndex--;
UpdateInfo();
ListView_SetItemState(m_hwndTrackList, iIndex, LVIS_SELECTED, LVIS_SELECTED);
ListView_EnsureVisible(m_hwndTrackList, iIndex, FALSE);
}
fHandled = TRUE;
}
break;
case ID_REORDER_DOWN:
{
CPlaylist * pPlaylist = NULL;
int iCount = (int)ListView_GetSelectedCount(m_hwndTrackList);
int iIndex = ListView_GetNextItem(m_hwndTrackList, -1, LVNI_SELECTED);
if (NULL != m_pPlaylist)
{
pPlaylist = m_pPlaylist;
}
else if (m_bOrganizeFavorites && pManager)
{
pPlaylist = pManager->GetFavorites();
}
if (NULL != pPlaylist
&& iIndex >= 0
&& iIndex < (int)pPlaylist->GetCount() - 1
&& pPlaylist->ShiftTrackDown(iIndex))
{
iIndex++;
UpdateInfo();
ListView_SetItemState(m_hwndTrackList, iIndex, LVIS_SELECTED, LVIS_SELECTED);
ListView_EnsureVisible(m_hwndTrackList, iIndex, FALSE);
}
fHandled = TRUE;
}
break;
case ID_PLAY_SONG:
// play the currently selected track
if (1 == ListView_GetSelectedCount(m_hwndTrackList))
{
CPlaylist * pPlaylist = NULL;
int iIndex = ListView_GetNextItem(m_hwndTrackList, -1, LVNI_SELECTED);
if (NULL != m_pPlaylist)
{
pPlaylist = m_pPlaylist;
}
else if (m_bOrganizeFavorites && pManager)
{
pPlaylist = pManager->GetFavorites();
}
else if (pManager)
{
pPlaylist = pManager->LocalContent();
}
if (pPlaylist)
{
pPlaylist->CurrentTrackDonePlaying();
if (-1 != iIndex)
{
pPlaylist->SetCurrent(iIndex);
}
SendMessage(m_hwndParent, WM_COMMAND, ID_PLAY_SONG, (LPARAM)pPlaylist);
}
EndDialog(m_hwndDlg, 0);
}
else if (0 == ListView_GetSelectedCount(m_hwndTrackList))
{
CPlaylist * pPlaylist = NULL;
if (NULL != m_pPlaylist)
{
pPlaylist = m_pPlaylist;
}
else if (m_bOrganizeFavorites && pManager)
{
pPlaylist = pManager->GetFavorites();
}
else if (pManager)
{
pPlaylist = pManager->LocalContent();
}
if (pPlaylist)
{
if (0 == pPlaylist->GetCount())
{
TCHAR szViewContent[MAX_PATH];
TCHAR szEmpty[MAX_PATH];
int iRet = LoadString(g_hInst,
IDS_VIEW_LOCAL_CONTENT,
szViewContent, MAX_PATH);
ASSERT(iRet);
iRet = LoadString(g_hInst,
IDS_PLAYLIST_EMPTY,
szEmpty, MAX_PATH);
ASSERT(iRet);
iRet = MessageBox(m_hwndDlg, szViewContent,
szEmpty, MB_YESNO | MB_ICONQUESTION);
ASSERT(iRet);
if (IDYES == iRet)
{
CAddTracksDialog addTracks(m_hwndDlg, pPlaylist);
addTracks.DoModal();
UpdateInfo();
}
break;
}
if (-1 == pPlaylist->GetCurrent())
{
pPlaylist->SetCurrent(0);
}
SendMessage(m_hwndParent, WM_COMMAND, ID_PLAY_SONG, (LPARAM)pPlaylist);
}
EndDialog(m_hwndDlg, 0);
}
fHandled = TRUE;
break;
case ID_TRACK_INFO:
if (1 == ListView_GetSelectedCount(m_hwndTrackList))
{
CPlaylist * pPlaylist;
int iIndex = ListView_GetNextItem(m_hwndTrackList, -1, LVNI_SELECTED);
if (NULL != m_pPlaylist)
{
pPlaylist = m_pPlaylist;
}
else if (m_bOrganizeFavorites && pManager)
{
pPlaylist = pManager->GetFavorites();
}
else if (pManager)
{
pPlaylist = pManager->LocalContent();
}
if (-1 != iIndex && NULL != pPlaylist)
{
CMediaClip * pClip = pPlaylist->GetTrack(iIndex);
if (NULL != pClip)
{
g_pPlayerWindow->UpdatePropertyDlg(pClip->GetPath());
}
}
}
fHandled = TRUE;
break;
case IDC_PLAYLIST_DROPDOWN:
fHandled = TRUE;
break;
case ID_ALL_MUSIC:
m_bOrganizeFavorites = false;
if (m_pPlaylist)
{
m_pPlaylist->Save();
m_pPlaylist = NULL;
}
SetDropdownText(TEXT("Local Content"), I_ALL_MY_MUSIC);
UpdateInfo();
fHandled = TRUE;
break;
case ID_FAVORITES:
m_bOrganizeFavorites = true;
if (m_pPlaylist)
{
m_pPlaylist->Save();
m_pPlaylist = NULL;
}
SetDropdownText(TEXT("Favorites"), I_ALL_MY_MUSIC);
UpdateInfo();
fHandled = TRUE;
break;
case ID_ALL_PLAYLISTS:
m_bOrganizeFavorites = false;
if (m_pPlaylist) m_pPlaylist->Save();
if (TRUE)
{
CAddDeleteDialog addDeleteDlg(m_hwndDlg, m_hwndParent);
addDeleteDlg.DoModal();
}
if (pManager)
{
m_pPlaylist = pManager->CurrentPlaylist();
}
else
{
m_pPlaylist = NULL;
}
if (NULL != m_pPlaylist)
{
if (false == m_pPlaylist->Load())
{
if (true == m_pPlaylist->IsCEPlaylist()
&& -1 == m_pPlaylist->GetCurrent())
{
// this playlist is empty (add tracks!)
SendMessage(m_hwndDlg, WM_COMMAND, ID_ADD_TRACKS, 0);
}
else
{
m_pPlaylist = NULL;
}
}
if (NULL != m_pPlaylist
&& false == m_pPlaylist->IsCEPlaylist())
{
// this isn't a CEPlayer generated playlist
OutputDebugString(TEXT("ERROR: this isn't a CEPlaylist"));
}
//
// If we've played this playlist before, resume playing
//
if (-1 != m_pPlaylist->GetCurrent())
{
SendMessage(m_hwndParent, WM_COMMAND, ID_PLAY_SONG, (LPARAM)m_pPlaylist);
}
}
UpdateInfo();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -