Fixed small bug that prevented topic and own nick to be shown when joining a buffer.
[quassel.git] / gui / bufferwidget.cpp
index 98f8dd8..807dacf 100644 (file)
@@ -36,13 +36,14 @@ BufferWidget::BufferWidget(QWidget *parent) : QWidget(parent) {
   //setBaseSize(QSize(600,400));
   //setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
   connect(ui.inputEdit, SIGNAL(returnPressed()), this, SLOT(enterPressed()));
+  connect(this, SIGNAL(nickListUpdated(QStringList)), ui.inputEdit, SLOT(updateNickList(QStringList)));
 
 }
 
 void BufferWidget::init() {
   //layoutThread = new LayoutThread();
-  layoutThread = ::layoutThread;
-  connect(layoutThread, SIGNAL(taskProcessed(LayoutTask)), this, SLOT(messagesLayouted(LayoutTask)));
+  //layoutThread = ::layoutThread;
+  //connect(layoutThread, SIGNAL(taskProcessed(LayoutTask)), this, SLOT(messagesLayouted(LayoutTask)));
   //layoutThread->start();
   //while(!layoutThread->isRunning()) {};
 }
@@ -50,7 +51,7 @@ void BufferWidget::init() {
 BufferWidget::~BufferWidget() {
   //emit aboutToClose();
   //layoutThread->wait(10000);
-  delete layoutThread;
+  //delete layoutThread;
   foreach(BufferState *s, states.values()) {
     delete s;
   }
@@ -72,6 +73,8 @@ void BufferWidget::setBuffer(Buffer *buf) {
       s->nickTree->headerItem()->setHidden(true);
       s->nickTree->setRootIsDecorated(false);
       s->page = s->splitter;
+      s->ownNick = buf->ownNick();
+      s->topic = buf->topic();
       updateNickList(s, buf->nickList());
       s->splitter->restoreState(s->splitterState);
       connect(buf, SIGNAL(nickListChanged(VarMap)), this, SLOT(updateNickList(VarMap)));
@@ -81,6 +84,8 @@ void BufferWidget::setBuffer(Buffer *buf) {
       s->splitter = 0; s->nickTree = 0;
       s->chatWidget = new ChatWidget(this);
       s->page = s->chatWidget;
+      s->ownNick = buf->ownNick();
+      s->topic = buf->bufferName();
     }
     s->opsExpanded = Settings::guiValue(QString("BufferStates/%1/%2/opsExpanded").arg(buf->networkName()).arg(buf->bufferName()), true).toBool();
     s->voicedExpanded = Settings::guiValue(QString("BufferStates/%1/%2/voicedExpanded").arg(buf->networkName()).arg(buf->bufferName()), true).toBool();
@@ -88,14 +93,9 @@ void BufferWidget::setBuffer(Buffer *buf) {
     states[buf] = s;
     state = s;
     state->chatWidget->init(networkName, bufferName);
-    // FIXME: layout and cache all incoming messages... maybe do this in buffer?
-    QList<Message> *l = buf->contents();
-    state->chatWidget->appendMsgList(l);
-    if(chatLineCache.contains(buf)) {
-      state->chatWidget->prependChatLines(chatLineCache[buf]);
-      buf->prependMessages(msgCache[buf]);
-    }
-    connect(buf, SIGNAL(msgDisplayed(Message)), state->chatWidget, SLOT(appendMsg(Message)));
+    state->chatWidget->setContents(buf->contents());
+    connect(buf, SIGNAL(chatLineAppended(ChatLine *)), state->chatWidget, SLOT(appendChatLine(ChatLine *)));
+    connect(buf, SIGNAL(chatLinePrepended(ChatLine *)), state->chatWidget, SLOT(prependChatLine(ChatLine *)));
     connect(buf, SIGNAL(topicSet(QString)), this, SLOT(setTopic(QString)));
     connect(buf, SIGNAL(ownNickSet(QString)), this, SLOT(setOwnNick(QString)));
     ui.stackedWidget->addWidget(s->page);
@@ -111,11 +111,12 @@ void BufferWidget::setBuffer(Buffer *buf) {
   state->chatWidget->setFocusProxy(ui.inputEdit);
   ui.inputEdit->setFocus();
   ui.topicEdit->setText(state->topic);
-  ui.ownNick->clear();
+  ui.ownNick->clear();  // TODO add nick history
   ui.ownNick->addItem(state->ownNick);
   updateTitle();
 }
 
+/*
 void BufferWidget::prependMessages(Buffer *buf, QList<Message> messages) {
   LayoutTask task;
   task.messages = messages;
@@ -135,6 +136,7 @@ void BufferWidget::messagesLayouted(LayoutTask task) {
     chatLineCache[task.buffer] = task.lines + chatLineCache[task.buffer];
   }
 }
+*/
 
 void BufferWidget::saveState() {
   foreach(Buffer *buf, states.keys()) {
@@ -215,6 +217,7 @@ void BufferWidget::updateNickList(VarMap nicks) {
 
 // TODO Use 005
 void BufferWidget::updateNickList(BufferState *state, VarMap nicks) {
+  emit nickListUpdated(nicks.keys());
   QTreeWidget *tree = state->nickTree;
   if(!tree) return;
   tree->clear();