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

List:       atlantik-devel
Subject:    [atlantik-cvs] CVS: kdegames/atlantik/libatlantikui board.cpp,1.91,1.92 board.h,1.56,1.57 display_wi
From:       kde () office ! kde ! org
Date:       2002-07-23 23:39:43
[Download RAW message or body]

Update of /home/kde/kdegames/atlantik/libatlantikui
In directory office:/tmp/cvs-serv22616/libatlantikui

Modified Files:
	board.cpp board.h display_widget.cpp display_widget.h 
	estatedetails.cpp estatedetails.h 
Log Message:
less braindead display widgets

Index: board.cpp
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/board.cpp,v
retrieving revision 1.91
retrieving revision 1.92
diff -u -d -r1.91 -r1.92
--- board.cpp	2002/07/22 22:07:30	1.91
+++ board.cpp	2002/07/23 23:39:41	1.92
@@ -40,6 +40,7 @@
 	m_maxEstates = maxEstates;
 	m_mode = mode;
 	m_animateTokens = false;
+	m_removeFirstOnPrepend = false;
 
 	int sideLen = maxEstates/4;
 
@@ -66,7 +67,7 @@
 //	spacer = new QWidget(this);
 //	m_gridLayout->addWidget(spacer, sideLen, sideLen); // SE
 
-	m_center = 0;
+	m_displayQueue.setAutoDelete(true);
 	displayDefault();
 
 	QColor color;
@@ -175,7 +176,7 @@
 
 	// Designer has its own LMBClicked slot
 	if (m_mode == Play)
-		connect(estateView, SIGNAL(LMBClicked(Estate *)), this, SLOT(displayEstateDetails(Estate *)));
+		connect(estateView, SIGNAL(LMBClicked(Estate *)), this, SLOT(prependEstateDetails(Estate *)));
 
 	if (estateId<sideLen)
 		m_gridLayout->addWidget(estateView, sideLen, sideLen-estateId);
@@ -200,12 +201,9 @@
 
 void AtlantikBoard::addAuctionWidget(Auction *auction)
 {
-	if (m_center != 0)
-		delete m_center;
-
-	m_center = new AuctionWidget(m_atlanticCore, auction, this);
-	m_gridLayout->addMultiCellWidget(m_center, 1, m_gridLayout->numRows()-2, 1, m_gridLayout->numCols()-2);
-	m_center->show();
+	AuctionWidget *auctionW = new AuctionWidget(m_atlanticCore, auction, this);
+	m_displayQueue.prepend(auctionW);
+	updateCenter();
 
 	connect(auction, SIGNAL(completed()), this, SLOT(displayDefault()));
 }
@@ -399,50 +397,100 @@
 
 void AtlantikBoard::displayDefault()
 {
-	if (m_center != 0)
-		delete m_center;
-
-	m_center = new QWidget(this);
-	m_gridLayout->addMultiCellWidget(m_center, 1, m_gridLayout->numRows()-2, 1, m_gridLayout->numCols()-2);
-	m_center->show();
+	switch(m_displayQueue.count())
+	{
+	case 0:
+		m_displayQueue.prepend(new QWidget(this));
+		break;
+	case 1:
+		m_displayQueue.removeFirst();
+		m_displayQueue.prepend(new QWidget(this));
+		break;
+	default:
+		m_displayQueue.removeFirst();
+		break;
+	}
+	updateCenter();
 }
 
 void AtlantikBoard::displayText(QString caption, QString body)
 {
-	if (m_center != 0)
-		delete m_center;
-	
-	BoardDisplay *display = new BoardDisplay(caption, body, this);
-	m_center = display;
-	m_gridLayout->addMultiCellWidget(m_center, 1, m_gridLayout->numRows()-2, 1, m_gridLayout->numCols()-2);
-	m_center->show();
+	BoardDisplay *bDisplay = new BoardDisplay(caption, body, this);
 
-	connect(display, SIGNAL(buttonCommand(QString)), this, SIGNAL(buttonCommand(QString)));
+	if (m_removeFirstOnPrepend)
+		m_displayQueue.removeFirst();
+	m_removeFirstOnPrepend = false;
+	m_displayQueue.prepend(bDisplay);
+	updateCenter();
 
-//	QTimer::singleShot(3000, this, SLOT(displayDefault()));
+	connect(bDisplay, SIGNAL(buttonCommand(QString)), this, SIGNAL(buttonCommand(QString)));
+	connect(bDisplay, SIGNAL(buttonClose()), this, SLOT(displayDefault()));
 }
 
 void AtlantikBoard::displayButton(QString command, QString caption, bool enabled)
 {
-	if (BoardDisplay *display = dynamic_cast<BoardDisplay*>(m_center))
+	if (BoardDisplay *display = dynamic_cast<BoardDisplay*>(m_displayQueue.getFirst()))
 		display->addButton(command, caption, enabled);
-	else if (EstateDetails *display = dynamic_cast<EstateDetails*>(m_center))
+	else if (EstateDetails *display = dynamic_cast<EstateDetails*>(m_displayQueue.getFirst()))
 		display->addButton(command, caption, enabled);
 }
 
