1 /* 2 * Copyright (C) 2005-2018 Team Kodi 3 * This file is part of Kodi - https://kodi.tv 4 * 5 * SPDX-License-Identifier: GPL-2.0-or-later 6 * See LICENSES/README.md for more information. 7 */ 8 9 #include "DirectoryNodeAlbumTop100.h" 10 11 #include "FileItem.h" 12 #include "music/MusicDatabase.h" 13 #include "utils/StringUtils.h" 14 15 using namespace XFILE::MUSICDATABASEDIRECTORY; 16 CDirectoryNodeAlbumTop100(const std::string & strName,CDirectoryNode * pParent)17CDirectoryNodeAlbumTop100::CDirectoryNodeAlbumTop100(const std::string& strName, CDirectoryNode* pParent) 18 : CDirectoryNode(NODE_TYPE_ALBUM_TOP100, strName, pParent) 19 { 20 21 } 22 GetChildType() const23NODE_TYPE CDirectoryNodeAlbumTop100::GetChildType() const 24 { 25 if (GetName()=="-1") 26 return NODE_TYPE_ALBUM_TOP100_SONGS; 27 28 return NODE_TYPE_SONG; 29 } 30 GetLocalizedName() const31std::string CDirectoryNodeAlbumTop100::GetLocalizedName() const 32 { 33 CMusicDatabase db; 34 if (db.Open()) 35 return db.GetAlbumById(GetID()); 36 return ""; 37 } 38 GetContent(CFileItemList & items) const39bool CDirectoryNodeAlbumTop100::GetContent(CFileItemList& items) const 40 { 41 CMusicDatabase musicdatabase; 42 if (!musicdatabase.Open()) 43 return false; 44 45 VECALBUMS albums; 46 if (!musicdatabase.GetTop100Albums(albums)) 47 { 48 musicdatabase.Close(); 49 return false; 50 } 51 52 for (int i=0; i<(int)albums.size(); ++i) 53 { 54 CAlbum& album=albums[i]; 55 std::string strDir = StringUtils::Format("%s%ld/", BuildPath().c_str(), album.idAlbum); 56 CFileItemPtr pItem(new CFileItem(strDir, album)); 57 items.Add(pItem); 58 } 59 60 musicdatabase.Close(); 61 62 return true; 63 } 64