FIX: not upload non-bbl presets

Change-Id: I677a4790aad47750bfede100ce95d0db2320a041
Jira: none
This commit is contained in:
chunmao.guo 2023-10-26 13:18:17 +08:00 committed by Lane.Wei
parent 87b8388f3b
commit d787873e97
3 changed files with 15 additions and 6 deletions

View File

@ -726,11 +726,19 @@ bool Preset::is_custom_defined()
return false;
}
// The method previously only supports to be called on preset_bundle->printers.get_edited_preset()
// I extened to support call on all presets
bool Preset::is_bbl_vendor_preset(PresetBundle *preset_bundle)
{
bool is_bbl_vendor_preset = true;
if (preset_bundle) {
auto config = &preset_bundle->printers.get_edited_preset().config;
auto config = &this->config;
auto printers = config->opt<ConfigOptionStrings>("compatible_printers");
if (printers && !printers->values.empty()) {
auto printer = preset_bundle->printers.find_preset(printers->values.front());
if (printer)
config = &printer->config;
}
std::string vendor_name;
for (auto vendor_profile : preset_bundle->vendors) {
for (auto vendor_model : vendor_profile.second.models)
@ -1469,7 +1477,7 @@ bool PresetCollection::need_sync(std::string name, std::string setting_id, long
}
//BBS: get user presets
int PresetCollection::get_user_presets(std::vector<Preset>& result_presets)
int PresetCollection::get_user_presets(PresetBundle *preset_bundle, std::vector<Preset> &result_presets)
{
int count = 0;
result_presets.clear();
@ -1479,6 +1487,7 @@ int PresetCollection::get_user_presets(std::vector<Preset>& result_presets)
if (!preset.is_user()) continue;
if (get_preset_base(preset) != &preset && preset.base_id.empty()) continue;
if (!preset.setting_id.empty() && preset.sync_info.empty()) continue;
if (!preset.is_bbl_vendor_preset(preset_bundle)) continue;
result_presets.push_back(preset);
count++;

View File

@ -437,7 +437,7 @@ public:
bool load_user_preset(std::string name, std::map<std::string, std::string> preset_values, PresetsConfigSubstitutions& substitutions, ForwardCompatibilitySubstitutionRule rule);
void update_after_user_presets_loaded();
//BBS: get user presets
int get_user_presets(std::vector<Preset>& result_presets);
int get_user_presets(PresetBundle *preset_bundle, std::vector<Preset> &result_presets);
void set_sync_info_and_save(std::string name, std::string setting_id, std::string syncinfo, long long update_time);
bool need_sync(std::string name, std::string setting_id, long long update_time);

View File

@ -4668,21 +4668,21 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg)
//sync preset
if (!preset_bundle) continue;
sync_count = preset_bundle->prints.get_user_presets(presets_to_sync);
sync_count = preset_bundle->prints.get_user_presets(preset_bundle, presets_to_sync);
if (sync_count > 0) {
for (Preset& preset : presets_to_sync) {
sync_preset(&preset);
}
}
sync_count = preset_bundle->filaments.get_user_presets(presets_to_sync);
sync_count = preset_bundle->filaments.get_user_presets(preset_bundle, presets_to_sync);
if (sync_count > 0) {
for (Preset& preset : presets_to_sync) {
sync_preset(&preset);
}
}
sync_count = preset_bundle->printers.get_user_presets(presets_to_sync);
sync_count = preset_bundle->printers.get_user_presets(preset_bundle, presets_to_sync);
if (sync_count > 0) {
for (Preset& preset : presets_to_sync) {
sync_preset(&preset);