bool CFileItem::IsMusicDb() const
{
- CURL url(m_strPath);
- return url.GetProtocol().Equals("musicdb");
+ return URIUtils::IsMusicDb(m_strPath);
}
bool CFileItem::IsVideoDb() const
{
- CURL url(m_strPath);
- return url.GetProtocol().Equals("videodb");
+ return URIUtils::IsVideoDb(m_strPath);
}
bool CFileItem::IsVirtualDirectoryRoot() const
return (item->GetProperty("item_start") == GetProperty("item_start"));
return true;
}
+ if (HasVideoInfoTag() && item->HasVideoInfoTag())
+ {
+ if (m_videoInfoTag->m_iDbId != -1 && item->m_videoInfoTag->m_iDbId != -1)
+ return ((m_videoInfoTag->m_iDbId == item->m_videoInfoTag->m_iDbId) &&
+ (m_videoInfoTag->m_type == item->m_videoInfoTag->m_type));
+ }
if (IsMusicDb() && HasMusicInfoTag())
{
CFileItem dbItem(m_musicInfoTag->GetURL(), false);
return thumbFile;
}
+bool CFileItem::SkipLocalArt() const
+{
+ return (m_strPath.empty()
+ || StringUtils::StartsWithNoCase(m_strPath, "newsmartplaylist://")
+ || StringUtils::StartsWithNoCase(m_strPath, "newplaylist://")
+ || m_bIsShareOrDrive
+ || IsInternetStream()
+ || URIUtils::IsUPnP(m_strPath)
+ || (URIUtils::IsFTP(m_strPath) && !g_advancedSettings.m_bFTPThumbs)
+ || IsPlugin()
+ || IsAddonsPath()
+ || IsParentFolder()
+ || IsLiveTV()
+ || IsDVD());
+}
+
CStdString CFileItem::FindLocalArt(const std::string &artFile, bool useFolder) const
{
- // ignore a bunch that are meaningless
- if (m_strPath.empty()
- || StringUtils::StartsWithNoCase(m_strPath, "newsmartplaylist://")
- || StringUtils::StartsWithNoCase(m_strPath, "newplaylist://")
- || m_bIsShareOrDrive
- || IsInternetStream()
- || URIUtils::IsUPnP(m_strPath)
- || (URIUtils::IsFTP(m_strPath) && !g_advancedSettings.m_bFTPThumbs)
- || IsPlugin()
- || IsAddonsPath()
- || IsParentFolder()
- || IsLiveTV()
- || IsDVD())
+ if (SkipLocalArt())
return "";
CStdString thumb;
return type;
}
+bool CFileItem::IsResumePointSet() const
+{
+ return (HasVideoInfoTag() && GetVideoInfoTag()->m_resumePoint.IsSet()) ||
+ (HasPVRRecordingInfoTag() && GetPVRRecordingInfoTag()->GetLastPlayedPosition() > 0);
+}
+
+double CFileItem::GetCurrentResumeTime() const
+{
+ if (HasPVRRecordingInfoTag())
+ {
+ // This will retrieve 'fresh' resume information from the PVR server
+ int rc = GetPVRRecordingInfoTag()->GetLastPlayedPosition();
+ if (rc > 0)
+ return rc;
+ // Fall through to default value
+ }
+ if (HasVideoInfoTag() && GetVideoInfoTag()->m_resumePoint.IsSet())
+ {
+ return GetVideoInfoTag()->m_resumePoint.timeInSeconds;
+ }
+ // Resume from start when resume points are invalid or the PVR server returns an error
+ return 0;
+}