-void AtlantikBoard::displayEstateDetails(Estate *estate)
+void AtlantikBoard::addCloseButton()
+{
+	if (BoardDisplay *display = dynamic_cast<BoardDisplay*>(m_displayQueue.getFirst()))
+		display->addCloseButton();
+	else if (EstateDetails *display = dynamic_cast<EstateDetails*>(m_displayQueue.getFirst()))
+		display->addCloseButton();
+}
+
+void AtlantikBoard::insertEstateDetails(Estate *estate)
 {
 	if (!estate)
 		return;
 
-	// TODO: store m_center, it might be an auction or something else we'd like to restore
-	if (m_center != 0)
-		delete m_center;
+	if (m_removeFirstOnPrepend)
+		m_displayQueue.removeFirst();
+	m_removeFirstOnPrepend = false;
 
-	EstateDetails *display = new EstateDetails(estate, this);
-	m_center = display;
-	m_gridLayout->addMultiCellWidget(display, 1, m_gridLayout->numRows()-2, 1, m_gridLayout->numCols()-2);
-	display->show();
+	EstateDetails *eDetails = new EstateDetails(estate, this);
+	connect(eDetails, SIGNAL(buttonCommand(QString)), this, SIGNAL(buttonCommand(QString)));
+	connect(eDetails, SIGNAL(buttonClose()), this, SLOT(displayDefault()));
 
-	connect(display, SIGNAL(buttonCommand(QString)), this, SIGNAL(buttonCommand(QString)));
+	// Don't overwrite possible chance cards or previous estates
+	int uid = 0;
+	if (BoardDisplay *display = dynamic_cast<BoardDisplay*>(m_displayQueue.getFirst()))
+		uid = 1;
+	else if (EstateDetails *display = dynamic_cast<EstateDetails*>(m_displayQueue.getFirst()))
+		uid = 1;
+	
+	m_displayQueue.insert(uid, eDetails);
+
+	if (uid == 0)
+		updateCenter();
+}
+
+void AtlantikBoard::prependEstateDetails(Estate *estate)
+{
+	if (!estate)
+		return;
+
+	EstateDetails *eDetails = new EstateDetails(estate, this);
+	eDetails->addCloseButton();
+
+	if (m_removeFirstOnPrepend)
+		m_displayQueue.removeFirst();
+	m_removeFirstOnPrepend = true;
+	m_displayQueue.prepend(eDetails);
+	updateCenter();
+
+	connect(eDetails, SIGNAL(buttonCommand(QString)), this, SIGNAL(buttonCommand(QString)));
+	connect(eDetails, SIGNAL(buttonClose()), this, SLOT(displayDefault()));
+
+}
+
+void AtlantikBoard::updateCenter()
+{
+	QWidget *center = m_displayQueue.getFirst();
+	m_gridLayout->addMultiCellWidget(center, 1, m_gridLayout->numRows()-2, 1, m_gridLayout->numCols()-2);
+	center->show();
 }

Index: board.h
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/board.h,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -d -r1.56 -r1.57
--- board.h	2002/07/17 22:39:21	1.56
+++ board.h	2002/07/23 23:39:41	1.57
@@ -45,7 +45,6 @@
 	void addAuctionWidget(Auction *auction);
 	void addToken(Player *player, EstateView *location = 0);
 	void indicateUnownedChanged();
