[atlantik-cvs] CVS: kdegames/atlantik/client atlantik.cpp,1.135,1.136 atlantik.h,1.53,1.54
[email protected] Mon, 20 Jan 2003 01:57:28 +0100 (CET)
Newsgroups
gmane.comp.kde.devel.atlantik
Message-ID
<[email protected] >
Update of /home/kde/kdegames/atlantik/client
In directory office:/tmp/cvs-serv20549/client
Modified Files:
atlantik.cpp atlantik.h
Log Message:
better handling of portfolioview add/remove's
Index: atlantik.cpp
===================================================================
RCS file: /home/kde/kdegames/atlantik/client/atlantik.cpp,v
retrieving revision 1.135
retrieving revision 1.136
diff -u -d -r1.135 -r1.136
--- atlantik.cpp 19 Jan 2003 23:58:59 -0000 1.135
+++ atlantik.cpp 20 Jan 2003 00:57:23 -0000 1.136
@@ -174,20 +174,13 @@
initBoard();
m_board->addToken(player);
- PortfolioView *portfolioView = new PortfolioView(m_atlanticCore, player, m_config.activeColor, m_config.inactiveColor, m_portfolioWidget);
- m_portfolioViews.append(portfolioView);
+ addPortfolioView(player);
if (player->isSelf())
m_playerSelf = player;
connect(player, SIGNAL(changed(Player *)), this, SLOT(playerChanged(Player *)));
- connect(player, SIGNAL(changed(Player *)), portfolioView, SLOT(playerChanged()));
connect(player, SIGNAL(changed(Player *)), m_board, SLOT(playerChanged(Player *)));
- connect(portfolioView, SIGNAL(newTrade(Player *)), m_atlantikNetwork, SLOT(newTrade(Player *)));
- connect(portfolioView, SIGNAL(estateClicked(Estate *)), m_board, SLOT(prependEstateDetails(Estate *)));
-
- m_portfolioLayout->addWidget(portfolioView);
- portfolioView->show();
}
void Atlantik::newEstate(Estate *estate)
@@ -212,6 +205,13 @@
void Atlantik::removeGUI(Player *player)
{
// Find and remove portfolioview
+ PortfolioView *portfolioView = findPortfolioView(player);
+ if (portfolioView)
+ {
+ m_portfolioViews.remove(portfolioView);
+ delete portfolioView;
+ }
+
// TODO: Remove tokens from board
}
@@ -507,10 +507,14 @@
void Atlantik::playerChanged(Player *player)
{
- if (player->gameId() == -1)
+ PortfolioView *portfolioView = findPortfolioView(player);
+ if (portfolioView && player->gameId() == -1)
{
- // Find and remove portfolioview
+ m_portfolioViews.remove(portfolioView);
+ delete portfolioView;
}
+ else if (!portfolioView && player->gameId() != -1)
+ addPortfolioView(player);
if (player == m_playerSelf)
{
@@ -559,4 +563,27 @@
connect(this, SIGNAL(jailCard()), m_atlantikNetwork, SLOT(jailCard()));
connect(this, SIGNAL(jailPay()), m_atlantikNetwork, SLOT(jailPay()));
connect(this, SIGNAL(jailRoll()), m_atlantikNetwork, SLOT(jailRoll()));
+}
+
+void Atlantik::addPortfolioView(Player *player)
+{
+ PortfolioView *portfolioView = new PortfolioView(m_atlanticCore, player, m_config.activeColor, m_config.inactiveColor, m_portfolioWidget);
+ m_portfolioViews.append(portfolioView);
+
+ connect(player, SIGNAL(changed(Player *)), portfolioView, SLOT(playerChanged()));
+ connect(portfolioView, SIGNAL(newTrade(Player *)), m_atlantikNetwork, SLOT(newTrade(Player *)));
+ connect(portfolioView, SIGNAL(estateClicked(Estate *)), m_board, SLOT(prependEstateDetails(Estate *)));
+
+ m_portfolioLayout->addWidget(portfolioView);
+ portfolioView->show();
+}
+
+PortfolioView *Atlantik::findPortfolioView(Player *player)
+{
+ PortfolioView *portfolioView = 0;
+ for (QPtrListIterator<PortfolioView> it(m_portfolioViews); (portfolioView = *it) ; ++it)
+ if (player == portfolioView->player())
+ return portfolioView;
+
+ return 0;
}
Index: atlantik.h
===================================================================
RCS file: /home/kde/kdegames/atlantik/client/atlantik.h,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- atlantik.h 19 Jan 2003 23:58:59 -0000 1.53
+++ atlantik.h 20 Jan 2003 00:57:23 -0000 1.54
@@ -186,6 +186,8 @@
private:
void initNetworkObject();
+ void addPortfolioView(Player *player);
+ PortfolioView *findPortfolioView(Player *player);
QWidget *m_mainWidget, *m_portfolioWidget;
QGridLayout *m_mainLayout;