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.
9 #include "XbtDirectory.h"
13 #include "filesystem/Directorization.h"
14 #include "filesystem/XbtManager.h"
15 #include "guilib/XBTF.h"
22 static CFileItemPtr
XBTFFileToFileItem(const CXBTFFile
& entry
, const std::string
& label
, const std::string
& path
, bool isFolder
)
24 CFileItemPtr
item(new CFileItem(label
));
26 item
->m_dwSize
= static_cast<int64_t>(entry
.GetUnpackedSize());
31 CXbtDirectory::CXbtDirectory() = default;
33 CXbtDirectory::~CXbtDirectory() = default;
35 bool CXbtDirectory::GetDirectory(const CURL
& urlOrig
, CFileItemList
& items
)
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
);
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
))
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
);
62 bool CXbtDirectory::ContainsFiles(const CURL
& url
)
64 return CXbtManager::GetInstance().HasFiles(url
);