X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fabstractbuffercontainer.cpp;h=0ac9b51ff6766e0f80715f195abbd2ceff27a9d3;hp=f3ffbf8466da3237c0da95ac5f9ef8b104471494;hb=bd6d28b16df0b712fa30198c235dddf559d076ef;hpb=1736d7414b96efc1189e56f22bd0407989c3a7c9 diff --git a/src/uisupport/abstractbuffercontainer.cpp b/src/uisupport/abstractbuffercontainer.cpp index f3ffbf84..0ac9b51f 100644 --- a/src/uisupport/abstractbuffercontainer.cpp +++ b/src/uisupport/abstractbuffercontainer.cpp @@ -19,7 +19,6 @@ ***************************************************************************/ #include "abstractbuffercontainer.h" -#include "buffer.h" #include "client.h" #include "networkmodel.h" @@ -32,7 +31,6 @@ AbstractBufferContainer::AbstractBufferContainer(QWidget *parent) AbstractBufferContainer::~AbstractBufferContainer() { } - void AbstractBufferContainer::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) { Q_ASSERT(model()); if(!parent.isValid()) { @@ -60,7 +58,6 @@ void AbstractBufferContainer::rowsAboutToBeRemoved(const QModelIndex &parent, in } void AbstractBufferContainer::removeBuffer(BufferId bufferId) { - if(Client::buffer(bufferId)) Client::buffer(bufferId)->setVisible(false); if(!_chatViews.contains(bufferId)) return; @@ -78,57 +75,22 @@ void AbstractBufferContainer::currentChanged(const QModelIndex ¤t, const Q } void AbstractBufferContainer::setCurrentBuffer(BufferId bufferId) { - AbstractChatView *chatView = 0; - Buffer *prevBuffer = Client::buffer(currentBuffer()); - if(prevBuffer) prevBuffer->setVisible(false); + BufferId prevBufferId = currentBuffer(); + if(prevBufferId.isValid() && _chatViews.contains(prevBufferId)) { + Client::setBufferLastSeenMsg(prevBufferId, _chatViews[prevBufferId]->lastMsgId()); + } - Buffer *buf; - if(!bufferId.isValid() || !(buf = Client::buffer(bufferId))) { - if(bufferId.isValid()) - qWarning() << "AbstractBufferContainer::setBuffer(BufferId): Can't show unknown Buffer:" << bufferId; + if(!bufferId.isValid()) { _currentBuffer = 0; showChatView(0); return; } - if(_chatViews.contains(bufferId)) { - chatView = _chatViews[bufferId]; - } else { - chatView = createChatView(bufferId); - chatView->setContents(buf->contents()); - connect(buf, SIGNAL(msgAppended(AbstractUiMsg *)), this, SLOT(appendMsg(AbstractUiMsg *))); - connect(buf, SIGNAL(msgPrepended(AbstractUiMsg *)), this, SLOT(prependMsg(AbstractUiMsg *))); - _chatViews[bufferId] = chatView; - } + + if(!_chatViews.contains(bufferId)) + _chatViews[bufferId] = createChatView(bufferId); + _currentBuffer = bufferId; showChatView(bufferId); - buf->setVisible(true); + Client::networkModel()->clearBufferActivity(bufferId); setFocus(); } - -void AbstractBufferContainer::appendMsg(AbstractUiMsg *msg) { - Buffer *buf = qobject_cast(sender()); - if(!buf) { - qWarning() << "AbstractBufferContainer::appendMsg(): Invalid slot caller!"; - return; - } - BufferId id = buf->bufferInfo().bufferId(); - if(!_chatViews.contains(id)) { - qWarning() << "AbstractBufferContainer::appendMsg(): Received message for unknown buffer!"; - return; - } - _chatViews[id]->appendMsg(msg); -} - -void AbstractBufferContainer::prependMsg(AbstractUiMsg *msg) { - Buffer *buf = qobject_cast(sender()); - if(!buf) { - qWarning() << "AbstractBufferContainer:prependMsg(): Invalid slot caller!"; - return; - } - BufferId id = buf->bufferInfo().bufferId(); - if(!_chatViews.contains(id)) { - qWarning() << "AbstractBufferContainer::prependMsg(): Received message for unknown buffer!"; - return; - } - _chatViews[id]->prependMsg(msg); -}