void CApplicationMessenger::PlayListPlayerInsert(int playlist, const CFileItemList &list, int index) { ThreadMessage tMsg = {TMSG_PLAYLISTPLAYER_INSERT}; CFileItemList* listcopy = new CFileItemList(); listcopy->Copy(list); tMsg.lpVoid = (void *)listcopy; tMsg.dwParam1 = playlist; tMsg.dwParam2 = index; SendMessage(tMsg, true); }
void CApplicationMessenger::MediaPlay(const CFileItemList &list, int song) { ThreadMessage tMsg = {TMSG_MEDIA_PLAY}; CFileItemList* listcopy = new CFileItemList(); listcopy->Copy(list); tMsg.lpVoid = (void*)listcopy; tMsg.dwParam1 = song; tMsg.dwParam2 = 1; SendMessage(tMsg, true); }
bool GetDirectory(CFileItemList& list) { /* if it was not finished or failed, return failure */ if(!m_result->m_event.WaitMSec(0) || !m_result->m_result) { list.Clear(); return false; } list.Copy(m_result->m_list); return true; }
bool CPluginDirectory::AddItems(int handle, const CFileItemList *items, int totalItems) { CSingleLock lock(m_handleLock); CPluginDirectory *dir = dirFromHandle(handle); if (!dir) return false; CFileItemList pItemList; pItemList.Copy(*items); dir->m_listItems->Append(pItemList); dir->m_totalItems = totalItems; return !dir->m_cancelled; }
bool CPluginDirectory::AddItems(int handle, const CFileItemList *items, int totalItems) { CSingleLock lock(m_handleLock); if (handle < 0 || handle >= (int)globalHandles.size()) { CLog::Log(LOGERROR, " %s - called with an invalid handle.", __FUNCTION__); return false; } CPluginDirectory *dir = globalHandles[handle]; CFileItemList pItemList; pItemList.Copy(*items); dir->m_listItems->Append(pItemList); dir->m_totalItems = totalItems; return !dir->m_cancelled; }
void CApplicationMessenger::PlayListPlayerAdd(int playlist, const CFileItemList &list) { /* 参数: 1、 返回: 1、 说明: 1、 */ ThreadMessage tMsg = {TMSG_PLAYLISTPLAYER_ADD}; CFileItemList* listcopy = new CFileItemList(); listcopy->Copy(list); tMsg.lpVoid = (void*)listcopy; tMsg.dwParam1 = playlist; SendMessage(tMsg, true); }
bool CDirectoryCache::GetDirectory(const CStdString& strPath, CFileItemList &items, bool retrieveAll) { CSingleLock lock (m_cs); CStdString storedPath = URIUtils::SubstitutePath(strPath); URIUtils::RemoveSlashAtEnd(storedPath); ciCache i = m_cache.find(storedPath); if (i != m_cache.end()) { CDir* dir = i->second; if (dir->m_cacheType == XFILE::DIR_CACHE_ALWAYS || (dir->m_cacheType == XFILE::DIR_CACHE_ONCE && retrieveAll)) { items.Copy(*dir->m_Items); dir->SetLastAccess(m_accessCounter); #ifdef _DEBUG m_cacheHits+=items.Size(); #endif return true; } } return false; }
void CFavouritesService::GetAll(CFileItemList& items) const { CSingleLock lock(m_criticalSection); items.Clear(); items.Copy(m_favourites); }
void CGUIDialogMediaFilter::OnBrowse(const Filter &filter, CFileItemList &items, bool countOnly /* = false */) { CFileItemList selectItems; if (m_mediaType == "movies" || m_mediaType == "tvshows" || m_mediaType == "episodes" || m_mediaType == "musicvideos") { CVideoDatabase videodb; if (!videodb.Open()) return; CSmartPlaylist tmpFilter = *m_filter; for (vector<CSmartPlaylistRule>::iterator rule = tmpFilter.m_ruleCombination.m_rules.begin(); rule != tmpFilter.m_ruleCombination.m_rules.end(); rule++) { if (rule->m_field == filter.field) { tmpFilter.m_ruleCombination.m_rules.erase(rule); break; } } std::set<CStdString> playlists; CDatabase::Filter dbfilter; dbfilter.where = tmpFilter.GetWhereClause(videodb, playlists); VIDEODB_CONTENT_TYPE type = VIDEODB_CONTENT_MOVIES; if (m_mediaType == "tvshows") type = VIDEODB_CONTENT_TVSHOWS; else if (m_mediaType == "episodes") type = VIDEODB_CONTENT_EPISODES; else if (m_mediaType == "musicvideos") type = VIDEODB_CONTENT_MUSICVIDEOS; if (filter.field == FieldGenre) videodb.GetGenresNav(m_dbUrl->ToString(), selectItems, type, dbfilter, countOnly); else if (filter.field == FieldActor || filter.field == FieldArtist) videodb.GetActorsNav(m_dbUrl->ToString(), selectItems, type, dbfilter, countOnly); else if (filter.field == FieldDirector) videodb.GetDirectorsNav(m_dbUrl->ToString(), selectItems, type, dbfilter, countOnly); else if (filter.field == FieldStudio) videodb.GetStudiosNav(m_dbUrl->ToString(), selectItems, type, dbfilter, countOnly); else if (filter.field == FieldAlbum) videodb.GetMusicVideoAlbumsNav(m_dbUrl->ToString(), selectItems, -1, dbfilter, countOnly); else if (filter.field == FieldTag) videodb.GetTagsNav(m_dbUrl->ToString(), selectItems, type, dbfilter, countOnly); } else if (m_mediaType == "artists" || m_mediaType == "albums" || m_mediaType == "songs") { CMusicDatabase musicdb; if (!musicdb.Open()) return; CSmartPlaylist tmpFilter = *m_filter; for (vector<CSmartPlaylistRule>::iterator rule = tmpFilter.m_ruleCombination.m_rules.begin(); rule != tmpFilter.m_ruleCombination.m_rules.end(); rule++) { if (rule->m_field == filter.field) { tmpFilter.m_ruleCombination.m_rules.erase(rule); break; } } std::set<CStdString> playlists; CDatabase::Filter dbfilter; dbfilter.where = tmpFilter.GetWhereClause(musicdb, playlists); if (filter.field == FieldGenre) musicdb.GetGenresNav(m_dbUrl->ToString(), selectItems, dbfilter, countOnly); else if (filter.field == FieldArtist) musicdb.GetArtistsNav(m_dbUrl->ToString(), selectItems, m_mediaType == "albums", -1, -1, -1, dbfilter, SortDescription(), countOnly); else if (filter.field == FieldAlbum) musicdb.GetAlbumsNav(m_dbUrl->ToString(), selectItems, -1, -1, dbfilter, SortDescription(), countOnly); else if (filter.field == FieldAlbumType) musicdb.GetAlbumTypesNav(m_dbUrl->ToString(), selectItems, dbfilter, countOnly); else if (filter.field == FieldMusicLabel) musicdb.GetMusicLabelsNav(m_dbUrl->ToString(), selectItems, dbfilter, countOnly); } if (selectItems.Size() <= 0) return; if (countOnly) { items.Copy(selectItems); return; } // sort the items selectItems.Sort(SORT_METHOD_LABEL, SortOrderAscending); CGUIDialogSelect* pDialog = (CGUIDialogSelect*)g_windowManager.GetWindow(WINDOW_DIALOG_SELECT); pDialog->Reset(); pDialog->SetItems(&selectItems); CStdString strHeading; strHeading.Format(g_localizeStrings.Get(13401), g_localizeStrings.Get(filter.label)); pDialog->SetHeading(strHeading); pDialog->SetMultiSelection(true); if (filter.rule != NULL && !filter.rule->m_parameter.empty()) pDialog->SetSelected(filter.rule->m_parameter); pDialog->DoModal(); if (pDialog->IsConfirmed()) items.Copy(pDialog->GetSelectedItems()); else items.Clear(); pDialog->Reset(); }
bool CRSSDirectory::GetDirectory(const CStdString& path, CFileItemList &items) { CStdString strPath(path); CUtil::RemoveSlashAtEnd(strPath); /* check cache */ if(m_path == strPath) { items.Copy(m_items); return true; } /* clear cache */ m_items.Clear(); m_path == ""; TiXmlDocument xmlDoc; if (!xmlDoc.LoadFile(strPath)) { CLog::Log(LOGERROR,"failed to load xml from <%s>. error: <%d>", strPath.c_str(), xmlDoc.ErrorId()); return false; } if (xmlDoc.Error()) { CLog::Log(LOGERROR,"error parsing xml doc from <%s>. error: <%d>", strPath.c_str(), xmlDoc.ErrorId()); return false; } TiXmlElement* rssXmlNode = xmlDoc.RootElement(); if (!rssXmlNode) return false; TiXmlHandle docHandle( &xmlDoc ); TiXmlElement* channelXmlNode = docHandle.FirstChild( "rss" ).FirstChild( "channel" ).Element(); if (channelXmlNode) ParseItem(&items, channelXmlNode); else return false; TiXmlElement* child = NULL; for (child = channelXmlNode->FirstChildElement("item"); child; child = child->NextSiblingElement()) { // Create new item, CFileItemPtr item(new CFileItem()); ParseItem(item.get(), child); item->SetProperty("isrss", "1"); if (!item->m_strPath.IsEmpty()) items.Add(item); } items.AddSortMethod(SORT_METHOD_UNSORTED , 231, LABEL_MASKS("%L", "%D", "%L", "")); // FileName, Duration | Foldername, empty items.AddSortMethod(SORT_METHOD_LABEL , 551, LABEL_MASKS("%L", "%D", "%L", "")); // FileName, Duration | Foldername, empty items.AddSortMethod(SORT_METHOD_SIZE , 553, LABEL_MASKS("%L", "%I", "%L", "%I")); // FileName, Size | Foldername, Size items.AddSortMethod(SORT_METHOD_DATE , 552, LABEL_MASKS("%L", "%J", "%L", "%J")); // FileName, Date | Foldername, Date m_items.Copy(items); m_path = strPath; return true; }