本文整理汇总了C++中CFileItemList::FilterCueItems方法的典型用法代码示例。如果您正苦于以下问题:C++ CFileItemList::FilterCueItems方法的具体用法?C++ CFileItemList::FilterCueItems怎么用?C++ CFileItemList::FilterCueItems使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CFileItemList
的用法示例。
在下文中一共展示了CFileItemList::FilterCueItems方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetDirectory
bool CGUIWindowMusicPlaylistEditor::GetDirectory(const std::string &strDirectory, CFileItemList &items)
{
items.Clear();
if (strDirectory.empty())
{ // root listing - list files:// and musicdb://
CFileItemPtr files(new CFileItem("files://", true));
files->SetLabel(g_localizeStrings.Get(744));
files->SetLabelPreformated(true);
files->m_bIsShareOrDrive = true;
items.Add(files);
CFileItemPtr db(new CFileItem("musicdb://", true));
db->SetLabel(g_localizeStrings.Get(14022));
db->SetLabelPreformated(true);
db->m_bIsShareOrDrive = true;
items.SetPath("");
items.Add(db);
return true;
}
if (!CGUIWindowMusicBase::GetDirectory(strDirectory, items))
return false;
// check for .CUE files here.
items.FilterCueItems();
return true;
}
示例2: GetDirectory
bool CGUIWindowMusicSongs::GetDirectory(const CStdString &strDirectory, CFileItemList &items)
{
if (!CGUIWindowMusicBase::GetDirectory(strDirectory, items))
return false;
// check for .CUE files here.
items.FilterCueItems();
return true;
}
示例3: GetDirectory
bool CGUIWindowJukeboxSongs::GetDirectory(const CStdString &strDirectory, CFileItemList &items) {
if (!CGUIWindowJukeboxBase::GetDirectory(strDirectory, items))
return false;
// check for .CUE files here.
items.FilterCueItems();
CStdString label;
if (items.GetLabel().IsEmpty() && m_rootDir.IsSource(items.GetPath(), g_settings.GetSourcesFromType("music"), &label))
items.SetLabel(label);
return true;
}
示例4: GetDirectory
bool CGUIWindowMusicSongs::GetDirectory(const CStdString &strDirectory, CFileItemList &items)
{
if (!CGUIWindowMusicBase::GetDirectory(strDirectory, items))
return false;
// check for .CUE files here.
items.FilterCueItems();
CStdString label;
if (items.GetLabel().empty() && m_rootDir.IsSource(items.GetPath(), CMediaSourceSettings::Get().GetSources("music"), &label))
items.SetLabel(label);
return true;
}
示例5: DoScan
bool CMusicInfoScanner::DoScan(const CStdString& strDirectory)
{
if (m_handle)
m_handle->SetText(Prettify(strDirectory));
/*
* remove this path from the list we're processing. This must be done prior to
* the check for file or folder exclusion to prevent an infinite while loop
* in Process().
*/
set<CStdString>::iterator it = m_pathsToScan.find(strDirectory);
if (it != m_pathsToScan.end())
m_pathsToScan.erase(it);
// Discard all excluded files defined by m_musicExcludeRegExps
CStdStringArray regexps = g_advancedSettings.m_audioExcludeFromScanRegExps;
if (CUtil::ExcludeFileOrFolder(strDirectory, regexps))
return true;
// load subfolder
CFileItemList items;
CDirectory::GetDirectory(strDirectory, items, g_settings.m_musicExtensions + "|.jpg|.tbn|.lrc|.cdg");
// sort and get the path hash. Note that we don't filter .cue sheet items here as we want
// to detect changes in the .cue sheet as well. The .cue sheet items only need filtering
// if we have a changed hash.
items.Sort(SORT_METHOD_LABEL, SortOrderAscending);
CStdString hash;
GetPathHash(items, hash);
// check whether we need to rescan or not
CStdString dbHash;
if ((m_flags & SCAN_RESCAN) || !m_musicDatabase.GetPathHash(strDirectory, dbHash) || dbHash != hash)
{ // path has changed - rescan
if (dbHash.IsEmpty())
CLog::Log(LOGDEBUG, "%s Scanning dir '%s' as not in the database", __FUNCTION__, strDirectory.c_str());
else
CLog::Log(LOGDEBUG, "%s Rescanning dir '%s' due to change", __FUNCTION__, strDirectory.c_str());
// filter items in the sub dir (for .cue sheet support)
items.FilterCueItems();
items.Sort(SORT_METHOD_LABEL, SortOrderAscending);
// and then scan in the new information
if (RetrieveMusicInfo(items, strDirectory) > 0)
{
if (m_handle)
OnDirectoryScanned(strDirectory);
}
// save information about this folder
m_musicDatabase.SetPathHash(strDirectory, hash);
}
else
{ // path is the same - no need to rescan
CLog::Log(LOGDEBUG, "%s Skipping dir '%s' due to no change", __FUNCTION__, strDirectory.c_str());
m_currentItem += CountFiles(items, false); // false for non-recursive
// updated the dialog with our progress
if (m_handle)
{
if (m_itemCount>0)
m_handle->SetPercentage(m_currentItem/(float)m_itemCount*100);
OnDirectoryScanned(strDirectory);
}
}
// now scan the subfolders
for (int i = 0; i < items.Size(); ++i)
{
CFileItemPtr pItem = items[i];
if (m_bStop)
break;
// if we have a directory item (non-playlist) we then recurse into that folder
if (pItem->m_bIsFolder && !pItem->IsParentFolder() && !pItem->IsPlayList())
{
CStdString strPath=pItem->GetPath();
if (!DoScan(strPath))
{
m_bStop = true;
}
}
}
return !m_bStop;
}
示例6: GetDirectory
bool CGUIWindowMusicBase::GetDirectory(const std::string &strDirectory, CFileItemList &items)
{
items.ClearArt();
bool bResult = CGUIMediaWindow::GetDirectory(strDirectory, items);
if (bResult)
{
CMusicThumbLoader loader;
loader.FillThumb(items);
CQueryParams params;
CDirectoryNode::GetDatabaseInfo(items.GetPath(), params);
if (params.GetAlbumId() > 0)
{
std::map<std::string, std::string> artistArt;
if (m_musicdatabase.GetArtistArtForItem(params.GetAlbumId(), MediaTypeAlbum, artistArt))
items.AppendArt(artistArt, MediaTypeArtist);
std::map<std::string, std::string> albumArt;
if (m_musicdatabase.GetArtForItem(params.GetAlbumId(), MediaTypeAlbum, albumArt))
items.AppendArt(albumArt, MediaTypeAlbum);
}
if (params.GetArtistId() > 0)
{
std::map<std::string, std::string> artistArt;
if (m_musicdatabase.GetArtForItem(params.GetArtistId(), "artist", artistArt))
items.AppendArt(artistArt, MediaTypeArtist);
}
// add in the "New Playlist" item if we're in the playlists folder
if ((items.GetPath() == "special://musicplaylists/") && !items.Contains("newplaylist://"))
{
CFileItemPtr newPlaylist(new CFileItem(CProfilesManager::GetInstance().GetUserDataItem("PartyMode.xsp"),false));
newPlaylist->SetLabel(g_localizeStrings.Get(16035));
newPlaylist->SetLabelPreformated(true);
newPlaylist->m_bIsFolder = true;
items.Add(newPlaylist);
newPlaylist.reset(new CFileItem("newplaylist://", false));
newPlaylist->SetLabel(g_localizeStrings.Get(525));
newPlaylist->SetLabelPreformated(true);
newPlaylist->SetSpecialSort(SortSpecialOnBottom);
newPlaylist->SetCanQueue(false);
items.Add(newPlaylist);
newPlaylist.reset(new CFileItem("newsmartplaylist://music", false));
newPlaylist->SetLabel(g_localizeStrings.Get(21437));
newPlaylist->SetLabelPreformated(true);
newPlaylist->SetSpecialSort(SortSpecialOnBottom);
newPlaylist->SetCanQueue(false);
items.Add(newPlaylist);
}
// check for .CUE files here.
items.FilterCueItems();
std::string label;
if (items.GetLabel().empty() && m_rootDir.IsSource(items.GetPath(), CMediaSourceSettings::GetInstance().GetSources("music"), &label))
items.SetLabel(label);
}
return bResult;
}
示例7: DoScan
bool CMusicInfoScanner::DoScan(const CStdString& strDirectory)
{
if (m_pObserver)
m_pObserver->OnDirectoryChanged(strDirectory);
// load subfolder
CFileItemList items;
CDirectory::GetDirectory(strDirectory, items, g_stSettings.m_musicExtensions + "|.jpg|.tbn");
// sort and get the path hash. Note that we don't filter .cue sheet items here as we want
// to detect changes in the .cue sheet as well. The .cue sheet items only need filtering
// if we have a changed hash.
items.Sort(SORT_METHOD_LABEL, SORT_ORDER_ASC);
CStdString hash;
GetPathHash(items, hash);
// get the folder's thumb (this will cache the album thumb).
items.SetMusicThumb(true); // true forces it to get a remote thumb
// check whether we need to rescan or not
CStdString dbHash;
if (!m_musicDatabase.GetPathHash(strDirectory, dbHash) || dbHash != hash)
{ // path has changed - rescan
if (dbHash.IsEmpty())
CLog::Log(LOGDEBUG, "%s Scanning dir '%s' as not in the database", __FUNCTION__, strDirectory.c_str());
else
CLog::Log(LOGDEBUG, "%s Rescanning dir '%s' due to change", __FUNCTION__, strDirectory.c_str());
// filter items in the sub dir (for .cue sheet support)
items.FilterCueItems();
items.Sort(SORT_METHOD_LABEL, SORT_ORDER_ASC);
// and then scan in the new information
if (RetrieveMusicInfo(items, strDirectory) > 0)
{
if (m_pObserver)
m_pObserver->OnDirectoryScanned(strDirectory);
}
// save information about this folder
m_musicDatabase.SetPathHash(strDirectory, hash);
}
else
{ // path is the same - no need to rescan
CLog::Log(LOGDEBUG, "%s Skipping dir '%s' due to no change", __FUNCTION__, strDirectory.c_str());
m_currentItem += CountFiles(items, false); // false for non-recursive
// notify our observer of our progress
if (m_pObserver)
{
if (m_itemCount>0)
m_pObserver->OnSetProgress(m_currentItem, m_itemCount);
m_pObserver->OnDirectoryScanned(strDirectory);
}
}
// remove this path from the list we're processing
set<CStdString>::iterator it = m_pathsToScan.find(strDirectory);
if (it != m_pathsToScan.end())
m_pathsToScan.erase(it);
// now scan the subfolders
for (int i = 0; i < items.Size(); ++i)
{
CFileItem *pItem = items[i];
if (m_bStop)
break;
// if we have a directory item (non-playlist) we then recurse into that folder
if (pItem->m_bIsFolder && !pItem->IsParentFolder() && !pItem->IsPlayList())
{
CStdString strPath=pItem->m_strPath;
if (!DoScan(strPath))
{
m_bStop = true;
}
}
}
return !m_bStop;
}
示例8: DoScan
bool CMusicInfoScanner::DoScan(const std::string& strDirectory)
{
if (m_handle)
m_handle->SetText(Prettify(strDirectory));
std::set<std::string>::const_iterator it = m_seenPaths.find(strDirectory);
if (it != m_seenPaths.end())
return true;
m_seenPaths.insert(strDirectory);
// Discard all excluded files defined by m_musicExcludeRegExps
const std::vector<std::string> ®exps = g_advancedSettings.m_audioExcludeFromScanRegExps;
if (IsExcluded(strDirectory, regexps))
return true;
// load subfolder
CFileItemList items;
CDirectory::GetDirectory(strDirectory, items, g_advancedSettings.GetMusicExtensions() + "|.jpg|.tbn|.lrc|.cdg");
// sort and get the path hash. Note that we don't filter .cue sheet items here as we want
// to detect changes in the .cue sheet as well. The .cue sheet items only need filtering
// if we have a changed hash.
items.Sort(SortByLabel, SortOrderAscending);
std::string hash;
GetPathHash(items, hash);
// check whether we need to rescan or not
std::string dbHash;
if ((m_flags & SCAN_RESCAN) || !m_musicDatabase.GetPathHash(strDirectory, dbHash) || dbHash != hash)
{ // path has changed - rescan
if (dbHash.empty())
CLog::Log(LOGDEBUG, "%s Scanning dir '%s' as not in the database", __FUNCTION__, CURL::GetRedacted(strDirectory).c_str());
else
CLog::Log(LOGDEBUG, "%s Rescanning dir '%s' due to change", __FUNCTION__, CURL::GetRedacted(strDirectory).c_str());
// filter items in the sub dir (for .cue sheet support)
items.FilterCueItems();
items.Sort(SortByLabel, SortOrderAscending);
// and then scan in the new information
if (RetrieveMusicInfo(strDirectory, items) > 0)
{
if (m_handle)
OnDirectoryScanned(strDirectory);
}
// save information about this folder
m_musicDatabase.SetPathHash(strDirectory, hash);
}
else
{ // path is the same - no need to rescan
CLog::Log(LOGDEBUG, "%s Skipping dir '%s' due to no change", __FUNCTION__, CURL::GetRedacted(strDirectory).c_str());
m_currentItem += CountFiles(items, false); // false for non-recursive
// updated the dialog with our progress
if (m_handle)
{
if (m_itemCount>0)
m_handle->SetPercentage(m_currentItem/(float)m_itemCount*100);
OnDirectoryScanned(strDirectory);
}
}
// now scan the subfolders
for (int i = 0; i < items.Size(); ++i)
{
CFileItemPtr pItem = items[i];
if (m_bStop)
break;
// if we have a directory item (non-playlist) we then recurse into that folder
if (pItem->m_bIsFolder && !pItem->IsParentFolder() && !pItem->IsPlayList())
{
std::string strPath=pItem->GetPath();
if (!DoScan(strPath))
{
m_bStop = true;
}
}
}
return !m_bStop;
}