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; }