# HG changeset patch # User Wuzzy # Date 1462307199 -7200 # Node ID 6da9bb4b3449019c799cd85748b9ed8bbe9fab16 # Parent 65e61f495129abbce5241477b26c1e5013d019e9 Show check marks for campaigns with Won=true diff -r 65e61f495129 -r 6da9bb4b3449 QTfrontend/campaign.cpp --- a/QTfrontend/campaign.cpp Sat Nov 19 23:04:44 2016 +0100 +++ b/QTfrontend/campaign.cpp Tue May 03 22:26:39 2016 +0200 @@ -23,30 +23,43 @@ #include #include -QList getCampMissionList(QString & campaignName, QString & teamName) +QSettings* getCampTeamFile(QString & campaignName, QString & teamName) { - QList missionInfoList; - QSettings teamfile(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0); - teamfile.setIniCodec("UTF-8"); - + QSettings* teamfile = new QSettings(cfgdir->absolutePath() + "/Teams/" + teamName + ".hwt", QSettings::IniFormat, 0); + teamfile->setIniCodec("UTF-8"); // if entry not found check if there is written without _ // if then is found rename it to use _ QString spaceCampName = campaignName; spaceCampName = spaceCampName.replace(QString("_"),QString(" ")); - if (!teamfile.childGroups().contains("Campaign " + campaignName) and - teamfile.childGroups().contains("Campaign " + spaceCampName)){ - teamfile.beginGroup("Campaign " + spaceCampName); - QStringList keys = teamfile.childKeys(); - teamfile.endGroup(); + if (!teamfile->childGroups().contains("Campaign " + campaignName) and + teamfile->childGroups().contains("Campaign " + spaceCampName)){ + teamfile->beginGroup("Campaign " + spaceCampName); + QStringList keys = teamfile->childKeys(); + teamfile->endGroup(); for (int i=0;ivalue("Campaign " + spaceCampName + "/" + keys[i]); + teamfile->setValue("Campaign " + campaignName + "/" + keys[i], value); } - teamfile.remove("Campaign " + spaceCampName); + teamfile->remove("Campaign " + spaceCampName); } - int progress = teamfile.value("Campaign " + campaignName + "/Progress", 0).toInt(); - int unlockedMissions = teamfile.value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); + return teamfile; +} + +bool isCampWon(QString & campaignName, QString & teamName) +{ + QSettings* teamfile = getCampTeamFile(campaignName, teamName); + bool won = teamfile->value("Campaign " + campaignName + "/Won", false).toBool(); + return won; +} + +QList getCampMissionList(QString & campaignName, QString & teamName) +{ + QList missionInfoList; + QSettings* teamfile = getCampTeamFile(campaignName, teamName); + + int progress = teamfile->value("Campaign " + campaignName + "/Progress", 0).toInt(); + int unlockedMissions = teamfile->value("Campaign " + campaignName + "/UnlockedMissions", 0).toInt(); QSettings campfile("physfs://Missions/Campaign/" + campaignName + "/campaign.ini", QSettings::IniFormat, 0); campfile.setIniCodec("UTF-8"); @@ -92,7 +105,7 @@ for(int i=1;i<=unlockedMissions;i++) { QString missionNum = QString("%1").arg(i); - int missionNumber = teamfile.value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); + int missionNumber = teamfile->value("Campaign " + campaignName + "/Mission"+missionNum, -1).toInt(); MissionInfo missionInfo; missionInfo.name = campfile.value(QString("Mission %1/Name").arg(missionNumber)).toString(); QString script = campfile.value(QString("Mission %1/Script").arg(missionNumber)).toString(); diff -r 65e61f495129 -r 6da9bb4b3449 QTfrontend/campaign.h --- a/QTfrontend/campaign.h Sat Nov 19 23:04:44 2016 +0100 +++ b/QTfrontend/campaign.h Tue May 03 22:26:39 2016 +0200 @@ -20,6 +20,7 @@ #define CAMPAIGN_H #include +#include class MissionInfo { @@ -30,6 +31,9 @@ QString image; }; + +QSettings* getCampTeamFile(QString & campaignName, QString & teamName); +bool isCampWon(QString & campaignName, QString & teamName); QList getCampMissionList(QString & campaignName, QString & teamName); #endif diff -r 65e61f495129 -r 6da9bb4b3449 QTfrontend/hedgewars.qrc --- a/QTfrontend/hedgewars.qrc Sat Nov 19 23:04:44 2016 +0100 +++ b/QTfrontend/hedgewars.qrc Tue May 03 22:26:39 2016 +0200 @@ -85,6 +85,8 @@ res/delete.png res/checked.png res/unchecked.png + res/missionFinished.png + res/missionFinishedSelected.png res/graphicsicon.png res/miscicon.png res/Load.png diff -r 65e61f495129 -r 6da9bb4b3449 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Sat Nov 19 23:04:44 2016 +0100 +++ b/QTfrontend/hwform.cpp Tue May 03 22:26:39 2016 +0200 @@ -1855,9 +1855,18 @@ ); unsigned int n = entries.count(); + + QIcon finishedIcon; + finishedIcon.addFile(":/res/missionFinished.png", QSize(), QIcon::Normal, QIcon::On); + finishedIcon.addFile(":/res/missionFinishedSelected.png", QSize(), QIcon::Selected, QIcon::On); for(unsigned int i = 0; i < n; i++) { - ui.pageCampaign->CBCampaign->addItem(QString(entries[i]).replace(QString("_"),QString(" ")), QString(entries[i]).replace(QString("_"),QString(" "))); + QString campaignNameUnderscores= QString(entries[i]).replace(QString(" "),QString("_")); + QString campaignNameSpaces = QString(entries[i]).replace(QString("_"),QString(" ")); + QString tName = team.name(); + ui.pageCampaign->CBCampaign->addItem(campaignNameSpaces, campaignNameSpaces); + if(isCampWon(campaignNameUnderscores, tName)) + ui.pageCampaign->CBCampaign->setItemIcon(i, finishedIcon); } } diff -r 65e61f495129 -r 6da9bb4b3449 QTfrontend/res/missionFinished.png Binary file QTfrontend/res/missionFinished.png has changed diff -r 65e61f495129 -r 6da9bb4b3449 QTfrontend/res/missionFinishedSelected.png Binary file QTfrontend/res/missionFinishedSelected.png has changed