⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 playlistdlg.cpp

📁 media player 控件源码 用EVC编译可以进行对WINCE下media player控制
💻 CPP
📖 第 1 页 / 共 4 页
字号:
            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 + -