[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.96.6.2,1.96.6.3 board.h,1.59,1.59.6.
From:       kde () office ! kde ! org
Date:       2003-01-21 2:36:44
[Download RAW message or body]

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

Modified Files:
      Tag: KDE_3_1_BRANCH
	board.cpp board.h estatedetails.cpp estatedetails.h 
Log Message:
backport display, fix 52208

Index: board.cpp
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/board.cpp,v
retrieving revision 1.96.6.2
retrieving revision 1.96.6.3
diff -u -d -r1.96.6.2 -r1.96.6.3
--- board.cpp	20 Jan 2003 22:28:07 -0000	1.96.6.2
+++ board.cpp	21 Jan 2003 02:36:42 -0000	1.96.6.3
@@ -17,6 +17,7 @@
 #include <iostream>
 
 #include <qpainter.h>
+#include <qstring.h>
 
 #include <kdebug.h>
 #include <klocale.h>
@@ -95,8 +96,7 @@
 	return m_estateViews;
 }
 
-
-EstateView *AtlantikBoard::getEstateView(Estate *estate)
+EstateView *AtlantikBoard::findEstateView(Estate *estate)
 {
 	EstateView *estateView;
 	for (QPtrListIterator<EstateView> i(m_estateViews); *i; ++i)
@@ -196,7 +196,7 @@
 	QTimer::singleShot(100, this, SLOT(slotResizeAftermath()));
 }
 
-void AtlantikBoard::playerChanged()
+void AtlantikBoard::playerChanged(Player *player)
 {
 	kdDebug() << "Board::playerChanged()" << endl;
 	// TODO: implement decent AtlantikBoard::playerChanged to update tokens
@@ -366,10 +366,8 @@
 		m_displayQueue.prepend(new QWidget(this));
 		break;
 	case 1:
-		if (m_displayQueue.getFirst() == m_lastServerDisplay)
-			m_lastServerDisplay = 0;
-		m_displayQueue.removeFirst();
-		m_displayQueue.prepend(new QWidget(this));
+		if (EstateDetails *display = dynamic_cast<EstateDetails*>(m_lastServerDisplay))
+			display->setEstate(0);
 		break;
 	default:
 		if (m_displayQueue.getFirst() == m_lastServerDisplay)
@@ -380,79 +378,47 @@
 	updateCenter();
 }
 
-void AtlantikBoard::displayText(QString caption, QString body)
-{
-	BoardDisplay *bDisplay = new BoardDisplay(caption, body, this);
-	m_lastServerDisplay = bDisplay;
-
-	if (m_displayQueue.getFirst() != m_lastServerDisplay)
-		m_displayQueue.removeFirst();
-
-	m_displayQueue.prepend(bDisplay);
-	updateCenter();
-
-	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_lastServerDisplay))
-		display->addButton(command, caption, enabled);
-	else if (EstateDetails *display = \
dynamic_cast<EstateDetails*>(m_lastServerDisplay)) +	if (EstateDetails *display = \
dynamic_cast<EstateDetails*>(m_lastServerDisplay))  display->addButton(command, \
caption, enabled);  }
 
 void AtlantikBoard::addCloseButton()
 {
-	BoardDisplay *bDisplay = 0;
 	EstateDetails *eDetails = 0;
-	if ((bDisplay = dynamic_cast<BoardDisplay*>(m_lastServerDisplay)) && bDisplay != \
                m_displayQueue.getLast())
-		bDisplay->addCloseButton();
-	else if ((eDetails = dynamic_cast<EstateDetails*>(m_lastServerDisplay)) && eDetails \
!= m_displayQueue.getLast()) +	if ((eDetails = \
dynamic_cast<EstateDetails*>(m_lastServerDisplay)) && eDetails != \
m_displayQueue.getLast())  eDetails->addCloseButton();
 }
 
