[prev in list] [next in list] [prev in thread] [next in thread] 

List:       atlantik-devel
Subject:    [atlantik-cvs] CVS: kdegames/atlantik/client atlantik.cpp,1.135,1.136 atlantik.h,1.53,1.54
From:       kde () office ! kde ! org
Date:       2003-01-20 0:57:28
[Download RAW message or body]

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;

_______________________________________________
atlantik-cvs mailing list
atlantik-cvs@mail.kde.org
http://mail.kde.org/mailman/listinfo/atlantik-cvs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic