Skip to content

Commit f1821a8

Browse files
committed
add support to non-standard regions in culturesList
Skycultures whose regions do not follow the un naming convention are added to the culturesListWidgetunder a new category "Other".
1 parent dcc9136 commit f1821a8

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

src/gui/ViewDialog.cpp

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1463,14 +1463,16 @@ void ViewDialog::populateLists()
14631463
// remove duplicates in list of occuring regions (optional)
14641464
QList<QString> occuringRegions = cultureRegionMap.values();
14651465
std::sort(occuringRegions.begin(), occuringRegions.end());
1466-
occuringRegions.erase(std::unique(occuringRegions.begin(), occuringRegions.end()));
1466+
occuringRegions.resize(std::distance(occuringRegions.begin(), std::unique(occuringRegions.begin(), occuringRegions.end())));
14671467

14681468
QStringList sortedOccuringRegions;
1469+
int occuringRegionsCounter = 0;
14691470
for (const auto& region : sortedRegions)
14701471
{
14711472
if (occuringRegions.contains(region))
14721473
{
14731474
sortedOccuringRegions.append(region);
1475+
occuringRegionsCounter++;
14741476
}
14751477
}
14761478

@@ -1479,6 +1481,10 @@ void ViewDialog::populateLists()
14791481
{
14801482
l->addItem(new SeparatorListWidgetItem(region));
14811483
}
1484+
if (occuringRegions.size() > occuringRegionsCounter)
1485+
{
1486+
l->addItem(new SeparatorListWidgetItem("Other"));
1487+
}
14821488

14831489
// find the earliest beginTime of all cultures (needed in initSkyCultureTime)
14841490
// ---> evaluate it here so we don't need to iterate over all cultures multiple times
@@ -1494,8 +1500,16 @@ void ViewDialog::populateLists()
14941500
{
14951501
globalBeginTime = cultureTimeLimitMap.value(cultureRegionIt.key()).first;
14961502
}
1497-
1498-
l->insertItem(l->row(l->findItems(cultureRegionIt.value(), Qt::MatchContains).at(0)) + 1, item);
1503+
if (l->findItems(cultureRegionIt.value(), Qt::MatchContains).empty())
1504+
{
1505+
// region is unknown (non UN-geoscheme), insert item under "other" separator
1506+
l->insertItem(l->row(l->findItems("Other", Qt::MatchContains).at(0)) + 1, item);
1507+
}
1508+
else
1509+
{
1510+
// insert item under respective region separator
1511+
l->insertItem(l->row(l->findItems(cultureRegionIt.value(), Qt::MatchContains).at(0)) + 1, item);
1512+
}
14991513
}
15001514
ui->skyCultureCurrentTimeSpinBox->setMinimum(globalBeginTime);
15011515
l->setCurrentItem(l->findItems(app.getSkyCultureMgr().getCurrentSkyCultureNameI18(), Qt::MatchExactly).at(0));

0 commit comments

Comments
 (0)