+ Buffer *prevBuffer = Client::buffer(currentBuffer());
+ if(prevBuffer) prevBuffer->setVisible(false);
+ if(_chatWidgets.contains(bufferId)) {
+ chatWidget = _chatWidgets[bufferId];
+ } else {
+ chatWidget = new ChatWidget(this);
+ chatWidget->init(bufferId);
+ QList<ChatLine *> lines;
+ QList<AbstractUiMsg *> msgs = buf->contents();
+ foreach(AbstractUiMsg *msg, msgs) {
+ lines.append(dynamic_cast<ChatLine*>(msg));
+ }
+ chatWidget->setContents(lines);
+ connect(buf, SIGNAL(msgAppended(AbstractUiMsg *)), chatWidget, SLOT(appendMsg(AbstractUiMsg *)));
+ connect(buf, SIGNAL(msgPrepended(AbstractUiMsg *)), chatWidget, SLOT(prependMsg(AbstractUiMsg *)));
+ _chatWidgets[bufferId] = chatWidget;
+ ui.stackedWidget->addWidget(chatWidget);
+ chatWidget->setFocusProxy(this);
+ }
+ _currentBuffer = bufferId;
+ ui.stackedWidget->setCurrentWidget(chatWidget);
+ buf->setVisible(true);
+ setFocus();