--- a/QTfrontend/chatwidget.cpp Sun Sep 25 18:22:12 2011 +0200
+++ b/QTfrontend/chatwidget.cpp Sun Sep 25 18:24:01 2011 +0200
@@ -30,6 +30,7 @@
#include <QCursor>
#include <QScrollBar>
#include <QItemSelectionModel>
+#include <QStringList>
#include "hwconsts.h"
#include "SDLs.h"
@@ -110,6 +111,9 @@
.UserAction .nick { color: #ffa0ff; }\
.FriendAction { color: #ff00ff; }\
.FriendAction .nick { color: #ff30ff; }\
+.Error { color: #ff0000 }\
+.Warning { color: #ff8000 }\
+.Notice { color: #fefefe }\
";
HWChatWidget::HWChatWidget(QWidget* parent, QSettings * gameSettings, SDLInteraction * sdli, bool notify) :
@@ -203,7 +207,7 @@
QList<QListWidgetItem *> items = chatNicks->findItems(nick, Qt::MatchExactly);
if (items.size() < 1)
return;
- QMenu * popup = new QMenu();
+ QMenu * popup = new QMenu(this);
// selecting an item will automatically scroll there, so let's save old position
QScrollBar * scrollBar = chatNicks->verticalScrollBar();
int oldScrollPos = scrollBar->sliderPosition();
@@ -313,8 +317,10 @@
void HWChatWidget::returnPressed()
{
- emit chatLine(chatEditLine->text());
+ QStringList lines = chatEditLine->text().split('\n');
chatEditLine->clear();
+ foreach (const QString &line, lines)
+ emit chatLine(line);
}
@@ -337,9 +343,6 @@
isFriend = friendsList.contains(nick, Qt::CaseInsensitive);
}
- if (chatStrings.size() > 250)
- chatStrings.removeFirst();
-
QString formattedStr = Qt::escape(str.mid(1));
// make hedgewars.org urls actual links
formattedStr = formattedStr.replace(URLREGEXP, "<a href=\"http://\\3\">\\3</a>");
@@ -364,9 +367,17 @@
cssClass = "FriendChat";
}
- formattedStr = QString("<span class=\"%2\">%1</span>").arg(formattedStr).arg(cssClass);
+ addLine(cssClass,formattedStr);
+}
- chatStrings.append(formattedStr);
+void HWChatWidget::addLine(const QString& cssClass, QString line)
+{
+ if (chatStrings.size() > 250)
+ chatStrings.removeFirst();
+
+ line = QString("<span class=\"%2\">%1</span>").arg(line).arg(cssClass);
+
+ chatStrings.append(line);
chatText->setHtml(chatStrings.join("<br>"));