***************************************************************************/
#include "abstractbuffercontainer.h"
-#include "buffer.h"
#include "client.h"
#include "networkmodel.h"
AbstractBufferContainer::~AbstractBufferContainer() {
}
-
void AbstractBufferContainer::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) {
Q_ASSERT(model());
if(!parent.isValid()) {
}
void AbstractBufferContainer::removeBuffer(BufferId bufferId) {
- if(Client::buffer(bufferId)) Client::buffer(bufferId)->setVisible(false);
if(!_chatViews.contains(bufferId))
return;
}
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()->setBufferActivity(bufferId, BufferInfo::NoActivity);
+ // Client::setBufferLastSeenMsg(bufferId, _chatViews[bufferId]->lastMsgId());
setFocus();
}
-
-void AbstractBufferContainer::appendMsg(AbstractUiMsg *msg) {
- Buffer *buf = qobject_cast<Buffer *>(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<Buffer *>(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);
-}