summaryrefslogtreecommitdiffstats
path: root/sigmodr/widgets/TileItem.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-20 01:41:08 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-03-20 01:41:08 -0400
commit42f4df80fc0a4b1188377c8b776e2938de692b84 (patch)
treefb6f500b3c92338e14b3397a25712707847bdc8e /sigmodr/widgets/TileItem.cpp
parente5985d56f8ff4ed33a3c282661cc9bf084c76e96 (diff)
downloadsigen-42f4df80fc0a4b1188377c8b776e2938de692b84.tar.gz
sigen-42f4df80fc0a4b1188377c8b776e2938de692b84.tar.xz
sigen-42f4df80fc0a4b1188377c8b776e2938de692b84.zip
Fix up TileItem
Diffstat (limited to 'sigmodr/widgets/TileItem.cpp')
-rw-r--r--sigmodr/widgets/TileItem.cpp29
1 files changed, 24 insertions, 5 deletions
diff --git a/sigmodr/widgets/TileItem.cpp b/sigmodr/widgets/TileItem.cpp
index f1911d2d..4c7b3b74 100644
--- a/sigmodr/widgets/TileItem.cpp
+++ b/sigmodr/widgets/TileItem.cpp
@@ -24,6 +24,9 @@
#include <sigmod/Sprite.h>
#include <sigmod/Tile.h>
+// KDE includes
+#include <KColorScheme>
+
// Qt includes
#include <QtGui/QPainter>
#include <QtGui/QStyle>
@@ -35,7 +38,7 @@ using namespace Sigmodr::Widgets;
TileItem::TileItem(MapTile* tile, QGraphicsScene* parent) :
MapItem(parent),
m_tile(tile),
- m_tileIndex(-1)
+ m_tileIndex(INT_MIN)
{
connect(m_tile, SIGNAL(changed()), this, SLOT(tileChanged()));
connect(m_tile, SIGNAL(error(QString)), this, SLOT(tileChanged()));
@@ -46,12 +49,26 @@ TileItem::TileItem(MapTile* tile, QGraphicsScene* parent) :
QRectF TileItem::boundingRect() const
{
- return QRect(m_tile->position(), m_pixmap.size());
+ return QRect(m_tile->position(), m_pixmap.isNull() ? QSize(32, 32) : m_pixmap.size());
}
void TileItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
{
- painter->drawPixmap(0, 0, m_pixmap);
+ if (m_pixmap.isNull())
+ {
+ QPainterPath path;
+ path.moveTo(8, 24);
+ path.lineTo(24, 8);
+ path.moveTo(8, 8);
+ path.lineTo(24, 24);
+ painter->setPen(QPen(Qt::red, 5));
+ painter->setBrush(Qt::NoBrush);
+ painter->drawPath(path);
+ }
+ else
+ painter->drawPixmap(0, 0, m_pixmap);
+ painter->setBrush(KStatefulBrush(KColorScheme::Selection, KColorScheme::HoverColor).brush(QPalette::Active));
+ painter->setOpacity(.25);
MapItem::paint(painter, option, widget);
}
@@ -65,7 +82,9 @@ void TileItem::setSprite(const int spriteId)
if (spriteId == m_tileIndex)
return;
const Sprite* sprite = m_tile->game()->spriteById(spriteId);
- m_pixmap.loadFromData(sprite->sprite());
+ if (!sprite || !m_pixmap.loadFromData(sprite->sprite()))
+ m_pixmap = QPixmap();
+ prepareGeometryChange();
m_tileIndex = spriteId;
}
@@ -91,7 +110,7 @@ void TileItem::resetLabel()
if (tile)
{
m_label->setText(tile->name());
- QSizeF size = m_label->boundingRect().size() / 2 - m_pixmap.size() / 2;
+ QSizeF size = m_label->boundingRect().size() / 2 - (m_pixmap.isNull() ? QSize(32, 32) : m_pixmap.size()) / 2;
m_label->setPos(-size.width(), -size.height());
}
}