PresetArchiveDatabase: Added function to check is archive is selected

This commit is contained in:
YuSanka 2024-05-09 11:18:48 +02:00 committed by David Kocik
parent f1575584f2
commit 15d0932a9e
4 changed files with 12 additions and 16 deletions

View File

@ -3413,14 +3413,12 @@ static void unselect(PagePrinters* page)
{
const PresetArchiveDatabase* pad = wxGetApp().plater()->get_preset_archive_database();
const ArchiveRepositoryVector& archs = pad->get_archive_repositories();
const std::map<std::string, bool>& selected_repos = pad->get_selected_repositories_uuid();
bool unselect_all = true;
for (const auto& archive : archs) {
if (page->get_vendor_repo_id() == archive->get_manifest().id) {
auto selected_it = selected_repos.find(archive->get_uuid());
if (selected_it->second)
if (pad->is_selected_archive(archive->get_uuid()))
unselect_all = false;
//break; ! don't break here, because there can be several archives with same repo_id
}
@ -3464,17 +3462,12 @@ void ConfigWizard::priv::load_pages_from_archive()
auto pad = wxGetApp().plater()->get_preset_archive_database();
const ArchiveRepositoryVector& archs = pad->get_archive_repositories();
const std::map<std::string, bool>& selected_repos = pad->get_selected_repositories_uuid();
assert(archs.size() == selected_repos.size());
only_sla_mode = true;
bool is_primary_printer_page_set = false;
for (const auto& archive : archs) {
auto selected_it = selected_repos.find(archive->get_uuid());
assert(selected_it != selected_repos.end());
if (!selected_it->second)
if (!pad->is_selected_archive(archive->get_uuid()))
continue;
const auto& data = archive->get_manifest();

View File

@ -595,6 +595,12 @@ void PresetArchiveDatabase::read_server_manifest(const std::string& json_body)
save_app_manifest_json();
}
bool PresetArchiveDatabase::is_selected_archive(const std::string& uuid) const
{
auto selected_it = m_selected_repositories_uuid.find(uuid);
assert(selected_it != m_selected_repositories_uuid.end());
return selected_it->second;
}
void PresetArchiveDatabase::consolidate_selected_uuids_map()
{

View File

@ -109,6 +109,7 @@ public:
void sync_blocking();
//void set_local_archives(AppConfig* app_config);
void read_server_manifest(const std::string& json_body);
bool is_selected_archive(const std::string& uuid) const;
const std::map<std::string, bool>& get_selected_repositories_uuid() const { assert(m_selected_repositories_uuid.size() == m_archive_repositories.size()); return m_selected_repositories_uuid; }
bool set_selected_repositories(const std::vector<std::string>& used_uuids, std::string& msg);
std::string add_local_archive(const boost::filesystem::path path, std::string& msg);

View File

@ -62,13 +62,9 @@ void UIManager::fill_entries(bool init_selection/* = false*/)
m_offline_entries.clear();
const ArchiveRepositoryVector& archs = m_pad->get_archive_repositories();
const std::map<std::string, bool>& selected_repos = m_pad->get_selected_repositories_uuid();
for (const auto& archive : archs) {
const std::string& uuid = archive->get_uuid();
auto sel_it = selected_repos.find(uuid);
assert(sel_it != selected_repos.end());
if (init_selection && sel_it->second)
if (init_selection && m_pad->is_selected_archive(uuid))
m_selected_uuids.emplace(uuid);
const bool is_selected = m_selected_uuids.find(uuid) != m_selected_uuids.end();