X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fbufferview.cpp;h=c8834341ce871500fc3fc026b228e18645ef24b3;hb=b9ff1ddc759d891d244abf22a6b9d2e8446325bf;hp=5e3f7263694793e94ed4d7646af1400fee316e89;hpb=610cf75dbef35c6f90bd9657f3fae56a6067de08;p=quassel.git diff --git a/src/uisupport/bufferview.cpp b/src/uisupport/bufferview.cpp index 5e3f7263..c8834341 100644 --- a/src/uisupport/bufferview.cpp +++ b/src/uisupport/bufferview.cpp @@ -73,7 +73,7 @@ void BufferView::init() { sortByColumn(0, Qt::AscendingOrder); // activated() fails on X11 and Qtopia at least -#if defined Q_WS_QWS or defined Q_WS_X11 +#if defined Q_WS_QWS || defined Q_WS_X11 connect(this, SIGNAL(doubleClicked(QModelIndex)), SLOT(joinChannel(QModelIndex))); #else // afaik this is better on Mac and Windows @@ -196,6 +196,37 @@ void BufferView::keyPressEvent(QKeyEvent *event) { QTreeView::keyPressEvent(event); } +void BufferView::dropEvent(QDropEvent *event) { + QList< QPair > bufferList = Client::networkModel()->mimeDataToBufferList(event->mimeData()); + + if(bufferList.count() != 1) + return QTreeView::dropEvent(event); + + NetworkId networkId = bufferList[0].first; + BufferId bufferId2 = bufferList[0].second; + + QModelIndex index = indexAt(event->pos()); + if(index.data(NetworkModel::ItemTypeRole) != NetworkModel::BufferItemType) + return; + + if(index.data(NetworkModel::BufferTypeRole) != BufferInfo::QueryBuffer) + return; + + if(index.data(NetworkModel::NetworkIdRole).value() != networkId) + return; + + BufferId bufferId1 = index.data(NetworkModel::BufferIdRole).value(); + if(bufferId1 == bufferId2) + return; + + int res = QMessageBox::question(0, tr("Merge buffers permanently?"), + tr("Do you want to merge the buffer \"%1\" permanently into buffer \"%2\"?\n This cannot be reversed!").arg(Client::networkModel()->bufferName(bufferId2)).arg(Client::networkModel()->bufferName(bufferId1)), + QMessageBox::Yes|QMessageBox::No, QMessageBox::No); + if(res == QMessageBox::Yes) { + Client::mergeBuffersPermanently(bufferId1, bufferId2); + } +} + void BufferView::removeSelectedBuffers(bool permanently) { if(!config()) return;