-void AtlantikBoard::insertEstateDetails(Estate *estate)
+void AtlantikBoard::insertDetails(QString text, bool clearText, bool clearButtons, \
Estate *estate)  {
-	if (!estate)
-		return;
-
 	EstateDetails *eDetails = 0;
 
-	// This might just be a update
-	if ((eDetails = dynamic_cast<EstateDetails*>(m_lastServerDisplay)) && \
eDetails->estate() == estate) +	if ((eDetails = \
dynamic_cast<EstateDetails*>(m_lastServerDisplay)))  {
-		eDetails->newUpdate();
+		if (clearText)
+			eDetails->setText(text);
+		else
+			eDetails->appendText(text);
+
+		if (clearButtons)
+			eDetails->clearButtons();
+
+		eDetails->setEstate(estate);
 		return;
 	}
 
 	if (m_displayQueue.getFirst() != m_lastServerDisplay)
 		m_displayQueue.removeFirst();
-	else
-	{
-		if (BoardDisplay *display = dynamic_cast<BoardDisplay*>(m_lastServerDisplay))
-			display->addCloseButton();
-		else if (EstateDetails *display = \
                dynamic_cast<EstateDetails*>(m_lastServerDisplay))
-			display->addCloseButton();
-	}
 
-	eDetails = new EstateDetails(estate, this);
+	eDetails = new EstateDetails(estate, text, this);
 	m_lastServerDisplay = eDetails;
 	connect(eDetails, SIGNAL(buttonCommand(QString)), this, \
SIGNAL(buttonCommand(QString)));  connect(eDetails, SIGNAL(buttonClose()), this, \
SLOT(displayDefault()));  
-	// 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();
+	m_displayQueue.insert(0, eDetails);
+	updateCenter();
 }
 
 void AtlantikBoard::prependEstateDetails(Estate *estate)
@@ -460,7 +426,7 @@
 	if (!estate)
 		return;
 
-	EstateDetails *eDetails = new EstateDetails(estate, this);
+	EstateDetails *eDetails = new EstateDetails(estate, QString::null, this);
 	eDetails->addCloseButton();
 
 	if (m_displayQueue.getFirst() != m_lastServerDisplay)

Index: board.h
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/board.h,v
retrieving revision 1.59
retrieving revision 1.59.6.1
diff -u -d -r1.59 -r1.59.6.1
--- board.h	25 Jul 2002 14:38:36 -0000	1.59
+++ board.h	21 Jan 2003 02:36:42 -0000	1.59.6.1
@@ -46,6 +46,7 @@
 	void addToken(Player *player, EstateView *location = 0);
 	void indicateUnownedChanged();
 	QPtrList<EstateView> estateViews();
+	EstateView *findEstateView(Estate *estate);
 	QWidget *centerWidget();
 
 public slots:
@@ -53,12 +54,11 @@
 	void slotResizeAftermath();
 
 private slots:
-	void playerChanged();
+	void playerChanged(Player *player);
 	void displayDefault();
-	void displayText(QString caption, QString body);
 	void displayButton(QString command, QString caption, bool enabled);
 	void prependEstateDetails(Estate *);
-	void insertEstateDetails(Estate *);
+	void insertDetails(QString text, bool clearText, bool clearButtons, Estate *estate \
= 0);  void addCloseButton();
 
 signals:
@@ -69,7 +69,6 @@
 	void resizeEvent(QResizeEvent *);
 
 private:
-	EstateView *getEstateView(Estate *estate);
 	void moveToken(Token *, int destination);
 	void updateCenter();
 

Index: estatedetails.cpp
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/estatedetails.cpp,v
retrieving revision 1.12.4.1
retrieving revision 1.12.4.2
diff -u -d -r1.12.4.1 -r1.12.4.2
--- estatedetails.cpp	27 Dec 2002 01:37:20 -0000	1.12.4.1
+++ estatedetails.cpp	21 Jan 2003 02:36:42 -0000	1.12.4.2
@@ -22,6 +22,8 @@
 
 #include <kdialog.h>
 #include <kglobalsettings.h>
+#include <kiconloader.h>
+#include <klistview.h>
 #include <klocale.h>
 #include <kpixmap.h>
 #include <kpushbutton.h>
@@ -33,34 +35,45 @@
 #include "estatedetails.h"
 #include "estatedetails.moc"
 
