bool CPlaylistOperations::FillFileItemList(const Value ¶meterObject, CFileItemList &list) { bool found = false; if (parameterObject["playlist"].isMember(PLAYLIST_MEMBER_FILE) && parameterObject["playlist"][PLAYLIST_MEMBER_FILE].isString()) { CStdString file = parameterObject["playlist"][PLAYLIST_MEMBER_FILE].asString(); CPlayListPtr playlist = CPlayListPtr(CPlayListFactory::Create(file)); if (playlist && playlist->Load(file)) { for (int i = 0; i < playlist->size(); i++) list.Add((*playlist)[i]); found = true; } } CSingleLock lock(VirtualCriticalSection); if (parameterObject["playlist"].isMember(PLAYLIST_MEMBER_VIRTUAL) && parameterObject["playlist"][PLAYLIST_MEMBER_VIRTUAL].isString()) { CStdString id = parameterObject["playlist"][PLAYLIST_MEMBER_VIRTUAL].asString(); CPlayListPtr playlist = VirtualPlaylists[id]; if (playlist) { for (int i = 0; i < playlist->size(); i++) list.Add((*playlist)[i]); found = true; } } return found; }
JSON_STATUS CPlaylistOperations::GetItems(const CStdString &method, ITransportLayer *transport, IClient *client, const Value ¶meterObject, Value &result) { CSingleLock lock(VirtualCriticalSection); CPlayListPtr playlist = GetPlaylist(parameterObject); if (playlist) { CFileItemList items; for (int i = 0; i < playlist->size(); i++) items.Add((*playlist)[i]); CStdString name = playlist->GetName(); if (!name.IsEmpty()) result["name"] = playlist->GetName(); HandleFileItemList(NULL, true, "items", items, parameterObject, result); return OK; } return InvalidParams; }