cleaning up a bit (views menu and mainwin.cpp)
[quassel.git] / src / qtui / bufferwidget.cpp
index a670705..bc10ca5 100644 (file)
@@ -19,8 +19,6 @@
  ***************************************************************************/
 
 #include "bufferwidget.h"
-#include "chatline.h"
-#include "chatline-old.h"
 #include "chatview.h"
 #include "chatwidget.h"
 #include "settings.h"
@@ -37,24 +35,28 @@ BufferWidget::~BufferWidget() {
 }
 
 AbstractChatView *BufferWidget::createChatView(BufferId id) {
-  AbstractChatView *chatView;
-  if(Global::SPUTDEV) {
-    chatView = new ChatView(Client::buffer(id), this);
-  } else {
-    chatView = new ChatWidget(id, this);
-  }
-  ui.stackedWidget->addWidget(dynamic_cast<QWidget *>(chatView));
-  dynamic_cast<QWidget *>(chatView)->setFocusProxy(this);
-  return chatView;
+  QWidget *chatView;
+#ifdef SPUTDEV
+  chatView = new ChatView(Client::buffer(id), this);
+#else
+  chatView = new ChatWidget(id, this);
+#endif
+  _chatViews[id] = chatView;
+  ui.stackedWidget->addWidget(chatView);
+  chatView->setFocusProxy(this);
+  return dynamic_cast<AbstractChatView*>(chatView);
 }
 
-void BufferWidget::removeChatView(AbstractChatView *view) {
-  ui.stackedWidget->removeWidget(dynamic_cast<QWidget *>(view));
-  dynamic_cast<QWidget *>(view)->deleteLater();
+void BufferWidget::removeChatView(BufferId id) {
+  QWidget *view = _chatViews.value(id, 0);
+  if(!view) return;
+  ui.stackedWidget->removeWidget(view);
+  view->deleteLater();
+  _chatViews.take(id);
 }
 
-void BufferWidget::showChatView(AbstractChatView *view) {
-  if(!view) ui.stackedWidget->setCurrentWidget(ui.page);
-  else ui.stackedWidget->setCurrentWidget(dynamic_cast<QWidget *>(view));
+void BufferWidget::showChatView(BufferId id) {
+  if(!id.isValid()) ui.stackedWidget->setCurrentWidget(ui.page);
+  else ui.stackedWidget->setCurrentWidget(_chatViews.value(id));
 }