/*---------------------------------------------------------------------- | PLT_MicroMediaController::HandleCmd_seek +---------------------------------------------------------------------*/ void PLT_MicroMediaController::HandleCmd_seek(const char* command) { PLT_DeviceDataReference device; GetCurMediaRenderer(device); if (!device.IsNull()) { // remove first part of command ("seek") NPT_String target = command; NPT_List<NPT_String> args = target.Split(" "); if (args.GetItemCount() < 2) return; args.Erase(args.GetFirstItem()); target = NPT_String::Join(args, " "); Seek(device, 0, (target.Find(":")!=-1)?"REL_TIME":"X_DLNA_REL_BYTE", target, 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; } }