diff -r 221b38978401 -r 1201fc039e24 QTfrontend/campaign.cpp --- a/QTfrontend/campaign.cpp Wed May 04 05:23:58 2016 +0200 +++ b/QTfrontend/campaign.cpp Wed May 04 07:41:46 2016 +0200 @@ -82,6 +82,40 @@ return won; } +QSettings* getCampMetaInfo() +{ + DataManager & dataMgr = DataManager::instance(); + // get locale + QSettings settings(dataMgr.settingsFileName(), + QSettings::IniFormat); + QString loc = settings.value("misc/locale", "").toString(); + if (loc.isEmpty()) + loc = QLocale::system().name(); + QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt"); + // if file is non-existant try with language only + if (!QFile::exists(campaignDescFile)) + campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt"); + + // fallback if file for current locale is non-existant + if (!QFile::exists(campaignDescFile)) + campaignDescFile = QString("physfs://Locale/campaigns_en.txt"); + + QSettings* m_info = new QSettings(campaignDescFile, QSettings::IniFormat, 0); + m_info->setIniCodec("UTF-8"); + + return m_info; +} + +/** Returns the localized campaign name */ +QString getRealCampName(QString & campaignName) +{ + QSettings* m_info = getCampMetaInfo(); + if(m_info->contains(campaignName+".name")) + return m_info->value(campaignName+".name").toString(); + else + return campaignName.replace(QString("_"), QString(" ")); +} + QList getCampMissionList(QString & campaignName, QString & teamName) { QList missionInfoList; @@ -93,24 +127,7 @@ QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); campfile.setIniCodec("UTF-8"); - DataManager & dataMgr = DataManager::instance(); - // get locale - QSettings settings(dataMgr.settingsFileName(), - QSettings::IniFormat); - QString loc = settings.value("misc/locale", "").toString(); - if (loc.isEmpty()) - loc = QLocale::system().name(); - QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt"); - // if file is non-existant try with language only - if (!QFile::exists(campaignDescFile)) - campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt"); - - // fallback if file for current locale is non-existant - if (!QFile::exists(campaignDescFile)) - campaignDescFile = QString("physfs://Locale/campaigns_en.txt"); - - QSettings m_info(campaignDescFile, QSettings::IniFormat, 0); - m_info.setIniCodec("UTF-8"); + QSettings* m_info = getCampMetaInfo(); if(progress>=0 and unlockedMissions==0) { @@ -121,7 +138,7 @@ if(!script.isNull()) { missionInfo.name = campfile.value(QString("Mission %1/Name").arg(i)).toString(); missionInfo.script = script; - missionInfo.description = m_info.value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc", + missionInfo.description = m_info->value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc", QObject::tr("No description available")).toString(); QString image = campfile.value(QString("Mission %1/Script").arg(i)).toString().replace(QString(".lua"),QString(".png")); missionInfo.image = ":/res/campaign/"+campaignName+"/"+image; @@ -141,7 +158,7 @@ missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString(); QString script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString(); missionInfo.script = script; - missionInfo.description = m_info.value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc", + missionInfo.description = m_info->value(campaignName+"-"+ script.replace(QString(".lua"),QString("")) + ".desc", QObject::tr("No description available")).toString(); QString image = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString().replace(QString(".lua"),QString(".png")); missionInfo.image = ":/res/campaign/"+campaignName+"/"+image;