QTfrontend/ui/page/pagetraining.cpp
changeset 13087 b6df6283e2ba
parent 12240 88b31fdc760b
child 13274 e381f5260b45
equal deleted inserted replaced
13086:8d569c7b36a2 13087:b6df6283e2ba
    21 #include <QLabel>
    21 #include <QLabel>
    22 #include <QListWidget>
    22 #include <QListWidget>
    23 #include <QListWidgetItem>
    23 #include <QListWidgetItem>
    24 #include <QPushButton>
    24 #include <QPushButton>
    25 
    25 
       
    26 #include <QTextStream>
    26 #include <QFile>
    27 #include <QFile>
    27 #include <QLocale>
    28 #include <QLocale>
    28 #include <QSettings>
    29 #include <QSettings>
    29 
    30 
    30 #include "hwconsts.h"
    31 #include "hwconsts.h"
   192             case 3:
   193             case 3:
   193                 subFolder = "Scenario";
   194                 subFolder = "Scenario";
   194                 m_widget = lstScenarios;
   195                 m_widget = lstScenarios;
   195                 break;
   196                 break;
   196         }
   197         }
       
   198         // scripts to load
       
   199         // first, load scripts in order specified in order.cfg (if present)
       
   200         QFile orderFile(QString("physfs://Missions/%1/order.cfg").arg(subFolder));
       
   201         QStringList orderedMissions;
       
   202         if (orderFile.open(QFile::ReadOnly))
       
   203         {
       
   204             QString m_id;
       
   205             QTextStream input(&orderFile);
       
   206             while(true)
       
   207             {
       
   208                 m_id = input.readLine();
       
   209                 if(m_id.isNull() || m_id.isEmpty())
       
   210                 {
       
   211                     break;
       
   212                 }
       
   213                 QListWidgetItem * item = new QListWidgetItem(m_id);
       
   214                 QString name = item->text().replace("_", " ");
       
   215                 name = m_info->value(m_id + ".name", name).toString();
       
   216                 item->setText(name);
       
   217                 item->setData(Qt::UserRole, m_id);
       
   218                 m_widget->addItem(item);
       
   219 
       
   220                 orderedMissions << m_id;
       
   221             }
       
   222         }
       
   223 
       
   224         // then, just load anything else in no particular order
   197         m_list = dataMgr.entryList(
   225         m_list = dataMgr.entryList(
   198                     "Missions/" + subFolder,
   226                     "Missions/" + subFolder,
   199                     QDir::Files, QStringList("*.lua")).
   227                     QDir::Files, QStringList("*.lua")).
   200                replaceInStrings(QRegExp("\\.lua$"), "");
   228                replaceInStrings(QRegExp("\\.lua$"), "");
   201 
   229 
   202         // scripts to load - TODO: model?
       
   203         foreach (const QString & m_id, m_list)
   230         foreach (const QString & m_id, m_list)
   204         {
   231         {
       
   232             // Disallow duplicates from order.cfg
       
   233             if (orderedMissions.contains(m_id))
       
   234             {
       
   235                 continue;
       
   236             }
       
   237 
   205             QListWidgetItem * item = new QListWidgetItem(m_id);
   238             QListWidgetItem * item = new QListWidgetItem(m_id);
   206 
   239 
   207             // fallback name: replace underscores in mission name with spaces
   240             // fallback name: replace underscores in mission name with spaces
   208             QString name = item->text().replace("_", " ");
   241             QString name = item->text().replace("_", " ");
   209 
   242