_active(false)
{
if(bufferid.buffer().isEmpty())
- _type = ServerBuffer;
+ _type = StatusType;
else if(isChannelName(bufferid.buffer()))
- _type = ChannelBuffer;
+ _type = ChannelType;
else
- _type = QueryBuffer;
+ _type = QueryType;
/*
QSettings s;
s.endGroup();
*/
//delete state;
- emit bufferDestroyed(this);
}
Buffer::Type Buffer::bufferType() const {
}
QString Buffer::displayName() const {
- if(bufferType() == ServerBuffer)
+ if(bufferType() == StatusType)
return tr("Status Buffer");
else
return bufferName();
}
bool Buffer::isStatusBuffer() const {
- return bufferType() == ServerBuffer;
+ return bufferType() == StatusType;
}
void Buffer::setActive(bool a) {
public:
Buffer(BufferInfo, QObject *parent = 0);
- ~Buffer();
+ virtual ~Buffer();
enum Type {
- ServerBuffer,
- ChannelBuffer,
- QueryBuffer
+ StatusType,
+ ChannelType,
+ QueryType
};
enum Activity {
void topicSet(QString topic);
void ownNickSet(QString ownNick);
void bufferUpdated(Buffer *);
- void bufferDestroyed(Buffer *);
void msgAppended(AbstractUiMsg *);
void msgPrepended(AbstractUiMsg *);
Qt::ItemFlags BufferTreeItem::flags() const {
Qt::ItemFlags flags = Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled;
- if(buf->bufferType() == Buffer::QueryBuffer)
+ if(buf->bufferType() == Buffer::QueryType)
flags |= Qt::ItemIsDropEnabled;
return flags;
Buffer *sourceBuffer = static_cast<BufferTreeItem *>(rootItem->childById(qHash(network))->child(sourcerow))->buffer();
Buffer *targetBuffer = getBufferByIndex(parent);
- if(!(sourceBuffer->bufferType() & targetBuffer->bufferType() & Buffer::QueryBuffer)) // only queries can be merged
+ if(!(sourceBuffer->bufferType() & targetBuffer->bufferType() & Buffer::QueryType)) // only queries can be merged
return false;
if(sourceBuffer == targetBuffer) // we won't merge with ourself :)
client, SLOT(userInput(BufferInfo, QString)));
connect(buff, SIGNAL(bufferUpdated(Buffer *)),
client, SIGNAL(bufferUpdated(Buffer *)));
- connect(buff, SIGNAL(bufferDestroyed(Buffer *)),
- client, SIGNAL(bufferDestroyed(Buffer *)));
- connect(buff, SIGNAL(bufferDestroyed(Buffer *)),
- client, SLOT(removeBuffer(Buffer *)));
-
+ connect(buff, SIGNAL(destroyed()),
+ client, SLOT(bufferDestroyed()));
client->_buffers[id.uid()] = buff;
emit client->bufferUpdated(buff);
}
_bufferModel->clear();
foreach(Buffer *buffer, _buffers.values()) {
- delete buffer;
+ buffer->deleteLater();
}
- Q_ASSERT(_buffers.empty());
foreach(NetworkInfo *networkinfo, _networkInfo.values()) {
- delete networkinfo;
+ networkinfo->deleteLater();
}
- Q_ASSERT(_networkInfo.empty());
coreConnectionInfo.clear();
sessionData.clear();
buffer(id)->updateBufferInfo(id);
}
-
-void Client::removeBuffer(Buffer *b) {
- _buffers.remove(b->bufferInfo().uid());
+void Client::bufferDestroyed() {
+ Buffer *buffer = static_cast<Buffer *>(sender());
+ _buffers.remove(_buffers.key(buffer));
}
void Client::recvMessage(const Message &msg) {
void bufferSelected(Buffer *);
void bufferUpdated(Buffer *);
void bufferActivity(Buffer::ActivityLevel, Buffer *);
- void bufferDestroyed(Buffer *);
void backlogReceived(Buffer *, QList<Message>);
void requestBacklog(BufferInfo, QVariant, QVariant);
void requestNetworkStates();
void recvBacklogData(BufferInfo, QVariantList, bool);
void updateBufferInfo(BufferInfo);
- void removeBuffer(Buffer *);
+ void bufferDestroyed();
void layoutMsg();
void BufferView::joinChannel(const QModelIndex &index) {
Buffer::Type bufferType = (Buffer::Type)index.data(BufferTreeModel::BufferTypeRole).toInt();
- if(bufferType != Buffer::ChannelBuffer)
+ if(bufferType != Buffer::ChannelType)
return;
Client::fakeInput(index.data(BufferTreeModel::BufferUidRole).toUInt(), QString("/JOIN %1").arg(index.sibling(index.row(), 0).data().toString()));
bool BufferViewFilter::filterAcceptBuffer(const QModelIndex &source_bufferIndex) const {
Buffer::Type bufferType = (Buffer::Type) source_bufferIndex.data(BufferTreeModel::BufferTypeRole).toInt();
- if((mode & NoChannels) && bufferType == Buffer::ChannelBuffer) return false;
- if((mode & NoQueries) && bufferType == Buffer::QueryBuffer) return false;
- if((mode & NoServers) && bufferType == Buffer::ServerBuffer) return false;
+ if((mode & NoChannels) && bufferType == Buffer::ChannelType) return false;
+ if((mode & NoQueries) && bufferType == Buffer::QueryType) return false;
+ if((mode & NoServers) && bufferType == Buffer::StatusType) return false;
bool isActive = source_bufferIndex.data(BufferTreeModel::BufferActiveRole).toBool();
if((mode & NoActive) && isActive) return false;
} else {
BufferState *s = new BufferState;
s->currentLine = Settings::guiValue(QString("BufferStates/%1/%2/currentLine").arg(buf->networkName()).arg(buf->bufferName()), -1).toInt();
- if(buf->bufferType() == Buffer::ChannelBuffer) {
+ if(buf->bufferType() == Buffer::ChannelType) {
s->splitterState = Settings::guiValue(QString("BufferStates/%1/%2/splitter").arg(buf->networkName()).arg(buf->bufferName())).toByteArray();
s->splitter = new QSplitter(this);
s->chatWidget = new ChatWidget(s->splitter);