//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()) {};
}
BufferWidget::~BufferWidget() {
//emit aboutToClose();
//layoutThread->wait(10000);
- delete layoutThread;
+ //delete layoutThread;
foreach(BufferState *s, states.values()) {
delete s;
}
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)));
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();
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);
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;
chatLineCache[task.buffer] = task.lines + chatLineCache[task.buffer];
}
}
+*/
void BufferWidget::saveState() {
foreach(Buffer *buf, states.keys()) {
// TODO Use 005
void BufferWidget::updateNickList(BufferState *state, VarMap nicks) {
+ emit nickListUpdated(nicks.keys());
QTreeWidget *tree = state->nickTree;
if(!tree) return;
tree->clear();