AnalysisSidebar: Reinstate interval DRAG/DROP in list

This commit is contained in:
grauser
2015-05-21 22:34:04 +02:00
parent bff5de5a85
commit c1f642d520
3 changed files with 45 additions and 6 deletions

View File

@@ -59,12 +59,39 @@ IntervalTreeView::mouseHover(QTreeWidgetItem *item, int)
void
IntervalTreeView::dropEvent(QDropEvent* event)
{
QTreeWidgetItem* item1 = (QTreeWidgetItem *)itemAt(event->pos());
QTreeWidget::dropEvent(event);
QTreeWidgetItem* item2 = (QTreeWidgetItem *)itemAt(event->pos());
QTreeWidgetItem* target = (QTreeWidgetItem *)itemAt(event->pos());
QTreeWidgetItem* parent = target->parent();
if (item1==topLevelItem(0) || item1 != item2)
QTreeWidget::itemChanged(item2, 0);
QList<IntervalItem*> intervals = context->rideItem()->intervals();
QList<IntervalItem*> userIntervals = context->rideItem()->intervals(RideFileInterval::USER);
int indexTo = intervals.indexOf(userIntervals.at(parent->indexOfChild(target)));
int offsetFrom = 0;
int offsetTo = 0;
foreach (QTreeWidgetItem *p, selectedItems()) {
if (p->parent() == parent) {
int indexFrom = intervals.indexOf(userIntervals.at(parent->indexOfChild(p)));
context->rideItem()->intervals().move(indexFrom+offsetFrom,indexTo+offsetTo);
if (indexFrom<indexTo)
offsetFrom--;
else
offsetTo++;
}
}
context->intervalsUpdate(context->rideItem());
// We don't need or want to finish the dropEvent
//QTreeWidget::dropEvent(event);
// We don't need anymore this signal
//
//if (item1==topLevelItem(0) || item1 != item2)
// QTreeWidget::itemChanged(item2, 0);
}
QStringList