[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.99,1.100 portfolioview.cpp,1.47,1.48
From:       kde () office ! kde ! org
Date:       2002-11-29 4:27:33
[Download RAW message or body]

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

Modified Files:
	board.cpp portfolioview.cpp portfolioview.h token.cpp token.h 
Log Message:
framework support for custom tokens

Index: board.cpp
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/board.cpp,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -d -r1.99 -r1.100
--- board.cpp	2002/11/28 21:38:24	1.99
+++ board.cpp	2002/11/29 04:27:31	1.100
@@ -43,6 +43,8 @@
 	m_animateTokens = false;
 	m_lastServerDisplay = 0;
 
+	setMinimumSize(QSize(500, 500));
+
 	int sideLen = maxEstates/4;
 
 	// Animated token movement

Index: portfolioview.cpp
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/portfolioview.cpp,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -d -r1.47 -r1.48
--- portfolioview.cpp	2002/11/27 21:08:56	1.47
+++ portfolioview.cpp	2002/11/29 04:27:31	1.48
@@ -17,8 +17,13 @@
 #include <qpainter.h>
 #include <qcursor.h>
 
+#include <kdebug.h>
+#include <kdialogbase.h>
+#include <kiconeffect.h>
+#include <kglobalsettings.h>
 #include <klocale.h>
 #include <kpopupmenu.h>
+#include <kstddirs.h>
 
 #include <atlantic_core.h>
 #include <config.h>
@@ -33,6 +38,7 @@
 #define PE_SPACE	2
 #define PE_MARGINW	5
 #define PE_MARGINH	2
+#define ICONSIZE	48
 
 PortfolioView::PortfolioView(AtlanticCore *core, Player *player, QColor activeColor, \
QColor inactiveColor, QWidget *parent, const char *name) : QWidget(parent, name)  {
@@ -42,32 +48,15 @@
 	m_inactiveColor = inactiveColor;
 	m_lastPE = 0;
 
-	b_recreate = true;
-	qpixmap = 0;
-
-	setFixedSize(QSize(225, 100));
 	setBackgroundColor(Qt::white);
-	
-	m_nameLabel = new QLabel(this);
-	m_nameLabel->setAlignment(Qt::AlignLeft);
-	m_nameLabel->setGeometry(5, 0, width()/2, height());
-	m_nameLabel->setBackgroundColor(m_player->hasTurn() ? m_activeColor : \
                m_inactiveColor);
-	m_nameLabel->setMinimumSize(m_nameLabel->sizeHint());
-	m_nameLabel->setMaximumWidth(width()-10);
-	m_nameLabel->setMaximumHeight(15);
-	m_nameLabel->show();
 
-	m_moneyLabel = new QLabel(this);
-	m_moneyLabel->setAlignment(Qt::AlignRight);
-	m_moneyLabel->setGeometry(width()/2, 0, width()-5, height());
-	m_moneyLabel->setBackgroundColor(m_player->hasTurn() ? m_activeColor : \
                m_inactiveColor);
-	m_moneyLabel->setMinimumSize(m_moneyLabel->sizeHint());
-	m_moneyLabel->setMaximumWidth(width()/2);
-	m_moneyLabel->setMaximumHeight(15);
-	m_moneyLabel->show();
+	qpixmap = 0;
+	b_recreate = true;
 
-	// TODO: call buildPortfolio? Although, we should be able to assume no
-	// new estates or players are introduced after the game has been started
+	// Init icon
+	m_image = 0;
+	m_imageName = "hamburger";
+	loadIcon();
 }
 
 Player *PortfolioView::player()
@@ -82,6 +71,9 @@
 	QPtrList<EstateGroup> estateGroups = m_atlanticCore->estateGroups();
 	PortfolioEstate *lastPE = 0, *firstPEprevGroup = 0;
 
+	int x = 100, y = 25, marginHint = 5, bottom;
+	bottom = ICONSIZE - PE_HEIGHT - marginHint;
+
 	EstateGroup *estateGroup;
 	for (QPtrListIterator<EstateGroup> it(estateGroups); *it; ++it)
 	{
@@ -102,22 +94,25 @@
 					portfolioEstateMap[estate->id()] = portfolioEstate;
 
  					connect(portfolioEstate, SIGNAL(estateClicked(Estate *)), this, \
                SIGNAL(estateClicked(Estate *)));
-					int x, y;
 					if (lastPE)
 					{
 						x = lastPE->x() + 2;
 						y = lastPE->y() + 4;
+						if (y > bottom)
+							bottom = y;
 					}
 					else if (firstPEprevGroup)
 					{
 						x = firstPEprevGroup->x() + PE_WIDTH + 8;
-						y = 18;
+						y = 20 + marginHint;
 						firstPEprevGroup = portfolioEstate;
 					}
 					else
 					{
-						x = 5;
-						y = 18;
+						x = ICONSIZE + marginHint;
+						y = 20 + marginHint;
+						if (y > bottom)
+							bottom = y;
 						firstPEprevGroup = portfolioEstate;
 					}
 
@@ -131,9 +126,43 @@
 			}
 		}
 	}
+	setMinimumWidth(x + PE_WIDTH + marginHint);
+	setMinimumHeight(bottom + PE_HEIGHT + marginHint);
 }
 
-/*
+void PortfolioView::loadIcon()
+{
+	if (m_imageName == m_player->image())
+		return;
+	m_imageName = m_player->image();
+
+	delete m_image;
+	m_image = 0;
+
+	m_image = new QPixmap(locate("data", \
"atlantik/themes/default/tokens/hamburger.png")); +
+	QString filename = locate("data", "atlantik/themes/default/tokens/" + m_imageName + \
".png"); +	if (KStandardDirs::exists(filename))
+		m_image = new QPixmap(filename);
+
+	if (!m_image)
+	{
+		m_imageName = "hamburger";
+
+		filename = locate("data", "atlantik/themes/default/tokens/" + m_imageName + \
".png"); +		if (KStandardDirs::exists(filename))
+			m_image = new QPixmap(filename);
+	}
+
+	QWMatrix m;
+	m.scale(double(ICONSIZE) / m_image->width(), double(ICONSIZE) / m_image->height());
+	QPixmap *scaledPixmap = new QPixmap(ICONSIZE, ICONSIZE);
+	*scaledPixmap = m_image->xForm(m);
+
+	delete m_image;
+	m_image = scaledPixmap;
+}
+
 void PortfolioView::paintEvent(QPaintEvent *)
 {
 	if (b_recreate)
@@ -144,21 +173,40 @@
 		QPainter painter;
 		painter.begin(qpixmap, this);
 
+		painter.setPen(Qt::white);
+		painter.setBrush(Qt::white);
+		painter.drawRect(rect());
+
+		painter.setPen(m_player->hasTurn() ? m_activeColor : Qt::black);
+		painter.setBrush(m_player->hasTurn() ? m_activeColor : Qt::black);
+		painter.drawRect(0, 0, width(), 20);
+		
+		if (m_image)
+		{
+			painter.setPen(Qt::black);
+			painter.setBrush(Qt::white);
+			painter.drawRect(0, 0, ICONSIZE, ICONSIZE);
+
+			painter.drawPixmap(0, 0, *m_image);
+		}
+
+		painter.setPen(Qt::white);
+		painter.setFont(QFont(KGlobalSettings::generalFont().family(), \
KGlobalSettings::generalFont().pointSize(), QFont::Bold)); \
+		painter.drawText(ICONSIZE + KDialog::marginHint(), 15, m_player->name()); +
 		b_recreate = false;
 	}
 	bitBlt(this, 0, 0, qpixmap);
 }
-*/
 
-void PortfolioView::playerChanged()
+void PortfolioView::resizeEvent(QResizeEvent *)
 {
-	m_nameLabel->setText(m_player->name());
-	m_nameLabel->setBackgroundColor(m_player->hasTurn() ? m_activeColor : \
                m_inactiveColor);
-	m_nameLabel->update();
+	b_recreate = true;
+}
 
-	m_moneyLabel->setText(QString::number(m_player->money()));
-	m_moneyLabel->setBackgroundColor(m_player->hasTurn() ? m_activeColor : \
                m_inactiveColor);
-	m_moneyLabel->update();
+void PortfolioView::playerChanged()
+{
+	loadIcon();
 
 	b_recreate = true;
 	update();

Index: portfolioview.h
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/portfolioview.h,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- portfolioview.h	2002/11/27 21:08:56	1.24
+++ portfolioview.h	2002/11/29 04:27:31	1.25
@@ -19,7 +19,6 @@
 
 #include <qwidget.h>
 #include <qpixmap.h>
-#include <qlabel.h>
 #include <qmap.h>
 
 #include "portfolioestate.h"
@@ -42,7 +41,8 @@
 	Player *player();
 
 protected:
-//		void paintEvent(QPaintEvent *);
+	void paintEvent(QPaintEvent *);
+	void resizeEvent(QResizeEvent *);
 	void mousePressEvent(QMouseEvent *);
 
 signals:
@@ -54,13 +54,15 @@
 	void slotMenuAction(int item);
 
 private:
+	void loadIcon();
+
 	AtlanticCore *m_atlanticCore;
 	Player *m_player;
 	PortfolioEstate *m_lastPE;
 	QColor m_activeColor, m_inactiveColor;
-	QPixmap *qpixmap;
+	QPixmap *qpixmap, *m_image;
+	QString m_imageName;
 	bool b_recreate;
-	QLabel *m_nameLabel, *m_moneyLabel;
 	QMap<int, PortfolioEstate*> portfolioEstateMap;
 };
 

