diff -r 37a6d807c140 -r 3a3defce1b28 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Sun Oct 27 22:34:25 2013 -0400 +++ b/QTfrontend/hwform.cpp Mon Oct 28 14:07:04 2013 +0100 @@ -198,6 +198,7 @@ UpdateTeamsLists(); InitCampaignPage(); UpdateCampaignPage(0); + UpdateCampaignPageMission(0); UpdateWeapons(); // connect all goBack signals @@ -305,6 +306,7 @@ connect(ui.pageTraining, SIGNAL(startMission(const QString&)), this, SLOT(startTraining(const QString&))); connect(ui.pageCampaign->BtnStartCampaign, SIGNAL(clicked()), this, SLOT(StartCampaign())); + connect(ui.pageCampaign->btnPreview, SIGNAL(clicked()), this, SLOT(StartCampaign())); connect(ui.pageCampaign->CBTeam, SIGNAL(currentIndexChanged(int)), this, SLOT(UpdateCampaignPage(int))); connect(ui.pageCampaign->CBCampaign, SIGNAL(currentIndexChanged(int)), this, SLOT(UpdateCampaignPage(int))); connect(ui.pageCampaign->CBMission, SIGNAL(currentIndexChanged(int)), this, SLOT(UpdateCampaignPageMission(int))); @@ -1729,13 +1731,9 @@ void HWForm::StartCampaign() { CreateGame(0, 0, 0); - - QComboBox *combo = ui.pageCampaign->CBMission; QString camp = ui.pageCampaign->CBCampaign->currentText().replace(QString(" "),QString("_")); - unsigned int mNum = combo->count() - combo->currentIndex(); - QString miss = getCampaignScript(camp, mNum); + QString miss = campaignMissionInfo[ui.pageCampaign->CBMission->currentIndex()].script; QString campTeam = ui.pageCampaign->CBTeam->currentText(); - game->StartCampaign(camp, miss, campTeam); } @@ -1900,85 +1898,32 @@ } } - void HWForm::UpdateCampaignPage(int index) { Q_UNUSED(index); - HWTeam team(ui.pageCampaign->CBTeam->currentText()); - ui.pageCampaign->CBMission->clear(); - QString campaignName = ui.pageCampaign->CBCampaign->currentText().replace(QString(" "),QString("_")); - QStringList missionEntries = getCampMissionList(campaignName); - QString tName = team.name(); - unsigned int n = missionEntries.count(); - unsigned int m = getCampProgress(tName, campaignName); - - // if the campaign name changes update the campaignMissionDescriptions list - // this will be used later in UpdateCampaignPageMission() to update - // the mission description in the campaign page - bool updateMissionList = false; - QSettings * m_info; - if(previousCampaignName.compare(campaignName)!=0 || - previousTeamName.compare(tName) != 0) + QString tName = team.name(); + + campaignMissionInfo = getCampMissionList(campaignName,tName); + ui.pageCampaign->CBMission->clear(); + + for(int i=0;isetIniCodec("UTF-8"); - campaignMissionDescriptions.clear(); - ui.pageCampaign->CBMission->clear(); - } - - for (unsigned int i = qMin(m + 1, n); i > 0; i--) - { - if(updateMissionList) - { - campaignMissionDescriptions += m_info->value(campaignName+"-"+ getCampaignMissionName(campaignName,i) + ".desc", - tr("No description available")).toString(); - } - ui.pageCampaign->CBMission->addItem(QString("Mission %1: ").arg(i) + QString(missionEntries[i-1]), QString(missionEntries[i-1])); - } - if(updateMissionList) - delete m_info; - - UpdateCampaignPageMission(index); + ui.pageCampaign->CBMission->addItem(QString(campaignMissionInfo[i].name), QString(campaignMissionInfo[i].name)); + } } void HWForm::UpdateCampaignPageMission(int index) { - // update thumbnail + // update thumbnail and description QString campaignName = ui.pageCampaign->CBCampaign->currentText().replace(QString(" "),QString("_")); - unsigned int mNum = ui.pageCampaign->CBMission->count() - ui.pageCampaign->CBMission->currentIndex(); - QString image = getCampaignImage(campaignName,mNum); - ui.pageCampaign->btnPreview->setIcon(QIcon((":/res/campaign/"+campaignName+"/"+image))); - // update description // when campaign changes the UpdateCampaignPageMission is triggered with wrong values // this will cause segfault. This check prevents illegal memory reads - if(index > -1 && index < campaignMissionDescriptions.count()) { + if(index > -1 && index < campaignMissionInfo.count()) { ui.pageCampaign->lbltitle->setText("

"+ui.pageCampaign->CBMission->currentText()+"

"); - ui.pageCampaign->lbldescription->setText(campaignMissionDescriptions[index]); + ui.pageCampaign->lbldescription->setText(campaignMissionInfo[index].description); + ui.pageCampaign->btnPreview->setIcon(QIcon(campaignMissionInfo[index].image)); } } @@ -1986,9 +1931,16 @@ { Q_UNUSED(index); - int missionIndex = ui.pageCampaign->CBMission->currentIndex(); + QString missionTitle = ui.pageCampaign->CBMission->currentText(); UpdateCampaignPage(0); - ui.pageCampaign->CBMission->setCurrentIndex(missionIndex); + for(int i=0;iCBMission->count();i++) + { + if (ui.pageCampaign->CBMission->itemText(i)==missionTitle) + { + ui.pageCampaign->CBMission->setCurrentIndex(i); + break; + } + } } // used for --set-everything [screen width] [screen height] [color dept] [volume] [enable music] [enable sounds] [language file] [full screen] [show FPS] [alternate damage] [timer value] [reduced quality]