protected void retrieveList(String _containerId, String _parentListId = "", Boolean _useCache = true, MediaItem _parentMediaItem = null)
{
UPNPMediaListBrowse mediaList;
UPNPMediaListBrowse parentList = (UPNPMediaListBrowse)this.getList(_parentListId);
String listId = this.containerIdToListId(_containerId, mainContentType);
// try to get list from cache, we do not cache search results (isSearchListChild)!
if (_useCache)
{
mediaList = (UPNPMediaListBrowse)this.getList(listId);
if (mediaList != null && !mediaList.isSearchChild)
{
currentContainerId = _containerId;
currentListId = mediaList.listId;
this.eventListDataReady(mediaList.listId);
}
}
else
{
if (lists.ContainsKey(listId))
lists.Remove(listId);
}
string tempListPath = "";
if (!String.IsNullOrWhiteSpace(_parentListId))
tempListPath = parentList.path;
if (_parentMediaItem != null)
{
if (!String.IsNullOrEmpty(tempListPath))
tempListPath += "/";
tempListPath += _parentMediaItem.text;
}
// if there is no list in cache, then retrieve list
mediaList = (UPNPMediaListBrowse)this.createListObject(listId);
mediaList.listDataReady += listDataReadySink;
mediaList.parentListId = _parentListId;
mediaList.path = tempListPath;
if (parentList!=null)
mediaList.isSearchChild = parentList.isSearchChild;
lists.Add(mediaList.listId, mediaList);
mediaList.retrieveListByContainerId(_containerId);
}