Fix legacy position population (#1069)

* Reworked legacy position population
- Changed data structure to a static list of pairs to avoid unnecessary deep copies
- Fixed oversight which caused iteration over the value and not the key of the previous QMap

* clang-format pass :rolling_eyes:

* disambiguate pair order further
This commit is contained in:
in1tiate 2025-01-23 03:16:42 -06:00 committed by GitHub
parent 764b2f8944
commit fa94955d4f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1394,26 +1394,18 @@ void Courtroom::set_background(QString p_background, bool display)
ui_vp_testimony->stopPlayback();
current_background = p_background;
// welcome to hardcode central may I take your order of regularly scheduled
// CBT
QMap<QString, QString> default_pos;
default_pos["defenseempty"] = "def";
default_pos["helperstand"] = "hld";
default_pos["prosecutorempty"] = "pro";
default_pos["prohelperstand"] = "hlp";
default_pos["witnessempty"] = "wit";
default_pos["judgestand"] = "jud";
default_pos["jurystand"] = "jur";
default_pos["seancestand"] = "sea";
// Modern positions paired to their legacy counterparts for use in dropdown population
// {"new", "old"}
static QList<QPair<QString, QString>> legacy_positions = {{"def", "defenseempty"}, {"hld", "helperstand"}, {"pro", "prosecutorempty"}, {"hlp", "prohelperstand"}, {"wit", "witnessempty"}, {"jud", "judgestand"}, {"jur", "jurystand"}, {"sea", "seancestand"}};
// Populate the dropdown list with all pos that exist on this bg
QStringList pos_list = {};
for (const QString &key : std::as_const(default_pos))
for (const QPair<QString, QString> &pos_pair : std::as_const(legacy_positions))
{
if (file_exists(ao_app->get_image_suffix(ao_app->get_background_path(default_pos[key]))) || // if we have 2.8-style positions, e.g. def.png, wit.webp, hld.apng
file_exists(ao_app->get_image_suffix(ao_app->get_background_path(key))))
{ // if we have pre-2.8-style positions, e.g. defenseempty.png
pos_list.append(default_pos[key]);
if (file_exists(ao_app->get_image_suffix(ao_app->get_background_path(pos_pair.first))) || // if we have 2.8-style positions, e.g. def.png, wit.webp, hld.apng
file_exists(ao_app->get_image_suffix(ao_app->get_background_path(pos_pair.second)))) // if we have pre-2.8-style positions, e.g. defenseempty.png
{
pos_list.append(pos_pair.first); // the dropdown always uses the new style
}
}
if (file_exists(ao_app->get_image_suffix(ao_app->get_background_path("court"))))