#include "client.h"
#include "networkmodel.h"
-AbstractBufferContainer::AbstractBufferContainer(QWidget *parent) : AbstractItemView(parent), _currentBuffer(0)
+AbstractBufferContainer::AbstractBufferContainer(QWidget *parent)
+ : AbstractItemView(parent),
+ _currentBuffer(0)
{
-
}
AbstractBufferContainer::~AbstractBufferContainer() {
-
}
if(model()->rowCount(parent) != end - start + 1)
return;
- AbstractChatView *chatView;
- QHash<BufferId, AbstractChatView *>::iterator iter = _chatViews.begin();
- while(iter != _chatViews.end()) {
- chatView = *iter;
- iter = _chatViews.erase(iter);
- removeChatView(chatView);
+ foreach(BufferId id, _chatViews.keys()) {
+ removeChatView(id);
}
+ _chatViews.clear();
} else {
// check if there are explicitly buffers removed
for(int i = start; i <= end; i++) {
}
void AbstractBufferContainer::removeBuffer(BufferId bufferId) {
+ if(Client::buffer(bufferId)) Client::buffer(bufferId)->setVisible(false);
if(!_chatViews.contains(bufferId))
return;
- if(Client::buffer(bufferId)) Client::buffer(bufferId)->setVisible(false);
- AbstractChatView *chatView = _chatViews.take(bufferId);
- removeChatView(chatView);
+ removeChatView(bufferId);
+ _chatViews.take(bufferId);
}
void AbstractBufferContainer::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) {
BufferId newBufferId = current.data(NetworkModel::BufferIdRole).value<BufferId>();
BufferId oldBufferId = previous.data(NetworkModel::BufferIdRole).value<BufferId>();
- if(newBufferId != oldBufferId)
+ if(newBufferId != oldBufferId) {
setCurrentBuffer(newBufferId);
+ emit currentChanged(newBufferId);
+ }
}
void AbstractBufferContainer::setCurrentBuffer(BufferId bufferId) {
- if(!bufferId.isValid()) {
- showChatView(0);
- return;
- }
-
AbstractChatView *chatView = 0;
- Buffer *buf = Client::buffer(bufferId);
- if(!buf) {
- qWarning() << "AbstractBufferContainer::setBuffer(BufferId): Can't show unknown Buffer:" << bufferId;
- return;
- }
Buffer *prevBuffer = Client::buffer(currentBuffer());
if(prevBuffer) prevBuffer->setVisible(false);
+
+ Buffer *buf;
+ if(!bufferId.isValid() || !(buf = Client::buffer(bufferId))) {
+ if(bufferId.isValid())
+ qWarning() << "AbstractBufferContainer::setBuffer(BufferId): Can't show unknown Buffer:" << bufferId;
+ _currentBuffer = 0;
+ showChatView(0);
+ return;
+ }
if(_chatViews.contains(bufferId)) {
chatView = _chatViews[bufferId];
} else {
_chatViews[bufferId] = chatView;
}
_currentBuffer = bufferId;
- showChatView(chatView);
+ showChatView(bufferId);
buf->setVisible(true);
setFocus();
}