-EstateDetails::EstateDetails(Estate *estate, QWidget *parent, const char *name) : \
QWidget(parent, name) +EstateDetails::EstateDetails(Estate *estate, QString text, \
QWidget *parent, const char *name) : QWidget(parent, name)  {
-	m_estate = estate;
-	setPaletteBackgroundColor(m_estate->bgColor());
-
 	m_pixmap = 0;
+	m_quartzBlocks = 0;
 	b_recreate = true;
+	m_recreateQuartz = true;
+
+	m_estate = 0;
 
-	m_quartzBlocks = 0;
 	m_closeButton = 0;
 	m_buttons.setAutoDelete(true);
-	m_recreateQuartz = true;
 
 	m_mainLayout = new QVBoxLayout(this, KDialog::marginHint(), \
KDialog::spacingHint());  Q_CHECK_PTR(m_mainLayout);
 
-	m_mainLayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Minimum, \
QSizePolicy::Expanding)); +	m_mainLayout->addItem(new \
QSpacerItem(KDialog::spacingHint(), KDialog::spacingHint()+50, QSizePolicy::Fixed, \
QSizePolicy::Minimum)); +
+	m_infoListView = new KListView(this, "infoListView");
+	m_infoListView->addColumn(m_estate ? m_estate->name() : QString::null);
+	m_infoListView->setSorting(-1);
+	m_mainLayout->addWidget(m_infoListView);
+
+	if (!text.isEmpty())
+		appendText(text);
 
 	m_buttonBox = new QHBoxLayout(this, 0, KDialog::spacingHint());
 	m_mainLayout->addItem(m_buttonBox);
 
 	m_buttonBox->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, \
QSizePolicy::Minimum)); +
+	setEstate(estate);
+	setPaletteBackgroundColor(m_estate ? m_estate->bgColor() : Qt::white);
 }
 
 EstateDetails::~EstateDetails()
 {
 	delete m_pixmap;
 	delete m_quartzBlocks;
+	delete m_infoListView;
 }
 
 void EstateDetails::paintEvent(QPaintEvent *)
@@ -103,7 +116,7 @@
 
 		painter.setPen(Qt::black);
 
-		painter.setBrush(m_estate->bgColor());
+		painter.setBrush(m_estate ? m_estate->bgColor() : Qt::white);
 		painter.drawRect(rect());
 
 /*
@@ -112,96 +125,77 @@
 			painter.drawPixmap( (width() - icon->width())/2, (height() - icon->height())/2, \
                *icon);
 */
 
-		int titleHeight = 50;
-		QColor titleColor = (m_estate->color().isValid() ? m_estate->color() : \
                m_estate->bgColor().light(80));
