本文整理汇总了C++中CFileItemList::AddFront方法的典型用法代码示例。如果您正苦于以下问题:C++ CFileItemList::AddFront方法的具体用法?C++ CFileItemList::AddFront怎么用?C++ CFileItemList::AddFront使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CFileItemList
的用法示例。
在下文中一共展示了CFileItemList::AddFront方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ShowBusyItem
void CGUIWindowPVRCommon::ShowBusyItem(void)
{
// FIXME: display a temporary entry so that the list can keep its focus
// busy_items has to be static, because m_viewControl holds the pointer to it
static CFileItemList busy_items;
if (busy_items.IsEmpty())
{
CFileItemPtr pItem(new CFileItem(g_localizeStrings.Get(1040)));
busy_items.AddFront(pItem, 0);
}
m_parent->m_viewControl.SetItems(busy_items);
}
示例2: GetDirectory
bool CGUIWindowAddonBrowser::GetDirectory(const CStdString& strDirectory,
CFileItemList& items)
{
bool result;
if (strDirectory.Equals("addons://downloading/"))
{
VECADDONS addons;
CAddonInstaller::Get().GetInstallList(addons);
CURL url(strDirectory);
CAddonsDirectory::GenerateListing(url,addons,items);
result = true;
items.SetProperty("reponame",g_localizeStrings.Get(24067));
items.SetPath(strDirectory);
if (m_guiState.get() && !m_guiState->HideParentDirItems())
{
CFileItemPtr pItem(new CFileItem(".."));
pItem->SetPath(m_history.GetParentPath());
pItem->m_bIsFolder = true;
pItem->m_bIsShareOrDrive = false;
items.AddFront(pItem, 0);
}
}
else
result = CGUIMediaWindow::GetDirectory(strDirectory,items);
if (strDirectory.IsEmpty() && CAddonInstaller::Get().IsDownloading())
{
CFileItemPtr item(new CFileItem("addons://downloading/",true));
item->SetLabel(g_localizeStrings.Get(24067));
item->SetLabelPreformated(true);
item->SetIconImage("DefaultNetwork.png");
items.Add(item);
}
items.SetContent("addons");
for (int i=0;i<items.Size();++i)
SetItemLabel2(items[i]);
return result;
}
示例3: OnFinalizeFileItems
// \brief This function will be called by Update() after the
// labels of the fileitems are formatted. Override this function
// to modify the fileitems. Eg. to modify the item label
void CGUIMediaWindow::OnFinalizeFileItems(CFileItemList &items)
{
m_unfilteredItems->Append(items);
CStdString filter(GetProperty("filter"));
if (!filter.IsEmpty())
{
items.ClearItems();
GetFilteredItems(filter, items);
}
// The idea here is to ensure we have something to focus if our file list
// is empty. As such, this check MUST be last and ignore the hide parent
// fileitems settings.
if (items.IsEmpty())
{
CFileItemPtr pItem(new CFileItem(".."));
pItem->m_strPath=m_history.GetParentPath();
pItem->m_bIsFolder = true;
pItem->m_bIsShareOrDrive = false;
items.AddFront(pItem, 0);
}
}
示例4: GetDirectory
/*!
\brief Overwrite to fill fileitems from a source
\param strDirectory Path to read
\param items Fill with items specified in \e strDirectory
*/
bool CGUIMediaWindow::GetDirectory(const CStdString &strDirectory, CFileItemList &items)
{
// cleanup items
if (items.Size())
items.Clear();
CStdString strParentPath=m_history.GetParentPath();
CLog::Log(LOGDEBUG,"CGUIMediaWindow::GetDirectory (%s)", strDirectory.c_str());
CLog::Log(LOGDEBUG," ParentPath = [%s]", strParentPath.c_str());
// see if we can load a previously cached folder
CFileItemList cachedItems(strDirectory);
if (!strDirectory.IsEmpty() && cachedItems.Load(GetID()))
{
items.Assign(cachedItems);
}
else
{
unsigned int time = XbmcThreads::SystemClockMillis();
if (strDirectory.IsEmpty())
SetupShares();
if (!m_rootDir.GetDirectory(strDirectory, items))
return false;
// took over a second, and not normally cached, so cache it
if ((XbmcThreads::SystemClockMillis() - time) > 1000 && items.CacheToDiscIfSlow())
items.Save(GetID());
// if these items should replace the current listing, then pop it off the top
if (items.GetReplaceListing())
m_history.RemoveParentPath();
}
if (m_guiState.get() && !m_guiState->HideParentDirItems() && items.GetPath() != m_startDirectory)
{
CFileItemPtr pItem(new CFileItem(".."));
pItem->SetPath(strParentPath);
pItem->m_bIsFolder = true;
pItem->m_bIsShareOrDrive = false;
items.AddFront(pItem, 0);
}
CStdStringArray regexps;
int iWindow = GetID();
// TODO: Do we want to limit the directories we apply the video ones to?
if (iWindow == WINDOW_VIDEO_NAV)
regexps = g_advancedSettings.m_videoExcludeFromListingRegExps;
if (iWindow == WINDOW_MUSIC_FILES)
regexps = g_advancedSettings.m_audioExcludeFromListingRegExps;
if (iWindow == WINDOW_PICTURES)
regexps = g_advancedSettings.m_pictureExcludeFromListingRegExps;
if (regexps.size())
{
for (int i=0; i < items.Size();)
{
if (CUtil::ExcludeFileOrFolder(items[i]->GetPath(), regexps))
items.Remove(i);
else
i++;
}
}
// clear the filter
SetProperty("filter", "");
return true;
}
示例5: AddQueuingFolder
// Add an "* All ..." folder to the CFileItemList
// depending on the child node
void CDirectoryNode::AddQueuingFolder(CFileItemList& items) const
{
CFileItemPtr pItem;
CMusicDbUrl musicUrl;
if (!musicUrl.FromString(BuildPath()))
return;
// always hide "all" items
if (g_advancedSettings.m_bMusicLibraryHideAllItems)
return;
// no need for "all" item when only one item
if (items.GetObjectCount() <= 1)
return;
switch (GetChildType())
{
// Have no queuing folder
case NODE_TYPE_ROOT:
case NODE_TYPE_OVERVIEW:
case NODE_TYPE_TOP100:
break;
/* no need for all genres
case NODE_TYPE_GENRE:
pItem.reset(new CFileItem(g_localizeStrings.Get(15105))); // "All Genres"
musicUrl.AppendPath("-1/");
pItem->SetPath(musicUrl.ToString());
break;
*/
case NODE_TYPE_ARTIST:
if (GetType() == NODE_TYPE_OVERVIEW) return;
pItem.reset(new CFileItem(g_localizeStrings.Get(15103))); // "All Artists"
musicUrl.AppendPath("-1/");
pItem->SetPath(musicUrl.ToString());
break;
// All album related nodes
case NODE_TYPE_ALBUM:
if (GetType() == NODE_TYPE_OVERVIEW) return;
case NODE_TYPE_ALBUM_RECENTLY_PLAYED:
case NODE_TYPE_ALBUM_RECENTLY_ADDED:
case NODE_TYPE_ALBUM_COMPILATIONS:
case NODE_TYPE_ALBUM_TOP100:
case NODE_TYPE_YEAR_ALBUM:
pItem.reset(new CFileItem(g_localizeStrings.Get(15102))); // "All Albums"
musicUrl.AppendPath("-1/");
pItem->SetPath(musicUrl.ToString());
break;
// All song related nodes
/* case NODE_TYPE_ALBUM_RECENTLY_PLAYED_SONGS:
case NODE_TYPE_ALBUM_RECENTLY_ADDED_SONGS:
case NODE_TYPE_ALBUM_COMPILATIONS_SONGS:
case NODE_TYPE_ALBUM_TOP100_SONGS:
case NODE_TYPE_SONG_TOP100:
case NODE_TYPE_SONG:
pItem = new CFileItem(g_localizeStrings.Get(15104)); // "All Songs"
musicUrl.AppendPath("-1/");
pItem->SetPath(musicUrl.ToString());
break;*/
default:
break;
}
if (pItem)
{
pItem->m_bIsFolder = true;
pItem->SetSpecialSort(g_advancedSettings.m_bMusicLibraryAllItemsOnBottom ? SortSpecialOnBottom : SortSpecialOnTop);
pItem->SetCanQueue(false);
pItem->SetLabelPreformated(true);
if (g_advancedSettings.m_bMusicLibraryAllItemsOnBottom)
items.Add(pItem);
else
items.AddFront(pItem, (items.Size() > 0 && items[0]->IsParentFolder()) ? 1 : 0);
}
}
示例6: GetDirectory
/*!
\brief Overwrite to fill fileitems from a source
\param strDirectory Path to read
\param items Fill with items specified in \e strDirectory
*/
bool CGUIMediaWindow::GetDirectory(const CStdString &strDirectory, CFileItemList &items)
{
// cleanup items
if (items.Size())
items.Clear();
CStdString strParentPath=m_history.GetParentPath();
CLog::Log(LOGDEBUG,"CGUIMediaWindow::GetDirectory (%s)", strDirectory.c_str());
CLog::Log(LOGDEBUG," ParentPath = [%s]", strParentPath.c_str());
// see if we can load a previously cached folder
CFileItemList cachedItems(strDirectory);
if (!strDirectory.IsEmpty() && cachedItems.Load())
{
items.Assign(cachedItems);
}
else
{
DWORD time = timeGetTime();
if (!m_rootDir.GetDirectory(strDirectory, items))
return false;
// took over a second, and not normally cached, so cache it
if (time + 1000 < timeGetTime() && items.CacheToDiscIfSlow())
items.Save();
// if these items should replace the current listing, then pop it off the top
if (items.GetReplaceListing())
m_history.RemoveParentPath();
}
if (m_guiState.get() && !m_guiState->HideParentDirItems() && !items.m_strPath.IsEmpty())
{
CFileItemPtr pItem(new CFileItem(".."));
pItem->m_strPath = strParentPath;
pItem->m_bIsFolder = true;
pItem->m_bIsShareOrDrive = false;
items.AddFront(pItem, 0);
}
int iWindow = GetID();
CStdStringArray regexps;
if (iWindow == WINDOW_VIDEO_FILES)
regexps = g_advancedSettings.m_videoExcludeFromListingRegExps;
if (iWindow == WINDOW_MUSIC_FILES)
regexps = g_advancedSettings.m_audioExcludeFromListingRegExps;
if (iWindow == WINDOW_PICTURES)
regexps = g_advancedSettings.m_pictureExcludeFromListingRegExps;
if (regexps.size())
{
for (int i=0; i < items.Size();)
{
if (CUtil::ExcludeFileOrFolder(items[i]->m_strPath, regexps))
items.Remove(i);
else
i++;
}
}
// clear window properties at root or plugin root
if (items.IsVirtualDirectoryRoot() || items.IsPluginRoot())
ClearProperties();
return true;
}
示例7: GetDirectory
bool CGUIWindowAddonBrowser::GetDirectory(const std::string& strDirectory,
CFileItemList& items)
{
bool result;
if (URIUtils::PathEquals(strDirectory, "addons://downloading/"))
{
VECADDONS addons;
CAddonInstaller::Get().GetInstallList(addons);
CURL url(strDirectory);
CAddonsDirectory::GenerateAddonListing(url, addons, items, g_localizeStrings.Get(24067));
result = true;
items.SetPath(strDirectory);
if (m_guiState.get() && !m_guiState->HideParentDirItems())
{
CFileItemPtr pItem(new CFileItem(".."));
pItem->SetPath(m_history.GetParentPath());
pItem->m_bIsFolder = true;
pItem->m_bIsShareOrDrive = false;
items.AddFront(pItem, 0);
}
}
else
{
result = CGUIMediaWindow::GetDirectory(strDirectory, items);
if (CAddonsDirectory::IsRepoDirectory(CURL(strDirectory)))
{
if (CSettings::Get().GetBool("general.addonforeignfilter"))
{
int i=0;
while (i < items.Size())
{
if (!FilterVar(true, items[i]->GetProperty("Addon.Language"), "en") ||
!FilterVar(true, items[i]->GetProperty("Addon.Language"), g_langInfo.GetLocale().GetLanguageCode()) ||
!FilterVar(true, items[i]->GetProperty("Addon.Language"), g_langInfo.GetLocale().ToShortString()))
{
i++;
}
else
items.Remove(i);
}
}
if (CSettings::Get().GetBool("general.addonbrokenfilter"))
{
for (int i = items.Size() - 1; i >= 0; i--)
{
if (!items[i]->GetProperty("Addon.Broken").empty())
{ //check if it's installed
AddonPtr addon;
if (!CAddonMgr::Get().GetAddon(items[i]->GetProperty("Addon.ID").asString(), addon))
items.Remove(i);
}
}
}
}
}
if (strDirectory.empty() && CAddonInstaller::Get().IsDownloading())
{
CFileItemPtr item(new CFileItem("addons://downloading/",true));
item->SetLabel(g_localizeStrings.Get(24067));
item->SetLabelPreformated(true);
item->SetIconImage("DefaultNetwork.png");
items.Add(item);
}
items.SetContent("addons");
for (int i=0;i<items.Size();++i)
SetItemLabel2(items[i]);
return result;
}
示例8: GetDirectory
bool CGUIWindowAddonBrowser::GetDirectory(const std::string& strDirectory, CFileItemList& items)
{
bool result;
if (URIUtils::PathEquals(strDirectory, "addons://downloading/"))
{
VECADDONS addons;
CAddonInstaller::GetInstance().GetInstallList(addons);
CURL url(strDirectory);
CAddonsDirectory::GenerateAddonListing(url, addons, items, g_localizeStrings.Get(24067));
result = true;
items.SetPath(strDirectory);
if (m_guiState.get() && !m_guiState->HideParentDirItems())
{
CFileItemPtr pItem(new CFileItem(".."));
pItem->SetPath(m_history.GetParentPath());
pItem->m_bIsFolder = true;
pItem->m_bIsShareOrDrive = false;
items.AddFront(pItem, 0);
}
}
else
{
result = CGUIMediaWindow::GetDirectory(strDirectory, items);
if (result && CAddonsDirectory::IsRepoDirectory(CURL(strDirectory)))
{
if (CSettings::GetInstance().GetBool(CSettings::SETTING_GENERAL_ADDONFOREIGNFILTER))
{
int i = 0;
while (i < items.Size())
{
auto prop = items[i]->GetProperty("Addon.Language");
if (!prop.isNull() && IsForeign(prop.asString()))
items.Remove(i);
else
++i;
}
}
if (CSettings::GetInstance().GetBool(CSettings::SETTING_GENERAL_ADDONBROKENFILTER))
{
for (int i = items.Size() - 1; i >= 0; i--)
{
if (!items[i]->GetProperty("Addon.Broken").empty())
{
//check if it's installed
AddonPtr addon;
if (!CAddonMgr::GetInstance().GetAddon(items[i]->GetProperty("Addon.ID").asString(), addon))
items.Remove(i);
}
}
}
}
}
if (strDirectory.empty() && CAddonInstaller::GetInstance().IsDownloading())
{
CFileItemPtr item(new CFileItem("addons://downloading/", true));
item->SetLabel(g_localizeStrings.Get(24067));
item->SetLabelPreformated(true);
item->SetIconImage("DefaultNetwork.png");
items.Add(item);
}
for (int i = 0; i < items.Size(); ++i)
SetItemLabel2(items[i]);
return result;
}
示例9: Update
void CGUIDialogFileBrowser::Update(const std::string &strDirectory)
{
const CURL pathToUrl(strDirectory);
if (m_browsingForImages && m_thumbLoader.IsLoading())
m_thumbLoader.StopThread();
// get selected item
int iItem = m_viewControl.GetSelectedItem();
std::string strSelectedItem;
if (iItem >= 0 && iItem < m_vecItems->Size())
{
CFileItemPtr pItem = (*m_vecItems)[iItem];
if (!pItem->IsParentFolder())
{
strSelectedItem = pItem->GetPath();
URIUtils::RemoveSlashAtEnd(strSelectedItem);
m_history.SetSelectedItem(strSelectedItem, m_Directory->GetPath().empty()?"empty":m_Directory->GetPath());
}
}
if (!m_singleList)
{
CFileItemList items;
std::string strParentPath;
if (!m_rootDir.GetDirectory(pathToUrl, items, m_useFileDirectories, false))
{
CLog::Log(LOGERROR,"CGUIDialogFileBrowser::GetDirectory(%s) failed", pathToUrl.GetRedacted().c_str());
// We assume, we can get the parent
// directory again
std::string strParentPath = m_history.GetParentPath();
m_history.RemoveParentPath();
Update(strParentPath);
return;
}
// check if current directory is a root share
if (!m_rootDir.IsSource(strDirectory))
{
if (URIUtils::GetParentPath(strDirectory, strParentPath))
{
CFileItemPtr pItem(new CFileItem(".."));
pItem->SetPath(strParentPath);
pItem->m_bIsFolder = true;
pItem->m_bIsShareOrDrive = false;
items.AddFront(pItem, 0);
}
}
else
{
// yes, this is the root of a share
// add parent path to the virtual directory
CFileItemPtr pItem(new CFileItem(".."));
pItem->SetPath("");
pItem->m_bIsShareOrDrive = false;
pItem->m_bIsFolder = true;
items.AddFront(pItem, 0);
strParentPath = "";
}
ClearFileItems();
m_vecItems->Copy(items);
m_Directory->SetPath(strDirectory);
m_strParentPath = strParentPath;
}
// if we're getting the root source listing
// make sure the path history is clean
if (strDirectory.empty())
m_history.ClearPathHistory();
// some evil stuff don't work with the '/' mask, e.g. shoutcast directory - make sure no files are in there
if (m_browsingForFolders)
{
for (int i=0;i<m_vecItems->Size();++i)
if (!(*m_vecItems)[i]->m_bIsFolder)
{
m_vecItems->Remove(i);
i--;
}
}
// No need to set thumbs
m_vecItems->FillInDefaultIcons();
OnSort();
if (m_Directory->GetPath().empty() && m_addNetworkShareEnabled &&
(CServiceBroker::GetSettingsComponent()->GetProfileManager()->GetMasterProfile().getLockMode() == LOCK_MODE_EVERYONE ||
CServiceBroker::GetSettingsComponent()->GetProfileManager()->IsMasterProfile() || g_passwordManager.bMasterUser))
{ // we are in the virtual directory - add the "Add Network Location" item
CFileItemPtr pItem(new CFileItem(g_localizeStrings.Get(1032)));
pItem->SetPath("net://");
pItem->m_bIsFolder = true;
m_vecItems->Add(pItem);
}
if (m_Directory->GetPath().empty() && !m_addSourceType.empty())
{
//.........这里部分代码省略.........