# HG changeset patch # User displacer # Date 1169069572 0 # Node ID c91b983de18f5a24f02a6618827e26b253d3de89 # Parent 6521e1b2cd40cd2fc220b68faa63c28c7bdff609 equal team names huge bug fixed for multiple clients diff -r 6521e1b2cd40 -r c91b983de18f QTfrontend/frameTeam.cpp --- a/QTfrontend/frameTeam.cpp Wed Jan 17 19:56:51 2007 +0000 +++ b/QTfrontend/frameTeam.cpp Wed Jan 17 21:32:52 2007 +0000 @@ -48,7 +48,7 @@ { TeamShowWidget* pTeamShowWidget = new TeamShowWidget(team, willPlay, this); // int hght=teamToWidget.empty() ? 0 : teamToWidget.begin()->second->size().height(); - teamToWidget.insert(make_pair(team, pTeamShowWidget)); + teamToWidget.insert(team, pTeamShowWidget); mainLayout.addWidget(pTeamShowWidget); QResizeEvent* pevent=new QResizeEvent(parentWidget()->size(), parentWidget()->size()); QCoreApplication::postEvent(parentWidget(), pevent); @@ -57,15 +57,15 @@ void FrameTeams::removeTeam(HWTeam team) { tmapTeamToWidget::iterator it=teamToWidget.find(team); - mainLayout.removeWidget(it->second); - delete it->second; - teamToWidget.erase(team); + mainLayout.removeWidget(it.value()); + delete it.value(); + teamToWidget.erase(it); } QWidget* FrameTeams::getTeamWidget(HWTeam team) { tmapTeamToWidget::iterator it=teamToWidget.find(team); - QWidget* ret = it!=teamToWidget.end() ? it->second : 0; + QWidget* ret = it!=teamToWidget.end() ? it.value() : 0; return ret; } diff -r 6521e1b2cd40 -r c91b983de18f QTfrontend/frameTeam.h --- a/QTfrontend/frameTeam.h Wed Jan 17 19:56:51 2007 +0000 +++ b/QTfrontend/frameTeam.h Wed Jan 17 21:32:52 2007 +0000 @@ -22,9 +22,9 @@ #include #include #include +#include #include "teamselect.h" -#include class FrameTeams : public QWidget { @@ -50,7 +50,7 @@ QList::Iterator currentColor; QVBoxLayout mainLayout; - typedef map tmapTeamToWidget; + typedef QMultiMap tmapTeamToWidget; tmapTeamToWidget teamToWidget; }; diff -r 6521e1b2cd40 -r c91b983de18f QTfrontend/newnetclient.cpp --- a/QTfrontend/newnetclient.cpp Wed Jan 17 19:56:51 2007 +0000 +++ b/QTfrontend/newnetclient.cpp Wed Jan 17 21:32:52 2007 +0000 @@ -169,7 +169,7 @@ if (lst[0] == "REMOVETEAM:") { if(lst.size()<2) return; - m_pTeamSelWidget->removeNetTeam(lst[1]); + m_pTeamSelWidget->removeNetTeam(HWTeam(lst[1], true)); return; } diff -r 6521e1b2cd40 -r c91b983de18f QTfrontend/team.cpp --- a/QTfrontend/team.cpp Wed Jan 17 19:56:51 2007 +0000 +++ b/QTfrontend/team.cpp Wed Jan 17 21:32:52 2007 +0000 @@ -29,9 +29,9 @@ #include #include -HWTeam::HWTeam(const QString & teamname) : +HWTeam::HWTeam(const QString & teamname, bool isNet) : difficulty(0), - netTeam(false) + netTeam(isNet) { TeamName = teamname; OldTeamName = TeamName; @@ -230,9 +230,9 @@ } bool HWTeam::operator==(const HWTeam& t1) const { - return TeamName==t1.TeamName; + return TeamName==t1.TeamName && netTeam==t1.netTeam; } bool HWTeam::operator<(const HWTeam& t1) const { - return TeamNameaddTeam(team, true); curPlayingTeams.push_back(team); - QObject::connect(frameDontPlaying->getTeamWidget(team), SIGNAL(teamStatusChanged(HWTeam)), + QObject::connect(framePlaying->getTeamWidget(team), SIGNAL(teamStatusChanged(HWTeam)), this, SLOT(netTeamStatusChanged(const HWTeam&))); } else { frameDontPlaying->addTeam(team, false); @@ -43,9 +43,16 @@ void TeamSelWidget::removeNetTeam(const HWTeam& team) { - list::iterator itPlay=std::find(curPlayingTeams.begin(), curPlayingTeams.end(), team); - framePlaying->removeTeam(team); - curPlayingTeams.erase(itPlay); + for(;;) { + list::iterator itPlay=std::find(curPlayingTeams.begin(), curPlayingTeams.end(), team); + if(itPlay==curPlayingTeams.end()) break; + if(itPlay->netTeam) { + QObject::disconnect(framePlaying->getTeamWidget(*itPlay), SIGNAL(teamStatusChanged(HWTeam))); + framePlaying->removeTeam(team); + curPlayingTeams.erase(itPlay); + break; + } + } } void TeamSelWidget::netTeamStatusChanged(const HWTeam& team)