コード例 #1
0
ファイル: MenuManager.cpp プロジェクト: KurzedMetal/Jaangle
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;
}