137 lines
5.1 KiB
C++
137 lines
5.1 KiB
C++
#include "tablewidgetmovable.hpp"
|
|
#include <QDropEvent>
|
|
#include <iostream>
|
|
#include <QTableWidget>
|
|
#include <qcoreevent.h>
|
|
#include <QDebug>
|
|
|
|
TableWidgetMovable::TableWidgetMovable(QWidget *parent) : QTableWidget(parent) { }
|
|
|
|
// void TableWidgetMovable::dropEvent(QDropEvent *event) {
|
|
// if (event->source() == this) {
|
|
// // Get the index of the row being dragged
|
|
// QModelIndex sourceIndex = currentIndex();
|
|
// if (!sourceIndex.isValid()) {
|
|
// return;
|
|
// }
|
|
|
|
// // Get the index of the target row
|
|
// QModelIndex targetIndex = indexAt(event->pos());
|
|
// if (!targetIndex.isValid()) {
|
|
// return;
|
|
// }
|
|
|
|
// int sourceRow = sourceIndex.row();
|
|
// int targetRow = targetIndex.row();
|
|
|
|
// // Swap rows
|
|
// if (sourceRow != targetRow) {
|
|
// // Store the data of the source row
|
|
// QList<QTableWidgetItem*> itemsSource;
|
|
// for (int col = 0; col < columnCount(); ++col) {
|
|
// itemsSource.append(takeItem(sourceRow, col));
|
|
// }
|
|
|
|
// QList<QTableWidgetItem*> itemsTarget;
|
|
// for (int col = 0; col < columnCount(); ++col) {
|
|
// itemsTarget.append(takeItem(targetRow, col));
|
|
// }
|
|
|
|
// // Insert the items into the target row
|
|
// for (int col = 0; col < columnCount(); ++col) {
|
|
// setItem(targetRow, col, itemsSource[col]);
|
|
// setItem(sourceRow, col, itemsTarget[col]);
|
|
// }
|
|
|
|
// // for (int col = 0; col < columnCount(); ++col) {
|
|
|
|
// // }
|
|
|
|
// // Remove the original row
|
|
// // removeRow(sourceRow < targetRow ? sourceRow : sourceRow + 1);
|
|
// }
|
|
|
|
// event->acceptProposedAction();
|
|
// } else {
|
|
// QTableWidget::dropEvent(event);
|
|
// }
|
|
// }
|
|
|
|
// TOOD: fix None of these works. WIP
|
|
|
|
// void TableWidgetMovable::dropEvent(QDropEvent *event) {
|
|
// std::cout << event->type() << std::endl;
|
|
// if(event->source() == this && event->type() == QEvent::Type::Drop) {
|
|
// int oldRow = this->selectedItems()[0]->row();
|
|
// int oldColumn = this->selectedItems()[0]->column();
|
|
|
|
// int newRow = this->indexAt(event->pos()).row();
|
|
// int newColumn = this->indexAt(event->pos()).column();
|
|
|
|
// auto oldCell = this->cellWidget(oldRow, oldColumn);
|
|
// auto newCell = this->cellWidget(newRow, newColumn);
|
|
|
|
// this->removeCellWidget(oldRow, oldColumn);
|
|
// this->removeCellWidget(newRow, newColumn);
|
|
|
|
// this->setCellWidget(newRow, newColumn, oldCell);
|
|
// this->setCellWidget(oldRow, oldColumn, newCell);
|
|
// event->accept();
|
|
// }
|
|
// }
|
|
|
|
// void TableWidgetMovable::dropEvent(QDropEvent *event) {
|
|
// std::cout << event->type() << std::endl;
|
|
// if(event->source() == this && event->type() == QEvent::Type::Drop) {
|
|
// int oldRow = this->selectedItems()[0]->row();
|
|
// int oldColumn = this->selectedItems()[0]->column();
|
|
|
|
// int newRow = this->indexAt(event->pos()).row();
|
|
// int newColumn = this->indexAt(event->pos()).column();
|
|
// std::cout << oldRow << " " << oldColumn<< " " << newRow << " " << newColumn << std::endl;
|
|
// QTableWidgetItem *from = this->itemAt(oldColumn, oldRow), *to = this->itemAt(newColumn, newRow);
|
|
|
|
// // QList<QTableWidgetItem*> selectedItems = this->selectedItems();
|
|
// if(newRow == -1) {
|
|
// std::cout << newRow << std::endl;
|
|
// // newRow = this->rowCount();
|
|
// return;
|
|
// }
|
|
// // QTableWidgetItem bufferTo, bufferFrom;
|
|
// QTableWidgetItem *bufferTo = new QTableWidgetItem("123"), *bufferFrom = new QTableWidgetItem("321");
|
|
// std::cout << to->text().toStdString() << " " << from->text().toStdString() << std::endl;
|
|
// *bufferTo = *to;
|
|
// *bufferFrom = *from;
|
|
// // this->setItem(newRow, newColumn, nullptr);
|
|
// // this->setItem(oldRow, oldColumn, nullptr);
|
|
// this->takeItem(newRow, newColumn);
|
|
// this->takeItem(oldRow, oldColumn);
|
|
// this->setItem(newRow, newColumn, from);
|
|
// // this->setItem(oldRow, oldColumn, to);
|
|
// // *to = *from;
|
|
// // *from = buffer;
|
|
// return;
|
|
|
|
// // int i;
|
|
// // for(i = 0; i < selectedItems.length()/this->columnCount(); i++)
|
|
// // this->insertRow(newRow);
|
|
|
|
// // int currentOldRow = -1;
|
|
// // int currentNewRow = newRow-1;
|
|
// // QList<int> deleteRows;
|
|
// // foreach(selectedItem, selectedItems) {
|
|
// // int column = selectedItem->column();
|
|
// // if(selectedItem->row() != currentOldRow) {
|
|
// // currentOldRow = selectedItem->row();
|
|
// // deleteRows.append(currentOldRow);
|
|
// // currentNewRow++;
|
|
// // }
|
|
// // this->takeItem(currentOldRow, column);
|
|
// // this->setItem(currentNewRow, column, selectedItem);
|
|
// // }
|
|
|
|
// // for(i = deleteRows.count()-1; i>=0; i--)
|
|
// // this->removeRow(deleteRows.at(i));
|
|
// }
|
|
// }
|