#include "buffersyncer.h"
#include "client.h"
#include "iconloader.h"
-#include "mappedselectionmodel.h"
#include "network.h"
#include "networkmodel.h"
#include "networkmodelactionprovider.h"
header()->setContextMenuPolicy(Qt::ActionsContextMenu);
hideColumn(1);
hideColumn(2);
- setIndentation(5);
+ setIndentation(10);
expandAll();
setAnimated(true);
connect(config, SIGNAL(networkIdSet(const NetworkId &)), this, SLOT(setRootIndexForNetworkId(const NetworkId &)));
setRootIndexForNetworkId(config->networkId());
} else {
+ setIndentation(10);
setRootIndex(QModelIndex());
}
}
void BufferView::setRootIndexForNetworkId(const NetworkId &networkId) {
if(!networkId.isValid() || !model()) {
+ setIndentation(10);
setRootIndex(QModelIndex());
} else {
+ setIndentation(5);
int networkCount = model()->rowCount();
QModelIndex child;
for(int i = 0; i < networkCount; i++) {
}
void BufferView::dropEvent(QDropEvent *event) {
- QList< QPair<NetworkId, BufferId> > bufferList = Client::networkModel()->mimeDataToBufferList(event->mimeData());
+ QModelIndex index = indexAt(event->pos());
+
+ QRect indexRect = visualRect(index);
+ QPoint cursorPos = event->pos();
+ // check if we're really _on_ the item and not indicating a move to just above or below the item
+ const int margin = 2;
+ if(cursorPos.y() - indexRect.top() < margin
+ || indexRect.bottom() - cursorPos.y() < margin)
+ return QTreeView::dropEvent(event);
+
+ QList< QPair<NetworkId, BufferId> > 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;
+ return QTreeView::dropEvent(event);
if(index.data(NetworkModel::BufferTypeRole) != BufferInfo::QueryBuffer)
- return;
+ return QTreeView::dropEvent(event);
if(index.data(NetworkModel::NetworkIdRole).value<NetworkId>() != networkId)
- return;
+ return QTreeView::dropEvent(event);
BufferId bufferId1 = index.data(NetworkModel::BufferIdRole).value<BufferId>();
if(bufferId1 == bufferId2)
- return;
+ return QTreeView::dropEvent(event);
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)),
collapse(networkIdx);
}
- // update selection to current one
- MappedSelectionModel *mappedSelectionModel = qobject_cast<MappedSelectionModel *>(selectionModel());
- if(!config() || !mappedSelectionModel)
- return;
+ if(config()) {
+ // update selection to current one
+ Client::bufferModel()->synchronizeView(this);
+ }
- mappedSelectionModel->mappedSetCurrentIndex(Client::bufferModel()->standardSelectionModel()->currentIndex(), QItemSelectionModel::Current);
- mappedSelectionModel->mappedSelect(Client::bufferModel()->standardSelectionModel()->selection(), QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
+ return;
}
void BufferView::on_collapse(const QModelIndex &index) {
connect(config, SIGNAL(bufferViewNameSet(const QString &)), this, SLOT(bufferViewRenamed(const QString &)));
}
-BufferViewDock::BufferViewDock(QWidget *parent)
- : QDockWidget(tr("All Buffers"), parent)
-{
- setObjectName("BufferViewDock--1");
- toggleViewAction()->setData((int)-1);
- setAllowedAreas(Qt::RightDockWidgetArea|Qt::LeftDockWidgetArea);
-}
-
void BufferViewDock::bufferViewRenamed(const QString &newName) {
setWindowTitle(newName);
toggleViewAction()->setText(newName);