-
-		KPixmap* quartzBuffer = new KPixmap;
-		quartzBuffer->resize(25, (height()/4)-2);
-
-		QPainter quartzPainter;
-		quartzPainter.begin(quartzBuffer, this);
+		if (m_estate)
+		{
+			int titleHeight = 50;
+			QColor titleColor = (m_estate->color().isValid() ? m_estate->color() : \
m_estate->bgColor().light(80));  
-		painter.setBrush(titleColor);
-		painter.drawRect(0, 0, width(), titleHeight);
+			KPixmap* quartzBuffer = new KPixmap;
+			quartzBuffer->resize(25, (height()/4)-2);
 
-		if (m_quartzBlocks)
-		{
-			quartzPainter.drawPixmap(0, 0, *m_quartzBlocks);
-			painter.drawPixmap(1, 1, *quartzBuffer);
-		}
+			QPainter quartzPainter;
+			quartzPainter.begin(quartzBuffer, this);
 
-		if (m_estate->houses() > 0)
-		{
-			int titleWidth = width()/2;
+			painter.setBrush(titleColor);
+			painter.drawRect(0, 0, width(), titleHeight);
 
-			if (m_estate->houses() == 5)
-			{
-				// Hotel
-				painter.setBrush(redHotel);
-				painter.drawRect(2, 2, titleWidth-4, titleHeight-4);
-			}
-			else
+			if (m_quartzBlocks)
 			{
-				// Houses
-				painter.setBrush(greenHouse);
-				int h = titleHeight-4, w = titleWidth-4;
-				for ( unsigned int i=0 ; i < m_estate->houses() ; i++ )
-					painter.drawRect(2+(i*(w+2)), 2, w, h);
+				quartzPainter.drawPixmap(0, 0, *m_quartzBlocks);
+				painter.drawPixmap(1, 1, *quartzBuffer);
 			}
-		}
 
-		quartzPainter.end();
-		delete quartzBuffer;
-
-		// TODO: steal blur code from kicker/taskbar/taskcontainer.cpp
+			if (m_estate->houses() > 0)
+			{
+				int titleWidth = width() / 5;
 
-		// Estate name
-		painter.setPen(Qt::white);
-		int fontSize = KGlobalSettings::generalFont().pointSize();
-		if (fontSize == -1)
-			fontSize = KGlobalSettings::generalFont().pixelSize();
+				if (m_estate->houses() == 5)
+				{
+					// Hotel
+					painter.setBrush(redHotel);
+					painter.drawRect(2, 2, titleWidth-4, titleHeight-4);
+				}
+				else
+				{
+					// Houses
+					painter.setBrush(greenHouse);
+					int h = titleHeight-4, w = titleWidth-4;
+					for ( unsigned int i=0 ; i < m_estate->houses() ; i++ )
+						painter.drawRect(2+(i*(w+2)), 2, w, h);
+				}
+			}
 
-		painter.setFont(QFont(KGlobalSettings::generalFont().family(), fontSize * 2, \
                QFont::Bold));
-		painter.drawText(KDialog::marginHint(), KDialog::marginHint(), \
width()-KDialog::marginHint(), titleHeight, Qt::AlignJustify, m_estate->name()); \
+			quartzPainter.end(); +			delete quartzBuffer;
 
-		painter.setPen(Qt::black);
+			// TODO: steal blur code from kicker/taskbar/taskcontainer.cpp
 
-		int xText = 0;
-		// Estate group
-		if (m_estate->estateGroup())
-		{
-			xText = titleHeight - fontSize - KDialog::marginHint();
-			painter.setFont(QFont(KGlobalSettings::generalFont().family(), fontSize, \
                QFont::Bold));
-			painter.drawText(5, xText, width()-10, titleHeight, Qt::AlignRight, \
                m_estate->estateGroup()->name().upper());
-		}
+			// Estate name
+			painter.setPen(Qt::white);
+			int fontSize = KGlobalSettings::generalFont().pointSize();
+			if (fontSize == -1)
+				fontSize = KGlobalSettings::generalFont().pixelSize();
 
-		xText = titleHeight + fontSize + 5;
-		painter.setFont(QFont(KGlobalSettings::generalFont().family(), fontSize, \
QFont::Normal)); +			painter.setFont(QFont(KGlobalSettings::generalFont().family(), \
fontSize * 2, QFont::Bold)); +			painter.drawText(KDialog::marginHint(), \
KDialog::marginHint(), width()-KDialog::marginHint(), titleHeight, Qt::AlignJustify, \
m_estate->name());  
-		// Price
-		if (m_estate->price())
-		{
-			painter.drawText(5, xText, i18n("Price: %1").arg(m_estate->price()));
-			xText += (fontSize + 5);
-		}
+			painter.setPen(Qt::black);
 
-		// Owner, houses, isMortgaged
-		if (m_estate->canBeOwned())
-		{
-			painter.drawText(5, xText, i18n("Owner: %1").arg(m_estate->owner() ? \
                m_estate->owner()->name() : i18n("unowned")));
-			xText += (fontSize + 5);
+			int xText = 0;
 
-			if (m_estate->isOwned())
+			// Estate group
+			if (m_estate->estateGroup())
 			{
-				painter.drawText(5, xText, i18n("Houses: %1").arg(m_estate->houses()));
-				xText += (fontSize + 5);
-
-				painter.drawText(5, xText, i18n("Mortgaged: %1").arg(m_estate->isMortgaged() ? \
                i18n("Yes") : i18n("No")));
-				xText += (fontSize + 5);
+				xText = titleHeight - fontSize - KDialog::marginHint();
+				painter.setFont(QFont(KGlobalSettings::generalFont().family(), fontSize, \
QFont::Bold)); +				painter.drawText(5, xText, width()-10, titleHeight, \
Qt::AlignRight, m_estate->estateGroup()->name().upper());  }
-		}
 
+			xText = titleHeight + fontSize + 5;
+			painter.setFont(QFont(KGlobalSettings::generalFont().family(), fontSize, \
QFont::Normal)); +		}
 		b_recreate = false;
+
 	}
 	bitBlt(this, 0, 0, m_pixmap);
 }
@@ -234,7 +228,64 @@
 	connect(m_closeButton, SIGNAL(pressed()), this, SIGNAL(buttonClose()));
 }
 