Index: token.cpp
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/token.cpp,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- token.cpp	2002/11/28 21:38:24	1.32
+++ token.cpp	2002/11/29 04:27:31	1.33
@@ -17,6 +17,7 @@
 #include <iostream>
 
 #include <qpainter.h>
+#include <qpixmap.h>
 #include <qfont.h>
 
 #include <kdebug.h>
@@ -30,6 +31,8 @@
 
 #include "token.moc"
 
+#define ICONSIZE	32
+
 Token::Token(Player *player, AtlantikBoard *parent, const char *name) : \
QWidget(parent, name)  {
 	setBackgroundMode(NoBackground); // avoid flickering
@@ -46,7 +49,12 @@
 	qpixmap = 0;
 	b_recreate = true;
 
-	setFixedSize(QSize(26, 26));
+	// Init icon
+	m_image = 0;
+	m_imageName = "hamburger";
+	loadIcon();
+
+	setFixedSize(QSize(ICONSIZE, ICONSIZE + \
KGlobalSettings::generalFont().pointSize()));  }
 
 Player *Token::player()
@@ -68,25 +76,72 @@
 
 void Token::playerChanged()
 {
+	loadIcon();
+
 	b_recreate = true;
 	update();
 }
 
+void Token::loadIcon()
+{
+	kdDebug() << "loadicon [" << m_imageName << "][" << m_player->image() << "]" << \
endl; +
+	if (m_imageName != m_player->image())
+		m_imageName = m_player->image();
+	else
+		return;
+
+	delete m_image;
+	m_image = 0;
+
+	QString filename = locate("data", "atlantik/themes/default/tokens/" + m_imageName + \
".png"); +	if (KStandardDirs::exists(filename))
+		m_image = new QPixmap(filename);
+
+	if (!m_image)
+	{
+		m_imageName = "hamburger";
+
+		filename = locate("data", "atlantik/themes/default/tokens/" + m_imageName + \
".png"); +		if (KStandardDirs::exists(filename))
+			m_image = new QPixmap(filename);
+	}
+
+	QWMatrix m;
+	m.scale(double(ICONSIZE) / m_image->width(), double(ICONSIZE) / m_image->height());
+	QPixmap *scaledPixmap = new QPixmap(ICONSIZE, ICONSIZE);
+	*scaledPixmap = m_image->xForm(m);
+
+	delete m_image;
+	m_image = scaledPixmap;
+}
+
 void Token::paintEvent(QPaintEvent *)
 {
 	if (b_recreate)
 	{
 		delete qpixmap;
-		qpixmap = new QPixmap(locate("data", "atlantik/pics/token.png"));
+		qpixmap = new QPixmap(width(), height());
 
 		QPainter painter;
 		painter.begin(qpixmap, this);
 
-		painter.drawPixmap(0, 0, *qpixmap);
+        if (m_image)
+		{
+			painter.setPen(Qt::black);
+			painter.setBrush(Qt::white);
+			painter.drawRect(0, 0, ICONSIZE, ICONSIZE);
+
+			painter.drawPixmap(0, 0, *m_image);
+		}
 
 		painter.setPen(Qt::black);
-		painter.setFont(QFont(KGlobalSettings::generalFont().family(), \
                KGlobalSettings::generalFont().pointSize(), QFont::Bold));
-		painter.drawText(2, height()-2, m_player->name());
+		painter.setBrush(Qt::black);
+		painter.drawRect(0, ICONSIZE, width(), \
KGlobalSettings::generalFont().pointSize()); +
+		painter.setPen(Qt::white);
+		painter.setFont(QFont(KGlobalSettings::generalFont().family(), \
KGlobalSettings::generalFont().pointSize(), QFont::DemiBold)); +		painter.drawText(1, \
height()-1, m_player->name());  
 		b_recreate = false;
 	}

Index: token.h
===================================================================
RCS file: /home/kde/kdegames/atlantik/libatlantikui/token.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- token.h	2002/11/28 21:38:24	1.18
+++ token.h	2002/11/29 04:27:31	1.19
@@ -18,7 +18,8 @@
 #define ATLANTIK_TOKEN_H
 
 #include <qwidget.h>
-#include <qpixmap.h>
+
+class QPixmap;
 
 class Player;
 class Estate;
@@ -46,12 +47,15 @@
 		void resizeEvent(QResizeEvent *);
 
 private:
+		void loadIcon();
+
 		Player *m_player;
 		Estate *m_location, *m_destination;
 		bool m_inJail;
 		AtlantikBoard *m_parentBoard;
 		bool b_recreate;
-		QPixmap *qpixmap;
+		QPixmap *qpixmap, *m_image;
+		QString m_imageName;
 };
 
 #endif

_______________________________________________
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