aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArne Morten Kvarving <spiff@kodi.tv>2024-04-22 20:04:10 +0200
committerGitHub <noreply@github.com>2024-04-22 20:04:10 +0200
commita5fb12b4637c62a47a59fcc50f2c88246e9d6fff (patch)
treea220c28eb978385abe364a17585057a7b579cffc
parent5e6d5de2c6a151683b77ac34abce8fae8294b7b9 (diff)
parent57a427b8ddc0afa8db4302113605f6a1e0d3e8a0 (diff)
downloadxbmc-a5fb12b4637c62a47a59fcc50f2c88246e9d6fff.tar.xz
Merge pull request #25031 from notspiff/move_is_video_asset
move IsVideoAssetsFile to VideoFileItemClassify
-rw-r--r--xbmc/video/ContextMenus.cpp6
-rw-r--r--xbmc/video/VideoFileItemClassify.cpp11
-rw-r--r--xbmc/video/VideoFileItemClassify.h5
-rw-r--r--xbmc/video/VideoThumbLoader.cpp2
-rw-r--r--xbmc/video/dialogs/GUIDialogVideoInfo.cpp17
-rw-r--r--xbmc/video/guilib/VideoVersionHelper.cpp14
-rw-r--r--xbmc/video/guilib/VideoVersionHelper.h7
-rw-r--r--xbmc/video/test/TestVideoFileItemClassify.cpp7
-rw-r--r--xbmc/video/windows/GUIWindowVideoBase.cpp2
9 files changed, 36 insertions, 35 deletions
diff --git a/xbmc/video/ContextMenus.cpp b/xbmc/video/ContextMenus.cpp
index 94810a4c7b..1ab69f504e 100644
--- a/xbmc/video/ContextMenus.cpp
+++ b/xbmc/video/ContextMenus.cpp
@@ -240,7 +240,7 @@ bool CVideoChooseVersion::IsVisible(const CFileItem& item) const
return item.HasVideoVersions() &&
!CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(
CSettings::SETTING_VIDEOLIBRARY_SHOWVIDEOVERSIONSASFOLDER) &&
- !VIDEO::IsVideoAssetFile(item);
+ !IsVideoAssetFile(item);
}
bool CVideoChooseVersion::Execute(const std::shared_ptr<CFileItem>& item) const
@@ -434,7 +434,7 @@ bool CVideoPlayUsing::IsVisible(const CFileItem& item) const
if (item.HasVideoVersions() &&
!CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(
CSettings::SETTING_VIDEOLIBRARY_SHOWVIDEOVERSIONSASFOLDER) &&
- !VIDEO::IsVideoAssetFile(item))
+ !IsVideoAssetFile(item))
return false;
if (item.IsLiveTV())
@@ -456,7 +456,7 @@ bool CVideoPlayVersionUsing::IsVisible(const CFileItem& item) const
return item.HasVideoVersions() &&
!CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(
CSettings::SETTING_VIDEOLIBRARY_SHOWVIDEOVERSIONSASFOLDER) &&
- !VIDEO::IsVideoAssetFile(item);
+ !IsVideoAssetFile(item);
}
bool CVideoPlayVersionUsing::Execute(const std::shared_ptr<CFileItem>& itemIn) const
diff --git a/xbmc/video/VideoFileItemClassify.cpp b/xbmc/video/VideoFileItemClassify.cpp
index 64c3935b3c..d57306013d 100644
--- a/xbmc/video/VideoFileItemClassify.cpp
+++ b/xbmc/video/VideoFileItemClassify.cpp
@@ -10,6 +10,7 @@
#include "FileItem.h"
#include "ServiceBroker.h"
+#include "URL.h"
#include "utils/FileExtensionProvider.h"
#include "utils/FileUtils.h"
#include "utils/StringUtils.h"
@@ -122,6 +123,16 @@ bool IsVideo(const CFileItem& item)
CServiceBroker::GetFileExtensionProvider().GetVideoExtensions());
}
+bool IsVideoAssetFile(const CFileItem& item)
+{
+ if (item.m_bIsFolder || !IsVideoDb(item))
+ return false;
+
+ // @todo maybe in the future look for prefix videodb://movies/videoversions in path instead
+ // @todo better encoding of video assets as path, they won't always be tied with movies.
+ return CURL(item.GetPath()).HasOption("videoversionid");
+}
+
bool IsVideoDb(const CFileItem& item)
{
return URIUtils::IsVideoDb(item.GetPath());
diff --git a/xbmc/video/VideoFileItemClassify.h b/xbmc/video/VideoFileItemClassify.h
index df9ff3445f..55e5aeded7 100644
--- a/xbmc/video/VideoFileItemClassify.h
+++ b/xbmc/video/VideoFileItemClassify.h
@@ -33,6 +33,11 @@ bool IsSubtitle(const CFileItem& item);
//! so that may include eg. folders.
bool IsVideo(const CFileItem& item);
+//! \brief Is the item a video asset, excluding folders
+//! \param[in] item the item
+//! \return true if it is, false otherwise
+bool IsVideoAssetFile(const CFileItem& item);
+
//! \brief Check whether an item is a video database item.
bool IsVideoDb(const CFileItem& item);
diff --git a/xbmc/video/VideoThumbLoader.cpp b/xbmc/video/VideoThumbLoader.cpp
index 5719aa5a4e..7119716136 100644
--- a/xbmc/video/VideoThumbLoader.cpp
+++ b/xbmc/video/VideoThumbLoader.cpp
@@ -414,7 +414,7 @@ bool CVideoThumbLoader::FillLibraryArt(CFileItem &item)
m_videoDatabase->Open();
// @todo unify asset path for other items path
- if (VIDEO::IsVideoAssetFile(item))
+ if (IsVideoAssetFile(item))
{
if (m_videoDatabase->GetArtForAsset(
tag.m_iFileId,
diff --git a/xbmc/video/dialogs/GUIDialogVideoInfo.cpp b/xbmc/video/dialogs/GUIDialogVideoInfo.cpp
index d4c19e825d..2585679c6e 100644
--- a/xbmc/video/dialogs/GUIDialogVideoInfo.cpp
+++ b/xbmc/video/dialogs/GUIDialogVideoInfo.cpp
@@ -282,7 +282,7 @@ void CGUIDialogVideoInfo::OnInitWindow()
CONTROL_DISABLE(CONTROL_BTN_REFRESH);
// @todo add support to edit video asset art. Until then edit art through Versions Manager.
- if (!VIDEO::IsVideoAssetFile(*m_movieItem))
+ if (!IsVideoAssetFile(*m_movieItem))
CONTROL_ENABLE_ON_CONDITION(
CONTROL_BTN_GET_THUMB,
(profileManager->GetCurrentProfile().canWriteDatabases() ||
@@ -1082,18 +1082,18 @@ int CGUIDialogVideoInfo::ManageVideoItem(const std::shared_ptr<CFileItem>& item)
int dbId = item->GetVideoInfoTag()->m_iDbId;
CContextButtons buttons;
- if ((type == MediaTypeMovie && !VIDEO::IsVideoAssetFile(*item)) ||
- type == MediaTypeVideoCollection || type == MediaTypeTvShow || type == MediaTypeEpisode ||
+ if ((type == MediaTypeMovie && !IsVideoAssetFile(*item)) || type == MediaTypeVideoCollection ||
+ type == MediaTypeTvShow || type == MediaTypeEpisode ||
(type == MediaTypeSeason &&
item->GetVideoInfoTag()->m_iSeason > 0) || // seasons without "all seasons" and "specials"
type == MediaTypeMusicVideo)
buttons.Add(CONTEXT_BUTTON_EDIT, 16105);
- if ((type == MediaTypeMovie && !VIDEO::IsVideoAssetFile(*item)) || type == MediaTypeTvShow ||
+ if ((type == MediaTypeMovie && !IsVideoAssetFile(*item)) || type == MediaTypeTvShow ||
type == MediaTypeSeason)
buttons.Add(CONTEXT_BUTTON_EDIT_SORTTITLE, 16107);
- if (type == MediaTypeMovie && !VIDEO::IsVideoAssetFile(*item))
+ if (type == MediaTypeMovie && !IsVideoAssetFile(*item))
{
// only show link/unlink if there are tvshows available
if (database.HasContent(VideoDbContentType::TVSHOWS))
@@ -1117,9 +1117,8 @@ int CGUIDialogVideoInfo::ManageVideoItem(const std::shared_ptr<CFileItem>& item)
item->GetVideoInfoTag()->m_iBookmarkId > 0)
buttons.Add(CONTEXT_BUTTON_UNLINK_BOOKMARK, 20405);
- if (type == MediaTypeVideoCollection ||
- (type == MediaTypeMovie && !VIDEO::IsVideoAssetFile(*item)) || type == MediaTypeTvShow ||
- type == MediaTypeSeason || type == MediaTypeEpisode)
+ if (type == MediaTypeVideoCollection || (type == MediaTypeMovie && !IsVideoAssetFile(*item)) ||
+ type == MediaTypeTvShow || type == MediaTypeSeason || type == MediaTypeEpisode)
buttons.Add(CONTEXT_BUTTON_SET_ART, 13511);
// movie sets
@@ -1143,7 +1142,7 @@ int CGUIDialogVideoInfo::ManageVideoItem(const std::shared_ptr<CFileItem>& item)
}
}
- if (type != MediaTypeSeason && !VIDEO::IsVideoAssetFile(*item))
+ if (type != MediaTypeSeason && !IsVideoAssetFile(*item))
{
// Remove from library
buttons.Add(CONTEXT_BUTTON_DELETE, 646);
diff --git a/xbmc/video/guilib/VideoVersionHelper.cpp b/xbmc/video/guilib/VideoVersionHelper.cpp
index faf4c1e6de..6a4923052b 100644
--- a/xbmc/video/guilib/VideoVersionHelper.cpp
+++ b/xbmc/video/guilib/VideoVersionHelper.cpp
@@ -281,17 +281,3 @@ std::shared_ptr<CFileItem> CVideoVersionHelper::ChooseVideoFromAssets(
return item;
}
-
-bool VIDEO::IsVideoAssetFile(const CFileItem& item)
-{
- if (item.m_bIsFolder || !IsVideoDb(item))
- return false;
-
- // @todo maybe in the future look for prefix videodb://movies/videoversions in path instead
- // @todo better encoding of video assets as path, they won't always be tied with movies.
- const CURL itemUrl{item.GetPath()};
- if (itemUrl.HasOption("videoversionid"))
- return true;
-
- return false;
-}
diff --git a/xbmc/video/guilib/VideoVersionHelper.h b/xbmc/video/guilib/VideoVersionHelper.h
index 8d81ec1b65..b3ab15e503 100644
--- a/xbmc/video/guilib/VideoVersionHelper.h
+++ b/xbmc/video/guilib/VideoVersionHelper.h
@@ -23,11 +23,4 @@ public:
};
} // namespace GUILIB
-/*!
- * \brief Is the item a video asset, excluding folders
- * \param[in] item the item
- * \return true if it is, false otherwise
- */
-bool IsVideoAssetFile(const CFileItem& item);
-
} // namespace VIDEO
diff --git a/xbmc/video/test/TestVideoFileItemClassify.cpp b/xbmc/video/test/TestVideoFileItemClassify.cpp
index 37b9b7e2e0..3fae8d23a0 100644
--- a/xbmc/video/test/TestVideoFileItemClassify.cpp
+++ b/xbmc/video/test/TestVideoFileItemClassify.cpp
@@ -196,6 +196,13 @@ TEST(TestVideoFileItemClassify, IsSubtitle)
EXPECT_FALSE(VIDEO::IsSubtitle(CFileItem("random.notasub", false)));
}
+TEST(TestVideoFileItemClassify, IsVideoAssetsFile)
+{
+ EXPECT_TRUE(VIDEO::IsVideoAssetFile(CFileItem("videodb://foo/bar?videoversionid=1", false)));
+ EXPECT_FALSE(VIDEO::IsVideoAssetFile(CFileItem("videodb://foo/bar?videoversionid=1", true)));
+ EXPECT_FALSE(VIDEO::IsVideoAssetFile(CFileItem("videodb://foo/bar", false)));
+}
+
TEST(TestVideoFileItemClassify, IsVideoDb)
{
EXPECT_TRUE(VIDEO::IsVideoDb(CFileItem("videodb://1/2/3", false)));
diff --git a/xbmc/video/windows/GUIWindowVideoBase.cpp b/xbmc/video/windows/GUIWindowVideoBase.cpp
index 2e320c603e..13c1bd25d2 100644
--- a/xbmc/video/windows/GUIWindowVideoBase.cpp
+++ b/xbmc/video/windows/GUIWindowVideoBase.cpp
@@ -428,7 +428,7 @@ bool CGUIWindowVideoBase::ShowInfo(const CFileItemPtr& item2, const ScraperPtr&
if (bHasInfo)
{
// @todo add support to refresh movie version information
- if (!info || info->Content() == CONTENT_NONE || VIDEO::IsVideoAssetFile(*item))
+ if (!info || info->Content() == CONTENT_NONE || IsVideoAssetFile(*item))
item->SetProperty("xxuniqueid", "xx" + movieDetails.GetUniqueID()); // disable refresh button
item->SetProperty("CheckAutoPlayNextItem", IsActive());
*item->GetVideoInfoTag() = movieDetails;