本文整理汇总了C++中CVideoThumbLoader::LoadItem方法的典型用法代码示例。如果您正苦于以下问题:C++ CVideoThumbLoader::LoadItem方法的具体用法?C++ CVideoThumbLoader::LoadItem怎么用?C++ CVideoThumbLoader::LoadItem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CVideoThumbLoader
的用法示例。
在下文中一共展示了CVideoThumbLoader::LoadItem方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UpdateVideo
bool CRecentlyAddedJob::UpdateVideo()
{
CGUIWindow* home = g_windowManager.GetWindow(WINDOW_HOME);
if ( home == NULL )
return false;
CLog::Log(LOGDEBUG, "CRecentlyAddedJob::UpdateVideos() - Running RecentlyAdded home screen update");
int i = 0;
CFileItemList items;
CVideoDatabase videodatabase;
CVideoThumbLoader loader;
loader.Initialize();
videodatabase.Open();
if (videodatabase.GetRecentlyAddedMoviesNav("videodb://4/", items, NUM_ITEMS))
{
for (; i < items.Size(); ++i)
{
CFileItemPtr item = items.Get(i);
CStdString value;
CStdString strRating;
value.Format("%i", i + 1);
strRating.Format("%.1f", item->GetVideoInfoTag()->m_fRating);
home->SetProperty("LatestMovie." + value + ".Title" , item->GetLabel());
home->SetProperty("LatestMovie." + value + ".Rating" , strRating);
home->SetProperty("LatestMovie." + value + ".Year" , item->GetVideoInfoTag()->m_iYear);
home->SetProperty("LatestMovie." + value + ".Plot" , item->GetVideoInfoTag()->m_strPlot);
home->SetProperty("LatestMovie." + value + ".RunningTime" , item->GetVideoInfoTag()->GetDuration() / 60);
home->SetProperty("LatestMovie." + value + ".Path" , item->GetVideoInfoTag()->m_strFileNameAndPath);
home->SetProperty("LatestMovie." + value + ".Trailer" , item->GetVideoInfoTag()->m_strTrailer);
if (!item->HasArt("thumb"))
loader.LoadItem(item.get());
home->SetProperty("LatestMovie." + value + ".Thumb" , item->GetArt("thumb"));
home->SetProperty("LatestMovie." + value + ".Fanart" , item->GetArt("fanart"));
}
}
for (; i < NUM_ITEMS; ++i)
{
CStdString value;
value.Format("%i", i + 1);
home->SetProperty("LatestMovie." + value + ".Title" , "");
home->SetProperty("LatestMovie." + value + ".Thumb" , "");
home->SetProperty("LatestMovie." + value + ".Rating" , "");
home->SetProperty("LatestMovie." + value + ".Year" , "");
home->SetProperty("LatestMovie." + value + ".Plot" , "");
home->SetProperty("LatestMovie." + value + ".RunningTime" , "");
home->SetProperty("LatestMovie." + value + ".Path" , "");
home->SetProperty("LatestMovie." + value + ".Trailer" , "");
home->SetProperty("LatestMovie." + value + ".Fanart" , "");
}
i = 0;
CFileItemList TVShowItems;
if (videodatabase.GetRecentlyAddedEpisodesNav("videodb://5/", TVShowItems, NUM_ITEMS))
{
for (; i < TVShowItems.Size(); ++i)
{
CFileItemPtr item = TVShowItems.Get(i);
int EpisodeSeason = item->GetVideoInfoTag()->m_iSeason;
int EpisodeNumber = item->GetVideoInfoTag()->m_iEpisode;
CStdString EpisodeNo;
CStdString value;
CStdString strRating;
EpisodeNo.Format("s%02de%02d", EpisodeSeason, EpisodeNumber);
value.Format("%i", i + 1);
strRating.Format("%.1f", item->GetVideoInfoTag()->m_fRating);
CFileItem show(item->GetVideoInfoTag()->m_strShowPath, true);
home->SetProperty("LatestEpisode." + value + ".ShowTitle" , item->GetVideoInfoTag()->m_strShowTitle);
home->SetProperty("LatestEpisode." + value + ".EpisodeTitle" , item->GetVideoInfoTag()->m_strTitle);
home->SetProperty("LatestEpisode." + value + ".Rating" , strRating);
home->SetProperty("LatestEpisode." + value + ".Plot" , item->GetVideoInfoTag()->m_strPlot);
home->SetProperty("LatestEpisode." + value + ".EpisodeNo" , EpisodeNo);
home->SetProperty("LatestEpisode." + value + ".EpisodeSeason" , EpisodeSeason);
home->SetProperty("LatestEpisode." + value + ".EpisodeNumber" , EpisodeNumber);
home->SetProperty("LatestEpisode." + value + ".Path" , item->GetVideoInfoTag()->m_strFileNameAndPath);
if (!item->HasArt("thumb"))
loader.LoadItem(item.get());
std::string seasonThumb;
if (item->GetVideoInfoTag()->m_iIdSeason > 0)
seasonThumb = videodatabase.GetArtForItem(item->GetVideoInfoTag()->m_iIdSeason, "season", "thumb");
home->SetProperty("LatestEpisode." + value + ".Thumb" , item->GetArt("thumb"));
home->SetProperty("LatestEpisode." + value + ".ShowThumb" , item->GetArt("tvshow.thumb"));
home->SetProperty("LatestEpisode." + value + ".SeasonThumb" , seasonThumb);
home->SetProperty("LatestEpisode." + value + ".Fanart" , item->GetArt("fanart"));
}
}
for (; i < NUM_ITEMS; ++i)
{
//.........这里部分代码省略.........
示例2: UpdateVideo
bool CHomeShelfJob::UpdateVideo()
{
CGUIWindow* home = g_windowManager.GetWindow(WINDOW_HOME);
if ( home == NULL )
return false;
CLog::Log(LOGDEBUG, "CHomeShelfJob::UpdateVideos() - Running HomeShelf screen update");
CVideoDatabase videodatabase;
videodatabase.Open();
CFileItemList homeShelfTV;
CFileItemList homeShelfMovies;
if (CSettings::GetInstance().GetBool(CSettings::SETTING_VIDEOLIBRARY_SHOWINPROGRESS))
{
if (videodatabase.HasContent())
{
CVideoThumbLoader loader;
XFILE::CDirectory::GetDirectory("library://video/inprogressmovies.xml/", homeShelfMovies);
XFILE::CDirectory::GetDirectory("library://video/inprogressepisodes.xml/", homeShelfTV);
homeShelfMovies.Sort(SortByLastPlayed, SortOrderDescending);
homeShelfTV.Sort(SortByLastPlayed, SortOrderDescending);
for (int i = 0; i < homeShelfMovies.Size() && i < NUM_ITEMS; i++)
{
CFileItemPtr item = homeShelfMovies.Get(i);
item->SetProperty("ItemType", g_localizeStrings.Get(20386));
if (!item->HasArt("thumb"))
{
loader.LoadItem(item.get());
}
m_HomeShelfMovies->Add(item);
}
for (int i = 0; i < homeShelfTV.Size() && i < NUM_ITEMS; i++)
{
CFileItemPtr item = homeShelfTV.Get(i);
std::string seasonEpisode = StringUtils::Format("S%02iE%02i", item->GetVideoInfoTag()->m_iSeason, item->GetVideoInfoTag()->m_iEpisode);
item->SetProperty("SeasonEpisode", seasonEpisode);
item->SetProperty("ItemType", g_localizeStrings.Get(20387));
if (!item->HasArt("thumb"))
{
loader.LoadItem(item.get());
}
if (!item->HasArt("tvshow.thumb"))
{
item->SetArt("tvshow.thumb", item->GetArt("season.poster"));
}
m_HomeShelfTV->Add(item);
}
}
// get InProgress TVSHOWS and MOVIES from any enabled service
CServicesManager::GetInstance().GetAllInProgressShows(*m_HomeShelfTV, NUM_ITEMS);
CServicesManager::GetInstance().GetAllInProgressMovies(*m_HomeShelfMovies, NUM_ITEMS);
}
else
{
if (videodatabase.HasContent())
{
std::string path;
CVideoThumbLoader loader;
loader.OnLoaderStart();
path = g_advancedSettings.m_recentlyAddedMoviePath;
if (g_advancedSettings.m_iVideoLibraryRecentlyAddedUnseen)
{
CVideoDbUrl url;
url.FromString(path);
url.AddOption("filter", "{\"type\":\"movies\", \"rules\":[{\"field\":\"playcount\", \"operator\":\"is\", \"value\":\"0\"}]}");
path = url.ToString();
}
videodatabase.GetRecentlyAddedMoviesNav(path, homeShelfMovies, NUM_ITEMS);
for (int i = 0; i < homeShelfMovies.Size(); i++)
{
CFileItemPtr item = homeShelfMovies.Get(i);
item->SetProperty("ItemType", g_localizeStrings.Get(20386));
if (!item->HasArt("thumb"))
{
loader.LoadItem(item.get());
}
m_HomeShelfMovies->Add(item);
}
path = g_advancedSettings.m_recentlyAddedEpisodePath;
if (g_advancedSettings.m_iVideoLibraryRecentlyAddedUnseen)
{
CVideoDbUrl url;
url.FromString(path);
url.AddOption("filter", "{\"type\":\"episodes\", \"rules\":[{\"field\":\"playcount\", \"operator\":\"is\", \"value\":\"0\"}]}");
path = url.ToString();
}
videodatabase.GetRecentlyAddedEpisodesNav(path, homeShelfTV, NUM_ITEMS);
std::string seasonThumb;
for (int i = 0; i < homeShelfTV.Size(); i++)
{
CFileItemPtr item = homeShelfTV.Get(i);
std::string seasonEpisode = StringUtils::Format("S%02iE%02i", item->GetVideoInfoTag()->m_iSeason, item->GetVideoInfoTag()->m_iEpisode);
item->SetProperty("SeasonEpisode", seasonEpisode);
//.........这里部分代码省略.........
示例3: SetMovie
//.........这里部分代码省略.........
m_castList->Add(item);
}
m_castList->SetContent("musicvideos");
}
else
{ // movie/show/episode
for (CVideoInfoTag::iCast it = m_movieItem->GetVideoInfoTag()->m_cast.begin(); it != m_movieItem->GetVideoInfoTag()->m_cast.end(); ++it)
{
CStdString character;
if (it->strRole.IsEmpty())
character = it->strName;
else
character.Format("%s %s %s", it->strName.c_str(), g_localizeStrings.Get(20347).c_str(), it->strRole.c_str());
CFileItemPtr item(new CFileItem(it->strName));
if (!it->thumb.IsEmpty())
item->SetArt("thumb", it->thumb);
else if (g_guiSettings.GetBool("videolibrary.actorthumbs"))
{ // backward compatibility
CStdString thumb = CScraperUrl::GetThumbURL(it->thumbUrl.GetFirstThumb());
if (!thumb.IsEmpty())
{
item->SetArt("thumb", thumb);
CTextureCache::Get().BackgroundCacheImage(thumb);
}
}
item->SetIconImage("DefaultActor.png");
item->SetLabel(character);
m_castList->Add(item);
}
// determine type:
if (type == VIDEODB_CONTENT_TVSHOWS)
{
m_castList->SetContent("tvshows");
// special case stuff for shows (not currently retrieved from the library in filemode (ref: GetTvShowInfo vs GetTVShowsByWhere)
m_movieItem->m_dateTime = m_movieItem->GetVideoInfoTag()->m_premiered;
if(m_movieItem->GetVideoInfoTag()->m_iYear == 0 && m_movieItem->m_dateTime.IsValid())
m_movieItem->GetVideoInfoTag()->m_iYear = m_movieItem->m_dateTime.GetYear();
m_movieItem->SetProperty("totalepisodes", m_movieItem->GetVideoInfoTag()->m_iEpisode);
m_movieItem->SetProperty("numepisodes", m_movieItem->GetVideoInfoTag()->m_iEpisode); // info view has no concept of current watched/unwatched filter as we could come here from files view, but set for consistency
m_movieItem->SetProperty("watchedepisodes", m_movieItem->GetVideoInfoTag()->m_playCount);
m_movieItem->SetProperty("unwatchedepisodes", m_movieItem->GetVideoInfoTag()->m_iEpisode - m_movieItem->GetVideoInfoTag()->m_playCount);
m_movieItem->GetVideoInfoTag()->m_playCount = (m_movieItem->GetVideoInfoTag()->m_iEpisode == m_movieItem->GetVideoInfoTag()->m_playCount) ? 1 : 0;
}
else if (type == VIDEODB_CONTENT_EPISODES)
{
m_castList->SetContent("episodes");
// special case stuff for episodes (not currently retrieved from the library in filemode (ref: GetEpisodeInfo vs GetEpisodesByWhere)
m_movieItem->m_dateTime = m_movieItem->GetVideoInfoTag()->m_firstAired;
if(m_movieItem->GetVideoInfoTag()->m_iYear == 0 && m_movieItem->m_dateTime.IsValid())
m_movieItem->GetVideoInfoTag()->m_iYear = m_movieItem->m_dateTime.GetYear();
// retrieve the season thumb.
// TODO: should we use the thumbloader for this?
CVideoDatabase db;
if (db.Open())
{
if (m_movieItem->GetVideoInfoTag()->m_iSeason > -1)
{
int seasonID = m_movieItem->GetVideoInfoTag()->m_iIdSeason;
if (seasonID < 0)
seasonID = db.GetSeasonId(m_movieItem->GetVideoInfoTag()->m_iIdShow,
m_movieItem->GetVideoInfoTag()->m_iSeason);
CGUIListItem::ArtMap thumbs;
if (db.GetArtForItem(seasonID, "season", thumbs))
{
for (CGUIListItem::ArtMap::iterator i = thumbs.begin(); i != thumbs.end(); i++)
m_movieItem->SetArt("season." + i->first, i->second);
}
}
db.Close();
}
}
else if (type == VIDEODB_CONTENT_MOVIES)
{
m_castList->SetContent("movies");
// local trailers should always override non-local, so check
// for a local one if the registered trailer is online
if (m_movieItem->GetVideoInfoTag()->m_strTrailer.IsEmpty() ||
URIUtils::IsInternetStream(m_movieItem->GetVideoInfoTag()->m_strTrailer))
{
CStdString localTrailer = m_movieItem->FindTrailer();
if (!localTrailer.IsEmpty())
{
m_movieItem->GetVideoInfoTag()->m_strTrailer = localTrailer;
CVideoDatabase database;
if(database.Open())
{
database.SetDetail(m_movieItem->GetVideoInfoTag()->m_strTrailer,
m_movieItem->GetVideoInfoTag()->m_iDbId,
VIDEODB_ID_TRAILER, VIDEODB_CONTENT_MOVIES);
database.Close();
CUtil::DeleteVideoDatabaseDirectoryCache();
}
}
}
}
}
CVideoThumbLoader loader;
loader.LoadItem(m_movieItem.get());
}
示例4: SetMovie
void CGUIWindowVideoInfo::SetMovie(const CFileItem *item)
{
CVideoThumbLoader loader;
*m_movieItem = *item;
// setup cast list + determine type. We need to do this here as it makes
// sure that content type (among other things) is set correctly for the
// old fixed id labels that we have floating around (they may be using
// content type to determine visibility, so we'll set the wrong label)
ClearCastList();
VIDEODB_CONTENT_TYPE type = GetContentType(m_movieItem.get());
if (type == VIDEODB_CONTENT_MUSICVIDEOS)
{ // music video
CStdStringArray artists;
StringUtils::SplitString(m_movieItem->GetVideoInfoTag()->m_strArtist, g_advancedSettings.m_videoItemSeparator, artists);
for (std::vector<CStdString>::const_iterator it = artists.begin(); it != artists.end(); ++it)
{
CFileItemPtr item(new CFileItem(*it));
if (CFile::Exists(item->GetCachedArtistThumb()))
item->SetThumbnailImage(item->GetCachedArtistThumb());
item->SetIconImage("DefaultArtist.png");
m_castList->Add(item);
}
m_castList->SetContent("musicvideos");
}
else
{ // movie/show/episode
for (CVideoInfoTag::iCast it = m_movieItem->GetVideoInfoTag()->m_cast.begin(); it != m_movieItem->GetVideoInfoTag()->m_cast.end(); ++it)
{
CStdString character;
if (it->strRole.IsEmpty())
character = it->strName;
else
character.Format("%s %s %s", it->strName.c_str(), g_localizeStrings.Get(20347).c_str(), it->strRole.c_str());
CFileItemPtr item(new CFileItem(it->strName));
if (CFile::Exists(item->GetCachedActorThumb()))
item->SetThumbnailImage(item->GetCachedActorThumb());
item->SetIconImage("DefaultActor.png");
item->SetLabel(character);
m_castList->Add(item);
}
// set fanart property for tvshows and movies
if (type == VIDEODB_CONTENT_TVSHOWS || type == VIDEODB_CONTENT_MOVIES)
{
m_movieItem->CacheFanart();
if (CFile::Exists(m_movieItem->GetCachedFanart()))
m_movieItem->SetProperty("fanart_image",m_movieItem->GetCachedFanart());
}
// determine type:
if (type == VIDEODB_CONTENT_TVSHOWS)
{
m_castList->SetContent("tvshows");
// special case stuff for shows (not currently retrieved from the library in filemode (ref: GetTvShowInfo vs GetTVShowsByWhere)
m_movieItem->m_dateTime.SetFromDateString(m_movieItem->GetVideoInfoTag()->m_strPremiered);
m_movieItem->GetVideoInfoTag()->m_iYear = m_movieItem->m_dateTime.GetYear();
m_movieItem->SetProperty("watchedepisodes", m_movieItem->GetVideoInfoTag()->m_playCount);
m_movieItem->SetProperty("unwatchedepisodes", m_movieItem->GetVideoInfoTag()->m_iEpisode - m_movieItem->GetVideoInfoTag()->m_playCount);
m_movieItem->GetVideoInfoTag()->m_playCount = (m_movieItem->GetVideoInfoTag()->m_iEpisode == m_movieItem->GetVideoInfoTag()->m_playCount) ? 1 : 0;
}
else if (type == VIDEODB_CONTENT_EPISODES)
{
m_castList->SetContent("episodes");
// special case stuff for episodes (not currently retrieved from the library in filemode (ref: GetEpisodeInfo vs GetEpisodesByWhere)
m_movieItem->m_dateTime.SetFromDateString(m_movieItem->GetVideoInfoTag()->m_strFirstAired);
m_movieItem->GetVideoInfoTag()->m_iYear = m_movieItem->m_dateTime.GetYear();
if (CFile::Exists(m_movieItem->GetCachedEpisodeThumb()))
m_movieItem->SetThumbnailImage(m_movieItem->GetCachedEpisodeThumb());
// retrieve the season thumb.
// NOTE: This is overly complicated. Perhaps we should cache season thumbs by showtitle and season number,
// rather than bothering with show path and the localized strings involved?
if (m_movieItem->GetVideoInfoTag()->m_iSeason > -1)
{
CStdString label;
if (m_movieItem->GetVideoInfoTag()->m_iSeason == 0)
label = g_localizeStrings.Get(20381);
else
label.Format(g_localizeStrings.Get(20358), m_movieItem->GetVideoInfoTag()->m_iSeason);
CFileItem season(label);
season.m_bIsFolder = true;
// grab show path
CVideoDatabase db;
if (db.Open())
{
CFileItemList items;
CStdString where = db.FormatSQL("where c%02d='%s'", VIDEODB_ID_TV_TITLE, m_movieItem->GetVideoInfoTag()->m_strShowTitle.c_str());
if (db.GetTvShowsByWhere("", where, items) && items.Size())
season.GetVideoInfoTag()->m_strPath = items[0]->GetVideoInfoTag()->m_strPath;
db.Close();
}
season.SetCachedSeasonThumb();
if (season.HasThumbnail())
m_movieItem->SetProperty("seasonthumb", season.GetThumbnailImage());
}
}
else if (type == VIDEODB_CONTENT_MOVIES)
m_castList->SetContent("movies");
}
loader.LoadItem(m_movieItem.get());
}