From 926ab4845c094c1b4fc5fd45b9e4ec051a9553e2 Mon Sep 17 00:00:00 2001 From: montellese Date: Sun, 21 Jul 2013 22:16:48 +0200 Subject: [PATCH] CFileItem: add IsLibraryFolder() --- xbmc/FileItem.cpp | 8 ++++++++ xbmc/FileItem.h | 1 + xbmc/utils/URIUtils.cpp | 6 ++++++ xbmc/utils/URIUtils.h | 1 + xbmc/video/GUIViewStateVideo.cpp | 8 ++++---- xbmc/video/windows/GUIWindowVideoNav.cpp | 2 +- xbmc/view/GUIViewState.cpp | 2 +- 7 files changed, 22 insertions(+), 6 deletions(-) diff --git a/xbmc/FileItem.cpp b/xbmc/FileItem.cpp index 5a9301e7a8269..015eb1c91a7e2 100644 --- a/xbmc/FileItem.cpp +++ b/xbmc/FileItem.cpp @@ -941,6 +941,14 @@ bool CFileItem::IsSmartPlayList() const return URIUtils::HasExtension(m_strPath, ".xsp"); } +bool CFileItem::IsLibraryFolder() const +{ + if (HasProperty("library.filter") && GetProperty("library.filter").asBoolean()) + return true; + + return URIUtils::IsLibraryFolder(m_strPath); +} + bool CFileItem::IsPlayList() const { return CPlayListFactory::IsPlaylist(*this); diff --git a/xbmc/FileItem.h b/xbmc/FileItem.h index 4253fe12340ba..3d9c5651055a6 100644 --- a/xbmc/FileItem.h +++ b/xbmc/FileItem.h @@ -147,6 +147,7 @@ class CFileItem : bool IsInternetStream(const bool bStrictCheck = false) const; bool IsPlayList() const; bool IsSmartPlayList() const; + bool IsLibraryFolder() const; bool IsPythonScript() const; bool IsPlugin() const; bool IsScript() const; diff --git a/xbmc/utils/URIUtils.cpp b/xbmc/utils/URIUtils.cpp index c8bbe62b503a4..1b1707ceb55ce 100644 --- a/xbmc/utils/URIUtils.cpp +++ b/xbmc/utils/URIUtils.cpp @@ -853,6 +853,12 @@ bool URIUtils::IsAndroidApp(const CStdString &path) return path.Left(11).Equals("androidapp:"); } +bool URIUtils::IsLibraryFolder(const CStdString& strFile) +{ + CURL url(strFile); + return url.GetProtocol().Equals("library"); +} + bool URIUtils::IsDOSPath(const CStdString &path) { if (path.size() > 1 && path[1] == ':' && isalpha(path[0])) diff --git a/xbmc/utils/URIUtils.h b/xbmc/utils/URIUtils.h index cd9929fbdd282..b0c8f9309c67a 100644 --- a/xbmc/utils/URIUtils.h +++ b/xbmc/utils/URIUtils.h @@ -114,6 +114,7 @@ class URIUtils static bool IsArchive(const CStdString& strFile); static bool IsBluray(const CStdString& strFile); static bool IsAndroidApp(const CStdString& strFile); + static bool IsLibraryFolder(const CStdString& strFile); static void AddSlashAtEnd(CStdString& strFolder); static bool HasSlashAtEnd(const CStdString& strFile, bool checkURL = false); diff --git a/xbmc/video/GUIViewStateVideo.cpp b/xbmc/video/GUIViewStateVideo.cpp index 303262c3f1a75..06a18051469d4 100644 --- a/xbmc/video/GUIViewStateVideo.cpp +++ b/xbmc/video/GUIViewStateVideo.cpp @@ -479,7 +479,7 @@ CGUIViewStateVideoMovies::CGUIViewStateVideoMovies(const CFileItemList& items) : AddSortMethod(SortByYear, 562, LABEL_MASKS("%T", "%Y", "%T", "%Y")); // Title, Year | Title, Year const CViewState *viewState = CViewStateSettings::Get().Get("videonavtitles"); - if (items.IsSmartPlayList() || items.GetProperty("library.filter").asBoolean()) + if (items.IsSmartPlayList() || items.IsLibraryFolder()) AddPlaylistOrder(items, LABEL_MASKS("%T", "%R", "%T", "%R")); // Title, Rating | Title, Rating else { @@ -516,7 +516,7 @@ CGUIViewStateVideoMusicVideos::CGUIViewStateVideoMusicVideos(const CFileItemList AddSortMethod(SortByTrackNumber, 554, LABEL_MASKS(strTrackLeft, strTrackRight)); // Userdefined, Userdefined | empty, empty const CViewState *viewState = CViewStateSettings::Get().Get("videonavmusicvideos"); - if (items.IsSmartPlayList() || items.GetProperty("library.filter").asBoolean()) + if (items.IsSmartPlayList() || items.IsLibraryFolder()) AddPlaylistOrder(items, LABEL_MASKS("%A - %T", "%Y")); // Artist - Title, Year | empty, empty else { @@ -541,7 +541,7 @@ CGUIViewStateVideoTVShows::CGUIViewStateVideoTVShows(const CFileItemList& items) AddSortMethod(SortByYear, 562, LABEL_MASKS("%T", "%Y", "%T", "%Y")); // Title, Year | Title, Year const CViewState *viewState = CViewStateSettings::Get().Get("videonavtvshows"); - if (items.IsSmartPlayList() || items.GetProperty("library.filter").asBoolean()) + if (items.IsSmartPlayList() || items.IsLibraryFolder()) AddPlaylistOrder(items, LABEL_MASKS("%T", "%M", "%T", "%M")); // Title, #Episodes | Title, #Episodes else { @@ -581,7 +581,7 @@ CGUIViewStateVideoEpisodes::CGUIViewStateVideoEpisodes(const CFileItemList& item } const CViewState *viewState = CViewStateSettings::Get().Get("videonavepisodes"); - if (items.IsSmartPlayList() || items.GetProperty("library.filter").asBoolean()) + if (items.IsSmartPlayList() || items.IsLibraryFolder()) AddPlaylistOrder(items, LABEL_MASKS("%Z - %H. %T", "%R")); // TvShow - Order. Title, Rating | empty, empty else { diff --git a/xbmc/video/windows/GUIWindowVideoNav.cpp b/xbmc/video/windows/GUIWindowVideoNav.cpp index c107e2e6667e9..bcba55540f285 100644 --- a/xbmc/video/windows/GUIWindowVideoNav.cpp +++ b/xbmc/video/windows/GUIWindowVideoNav.cpp @@ -1699,7 +1699,7 @@ bool CGUIWindowVideoNav::ApplyWatchedFilter(CFileItemList &items) if (!items.IsVideoDb()) filterWatched = true; if (items.GetContent() == "tvshows" && - (items.IsSmartPlayList() || (items.HasProperty("library.filter") && items.GetProperty("library.filter").asBoolean()))) + (items.IsSmartPlayList() || items.IsLibraryFolder())) node = NODE_TYPE_TITLE_TVSHOWS; // so that the check below works int watchMode = CMediaSettings::Get().GetWatchedMode(m_vecItems->GetContent()); diff --git a/xbmc/view/GUIViewState.cpp b/xbmc/view/GUIViewState.cpp index 95c8a9a057437..e2f8677b144b7 100644 --- a/xbmc/view/GUIViewState.cpp +++ b/xbmc/view/GUIViewState.cpp @@ -82,7 +82,7 @@ CGUIViewState* CGUIViewState::GetViewState(int windowId, const CFileItemList& it return new CGUIViewStateMusicSearch(items); if (items.IsSmartPlayList() || url.GetProtocol() == "upnp" || - items.GetProperty("library.filter").asBoolean()) + items.IsLibraryFolder()) { if (items.GetContent() == "songs" || items.GetContent() == "albums" ||