QTfrontend/hwform.cpp
branchwebgl
changeset 9236 ddd675825672
parent 9197 e4e366013e9a
parent 9235 1c1580c37876
child 9521 8054d9d775fd
equal deleted inserted replaced
9201:bcf2f7798ebb 9236:ddd675825672
   192     connect (closeFrontend, SIGNAL(activated()), this, SLOT(close()));
   192     connect (closeFrontend, SIGNAL(activated()), this, SLOT(close()));
   193     //QShortcut * updateData = new QShortcut(QKeySequence("F5"), this);
   193     //QShortcut * updateData = new QShortcut(QKeySequence("F5"), this);
   194     //connect (updateData, SIGNAL(activated()), &DataManager::instance(), SLOT(reload()));
   194     //connect (updateData, SIGNAL(activated()), &DataManager::instance(), SLOT(reload()));
   195 #endif
   195 #endif
   196 
   196 
   197 	previousCampaignName = "";
   197     previousCampaignName = "";
   198 	previousTeamName = "";
   198     previousTeamName = "";
   199     UpdateTeamsLists();
   199     UpdateTeamsLists();
   200     InitCampaignPage();
   200     InitCampaignPage();
   201     UpdateCampaignPage(0);
   201     UpdateCampaignPage(0);
   202     UpdateWeapons();
   202     UpdateWeapons();
   203 
   203 
   595 {
   595 {
   596 #ifdef USE_XFIRE
   596 #ifdef USE_XFIRE
   597     updateXfire();
   597     updateXfire();
   598 #endif
   598 #endif
   599 
   599 
       
   600 #ifdef QT_DEBUG
   600     qDebug("Leaving %s, entering %s", qPrintable(stringifyPageId(lastid)), qPrintable(stringifyPageId(id)));
   601     qDebug("Leaving %s, entering %s", qPrintable(stringifyPageId(lastid)), qPrintable(stringifyPageId(id)));
       
   602 #endif
   601     if (lastid == ID_PAGE_MAIN)
   603     if (lastid == ID_PAGE_MAIN)
   602     {
   604     {
   603         ui.pageMain->resetNetworkChoice();
   605         ui.pageMain->resetNetworkChoice();
   604     }
   606     }
   605 
   607 
  1892 
  1894 
  1893 
  1895 
  1894 void HWForm::UpdateCampaignPage(int index)
  1896 void HWForm::UpdateCampaignPage(int index)
  1895 {
  1897 {
  1896     Q_UNUSED(index);
  1898     Q_UNUSED(index);
  1897     
  1899 
  1898     HWTeam team(ui.pageCampaign->CBTeam->currentText());
  1900     HWTeam team(ui.pageCampaign->CBTeam->currentText());
  1899     ui.pageCampaign->CBMission->clear();
  1901     ui.pageCampaign->CBMission->clear();
  1900 
  1902 
  1901     QString campaignName = ui.pageCampaign->CBCampaign->currentText();
  1903     QString campaignName = ui.pageCampaign->CBCampaign->currentText();
  1902     QStringList missionEntries = getCampMissionList(campaignName);
  1904     QStringList missionEntries = getCampMissionList(campaignName);
  1903     QString tName = team.name();
  1905     QString tName = team.name();
  1904     unsigned int n = missionEntries.count();
  1906     unsigned int n = missionEntries.count();
  1905     unsigned int m = getCampProgress(tName, campaignName);
  1907     unsigned int m = getCampProgress(tName, campaignName);
  1906     
  1908 
  1907     // if the campaign name changes update the campaignMissionDescriptions list
  1909     // if the campaign name changes update the campaignMissionDescriptions list
  1908     // this will be used later in UpdateCampaignPageMission() to update
  1910     // this will be used later in UpdateCampaignPageMission() to update
  1909     // the mission description in the campaign page
  1911     // the mission description in the campaign page
  1910     bool updateMissionList = false;
  1912     bool updateMissionList = false;
  1911     QSettings * m_info;
  1913     QSettings * m_info;
  1912     if(previousCampaignName.compare(campaignName)!=0 || 
  1914     if(previousCampaignName.compare(campaignName)!=0 ||
  1913 			previousTeamName.compare(tName) != 0) 
  1915             previousTeamName.compare(tName) != 0)
  1914     {
  1916     {
  1915 		if (previousTeamName.compare(tName) != 0 && 
  1917         if (previousTeamName.compare(tName) != 0 &&
  1916 				previousTeamName.compare("") != 0)
  1918                 previousTeamName.compare("") != 0)
  1917 			index = qMin(m + 1, n);
  1919             index = qMin(m + 1, n);
  1918 		previousCampaignName = campaignName;
  1920         previousCampaignName = campaignName;
  1919 		previousTeamName = tName;
  1921         previousTeamName = tName;
  1920 		updateMissionList = true;
  1922         updateMissionList = true;
  1921 		// the following code was based on pagetraining.cpp
  1923         // the following code was based on pagetraining.cpp
  1922 		DataManager & dataMgr = DataManager::instance();    
  1924         DataManager & dataMgr = DataManager::instance();
  1923 		// get locale
  1925         // get locale
  1924 		QSettings settings(dataMgr.settingsFileName(),
  1926         QSettings settings(dataMgr.settingsFileName(),
  1925 						   QSettings::IniFormat);
  1927                            QSettings::IniFormat);
  1926 		QString loc = settings.value("misc/locale", "").toString();		
  1928         QString loc = settings.value("misc/locale", "").toString();
  1927 		if (loc.isEmpty())
  1929         if (loc.isEmpty())
  1928 			loc = QLocale::system().name();
  1930             loc = QLocale::system().name();
  1929 		QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt");
  1931         QString campaignDescFile = QString("physfs://Locale/campaigns_" + loc + ".txt");
  1930 		// if file is non-existant try with language only
  1932         // if file is non-existant try with language only
  1931 		if (!QFile::exists(campaignDescFile))
  1933         if (!QFile::exists(campaignDescFile))
  1932 			campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt");
  1934             campaignDescFile = QString("physfs://Locale/campaigns_" + loc.remove(QRegExp("_.*$")) + ".txt");
  1933 
  1935 
  1934 		// fallback if file for current locale is non-existant
  1936         // fallback if file for current locale is non-existant
  1935 		if (!QFile::exists(campaignDescFile))
  1937         if (!QFile::exists(campaignDescFile))
  1936 			campaignDescFile = QString("physfs://Locale/campaigns_en.txt");
  1938             campaignDescFile = QString("physfs://Locale/campaigns_en.txt");
  1937 		  
  1939 
  1938 		m_info = new QSettings(campaignDescFile, QSettings::IniFormat, this);
  1940         m_info = new QSettings(campaignDescFile, QSettings::IniFormat, this);
  1939 		m_info->setIniCodec("UTF-8");
  1941         m_info->setIniCodec("UTF-8");
  1940 		campaignMissionDescriptions.clear();
  1942         campaignMissionDescriptions.clear();
  1941 		ui.pageCampaign->CBMission->clear();
  1943         ui.pageCampaign->CBMission->clear();
  1942 	}
  1944     }
  1943 	
  1945 
  1944     for (unsigned int i = qMin(m + 1, n); i > 0; i--)
  1946     for (unsigned int i = qMin(m + 1, n); i > 0; i--)
  1945     {
  1947     {
  1946         if(updateMissionList) 
  1948         if(updateMissionList)
  1947         {
  1949         {
  1948 			campaignMissionDescriptions += m_info->value(campaignName+"-"+ getCampaignMissionName(campaignName,i) + ".desc",
  1950             campaignMissionDescriptions += m_info->value(campaignName+"-"+ getCampaignMissionName(campaignName,i) + ".desc",
  1949                                             tr("No description available")).toString();
  1951                                             tr("No description available")).toString();
  1950 		} 
  1952         }
  1951         ui.pageCampaign->CBMission->addItem(QString("Mission %1: ").arg(i) + QString(missionEntries[i-1]), QString(missionEntries[i-1]));       
  1953         ui.pageCampaign->CBMission->addItem(QString("Mission %1: ").arg(i) + QString(missionEntries[i-1]), QString(missionEntries[i-1]));
  1952     }
  1954     }
  1953     if(updateMissionList)
  1955     if(updateMissionList)
  1954 		delete m_info;
  1956         delete m_info;
  1955 
  1957 
  1956     UpdateCampaignPageMission(index);
  1958     UpdateCampaignPageMission(index);
  1957 }
  1959 }
  1958 
  1960 
  1959 void HWForm::UpdateCampaignPageMission(int index) 
  1961 void HWForm::UpdateCampaignPageMission(int index)
  1960 {    
  1962 {
  1961     // update thumbnail
  1963     // update thumbnail
  1962     QString campaignName = ui.pageCampaign->CBCampaign->currentText();
  1964     QString campaignName = ui.pageCampaign->CBCampaign->currentText();
  1963     unsigned int mNum = ui.pageCampaign->CBMission->count() - ui.pageCampaign->CBMission->currentIndex();
  1965     unsigned int mNum = ui.pageCampaign->CBMission->count() - ui.pageCampaign->CBMission->currentIndex();
  1964     QString image = getCampaignImage(campaignName,mNum);
  1966     QString image = getCampaignImage(campaignName,mNum);
  1965     ui.pageCampaign->btnPreview->setIcon(QIcon((":/res/campaign/"+campaignName+"/"+image)));
  1967     ui.pageCampaign->btnPreview->setIcon(QIcon((":/res/campaign/"+campaignName+"/"+image)));
  1966     // update description
  1968     // update description
  1967     // when campaign changes the UpdateCampaignPageMission is triggered with wrong values
  1969     // when campaign changes the UpdateCampaignPageMission is triggered with wrong values
  1968     // this will cause segfault. This check prevents illegal memory reads
  1970     // this will cause segfault. This check prevents illegal memory reads
  1969     if(index > -1 && index < campaignMissionDescriptions.count()) {
  1971     if(index > -1 && index < campaignMissionDescriptions.count()) {
  1970 		ui.pageCampaign->lbltitle->setText("<h2>"+ui.pageCampaign->CBMission->currentText()+"</h2>");
  1972         ui.pageCampaign->lbltitle->setText("<h2>"+ui.pageCampaign->CBMission->currentText()+"</h2>");
  1971 		ui.pageCampaign->lbldescription->setText(campaignMissionDescriptions[index]);
  1973         ui.pageCampaign->lbldescription->setText(campaignMissionDescriptions[index]);
  1972 	}
  1974     }
  1973 }
  1975 }
  1974 
  1976 
  1975 void HWForm::UpdateCampaignPageProgress(int index)
  1977 void HWForm::UpdateCampaignPageProgress(int index)
  1976 {
  1978 {
  1977     Q_UNUSED(index);
  1979     Q_UNUSED(index);