本文整理汇总了C++中CVideoDbUrl::AddOptions方法的典型用法代码示例。如果您正苦于以下问题:C++ CVideoDbUrl::AddOptions方法的具体用法?C++ CVideoDbUrl::AddOptions怎么用?C++ CVideoDbUrl::AddOptions使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CVideoDbUrl
的用法示例。
在下文中一共展示了CVideoDbUrl::AddOptions方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Group
bool GroupUtils::Group(GroupBy groupBy, const std::string &baseDir, const CFileItemList &items, CFileItemList &groupedItems, GroupAttribute groupAttributes /* = GroupAttributeNone */)
{
if (groupBy == GroupByNone)
return false;
// nothing to do if there are no items to group
if (items.Size() <= 0)
return true;
SetMap setMap;
for (int index = 0; index < items.Size(); index++)
{
bool add = true;
const CFileItemPtr item = items.Get(index);
// group by sets
if ((groupBy & GroupBySet) &&
item->HasVideoInfoTag() && item->GetVideoInfoTag()->m_iSetId > 0)
{
add = false;
setMap[item->GetVideoInfoTag()->m_iSetId].insert(item);
}
if (add)
groupedItems.Add(item);
}
if ((groupBy & GroupBySet) && !setMap.empty())
{
CVideoDbUrl itemsUrl;
if (!itemsUrl.FromString(baseDir))
return false;
for (SetMap::const_iterator set = setMap.begin(); set != setMap.end(); set++)
{
// only one item in the set, so just re-add it
if (set->second.size() == 1 && (groupAttributes & GroupAttributeIgnoreSingleItems))
{
groupedItems.Add(*set->second.begin());
continue;
}
CFileItemPtr pItem(new CFileItem((*set->second.begin())->GetVideoInfoTag()->m_strSet));
pItem->GetVideoInfoTag()->m_iDbId = set->first;
pItem->GetVideoInfoTag()->m_type = "set";
std::string basePath = StringUtils::Format("videodb://movies/sets/%ld/", set->first);
CVideoDbUrl videoUrl;
if (!videoUrl.FromString(basePath))
pItem->SetPath(basePath);
else
{
videoUrl.AddOptions(itemsUrl.GetOptionsString());
pItem->SetPath(videoUrl.ToString());
}
pItem->m_bIsFolder = true;
CVideoInfoTag* setInfo = pItem->GetVideoInfoTag();
setInfo->m_strPath = pItem->GetPath();
setInfo->m_strTitle = pItem->GetLabel();
int ratings = 0;
int iWatched = 0; // have all the movies been played at least once?
std::set<CStdString> pathSet;
for (std::set<CFileItemPtr>::const_iterator movie = set->second.begin(); movie != set->second.end(); movie++)
{
CVideoInfoTag* movieInfo = (*movie)->GetVideoInfoTag();
// handle rating
if (movieInfo->m_fRating > 0.0f)
{
ratings++;
setInfo->m_fRating += movieInfo->m_fRating;
}
// handle year
if (movieInfo->m_iYear > setInfo->m_iYear)
setInfo->m_iYear = movieInfo->m_iYear;
// handle lastplayed
if (movieInfo->m_lastPlayed.IsValid() && movieInfo->m_lastPlayed > setInfo->m_lastPlayed)
setInfo->m_lastPlayed = movieInfo->m_lastPlayed;
// handle dateadded
if (movieInfo->m_dateAdded.IsValid() && movieInfo->m_dateAdded > setInfo->m_dateAdded)
setInfo->m_dateAdded = movieInfo->m_dateAdded;
// handle playcount/watched
setInfo->m_playCount += movieInfo->m_playCount;
if (movieInfo->m_playCount > 0)
iWatched++;
//accumulate the path for a multipath construction
CFileItem video(movieInfo->m_basePath, false);
if (video.IsVideo())
pathSet.insert(URIUtils::GetParentPath(movieInfo->m_basePath));
else
pathSet.insert(movieInfo->m_basePath);
}
setInfo->m_basePath = XFILE::CMultiPathDirectory::ConstructMultiPath(pathSet);
//.........这里部分代码省略.........