本文整理汇总了C++中CFileItemPtr::HasThumbnail方法的典型用法代码示例。如果您正苦于以下问题:C++ CFileItemPtr::HasThumbnail方法的具体用法?C++ CFileItemPtr::HasThumbnail怎么用?C++ CFileItemPtr::HasThumbnail使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CFileItemPtr
的用法示例。
在下文中一共展示了CFileItemPtr::HasThumbnail方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CacheTrackThumb
void CLastFmManager::CacheTrackThumb(const int nrInitialTracksToAdd)
{
unsigned int start = CTimeUtils::GetTimeMS();
CSingleLock lock(m_lockCache);
int iNrCachedTracks = m_RadioTrackQueue->size();
CFileCurl http;
for (int i = 0; i < nrInitialTracksToAdd && i < iNrCachedTracks; i++)
{
CFileItemPtr item = (*m_RadioTrackQueue)[i];
if (!item->GetMusicInfoTag()->Loaded())
{
//cache albumthumb, GetThumbnailImage contains the url to cache
if (item->HasThumbnail())
{
CStdString coverUrl = item->GetThumbnailImage();
CStdString crcFile;
CStdString cachedFile;
CStdString thumbFile;
Crc32 crc;
crc.ComputeFromLowerCase(coverUrl);
crcFile.Format("%08x.tbn", (__int32)crc);
URIUtils::AddFileToFolder(g_advancedSettings.m_cachePath, crcFile, cachedFile);
URIUtils::AddFileToFolder(g_settings.GetLastFMThumbFolder(), crcFile, thumbFile);
item->SetThumbnailImage("");
try
{
//download to temp, then make a thumb
if (CFile::Exists(thumbFile) || (http.Download(coverUrl, cachedFile) && CPicture::CreateThumbnail(cachedFile, thumbFile)))
{
if (CFile::Exists(cachedFile))
CFile::Delete(cachedFile);
item->SetThumbnailImage(thumbFile);
}
}
catch(...)
{
CLog::Log(LOGERROR, "LastFmManager: exception while caching %s to %s.", coverUrl.c_str(), thumbFile.c_str());
}
}
if (!item->HasThumbnail())
{
item->SetThumbnailImage("DefaultAlbumCover.png");
}
item->GetMusicInfoTag()->SetLoaded();
}
}
CLog::Log(LOGDEBUG, "%s: Done (time: %i ms)", __FUNCTION__, (int)(CTimeUtils::GetTimeMS() - start));
}
示例2: ByThumbPercent
/// \brief Auto Switch method based on the percentage of non-default thumbs \e in the current directory
/// \param iPercent Percent of non-default thumbs to autoswitch on
/// \param vecItems Vector of FileItems
bool CAutoSwitch::ByThumbPercent(bool bHideParentDirItems, int iPercent, const CFileItemList& vecItems)
{
bool bThumbs = false;
int iNumThumbs = 0;
int iNumItems = vecItems.Size();
if (!bHideParentDirItems)
{
iNumItems--;
}
if (iNumItems <= 0) return false;
for (int i = 0; i < vecItems.Size(); i++)
{
const CFileItemPtr pItem = vecItems[i];
if (pItem->HasThumbnail())
{
iNumThumbs++;
float fTempPercent = ( (float)iNumThumbs / (float)iNumItems ) * (float)100;
if (fTempPercent >= (float)iPercent)
{
bThumbs = true;
break;
}
}
}
return bThumbs;
}
示例3: GetDirectory
bool CPVRRecordings::GetDirectory(const CStdString& strPath, CFileItemList &items)
{
bool bSuccess(false);
CFileItemList files;
{
CSingleLock lock(m_critSection);
CURL url(strPath);
CStdString strFileName = url.GetFileName();
URIUtils::RemoveSlashAtEnd(strFileName);
if (strFileName.Left(10) == "recordings")
{
strFileName.erase(0, 10);
GetSubDirectories(strFileName, &items, true);
GetContents(strFileName, &files);
bSuccess = true;
}
}
if(bSuccess)
{
for (int i = 0; i < files.Size(); i++)
{
CFileItemPtr pFileItem = files.Get(i);
CFileItemPtr pThumbItem = items.Get(pFileItem->GetPath());
if (!pThumbItem->HasThumbnail())
m_thumbLoader.LoadItem(pThumbItem.get());
}
}
return bSuccess;
}
示例4: ByFiles
/// \brief Auto Switch method based on the current directory \e not containing ALL files and \e atleast one non-default thumb
/// \param bHideParentDirItems - are we not counting the ".." item?
/// \param vecItems Vector of FileItems
bool CAutoSwitch::ByFiles(bool bHideParentDirItems, const CFileItemList& vecItems)
{
bool bThumbs = false;
int iCompare = 0;
// parent directorys are visible, incrememt
if (!bHideParentDirItems)
{
iCompare = 1;
}
// confirm the list is not just files and folderback
if (vecItems.GetFolderCount() > iCompare)
{
// test for thumbs
for (int i = 0; i < vecItems.Size(); i++)
{
const CFileItemPtr pItem = vecItems[i];
if (pItem->HasThumbnail())
{
bThumbs = true;
break;
}
}
}
return bThumbs;
}
示例5: GetPluginsDirectory
bool CPluginDirectory::GetPluginsDirectory(const CStdString &type, CFileItemList &items)
{
// retrieve our folder
CStdString pluginsFolder = _P("U:\\plugins");
CUtil::AddFileToFolder(pluginsFolder, type, pluginsFolder);
CUtil::AddSlashAtEnd(pluginsFolder);
if (!CDirectory::GetDirectory(pluginsFolder, items, "*.py", false))
return false;
items.m_strPath.Replace(_P("U:\\plugins\\"), "plugin://");
items.m_strPath.Replace("\\", "/");
// flatten any folders - TODO: Assigning of thumbs
for (int i = 0; i < items.Size(); i++)
{
CFileItemPtr item = items[i];
item->SetThumbnailImage("");
item->SetCachedProgramThumb();
if (!item->HasThumbnail())
item->SetUserProgramThumb();
if (!item->HasThumbnail())
{
CFileItem item2(item->m_strPath);
CUtil::AddFileToFolder(item->m_strPath,"default.py",item2.m_strPath);
item2.m_bIsFolder = false;
item2.SetCachedProgramThumb();
if (!item2.HasThumbnail())
item2.SetUserProgramThumb();
if (item2.HasThumbnail())
{
XFILE::CFile::Cache(item2.GetThumbnailImage(),item->GetCachedProgramThumb());
item->SetThumbnailImage(item->GetCachedProgramThumb());
}
}
item->m_strPath.Replace(_P("U:\\plugins\\"), "plugin://");
item->m_strPath.Replace("\\", "/");
}
return true;
}
示例6: ByFolders
/// \brief Auto Switch method based on the current directory \e containing ALL folders and \e atleast one non-default thumb
/// \param vecItems Vector of FileItems
bool CAutoSwitch::ByFolders(const CFileItemList& vecItems)
{
bool bThumbs = false;
// is the list all folders?
if (vecItems.GetFolderCount() == vecItems.Size())
{
// test for thumbs
for (int i = 0; i < vecItems.Size(); i++)
{
const CFileItemPtr pItem = vecItems[i];
if (pItem->HasThumbnail())
{
bThumbs = true;
break;
}
}
}
return bThumbs;
}
示例7: CacheTrackThumb
void CLastFmManager::CacheTrackThumb(const int nrInitialTracksToAdd)
{
unsigned int start = XbmcThreads::SystemClockMillis();
CSingleLock lock(m_lockCache);
int iNrCachedTracks = m_RadioTrackQueue->size();
CCurlFile http;
for (int i = 0; i < nrInitialTracksToAdd && i < iNrCachedTracks; i++)
{
CFileItemPtr item = (*m_RadioTrackQueue)[i];
if (!item->GetMusicInfoTag()->Loaded())
{
if (!item->HasThumbnail())
{
item->SetThumbnailImage("DefaultAlbumCover.png");
}
item->GetMusicInfoTag()->SetLoaded();
}
}
CLog::Log(LOGDEBUG, "%s: Done (time: %i ms)", __FUNCTION__, (int)(XbmcThreads::SystemClockMillis() - start));
}
示例8: GetDirectory
bool CVideoDatabaseDirectory::GetDirectory(const CStdString& strPath, CFileItemList &items)
{
auto_ptr<CDirectoryNode> pNode(CDirectoryNode::ParseURL(strPath));
if (!pNode.get())
return false;
bool bResult = pNode->GetChilds(items);
for (int i=0;i<items.Size();++i)
{
CFileItemPtr item = items[i];
if (item->m_bIsFolder && !item->HasIcon() && !item->HasThumbnail())
{
CStdString strImage = GetIcon(item->GetPath());
if (!strImage.IsEmpty() && g_TextureManager.HasTexture(strImage))
item->SetIconImage(strImage);
}
}
items.SetLabel(pNode->GetLocalizedName());
return bResult;
}
示例9: Save
bool CFavourites::Save(const CFileItemList &items)
{
CStdString favourites;
CXBMCTinyXML doc;
TiXmlElement xmlRootElement("favourites");
TiXmlNode *rootNode = doc.InsertEndChild(xmlRootElement);
if (!rootNode) return false;
for (int i = 0; i < items.Size(); i++)
{
const CFileItemPtr item = items[i];
TiXmlElement favNode("favourite");
favNode.SetAttribute("name", item->GetLabel().c_str());
if (item->HasThumbnail())
favNode.SetAttribute("thumb", item->GetThumbnailImage().c_str());
TiXmlText execute(item->GetPath());
favNode.InsertEndChild(execute);
rootNode->InsertEndChild(favNode);
}
URIUtils::AddFileToFolder(g_settings.GetProfileUserDataFolder(), "favourites.xml", favourites);
return doc.SaveFile(favourites);
}
示例10: ByFolderThumbPercentage
// returns true if:
// 1. Have more than 75% folders and
// 2. Have more than percent folders with thumbs
bool CAutoSwitch::ByFolderThumbPercentage(bool hideParentDirItems, int percent, const CFileItemList &vecItems)
{
int numItems = vecItems.Size();
if (!hideParentDirItems)
numItems--;
if (numItems <= 0) return false;
int fileCount = vecItems.GetFileCount();
if (fileCount > 0.25f * numItems) return false;
int numThumbs = 0;
for (int i = 0; i < vecItems.Size(); i++)
{
const CFileItemPtr item = vecItems[i];
if (item->m_bIsFolder && item->HasThumbnail())
{
numThumbs++;
if (numThumbs >= 0.01f * percent * (numItems - fileCount))
return true;
}
}
return false;
}
示例11: OnContextButton
//.........这里部分代码省略.........
return false;
// make share default
SetDefault(type, share->strName);
return true;
case CONTEXT_BUTTON_CLEAR_DEFAULT:
if (g_settings.m_vecProfiles[g_settings.m_iLastLoadedProfileIndex].canWriteSources() && !g_passwordManager.IsProfileLockUnlocked())
return false;
else if (!g_passwordManager.IsMasterLockUnlocked(true))
return false;
// remove share default
ClearDefault(type);
return true;
case CONTEXT_BUTTON_SET_THUMB:
{
if (g_settings.m_vecProfiles[g_settings.m_iLastLoadedProfileIndex].canWriteSources() && !g_passwordManager.IsProfileLockUnlocked())
return false;
else if (!g_passwordManager.IsMasterLockUnlocked(true))
return false;
// setup our thumb list
CFileItemList items;
// add the current thumb, if available
if (!share->m_strThumbnailImage.IsEmpty())
{
CFileItemPtr current(new CFileItem("thumb://Current", false));
current->SetThumbnailImage(share->m_strThumbnailImage);
current->SetLabel(g_localizeStrings.Get(20016));
items.Add(current);
}
else if (item->HasThumbnail())
{ // already have a thumb that the share doesn't know about - must be a local one, so we mayaswell reuse it.
CFileItemPtr current(new CFileItem("thumb://Current", false));
current->SetThumbnailImage(item->GetThumbnailImage());
current->SetLabel(g_localizeStrings.Get(20016));
items.Add(current);
}
// see if there's a local thumb for this item
CStdString folderThumb = item->GetFolderThumb();
if (XFILE::CFile::Exists(folderThumb))
{ // cache it
if (CPicture::CreateThumbnail(folderThumb, item->GetCachedProgramThumb()))
{
CFileItemPtr local(new CFileItem("thumb://Local", false));
local->SetThumbnailImage(item->GetCachedProgramThumb());
local->SetLabel(g_localizeStrings.Get(20017));
items.Add(local);
}
}
// and add a "no thumb" entry as well
CFileItemPtr nothumb(new CFileItem("thumb://None", false));
nothumb->SetIconImage(item->GetIconImage());
nothumb->SetLabel(g_localizeStrings.Get(20018));
items.Add(nothumb);
CStdString strThumb;
VECSOURCES shares;
g_mediaManager.GetLocalDrives(shares);
if (!CGUIDialogFileBrowser::ShowAndGetImage(items, shares, g_localizeStrings.Get(1030), strThumb))
return false;
if (strThumb == "thumb://Current")
return true;
示例12: 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;
videodatabase.Open();
if (videodatabase.GetRecentlyAddedMoviesNav("videodb://1/", 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()->m_strRuntime);
home->SetProperty("LatestMovie." + value + ".Path" , item->GetVideoInfoTag()->m_strFileNameAndPath);
home->SetProperty("LatestMovie." + value + ".Trailer" , item->GetVideoInfoTag()->m_strTrailer);
if (!item->HasThumbnail())
m_thumbLoader.LoadItem(item.get());
home->SetProperty("LatestMovie." + value + ".Thumb" , item->GetThumbnailImage());
home->SetProperty("LatestMovie." + value + ".Fanart" , item->GetCachedFanart());
}
}
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://1/", 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;
CStdString strSeason;
EpisodeNo.Format("s%02de%02d", EpisodeSeason, EpisodeNumber);
value.Format("%i", i + 1);
strRating.Format("%.1f", item->GetVideoInfoTag()->m_fRating);
if (EpisodeSeason == 0)
strSeason = g_localizeStrings.Get(20381);
else
strSeason.Format(g_localizeStrings.Get(20358), EpisodeSeason);
CFileItem season(strSeason);
season.GetVideoInfoTag()->m_strPath = item->GetVideoInfoTag()->m_strShowPath;
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->HasThumbnail())
m_thumbLoader.LoadItem(item.get());
home->SetProperty("LatestEpisode." + value + ".Thumb" , item->GetThumbnailImage());
home->SetProperty("LatestEpisode." + value + ".ShowThumb" , show.GetCachedVideoThumb());
home->SetProperty("LatestEpisode." + value + ".SeasonThumb" , season.GetCachedSeasonThumb());
home->SetProperty("LatestEpisode." + value + ".Fanart" , item->GetCachedFanart());
}
//.........这里部分代码省略.........
示例13: HandleFileItem
void CFileItemHandler::HandleFileItem(const char *ID, bool allowFile, const char *resultname, CFileItemPtr item, const CVariant ¶meterObject, const CVariant &validFields, CVariant &result, bool append /* = true */)
{
CVariant object;
bool hasFileField = false;
bool hasThumbnailField = false;
if (item.get())
{
for (unsigned int i = 0; i < validFields.size(); i++)
{
CStdString field = validFields[i].asString();
if (field == "file")
hasFileField = true;
if (field == "thumbnail")
hasThumbnailField = true;
}
if (allowFile && hasFileField)
{
if (item->HasVideoInfoTag() && !item->GetVideoInfoTag()->GetPath().IsEmpty())
object["file"] = item->GetVideoInfoTag()->GetPath().c_str();
if (item->HasMusicInfoTag() && !item->GetMusicInfoTag()->GetURL().IsEmpty())
object["file"] = item->GetMusicInfoTag()->GetURL().c_str();
if (!object.isMember("file"))
object["file"] = item->GetPath().c_str();
}
if (ID)
{
if(stricmp(ID, "spotify_albumid") == 0)
{
CStdString spotify_albumid = item->GetPath();
object[ID] = spotify_albumid.c_str();
}
if (item->HasMusicInfoTag() && item->GetMusicInfoTag()->GetDatabaseId() > 0)
object[ID] = (int)item->GetMusicInfoTag()->GetDatabaseId();
else if (item->HasVideoInfoTag() && item->GetVideoInfoTag()->m_iDbId > 0)
object[ID] = item->GetVideoInfoTag()->m_iDbId;
if (stricmp(ID, "id") == 0)
{
if (item->HasMusicInfoTag())
{
if (item->m_bIsFolder && item->IsAlbum())
object["type"] = "album";
else
object["type"] = "song";
}
else if (item->HasVideoInfoTag())
{
switch (item->GetVideoContentType())
{
case VIDEODB_CONTENT_EPISODES:
object["type"] = "episode";
break;
case VIDEODB_CONTENT_MUSICVIDEOS:
object["type"] = "musicvideo";
break;
case VIDEODB_CONTENT_MOVIES:
object["type"] = "movie";
break;
case VIDEODB_CONTENT_TVSHOWS:
object["type"] = "tvshow";
break;
default:
break;
}
}
else if (item->HasPictureInfoTag())
object["type"] = "picture";
if (!object.isMember("type"))
object["type"] = "unknown";
}
}
if (hasThumbnailField)
{
if (item->HasThumbnail())
object["thumbnail"] = item->GetThumbnailImage().c_str();
else if (item->HasVideoInfoTag())
{
CStdString strPath, strFileName;
URIUtils::Split(item->GetCachedVideoThumb(), strPath, strFileName);
CStdString cachedThumb = strPath + "auto-" + strFileName;
if (CFile::Exists(cachedThumb))
object["thumbnail"] = cachedThumb;
}
else if (item->HasPictureInfoTag())
{
CStdString thumb = CTextureCache::Get().CheckAndCacheImage(CTextureCache::GetWrappedThumbURL(item->GetPath()));
if (!thumb.empty())
object["thumbnail"] = thumb;
//.........这里部分代码省略.........
示例14: 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;
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()->m_strRuntime);
home->SetProperty("LatestMovie." + value + ".Path" , item->GetVideoInfoTag()->m_strFileNameAndPath);
home->SetProperty("LatestMovie." + value + ".Trailer" , item->GetVideoInfoTag()->m_strTrailer);
if (!item->HasThumbnail())
m_thumbLoader.LoadItem(item.get());
home->SetProperty("LatestMovie." + value + ".Thumb" , item->GetThumbnailImage());
home->SetProperty("LatestMovie." + value + ".Fanart" , item->GetProperty("fanart_image"));
}
}
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;
CStdString strSeason;
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->HasThumbnail())
m_thumbLoader.LoadItem(item.get());
int seasonID = videodatabase.GetSeasonId(item->GetVideoInfoTag()->m_iIdShow, EpisodeSeason);
std::string seasonThumb = videodatabase.GetArtForItem(seasonID, "season", "thumb");
std::string showThumb = videodatabase.GetArtForItem(item->GetVideoInfoTag()->m_iIdShow, "tvshow", "thumb");
home->SetProperty("LatestEpisode." + value + ".Thumb" , item->GetThumbnailImage());
home->SetProperty("LatestEpisode." + value + ".ShowThumb" , showThumb);
home->SetProperty("LatestEpisode." + value + ".SeasonThumb" , seasonThumb);
home->SetProperty("LatestEpisode." + value + ".Fanart" , item->GetProperty("fanart_image"));
}
}
for (; i < NUM_ITEMS; ++i)
{
CStdString value;
//.........这里部分代码省略.........
示例15: FillDetails
void CFileItemHandler::FillDetails(ISerializable* info, CFileItemPtr item, const CVariant& fields, CVariant &result)
{
if (info == NULL || fields.size() == 0)
return;
CVariant serialization;
info->Serialize(serialization);
bool fetchedArt = false;
for (unsigned int i = 0; i < fields.size(); i++)
{
CStdString field = fields[i].asString();
if (item)
{
if (item->IsAlbum() && field.Equals("albumlabel"))
field = "label";
if (item->IsAlbum())
{
if (field == "label")
{
result["albumlabel"] = item->GetProperty("album_label");
continue;
}
if (item->HasProperty("album_" + field + "_array"))
{
result[field] = item->GetProperty("album_" + field + "_array");
continue;
}
if (item->HasProperty("album_" + field))
{
result[field] = item->GetProperty("album_" + field);
continue;
}
}
if (item->HasProperty("artist_" + field + "_array"))
{
result[field] = item->GetProperty("artist_" + field + "_array");
continue;
}
if (item->HasProperty("artist_" + field))
{
result[field] = item->GetProperty("artist_" + field);
continue;
}
if (field == "thumbnail")
{
if (item->HasVideoInfoTag())
{
if (!item->HasThumbnail() && !fetchedArt && item->GetVideoInfoTag()->m_iDbId > -1)
{
CVideoThumbLoader loader;
loader.FillLibraryArt(item.get());
fetchedArt = true;
}
}
else if (item->HasPictureInfoTag())
{
if (!item->HasThumbnail())
item->SetThumbnailImage(CTextureCache::GetWrappedThumbURL(item->GetPath()));
}
else if (item->HasMusicInfoTag())
{
if (!item->HasThumbnail() && !fetchedArt && item->GetMusicInfoTag()->GetDatabaseId() > -1)
{
CMusicThumbLoader loader;
loader.FillLibraryArt(*item);
fetchedArt = true;
}
}
if (item->HasThumbnail())
result["thumbnail"] = CTextureCache::GetWrappedImageURL(item->GetThumbnailImage());
if (!result.isMember("thumbnail"))
result["thumbnail"] = "";
continue;
}
if (field == "fanart")
{
if (item->HasVideoInfoTag())
{
if (!item->HasProperty("fanart_image") && !fetchedArt && item->GetVideoInfoTag()->m_iDbId > -1)
{
CVideoThumbLoader loader;
loader.FillLibraryArt(item.get());
fetchedArt = true;
}
if (item->HasProperty("fanart_image"))
result["fanart"] = CTextureCache::GetWrappedImageURL(item->GetProperty("fanart_image").asString());
}
else if (item->HasMusicInfoTag())
{
if (!item->HasProperty("fanart_image") && !fetchedArt && item->GetMusicInfoTag()->GetDatabaseId() > -1)
{
CMusicThumbLoader loader;
loader.FillLibraryArt(*item);
fetchedArt = true;
//.........这里部分代码省略.........