equal
deleted
inserted
replaced
29 #include <QTime> |
29 #include <QTime> |
30 #include <QListView> |
30 #include <QListView> |
31 #include <QModelIndexList> |
31 #include <QModelIndexList> |
32 #include <QSortFilterProxyModel> |
32 #include <QSortFilterProxyModel> |
33 #include <QMenu> |
33 #include <QMenu> |
|
34 #include <QScrollBar> |
34 |
35 |
35 #include "DataManager.h" |
36 #include "DataManager.h" |
36 #include "hwconsts.h" |
37 #include "hwconsts.h" |
37 #include "gameuiconfig.h" |
38 #include "gameuiconfig.h" |
38 #include "playerslistmodel.h" |
39 #include "playerslistmodel.h" |
154 } |
155 } |
155 |
156 |
156 void HWChatWidget::displayError(const QString & message) |
157 void HWChatWidget::displayError(const QString & message) |
157 { |
158 { |
158 addLine("msg_Error", " !!! " + message); |
159 addLine("msg_Error", " !!! " + message); |
159 // scroll to the end |
|
160 chatText->moveCursor(QTextCursor::End); |
|
161 } |
160 } |
162 |
161 |
163 |
162 |
164 void HWChatWidget::displayNotice(const QString & message) |
163 void HWChatWidget::displayNotice(const QString & message) |
165 { |
164 { |
166 addLine("msg_Notice", " *** " + message); |
165 addLine("msg_Notice", " *** " + message); |
167 // scroll to the end |
|
168 chatText->moveCursor(QTextCursor::End); |
|
169 } |
166 } |
170 |
167 |
171 |
168 |
172 void HWChatWidget::displayWarning(const QString & message) |
169 void HWChatWidget::displayWarning(const QString & message) |
173 { |
170 { |
174 addLine("msg_Warning", " *!* " + message); |
171 addLine("msg_Warning", " *!* " + message); |
175 // scroll to the end |
|
176 chatText->moveCursor(QTextCursor::End); |
|
177 } |
172 } |
178 |
173 |
179 |
174 |
180 HWChatWidget::HWChatWidget(QWidget* parent, bool notify) : |
175 HWChatWidget::HWChatWidget(QWidget* parent, bool notify) : |
181 QWidget(parent), |
176 QWidget(parent), |
449 void HWChatWidget::addLine(const QString & cssClass, QString line, bool isHighlight) |
444 void HWChatWidget::addLine(const QString & cssClass, QString line, bool isHighlight) |
450 { |
445 { |
451 if (s_displayNone->contains(cssClass)) |
446 if (s_displayNone->contains(cssClass)) |
452 return; // the css forbids us to display this line |
447 return; // the css forbids us to display this line |
453 |
448 |
|
449 beforeContentAdd(); |
|
450 |
454 if (chatStrings.size() > 250) |
451 if (chatStrings.size() > 250) |
455 chatStrings.removeFirst(); |
452 chatStrings.removeFirst(); |
456 |
453 |
457 if (s_isTimeStamped) |
454 if (s_isTimeStamped) |
458 { |
455 { |
471 |
468 |
472 chatStrings.append(line); |
469 chatStrings.append(line); |
473 |
470 |
474 chatText->setHtml("<html><body>"+chatStrings.join("<br>")+"</body></html>"); |
471 chatText->setHtml("<html><body>"+chatStrings.join("<br>")+"</body></html>"); |
475 |
472 |
476 chatText->moveCursor(QTextCursor::End); |
473 afterContentAdd(); |
477 } |
474 } |
478 |
475 |
479 void HWChatWidget::onServerMessage(const QString& str) |
476 void HWChatWidget::onServerMessage(const QString& str) |
480 { |
477 { |
|
478 beforeContentAdd(); |
|
479 |
481 if (chatStrings.size() > 250) |
480 if (chatStrings.size() > 250) |
482 chatStrings.removeFirst(); |
481 chatStrings.removeFirst(); |
483 |
482 |
484 chatStrings.append("<hr>" + str + "<hr>"); |
483 chatStrings.append("<hr>" + str + "<hr>"); |
485 |
484 |
486 chatText->setHtml("<html><body>"+chatStrings.join("<br>")+"</body></html>"); |
485 chatText->setHtml("<html><body>"+chatStrings.join("<br>")+"</body></html>"); |
487 |
486 |
488 chatText->moveCursor(QTextCursor::End); |
487 afterContentAdd(); |
489 } |
488 } |
490 |
489 |
491 |
490 |
492 void HWChatWidget::nickAdded(const QString & nick, bool notifyNick) |
491 void HWChatWidget::nickAdded(const QString & nick, bool notifyNick) |
493 { |
492 { |
899 foreach(QAction * action, chatNicks->actions()) |
898 foreach(QAction * action, chatNicks->actions()) |
900 m_nicksMenu->addAction(action); |
899 m_nicksMenu->addAction(action); |
901 |
900 |
902 m_nicksMenu->popup(chatNicks->mapToGlobal(pos)); |
901 m_nicksMenu->popup(chatNicks->mapToGlobal(pos)); |
903 } |
902 } |
|
903 |
|
904 void HWChatWidget::beforeContentAdd() |
|
905 { |
|
906 m_scrollBarPos = chatText->verticalScrollBar()->value(); |
|
907 m_scrollToBottom = m_scrollBarPos == chatText->verticalScrollBar()->maximum(); |
|
908 } |
|
909 |
|
910 void HWChatWidget::afterContentAdd() |
|
911 { |
|
912 if(m_scrollToBottom) |
|
913 { |
|
914 chatText->verticalScrollBar()->setValue(chatText->verticalScrollBar()->maximum()); |
|
915 chatText->moveCursor(QTextCursor::End); |
|
916 } else |
|
917 { |
|
918 chatText->verticalScrollBar()->setValue(m_scrollBarPos); |
|
919 } |
|
920 } |