diff options
Diffstat (limited to 'xbmc/filesystem/VideoDatabaseDirectory/DirectoryNodeSeasons.cpp')
-rw-r--r-- | xbmc/filesystem/VideoDatabaseDirectory/DirectoryNodeSeasons.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/xbmc/filesystem/VideoDatabaseDirectory/DirectoryNodeSeasons.cpp b/xbmc/filesystem/VideoDatabaseDirectory/DirectoryNodeSeasons.cpp new file mode 100644 index 0000000..25b8b09 --- /dev/null +++ b/xbmc/filesystem/VideoDatabaseDirectory/DirectoryNodeSeasons.cpp @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2005-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#include "DirectoryNodeSeasons.h" + +#include "FileItem.h" +#include "QueryParams.h" +#include "guilib/LocalizeStrings.h" +#include "utils/StringUtils.h" +#include "video/VideoDatabase.h" + +using namespace XFILE::VIDEODATABASEDIRECTORY; + +CDirectoryNodeSeasons::CDirectoryNodeSeasons(const std::string& strName, CDirectoryNode* pParent) + : CDirectoryNode(NODE_TYPE_SEASONS, strName, pParent) +{ + +} + +NODE_TYPE CDirectoryNodeSeasons::GetChildType() const +{ + return NODE_TYPE_EPISODES; +} + +std::string CDirectoryNodeSeasons::GetLocalizedName() const +{ + switch (GetID()) + { + case 0: + return g_localizeStrings.Get(20381); // Specials + case -1: + return g_localizeStrings.Get(20366); // All Seasons + case -2: + { + CDirectoryNode* pParent = GetParent(); + if (pParent) + return pParent->GetLocalizedName(); + return ""; + } + default: + return GetSeasonTitle(); + } +} + +std::string CDirectoryNodeSeasons::GetSeasonTitle() const +{ + std::string season; + CVideoDatabase db; + if (db.Open()) + { + CQueryParams params; + CollectQueryParams(params); + + season = db.GetTvShowNamedSeasonById(params.GetTvShowId(), params.GetSeason()); + } + if (season.empty()) + season = StringUtils::Format(g_localizeStrings.Get(20358), GetID()); // Season <n> + + return season; +} + +bool CDirectoryNodeSeasons::GetContent(CFileItemList& items) const +{ + CVideoDatabase videodatabase; + if (!videodatabase.Open()) + return false; + + CQueryParams params; + CollectQueryParams(params); + + bool bSuccess=videodatabase.GetSeasonsNav(BuildPath(), items, params.GetActorId(), params.GetDirectorId(), params.GetGenreId(), params.GetYear(), params.GetTvShowId()); + + videodatabase.Close(); + + return bSuccess; +} |