/*---------------------------------------------------------------------- | PLT_MicroMediaController::HandleCmd_info +---------------------------------------------------------------------*/ void PLT_MicroMediaController::HandleCmd_info() { NPT_String object_id; PLT_StringMap tracks; PLT_DeviceDataReference device; // issue a browse DoBrowse(); if (!m_MostRecentBrowseResults.IsNull()) { // create a map item id -> item title NPT_List<PLT_MediaObject*>::Iterator item = m_MostRecentBrowseResults->GetFirstItem(); while (item) { if (!(*item)->IsContainer()) { tracks.Put((*item)->m_ObjectID, (*item)->m_Title); } ++item; } // let the user choose which one object_id = ChooseIDFromTable(tracks); if (object_id.GetLength()) { // issue a browse with metadata DoBrowse(object_id, true); // look back for the PLT_MediaItem in the results PLT_MediaObject* track = NULL; if (!m_MostRecentBrowseResults.IsNull() && NPT_SUCCEEDED(NPT_ContainerFind(*m_MostRecentBrowseResults, PLT_MediaItemIDFinder(object_id), track))) { // display info printf("Title: %s \n", track->m_Title.GetChars()); printf("OjbectID: %s\n", track->m_ObjectID.GetChars()); printf("Class: %s\n", track->m_ObjectClass.type.GetChars()); printf("Creator: %s\n", track->m_Creator.GetChars()); printf("Date: %s\n", track->m_Date.GetChars()); for (NPT_List<PLT_AlbumArtInfo>::Iterator iter = track->m_ExtraInfo.album_arts.GetFirstItem(); iter; iter++) { printf("Art Uri: %s\n", (*iter).uri.GetChars()); printf("Art Uri DLNA Profile: %s\n", (*iter).dlna_profile.GetChars()); } for (NPT_Cardinal i=0;i<track->m_Resources.GetItemCount(); i++) { printf("\tResource[%d].uri: %s\n", i, track->m_Resources[i].m_Uri.GetChars()); printf("\tResource[%d].profile: %s\n", i, track->m_Resources[i].m_ProtocolInfo.ToString().GetChars()); printf("\tResource[%d].duration: %d\n", i, track->m_Resources[i].m_Duration); printf("\tResource[%d].size: %d\n", i, (int)track->m_Resources[i].m_Size); printf("\n"); } printf("Didl: %s\n", (const char*)track->m_Didl); } else { printf("Couldn't find the track\n"); } } m_MostRecentBrowseResults = NULL; } }
/*---------------------------------------------------------------------- | PLT_MicroMediaController::HandleCmd_open +---------------------------------------------------------------------*/ void PLT_MicroMediaController::HandleCmd_open() { NPT_String object_id; PLT_StringMap tracks; PLT_DeviceDataReference device; GetCurMediaRenderer(device); if (!device.IsNull()) { // get the protocol info to try to see in advance if a track would play on the device // issue a browse DoBrowse(); if (!m_MostRecentBrowseResults.IsNull()) { // create a map item id -> item title NPT_List<PLT_MediaObject*>::Iterator item = m_MostRecentBrowseResults->GetFirstItem(); while (item) { if (!(*item)->IsContainer()) { tracks.Put((*item)->m_ObjectID, (*item)->m_Title); } ++item; } // let the user choose which one object_id = ChooseIDFromTable(tracks); if (object_id.GetLength()) { // look back for the PLT_MediaItem in the results PLT_MediaObject* track = NULL; if (NPT_SUCCEEDED(NPT_ContainerFind(*m_MostRecentBrowseResults, PLT_MediaItemIDFinder(object_id), track))) { if (track->m_Resources.GetItemCount() > 0) { // look for best resource to use by matching each resource to a sink advertised by renderer NPT_Cardinal resource_index = 0; if (NPT_FAILED(FindBestResource(device, *track, resource_index))) { printf("No matching resource\n"); return; } // invoke the setUri printf("Issuing SetAVTransportURI with url=%s & didl=%s", (const char*)track->m_Resources[resource_index].m_Uri, (const char*)track->m_Didl); SetAVTransportURI(device, 0, track->m_Resources[resource_index].m_Uri, track->m_Didl, NULL); } else { printf("Couldn't find the proper resource\n"); } } else { printf("Couldn't find the track\n"); } } m_MostRecentBrowseResults = NULL; } } }
/*---------------------------------------------------------------------- | PLT_MicroMediaController::HandleCmd_ls +---------------------------------------------------------------------*/ void PLT_MicroMediaController::HandleCmd_ls() { DoBrowse(); if (!m_MostRecentBrowseResults.IsNull()) { printf("There were %d results\n", m_MostRecentBrowseResults->GetItemCount()); NPT_List<PLT_MediaObject*>::Iterator item = m_MostRecentBrowseResults->GetFirstItem(); while (item) { if ((*item)->IsContainer()) { printf("Container: %s (%s)\n", (*item)->m_Title.GetChars(), (*item)->m_ObjectID.GetChars()); } else { printf("Item: %s (%s)\n", (*item)->m_Title.GetChars(), (*item)->m_ObjectID.GetChars()); } ++item; } m_MostRecentBrowseResults = NULL; } }
/*---------------------------------------------------------------------- | PLT_MicroMediaController::HandleCmd_cd +---------------------------------------------------------------------*/ void PLT_MicroMediaController::HandleCmd_cd(const char* command) { NPT_String newobject_id; PLT_StringMap containers; // if command has parameter, push it to stack and return NPT_String id = command; NPT_List<NPT_String> args = id.Split(" "); if (args.GetItemCount() >= 2) { args.Erase(args.GetFirstItem()); id = NPT_String::Join(args, " "); m_CurBrowseDirectoryStack.Push(id); return; } // list current directory to let user choose DoBrowse(); if (!m_MostRecentBrowseResults.IsNull()) { NPT_List<PLT_MediaObject*>::Iterator item = m_MostRecentBrowseResults->GetFirstItem(); while (item) { if ((*item)->IsContainer()) { containers.Put((*item)->m_ObjectID, (*item)->m_Title); } ++item; } newobject_id = ChooseIDFromTable(containers); if (newobject_id.GetLength()) { m_CurBrowseDirectoryStack.Push(newobject_id); } m_MostRecentBrowseResults = NULL; } }
void COPTBuild::OnBrowseCSG(void) { DoBrowse(&m_cCSG); }
void COPTBuild::OnBrowseBsp() { DoBrowse(&m_cBSP); }
void COPTBuild::OnBrowseVis() { DoBrowse(&m_cVIS); }
void COPTBuild::OnBrowseLight() { DoBrowse(&m_cLIGHT); }
void COPTBuild::OnBrowseGame() { DoBrowse(&m_cGame); }