bool CVFSEntry::GetDirectory(const CStdString& strPath, CFileItemList& items) { if (!Initialized()) return false; CURL url(strPath); VFSCallbacks callbacks; callbacks.ctx = this; callbacks.GetKeyboardInput = CVFSEntryIDirectoryWrapper::DoGetKeyboardInput; callbacks.SetErrorDialog = CVFSEntryIDirectoryWrapper::DoSetErrorDialog; callbacks.RequireAuthentication = CVFSEntryIDirectoryWrapper::DoRequireAuthentication; VFSDirEntry* entries; int num_entries; CVFSURLWrapper url2(url); void* ctx = m_pStruct->GetDirectory(&url2.url, &entries, &num_entries, &callbacks); if (ctx) { VFSDirEntriesToCFileItemList(num_entries, entries, items); m_pStruct->FreeDirectory(ctx); return true; } return false; }
bool CVFSEntry::ContainsFiles(const std::string& path, CFileItemList& items) { if (!Initialized()) return false; VFSDirEntry* entries; int num_entries; CURL url(path); CVFSURLWrapper url2(url); void* ctx = m_pStruct->ContainsFiles(&url2.url, &entries, &num_entries); if (!ctx) return false; VFSDirEntriesToCFileItemList(num_entries, entries, items); m_pStruct->FreeDirectory(ctx); return true; }
bool CVFSEntry::ContainsFiles(const CURL& url, CFileItemList& items) { if (!m_struct.toAddon.contains_files || !m_struct.toAddon.free_directory) return false; VFSDirEntry* entries = nullptr; int num_entries = 0; CVFSURLWrapper url2(url); char rootpath[ADDON_STANDARD_STRING_LENGTH]; rootpath[0] = 0; bool ret = m_struct.toAddon.contains_files(&m_struct, &url2.url, &entries, &num_entries, rootpath); if (!ret) return false; VFSDirEntriesToCFileItemList(num_entries, entries, items); m_struct.toAddon.free_directory(&m_struct, entries, num_entries); if (strlen(rootpath)) items.SetPath(rootpath); return true; }
bool CVFSEntry::GetDirectory(const CURL& url, CFileItemList& items, void* ctx) { if (!m_struct.toAddon.get_directory || !m_struct.toAddon.free_directory) return false; VFSGetDirectoryCallbacks callbacks; callbacks.ctx = ctx; callbacks.get_keyboard_input = CVFSEntryIDirectoryWrapper::DoGetKeyboardInput; callbacks.set_error_dialog = CVFSEntryIDirectoryWrapper::DoSetErrorDialog; callbacks.require_authentication = CVFSEntryIDirectoryWrapper::DoRequireAuthentication; VFSDirEntry* entries = nullptr; int num_entries = 0; CVFSURLWrapper url2(url); bool ret = m_struct.toAddon.get_directory(&m_struct, &url2.url, &entries, &num_entries, &callbacks); if (ret) { VFSDirEntriesToCFileItemList(num_entries, entries, items); m_struct.toAddon.free_directory(&m_struct, entries, num_entries); } return ret; }