Merge pull request #25808 from CastagnaIT/fix_url_parse
[xbmc.git] / xbmc / filesystem / PlaylistFileDirectory.cpp
blob18e5d7affa0cb58d795ffc2d43c15b20ff95d0d6
1 /*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
9 #include "PlaylistFileDirectory.h"
11 #include "FileItem.h"
12 #include "FileItemList.h"
13 #include "URL.h"
14 #include "filesystem/File.h"
15 #include "playlists/PlayList.h"
16 #include "playlists/PlayListFactory.h"
18 using namespace KODI;
20 namespace XFILE
22 CPlaylistFileDirectory::CPlaylistFileDirectory() = default;
24 CPlaylistFileDirectory::~CPlaylistFileDirectory() = default;
26 bool CPlaylistFileDirectory::GetDirectory(const CURL& url, CFileItemList& items)
28 std::unique_ptr<PLAYLIST::CPlayList> pPlayList(PLAYLIST::CPlayListFactory::Create(url));
29 if (nullptr != pPlayList)
31 // load it
32 if (!pPlayList->Load(url.Get()))
33 return false; //hmmm unable to load playlist?
35 PLAYLIST::CPlayList playlist = *pPlayList;
36 // convert playlist items to songs
37 for (int i = 0; i < playlist.size(); ++i)
39 CFileItemPtr item = playlist[i];
40 item->m_iprogramCount = i; // hack for playlist order
41 items.Add(item);
44 return true;
47 bool CPlaylistFileDirectory::ContainsFiles(const CURL& url)
49 std::unique_ptr<PLAYLIST::CPlayList> pPlayList(PLAYLIST::CPlayListFactory::Create(url));
50 if (nullptr != pPlayList)
52 // load it
53 if (!pPlayList->Load(url.Get()))
54 return false; //hmmm unable to load playlist?
56 return (pPlayList->size() > 1);
58 return false;
61 bool CPlaylistFileDirectory::Remove(const CURL& url)
63 return XFILE::CFile::Delete(url);
65 } // namespace XFILE