void MenuManager::PreparePlayerCommands(MediaPlayer& player) { ITSMenu& mnu = GetMenu(MNU_PlayListModes); INT mode = 0; MediaPlayerNextMode mpm = player.GetNextMode(&mode); for (int i = MPNM_Normal; i < MPNM_Last; i++) mnu.CheckMenuItem(MENU_PlayModesHolder + i, mpm == i ? MF_CHECKED : MF_UNCHECKED ); for (int i = RTM_All; i < RTM_Last; i++) mnu.CheckMenuItem(MENU_AutoContinueModeHolder + i, mode == i ? MF_CHECKED : MF_UNCHECKED ); }
LPCTSTR PlayListPane::GetTitle(UINT idx) { PrgAPI* pAPI = PRGAPI(); switch (idx % 5) { case 0: return pAPI->GetString(IDS_PLAYLIST); break;//=== Show the default (at the end) case 1: { MediaPlayer* pl = pAPI->GetMediaPlayer(); INT ACmode = 0; MediaPlayerNextMode mpm = pl->GetNextMode(&ACmode); if (mpm == MPNM_AutoContinue) { //INT mode = pAPI->GetOption(OPT_PL_AutoContinueMode); _sntprintf(m_stringBuffer, 500, _T("%s: %s [%s]"), pAPI->GetString(IDS_MODE), pAPI->GetStringForPlayListMode(mpm), pAPI->GetStringForRandomMode(RandomTrackModeEnum(ACmode))); } else _sntprintf(m_stringBuffer, 500, _T("%s: %s"), pAPI->GetString(IDS_MODE), pAPI->GetStringForPlayListMode(MediaPlayerNextMode(mpm))); } break; case 2: { MediaPlayer* pl = pAPI->GetMediaPlayer(); INT totalTracks = pl->GetPlayListCount(); _sntprintf(m_stringBuffer, 500, _T("%s: %d"), pAPI->GetString(IDS_TRACKS), totalTracks); } break; case 3: { MediaPlayer* pl = pAPI->GetMediaPlayer(); INT totalTracks = pl->GetPlayListCount(); INT totalSeconds = 0; MediaPlayListItem mpli; BOOL bHasZeroLength = FALSE; for (INT i = 0; i < totalTracks; i++) { if (pl->GetPlayListItem(mpli, i)) { if (mpli.length == 0) bHasZeroLength = TRUE; totalSeconds += mpli.length; } } TCHAR time[40]; if (totalSeconds >= 3600) _sntprintf(time, 40, _T("%d:%02d:%02d"), INT (totalSeconds / 3600), INT((totalSeconds % 3600)/60), INT(totalSeconds) % 60); else _sntprintf(time, 40, _T("%d:%02d"), INT (totalSeconds / 60), INT(totalSeconds) % 60); _sntprintf(m_stringBuffer, 500, _T("%s: %s%s"), pAPI->GetString(IDS_DURATION), time, bHasZeroLength ? _T(" +") : _T("")); } break; case 4: _sntprintf(m_stringBuffer, 500, _T("%s: [F4]"), pAPI->GetString(IDS_FOCUS)); break; default: ASSERT(0); return NULL; } return m_stringBuffer; }
BOOL MenuManager::HandlePlayerCommands(MediaPlayer& player, MenuCommandsEnum cmd, INT playlistPos) { TRACEST(_T("MenuManager::HandlePlayerCommands")); PrgAPI* pAPI = PRGAPI(); ActionManager* pAM = pAPI->GetActionManager(); switch (cmd) { //=== Play Control ========================================= case MENU_PlayControl: player.Start(); break; case MENU_PauseControl: if (player.GetPlayState() == PS_Paused) player.Start(); else player.Pause(); break; case MENU_StopControl: player.Stop(); break; case MENU_NextControl: player.Next(); break; case MENU_PrevControl: player.Previous(); break; //=== Playlist Serialization ========================================= case MENU_LoadList: pAM->InsertPlayList(&player, -1); break; case MENU_SaveList: pAM->SavePlayList(&player); break; case MENU_InsertList: pAM->InsertPlayList(&player, playlistPos); break; default: //=== PlayModes ========================================= if (cmd>= MENU_PlayModesHolder && cmd < MENU_PlayModesHolder + MPNM_Last) player.SetNextMode(MediaPlayerNextMode(cmd - MENU_PlayModesHolder), -1); else if (cmd >= MENU_AutoContinueModeHolder && cmd < MENU_AutoContinueModeHolder + RTM_Last) { player.SetNextMode(player.GetNextMode(NULL), cmd - MENU_AutoContinueModeHolder); } //=== Rating ========================================= else if (cmd>= MENU_RatingHolder && cmd <= MENU_RatingHolder + 5) { int idx = playlistPos; if (idx >= 0) { SQLManager* pSM = PRGAPI()->GetSQLManager(); MediaPlayListItem mpli; if (player.GetPlayListItem(mpli, idx)) { FullTrackRecordSP rec; if (pSM->GetFullTrackRecordByLocation(rec, mpli.url)) { FullTrackRecordCollection col; col.push_back(rec); ActionManager* pAM = PRGAPI()->GetActionManager(); pAM->SetTrackRating(col, Stars2Rating((FLOAT)(cmd - MENU_RatingHolder))); } } } } else return FALSE; } return TRUE; }