diff options
author | Arne Morten Kvarving <spiff@kodi.tv> | 2024-04-22 20:04:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-22 20:04:10 +0200 |
commit | a5fb12b4637c62a47a59fcc50f2c88246e9d6fff (patch) | |
tree | a220c28eb978385abe364a17585057a7b579cffc | |
parent | 5e6d5de2c6a151683b77ac34abce8fae8294b7b9 (diff) | |
parent | 57a427b8ddc0afa8db4302113605f6a1e0d3e8a0 (diff) | |
download | xbmc-a5fb12b4637c62a47a59fcc50f2c88246e9d6fff.tar.xz |
Merge pull request #25031 from notspiff/move_is_video_asset
move IsVideoAssetsFile to VideoFileItemClassify
-rw-r--r-- | xbmc/video/ContextMenus.cpp | 6 | ||||
-rw-r--r-- | xbmc/video/VideoFileItemClassify.cpp | 11 | ||||
-rw-r--r-- | xbmc/video/VideoFileItemClassify.h | 5 | ||||
-rw-r--r-- | xbmc/video/VideoThumbLoader.cpp | 2 | ||||
-rw-r--r-- | xbmc/video/dialogs/GUIDialogVideoInfo.cpp | 17 | ||||
-rw-r--r-- | xbmc/video/guilib/VideoVersionHelper.cpp | 14 | ||||
-rw-r--r-- | xbmc/video/guilib/VideoVersionHelper.h | 7 | ||||
-rw-r--r-- | xbmc/video/test/TestVideoFileItemClassify.cpp | 7 | ||||
-rw-r--r-- | xbmc/video/windows/GUIWindowVideoBase.cpp | 2 |
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; |