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)17 CDirectoryNodeAlbumTop100::CDirectoryNodeAlbumTop100(const std::string& strName, CDirectoryNode* pParent)
18   : CDirectoryNode(NODE_TYPE_ALBUM_TOP100, strName, pParent)
19 {
20 
21 }
22 
GetChildType() const23 NODE_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() const31 std::string CDirectoryNodeAlbumTop100::GetLocalizedName() const
32 {
33   CMusicDatabase db;
34   if (db.Open())
35     return db.GetAlbumById(GetID());
36   return "";
37 }
38 
GetContent(CFileItemList & items) const39 bool 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