diff -r 6e8b807bda4b -r ba39a1d396c0 QTfrontend/ui/page/pagetraining.cpp --- a/QTfrontend/ui/page/pagetraining.cpp Sun Jun 10 18:56:51 2018 +0200 +++ b/QTfrontend/ui/page/pagetraining.cpp Sun Jun 10 19:12:26 2018 +0200 @@ -23,6 +23,7 @@ #include #include +#include #include #include #include @@ -156,9 +157,7 @@ QSettings settings(dataMgr.settingsFileName(), QSettings::IniFormat); - QString loc = settings.value("misc/locale", "").toString(); - if (loc.isEmpty()) - loc = QLocale::system().name(); + QString loc = QLocale().name(); QString infoFile = QString("physfs://Locale/missions_" + loc + ".txt"); @@ -194,14 +193,46 @@ m_widget = lstScenarios; break; } + // scripts to load + // first, load scripts in order specified in order.cfg (if present) + QFile orderFile(QString("physfs://Missions/%1/order.cfg").arg(subFolder)); + QStringList orderedMissions; + if (orderFile.open(QFile::ReadOnly)) + { + QString m_id; + QTextStream input(&orderFile); + while(true) + { + m_id = input.readLine(); + if(m_id.isNull() || m_id.isEmpty()) + { + break; + } + QListWidgetItem * item = new QListWidgetItem(m_id); + QString name = item->text().replace("_", " "); + name = m_info->value(m_id + ".name", name).toString(); + item->setText(name); + item->setData(Qt::UserRole, m_id); + m_widget->addItem(item); + + orderedMissions << m_id; + } + } + + // then, just load anything else in no particular order m_list = dataMgr.entryList( "Missions/" + subFolder, QDir::Files, QStringList("*.lua")). replaceInStrings(QRegExp("\\.lua$"), ""); - // scripts to load - TODO: model? foreach (const QString & m_id, m_list) { + // Disallow duplicates from order.cfg + if (orderedMissions.contains(m_id)) + { + continue; + } + QListWidgetItem * item = new QListWidgetItem(m_id); // fallback name: replace underscores in mission name with spaces