X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=gui%2Fmainwin.cpp;h=7c4eb51734ec187f880e8c8dfd36266f96554e8d;hp=84835ad8e2139616ad81ea87ef6ba4d1f85f7a88;hb=bb0bf17b61958e92529338596574f7a2a4f61d2a;hpb=ddc5208315db8ca9ca19f6a59ee7caefe631ffc7 diff --git a/gui/mainwin.cpp b/gui/mainwin.cpp index 84835ad8..7c4eb517 100644 --- a/gui/mainwin.cpp +++ b/gui/mainwin.cpp @@ -29,7 +29,7 @@ #include "mainwin.h" #include "buffer.h" -#include "networkview.h" +#include "bufferview.h" #include "serverlist.h" #include "coreconnectdlg.h" #include "settingsdlg.h" @@ -69,6 +69,7 @@ void MainWin::init() { connect(guiProxy, SIGNAL(csNickUpdated(QString, QString, VarMap)), this, SLOT(updateNick(QString, QString, VarMap))); connect(guiProxy, SIGNAL(csOwnNickSet(QString, QString)), this, SLOT(setOwnNick(QString, QString))); connect(guiProxy, SIGNAL(csBacklogData(BufferId, QList, bool)), this, SLOT(recvBacklogData(BufferId, QList, bool))); + connect(guiProxy, SIGNAL(csUpdateBufferId(BufferId)), this, SLOT(updateBufferId(BufferId))); connect(this, SIGNAL(sendInput(BufferId, QString)), guiProxy, SLOT(gsUserInput(BufferId, QString))); connect(this, SIGNAL(requestBacklog(BufferId, QVariant, QVariant)), guiProxy, SLOT(gsRequestBacklog(BufferId, QVariant, QVariant))); @@ -89,12 +90,9 @@ void MainWin::init() { setupSettingsDlg(); - //Buffer::init(); setupMenus(); setupViews(); - //bufferWidget = 0; - QSettings s; s.beginGroup("Geometry"); //resize(s.value("MainWinSize", QSize(500, 400)).toSize()); @@ -102,35 +100,6 @@ void MainWin::init() { if(s.contains("MainWinState")) restoreState(s.value("MainWinState").toByteArray()); s.endGroup(); - // replay backlog - // FIXME do this right - /* - QHash > hash; - Buffer *b; - - foreach(QString net, coreBackLog.keys()) { - //if(net != "MoepNet") continue; - while(coreBackLog[net].count()) { - //recvMessage(net, coreBackLog[net].takeFirst()); - Message msg = coreBackLog[net].takeLast(); - if(msg.flags & Message::PrivMsg) { - // query - if(msg.flags & Message::Self) b = getBuffer(net, msg.target); - else b = getBuffer(net, nickFromMask(msg.sender)); - } else { - b = getBuffer(net, msg.target); - } - hash[b].prepend(msg); - if(hash[b].count() >= 5) { - ui.bufferWidget->prependMessages(b, hash.take(b)); - } - } - } - foreach(Buffer *buf, hash.keys()) { - ui.bufferWidget->prependMessages(buf, hash.take(buf)); - } -*/ - /* make lookups by id faster */ foreach(BufferId id, coreBuffers) { bufferIds[id.uid()] = id; // make lookups by id faster @@ -184,33 +153,28 @@ void MainWin::setupMenus() { } void MainWin::setupViews() { - NetworkView *all = new NetworkView(tr("All Buffers"), NetworkView::AllNets); - registerNetView(all); + BufferView *all = new BufferView(tr("All Buffers"), BufferView::AllNets); + registerBufferView(all); addDockWidget(Qt::LeftDockWidgetArea, all); - NetworkView *allchans = new NetworkView(tr("All Channels"), NetworkView::AllNets|NetworkView::NoQueries|NetworkView::NoServers); - registerNetView(allchans); + BufferView *allchans = new BufferView(tr("All Channels"), BufferView::AllNets|BufferView::NoQueries|BufferView::NoServers); + registerBufferView(allchans); addDockWidget(Qt::LeftDockWidgetArea, allchans); - NetworkView *allqrys = new NetworkView(tr("All Queries"), NetworkView::AllNets|NetworkView::NoChannels|NetworkView::NoServers); - registerNetView(allqrys); + BufferView *allqrys = new BufferView(tr("All Queries"), BufferView::AllNets|BufferView::NoChannels|BufferView::NoServers); + registerBufferView(allqrys); addDockWidget(Qt::RightDockWidgetArea, allqrys); - NetworkView *allnets = new NetworkView(tr("All Networks"), NetworkView::AllNets|NetworkView::NoChannels|NetworkView::NoQueries); - registerNetView(allnets); + BufferView *allnets = new BufferView(tr("All Networks"), BufferView::AllNets|BufferView::NoChannels|BufferView::NoQueries); + registerBufferView(allnets); addDockWidget(Qt::RightDockWidgetArea, allnets); ui.menuViews->addSeparator(); } -void MainWin::registerNetView(NetworkView *view) { +void MainWin::registerBufferView(BufferView *view) { connect(this, SIGNAL(bufferSelected(Buffer *)), view, SLOT(selectBuffer(Buffer *))); connect(this, SIGNAL(bufferUpdated(Buffer *)), view, SLOT(bufferUpdated(Buffer *))); + connect(this, SIGNAL(bufferActivity(uint, Buffer *)), view, SLOT(bufferActivity(uint, Buffer *))); connect(this, SIGNAL(bufferDestroyed(Buffer *)), view, SLOT(bufferDestroyed(Buffer *))); connect(view, SIGNAL(bufferSelected(Buffer *)), this, SLOT(showBuffer(Buffer *))); - //QList bufs; - //typedef QHash bufhash; - //QList foo = buffers.values(); - //foreach(bufhash h, foo) { - // bufs += h.values(); - //} view->setBuffers(buffers.values()); view->setAllowedAreas(Qt::RightDockWidgetArea|Qt::LeftDockWidgetArea); netViews.append(view); @@ -255,7 +219,6 @@ void MainWin::showBuffer(BufferId id) { } void MainWin::showBuffer(Buffer *b) { - //currentBuffer = b->bufferName(); currentNetwork = b->networkName(); currentBuffer = b->bufferId().groupId(); //emit bufferSelected(b); //qApp->processEvents(); @@ -265,9 +228,9 @@ void MainWin::showBuffer(Buffer *b) { void MainWin::networkConnected(QString net) { connected[net] = true; - BufferId id = getStatusBufferId(net); - Buffer *b = getBuffer(id); - b->setActive(true); + //BufferId id = getStatusBufferId(net); + //Buffer *b = getBuffer(id); + //b->setActive(true); //b->displayMsg(Message(id, Message::Server, tr("Connected."))); FIXME // TODO buffersUpdated(); } @@ -283,6 +246,11 @@ void MainWin::networkDisconnected(QString net) { connected[net] = false; } +void MainWin::updateBufferId(BufferId id) { + bufferIds[id.uid()] = id; // make lookups by id faster + getBuffer(id); +} + BufferId MainWin::getBufferId(QString net, QString buf) { foreach(BufferId id, buffers.keys()) { if(id.network() == net && id.buffer() == buf) return id; @@ -338,6 +306,16 @@ void MainWin::recvMessage(Message msg) { } */ Buffer *b = getBuffer(msg.buffer); + + uint level = BufferView::OtherActivity; + if(msg.type == Message::Plain or msg.type == Message::Notice){ + level |= BufferView::NewMessage; + } + if(msg.flags & Message::Highlight){ + level |= BufferView::Highlight; + } + + emit bufferActivity(level, b); //b->displayMsg(msg); b->appendChatLine(new ChatLine(msg)); }