X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fclient%2Fbuffertreemodel.cpp;h=7117b07beaabfc71801999e52949c32599aad3c8;hb=974b7adc16b798eda66e1fff1442b73b748f12f9;hp=fc9ea5195503648d2957de4277335c08a1cbce92;hpb=902c95728306e5ba115de84800fc8d5d239c9d62;p=quassel.git diff --git a/src/client/buffertreemodel.cpp b/src/client/buffertreemodel.cpp index fc9ea519..7117b07b 100644 --- a/src/client/buffertreemodel.cpp +++ b/src/client/buffertreemodel.cpp @@ -21,6 +21,7 @@ #include // FIXME Dependency on QtGui! #include "buffertreemodel.h" +#include "selectionmodelsynchronizer.h" #include "bufferinfo.h" #include "client.h" @@ -79,10 +80,10 @@ QVariant BufferTreeItem::data(int column, int role) const { case BufferTreeModel::BufferNameRole: return buf->bufferName(); case BufferTreeModel::BufferTypeRole: - return buf->bufferType(); + return int(buf->bufferType()); case BufferTreeModel::BufferActiveRole: return buf->isActive(); - case BufferTreeModel::BufferInfoRole: + case BufferTreeModel::BufferUidRole: return buf->bufferInfo().uid(); default: return QVariant(); @@ -91,7 +92,7 @@ QVariant BufferTreeItem::data(int column, int role) const { 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; @@ -117,9 +118,11 @@ Qt::ItemFlags NetworkTreeItem::flags() const { * BufferTreeModel *****************************************/ BufferTreeModel::BufferTreeModel(QObject *parent) - : TreeModel(BufferTreeModel::defaultHeader(), parent) + : TreeModel(BufferTreeModel::defaultHeader(), parent), + _selectionModelSynchronizer(new SelectionModelSynchronizer(this)) { - Client::signalProxy()->attachSignal(this, SIGNAL(fakeUserInput(BufferInfo, QString)), SIGNAL(sendInput(BufferInfo, QString))); + connect(_selectionModelSynchronizer, SIGNAL(setCurrentIndex(QModelIndex, QItemSelectionModel::SelectionFlags)), + this, SLOT(setCurrentIndex(QModelIndex, QItemSelectionModel::SelectionFlags))); } QListBufferTreeModel::defaultHeader() { @@ -142,7 +145,7 @@ QModelIndex BufferTreeModel::getOrCreateNetworkItemIndex(Buffer *buffer) { QString net = buffer->networkName(); TreeItem *networkItem; - if(not(networkItem = rootItem->childById(qHash(net)))) { + if(!(networkItem = rootItem->childById(qHash(net)))) { int nextRow = rootItem->childCount(); networkItem = new NetworkTreeItem(net, rootItem); @@ -160,7 +163,7 @@ QModelIndex BufferTreeModel::getOrCreateBufferItemIndex(Buffer *buffer) { NetworkTreeItem *networkItem = static_cast(networkItemIndex.internalPointer()); TreeItem *bufferItem; - if(not(bufferItem = networkItem->childById(buffer->bufferInfo().uid()))) { + if(!(bufferItem = networkItem->childById(buffer->bufferInfo().uid()))) { int nextRow = networkItem->childCount(); bufferItem = new BufferTreeItem(buffer, networkItem); @@ -209,7 +212,7 @@ bool BufferTreeModel::dropMimeData(const QMimeData *data, Qt::DropAction /*actio Buffer *sourceBuffer = static_cast(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 :) @@ -229,21 +232,13 @@ void BufferTreeModel::bufferUpdated(Buffer *buffer) { } // This Slot indicates that the user has selected a different buffer in the gui -void BufferTreeModel::changeCurrent(const QModelIndex ¤t, const QModelIndex &/*previous*/) { - if(isBufferIndex(current)) { - currentBuffer = getBufferByIndex(current); +void BufferTreeModel::setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command) { + Q_UNUSED(command) + if(isBufferIndex(index)) { + currentBuffer = getBufferByIndex(index); bufferActivity(Buffer::NoActivity, currentBuffer); emit bufferSelected(currentBuffer); - emit selectionChanged(current); - } -} - -// we received a double click on a buffer, so we're going to join it -void BufferTreeModel::doubleClickReceived(const QModelIndex &clicked) { - if(isBufferIndex(clicked)) { - Buffer *buffer = getBufferByIndex(clicked); - if(!buffer->isStatusBuffer()) - emit fakeUserInput(buffer->bufferInfo(), QString("/join " + buffer->bufferName())); + emit selectionChanged(index); } } @@ -258,6 +253,6 @@ void BufferTreeModel::bufferActivity(Buffer::ActivityLevel level, Buffer *buffer void BufferTreeModel::selectBuffer(Buffer *buffer) { QModelIndex index = getOrCreateBufferItemIndex(buffer); - //emit selectionChanged(index); - changeCurrent(index, QModelIndex()); + // SUPER UGLY! + setCurrentIndex(index, 0); }