-void EstateDetails::newUpdate()
+void EstateDetails::setEstate(Estate *estate)
+{
+	if (m_estate != estate)
+	{
+		m_estate = estate;
+
+		QString columnText = m_estate ? m_estate->name() : QString::null;
+		m_infoListView->setColumnText(0, columnText);
+
+		// Price
+		if (m_estate)
+		{
+			QListViewItem *infoText = 0;
+
+			if (m_estate->price())
+			{
+				infoText = new QListViewItem(m_infoListView, m_infoListView->lastItem(), \
i18n("Price: %1").arg(m_estate->price())); +				infoText->setPixmap(0, \
QPixmap(SmallIcon("info"))); +			}
+
+			// Owner, houses, isMortgaged
+			if (m_estate && m_estate->canBeOwned())
+			{
+				infoText = new QListViewItem(m_infoListView, m_infoListView->lastItem(), \
i18n("Owner: %1").arg(m_estate->owner() ? m_estate->owner()->name() : \
i18n("unowned"))); +				infoText->setPixmap(0, QPixmap(SmallIcon("info")));
+
+				if (m_estate->isOwned())
+				{
+					infoText = new QListViewItem(m_infoListView, m_infoListView->lastItem(), \
i18n("Houses: %1").arg(m_estate->houses())); +					infoText->setPixmap(0, \
QPixmap(SmallIcon("info"))); +
+					infoText = new QListViewItem(m_infoListView, m_infoListView->lastItem(), \
i18n("Mortgaged: %1").arg(m_estate->isMortgaged() ? i18n("Yes") : i18n("No"))); \
+					infoText->setPixmap(0, QPixmap(SmallIcon("info"))); +				}
+			}
+		}
+
+		b_recreate = true;
+		update();
+	}
+}
+
+void EstateDetails::setText(QString text)
+{
+	m_infoListView->clear();
+	appendText(text);
+}
+
+void EstateDetails::appendText(QString text)
+{
+	QListViewItem *infoText = new QListViewItem(m_infoListView, \
m_infoListView->lastItem(), text); +	if (text.contains("rolls"))
+		infoText->setPixmap(0, QPixmap(SmallIcon("roll")));
+	else
+		infoText->setPixmap(0, QPixmap(SmallIcon("atlantik")));
+}
+
+void EstateDetails::clearButtons()
 {
 	if (m_closeButton)
 	{
@@ -245,10 +296,6 @@
 	// Delete buttons
 	m_buttons.clear();
 	m_buttonCommandMap.clear();
-
-	// Redraw details
-	b_recreate = true;
-	update();
 }
 
 void EstateDetails::buttonPressed()

Index: estatedetails.h
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/estatedetails.h,v
retrieving revision 1.7.4.1
retrieving revision 1.7.4.2
diff -u -d -r1.7.4.1 -r1.7.4.2
--- estatedetails.h	27 Dec 2002 01:37:20 -0000	1.7.4.1
+++ estatedetails.h	21 Jan 2003 02:36:42 -0000	1.7.4.2
@@ -20,10 +20,12 @@
 #include <qwidget.h>
 
 class QPixmap;
+class QString;
 class QHBoxLayout;
 class QVBoxLayout;
 class QVGroupBox;
 
+class KListView;
 class KPixmap;
 class KPushButton;
 
@@ -35,13 +37,16 @@
 Q_OBJECT
 
 public:
-	EstateDetails(Estate *estate, QWidget *parent, const char *name = 0);
+	EstateDetails(Estate *estate, QString text, QWidget *parent, const char *name = 0);
 	~EstateDetails();
 	Estate *estate() { return m_estate; }
 
 	void addButton(const QString command, const QString caption, bool enabled);
 	void addCloseButton();
-	void newUpdate();
+	void setEstate(Estate *estate);
+	void setText(QString text);
+	void appendText(QString text);
+	void clearButtons();
 
 protected:
 	void paintEvent(QPaintEvent *);
@@ -58,6 +63,7 @@
 	Estate *m_estate;
 	QPixmap *m_pixmap;
 	KPixmap *m_quartzBlocks;
+	KListView *m_infoListView;
 	KPushButton *m_closeButton;
 	bool b_recreate, m_recreateQuartz;
 	QVBoxLayout *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