Fixed small bug that prevented topic and own nick to be shown when joining a buffer.
[quassel.git] / gui / bufferwidget.cpp
index 8185cbc..807dacf 100644 (file)
@@ -42,8 +42,8 @@ BufferWidget::BufferWidget(QWidget *parent) : QWidget(parent) {
 
 void BufferWidget::init() {
   //layoutThread = new LayoutThread();
 
 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()) {};
 }
   //layoutThread->start();
   //while(!layoutThread->isRunning()) {};
 }
@@ -51,7 +51,7 @@ void BufferWidget::init() {
 BufferWidget::~BufferWidget() {
   //emit aboutToClose();
   //layoutThread->wait(10000);
 BufferWidget::~BufferWidget() {
   //emit aboutToClose();
   //layoutThread->wait(10000);
-  delete layoutThread;
+  //delete layoutThread;
   foreach(BufferState *s, states.values()) {
     delete s;
   }
   foreach(BufferState *s, states.values()) {
     delete s;
   }
@@ -73,6 +73,8 @@ void BufferWidget::setBuffer(Buffer *buf) {
       s->nickTree->headerItem()->setHidden(true);
       s->nickTree->setRootIsDecorated(false);
       s->page = s->splitter;
       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)));
       updateNickList(s, buf->nickList());
       s->splitter->restoreState(s->splitterState);
       connect(buf, SIGNAL(nickListChanged(VarMap)), this, SLOT(updateNickList(VarMap)));
@@ -82,6 +84,8 @@ void BufferWidget::setBuffer(Buffer *buf) {
       s->splitter = 0; s->nickTree = 0;
       s->chatWidget = new ChatWidget(this);
       s->page = s->chatWidget;
       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();
     }
     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();
@@ -89,14 +93,9 @@ void BufferWidget::setBuffer(Buffer *buf) {
     states[buf] = s;
     state = s;
     state->chatWidget->init(networkName, bufferName);
     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);
     connect(buf, SIGNAL(topicSet(QString)), this, SLOT(setTopic(QString)));
     connect(buf, SIGNAL(ownNickSet(QString)), this, SLOT(setOwnNick(QString)));
     ui.stackedWidget->addWidget(s->page);
@@ -112,11 +111,12 @@ void BufferWidget::setBuffer(Buffer *buf) {
   state->chatWidget->setFocusProxy(ui.inputEdit);
   ui.inputEdit->setFocus();
   ui.topicEdit->setText(state->topic);
   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();
 }
 
   ui.ownNick->addItem(state->ownNick);
   updateTitle();
 }
 
+/*
 void BufferWidget::prependMessages(Buffer *buf, QList<Message> messages) {
   LayoutTask task;
   task.messages = messages;
 void BufferWidget::prependMessages(Buffer *buf, QList<Message> messages) {
   LayoutTask task;
   task.messages = messages;
@@ -136,6 +136,7 @@ void BufferWidget::messagesLayouted(LayoutTask task) {
     chatLineCache[task.buffer] = task.lines + chatLineCache[task.buffer];
   }
 }
     chatLineCache[task.buffer] = task.lines + chatLineCache[task.buffer];
   }
 }
+*/
 
 void BufferWidget::saveState() {
   foreach(Buffer *buf, states.keys()) {
 
 void BufferWidget::saveState() {
   foreach(Buffer *buf, states.keys()) {