-	QWidget *centerWidget() { return m_center; };
 	QPtrList<EstateView> estateViews();
 
 public slots:
@@ -57,7 +56,9 @@
 	void displayDefault();
 	void displayText(QString caption, QString body);
 	void displayButton(QString command, QString caption, bool enabled);
-	void displayEstateDetails(Estate *);
+	void prependEstateDetails(Estate *);
+	void insertEstateDetails(Estate *);
+	void addCloseButton();
 
 signals:
 	void tokenConfirmation(Estate *estate);
@@ -65,15 +66,15 @@
 
 protected:
 	void resizeEvent(QResizeEvent *);
-	QWidget *m_center;
 
 private:
-	AtlanticCore *m_atlanticCore;
-	DisplayMode m_mode;
-
 	EstateView *getEstateView(Estate *estate);
 	void moveToken(Token *, int destination);
+	void updateCenter();
 
+	AtlanticCore *m_atlanticCore;
+	DisplayMode m_mode;
+
 	QWidget *spacer;
 	QGridLayout *m_gridLayout;
 	Token *move_token;
@@ -85,6 +86,8 @@
 
 	QPtrList<EstateView> m_estateViews;
 	QMap<Player *, Token *> tokenMap;
+	QPtrList<QWidget> m_displayQueue;
+	bool m_removeFirstOnPrepend;
 };
 
 #endif

Index: display_widget.cpp
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/display_widget.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- display_widget.cpp	2002/07/23 10:45:46	1.13
+++ display_widget.cpp	2002/07/23 23:39:41	1.14
@@ -48,6 +48,15 @@
 	connect(button, SIGNAL(pressed()), this, SLOT(buttonPressed()));
 }
 
+void BoardDisplay::addCloseButton()
+{
+	KPushButton *button = new KPushButton("Close", this);
+	m_buttonBox->addWidget(button);
+	button->show();
+
+	connect(button, SIGNAL(pressed()), this, SIGNAL(buttonClose()));
+}
+
 void BoardDisplay::buttonPressed()
 {
 	QObject *o = QObject::sender();

Index: display_widget.h
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/display_widget.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- display_widget.h	2002/07/23 10:45:46	1.12
+++ display_widget.h	2002/07/23 23:39:41	1.13
@@ -33,6 +33,7 @@
 	BoardDisplay(const QString &caption, const QString &body, QWidget *parent, const char *name=0);
 
 	void addButton(const QString &command, const QString &caption, bool enabled);
+	void addCloseButton();
 
 private slots:
 	void buttonPressed();
@@ -40,6 +41,7 @@
 
 signals:
 	void buttonCommand(QString);
+	void buttonClose();
 
 private:
 	QHBoxLayout *m_buttonBox;

Index: estatedetails.cpp
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/estatedetails.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- estatedetails.cpp	2002/07/17 22:39:21	1.6
+++ estatedetails.cpp	2002/07/23 23:39:41	1.7
@@ -209,6 +209,14 @@
 
 	connect(button, SIGNAL(pressed()), this, SLOT(buttonPressed()));
 }
+void EstateDetails::addCloseButton()
+{
+	KPushButton *button = new KPushButton("Close", this);
+	m_buttonBox->addWidget(button);
+	button->show();
+
+	connect(button, SIGNAL(pressed()), this, SIGNAL(buttonClose()));
+}
 
 void EstateDetails::buttonPressed()
 {

Index: estatedetails.h
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/estatedetails.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- estatedetails.h	2002/07/17 22:39:22	1.4
+++ estatedetails.h	2002/07/23 23:39:41	1.5
@@ -38,6 +38,7 @@
 	Estate *estate() { return m_estate; }
 
 	void addButton(const QString command, const QString caption, bool enabled);
+	void addCloseButton();
 
 protected:
 	void paintEvent(QPaintEvent *);
@@ -48,6 +49,7 @@
 
 signals:
 	void buttonCommand(QString);
+	void buttonClose();
 
 private:
 	Estate *m_estate;

_______________________________________________
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