[PVR][Estuary] Timer settings dialog: Show client name in timer type selection dialog...
[xbmc.git] / xbmc / filesystem / XbtDirectory.cpp
blob5c7d39555c5affd7d307ed538fdca53308bfcece
1 /*
2 * Copyright (C) 2015-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 "XbtDirectory.h"
11 #include "FileItem.h"
12 #include "URL.h"
13 #include "filesystem/Directorization.h"
14 #include "filesystem/XbtManager.h"
15 #include "guilib/XBTF.h"
17 #include <stdio.h>
19 namespace XFILE
22 static CFileItemPtr XBTFFileToFileItem(const CXBTFFile& entry, const std::string& label, const std::string& path, bool isFolder)
24 CFileItemPtr item(new CFileItem(label));
25 if (!isFolder)
26 item->m_dwSize = static_cast<int64_t>(entry.GetUnpackedSize());
28 return item;
31 CXbtDirectory::CXbtDirectory() = default;
33 CXbtDirectory::~CXbtDirectory() = default;
35 bool CXbtDirectory::GetDirectory(const CURL& urlOrig, CFileItemList& items)
37 CURL urlXbt(urlOrig);
39 // if this isn't a proper xbt:// path, assume it's the path to a xbt file
40 if (!urlOrig.IsProtocol("xbt"))
41 urlXbt = URIUtils::CreateArchivePath("xbt", urlOrig);
43 CURL url(urlXbt);
44 url.SetOptions(""); // delete options to have a clean path to add stuff too
45 url.SetFileName(""); // delete filename too as our names later will contain it
47 std::vector<CXBTFFile> files;
48 if (!CXbtManager::GetInstance().GetFiles(url, files))
49 return false;
51 // prepare the files for directorization
52 DirectorizeEntries<CXBTFFile> entries;
53 entries.reserve(files.size());
54 for (const auto& file : files)
55 entries.push_back(DirectorizeEntry<CXBTFFile>(file.GetPath(), file));
57 Directorize(urlXbt, entries, XBTFFileToFileItem, items);
59 return true;
62 bool CXbtDirectory::ContainsFiles(const CURL& url)
64 return CXbtManager::GetInstance().HasFiles(url);