diff options
Diffstat (limited to 'xbmc/filesystem/VideoDatabaseDirectory/DirectoryNodeMoviesOverview.cpp')
-rw-r--r-- | xbmc/filesystem/VideoDatabaseDirectory/DirectoryNodeMoviesOverview.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/xbmc/filesystem/VideoDatabaseDirectory/DirectoryNodeMoviesOverview.cpp b/xbmc/filesystem/VideoDatabaseDirectory/DirectoryNodeMoviesOverview.cpp new file mode 100644 index 0000000..20ef46e --- /dev/null +++ b/xbmc/filesystem/VideoDatabaseDirectory/DirectoryNodeMoviesOverview.cpp @@ -0,0 +1,80 @@ +/* + * 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 "DirectoryNodeMoviesOverview.h" + +#include "FileItem.h" +#include "guilib/LocalizeStrings.h" +#include "utils/StringUtils.h" +#include "video/VideoDatabase.h" +#include "video/VideoDbUrl.h" + +using namespace XFILE::VIDEODATABASEDIRECTORY; + +Node MovieChildren[] = { + { NODE_TYPE_GENRE, "genres", 135 }, + { NODE_TYPE_TITLE_MOVIES, "titles", 10024 }, + { NODE_TYPE_YEAR, "years", 652 }, + { NODE_TYPE_ACTOR, "actors", 344 }, + { NODE_TYPE_DIRECTOR, "directors", 20348 }, + { NODE_TYPE_STUDIO, "studios", 20388 }, + { NODE_TYPE_SETS, "sets", 20434 }, + { NODE_TYPE_COUNTRY, "countries", 20451 }, + { NODE_TYPE_TAGS, "tags", 20459 } + }; + +CDirectoryNodeMoviesOverview::CDirectoryNodeMoviesOverview(const std::string& strName, CDirectoryNode* pParent) + : CDirectoryNode(NODE_TYPE_MOVIES_OVERVIEW, strName, pParent) +{ + +} + +NODE_TYPE CDirectoryNodeMoviesOverview::GetChildType() const +{ + for (const Node& node : MovieChildren) + if (GetName() == node.id) + return node.node; + + return NODE_TYPE_NONE; +} + +std::string CDirectoryNodeMoviesOverview::GetLocalizedName() const +{ + for (const Node& node : MovieChildren) + if (GetName() == node.id) + return g_localizeStrings.Get(node.label); + return ""; +} + +bool CDirectoryNodeMoviesOverview::GetContent(CFileItemList& items) const +{ + CVideoDbUrl videoUrl; + if (!videoUrl.FromString(BuildPath())) + return false; + + for (unsigned int i = 0; i < sizeof(MovieChildren) / sizeof(Node); ++i) + { + if (i == 6) + { + CVideoDatabase db; + if (db.Open() && !db.HasSets()) + continue; + } + + CVideoDbUrl itemUrl = videoUrl; + std::string strDir = StringUtils::Format("{}/", MovieChildren[i].id); + itemUrl.AppendPath(strDir); + + CFileItemPtr pItem(new CFileItem(itemUrl.ToString(), true)); + pItem->SetLabel(g_localizeStrings.Get(MovieChildren[i].label)); + pItem->SetCanQueue(false); + items.Add(pItem); + } + + return true; +} |