[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdegames/kollision
From: Paolo Capriotti <paolo.capriotti () gmail ! com>
Date: 2009-06-30 19:47:56
Message-ID: 1246391276.420726.12187.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 989736 by capriotti:
Allow QGraphicsTextItem to wrap text.
This should fix the issue with the German translation.
CCBUG: 169202
M +10 -6 mainarea.cpp
M +13 -6 message.cpp
M +3 -1 message.h
--- trunk/KDE/kdegames/kollision/mainarea.cpp #989735:989736
@@ -96,7 +96,7 @@
Animation* MainArea::writeMessage(const QString& text)
{
- Message* message = new Message(text, m_msg_font);
+ Message* message = new Message(text, m_msg_font, m_size);
message->setPosition(QPointF(m_size, m_size) / 2.0);
addItem(message);
message->setOpacityF(0.0);
@@ -125,7 +125,7 @@
m_welcome_msg.clear();
foreach (const QString &line, text.split("\n")) {
m_welcome_msg.append(
- KSharedPtr<Message>(new Message(line, m_msg_font)));
+ KSharedPtr<Message>(new Message(line, m_msg_font, m_size)));
}
displayMessages(m_welcome_msg);
@@ -148,17 +148,21 @@
void MainArea::displayMessages(const QList<KSharedPtr<Message> >& messages)
{
- const int step = 45;
- QPointF pos(m_size / 2.0, (m_size - step * messages.size()) / 2.0);
+ int totalHeight = 0;
+ foreach (KSharedPtr<Message> message, messages) {
+ totalHeight += message->height();
+ }
+ QPointF pos(m_size / 2.0, (m_size - totalHeight) / 2.0);
for (int i = 0; i < messages.size(); i++) {
KSharedPtr<Message> msg = messages[i];
+ int halfHeight = msg->height() / 2;
+ pos.ry() += halfHeight;
msg->setPosition(pos);
msg->setZValue(10.0);
msg->show();
addItem(msg.data());
-
- pos.ry() += step;
+ pos.ry() += halfHeight;
}
}
--- trunk/KDE/kdegames/kollision/message.cpp #989735:989736
@@ -10,8 +10,10 @@
#include "message.h"
#include <QFontMetrics>
#include <QPainter>
+#include <QTextDocument>
+#include <QTextOption>
-Message::Message(const QString& text, const QFont& font)
+Message::Message(const QString& text, const QFont& font, int maxwidth)
: QGraphicsTextItem(text)
, m_opacity(1.0)
, m_velocity(0.0, 0.0)
@@ -19,12 +21,14 @@
setFont(font);
setDefaultTextColor(Qt::black);
setAcceptsHoverEvents(false);
+ document()->setTextWidth(maxwidth);
+ QTextOption opts = document()->defaultTextOption();
+ opts.setAlignment(Qt::AlignHCenter);
+ document()->setDefaultTextOption(opts);
- // translate so that the origin is the center of the
- // bounding rect
- QFontMetrics metrics(font);
- QSize offset = metrics.boundingRect(text).size();
- translate(-offset.width() / 2, -offset.height() / 2);
+ // translate so that the origin is the center
+ translate(-document()->size().width() / 2,
+ -document()->size().height() / 2);
}
void Message::paint(QPainter *painter,
@@ -68,3 +72,6 @@
return QGraphicsTextItem::pos();
}
+int Message::height() const {
+ return document()->size().height();
+}
--- trunk/KDE/kdegames/kollision/message.h #989735:989736
@@ -19,7 +19,7 @@
qreal m_opacity;
QPointF m_velocity;
public:
- Message(const QString& text, const QFont& font);
+ Message(const QString& text, const QFont& font, int maxwidth);
virtual void paint(QPainter *painter,
const QStyleOptionGraphicsItem* option,
@@ -33,6 +33,8 @@
virtual void setPosition(const QPointF& pos);
virtual QPointF position() const;
+
+ int height() const;
};
typedef KSharedPtr<Message> MessagePtr;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic