From 0ca3c727f994585d39bea965e2ef007ecf1e239a Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava <[email protected]> Date: Tue, 6 Jan 2015 21:49:48 -0200 Subject: [PATCH 30/31] Start to make it possible to move columns around
Signed-off-by: Tomaz Canabrava <[email protected]> --- qt-ui/divelogimportdialog.cpp | 21 +++++++++++++++++++++ qt-ui/divelogimportdialog.h | 1 + 2 files changed, 22 insertions(+) diff --git a/qt-ui/divelogimportdialog.cpp b/qt-ui/divelogimportdialog.cpp index d5fcd40..963c757 100644 --- a/qt-ui/divelogimportdialog.cpp +++ b/qt-ui/divelogimportdialog.cpp @@ -211,6 +211,27 @@ void ColumnNameResult::setColumnValues(QList<QStringList> columns) endInsertRows(); } +void ColumnDropCSVView::mousePressEvent(QMouseEvent *press) +{ + QModelIndex atClick = indexAt(press->pos()); + if (!atClick.isValid() || atClick.row()) + return; + + QRect indexRect = visualRect(atClick); + QPixmap pix(indexRect.width(), indexRect.height()); + pix.fill(QColor(0,0,0,0)); + render(&pix, QPoint(0, 0),QRegion(indexRect)); + + QDrag *drag = new QDrag(this); + QMimeData *mimeData = new QMimeData; + mimeData->setData(subsurface_mimedata, atClick.data().toByteArray()); + drag->setPixmap(pix); + drag->setMimeData(mimeData); + if (drag->exec() != Qt::IgnoreAction){ + // Do stuff here. + } +} + DiveLogImportDialog::DiveLogImportDialog(QStringList fn, QWidget *parent) : QDialog(parent), selector(true), ui(new Ui::DiveLogImportDialog) diff --git a/qt-ui/divelogimportdialog.h b/qt-ui/divelogimportdialog.h index 8dc260a..0043f3f 100644 --- a/qt-ui/divelogimportdialog.h +++ b/qt-ui/divelogimportdialog.h @@ -58,6 +58,7 @@ class ColumnDropCSVView : public QTableView { public: ColumnDropCSVView(QWidget *parent); protected: + void mousePressEvent(QMouseEvent *press); void dragLeaveEvent(QDragLeaveEvent *leave); void dragEnterEvent(QDragEnterEvent *event); void dragMoveEvent(QDragMoveEvent *event); -- 2.2.1
From b57aa323c7f754df2b4ee55865faec42ed2f6049 Mon Sep 17 00:00:00 2001 From: Tomaz Canabrava <[email protected]> Date: Tue, 6 Jan 2015 22:12:05 -0200 Subject: [PATCH 31/31] Added the code to actually make it possible to move columns Signed-off-by: Tomaz Canabrava <[email protected]> --- qt-ui/divelogimportdialog.cpp | 21 ++++++++++++++++++--- qt-ui/divelogimportdialog.h | 1 + 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/qt-ui/divelogimportdialog.cpp b/qt-ui/divelogimportdialog.cpp index 963c757..632659c 100644 --- a/qt-ui/divelogimportdialog.cpp +++ b/qt-ui/divelogimportdialog.cpp @@ -135,8 +135,16 @@ void ColumnDropCSVView::dropEvent(QDropEvent *event) event->acceptProposedAction(); const QMimeData *mimeData = event->mimeData(); if (mimeData->data(subsurface_mimedata).count()) { - QVariant value = QString(mimeData->data(subsurface_mimedata)); - model()->setData(curr, value); + if (event->source() != this) { + QVariant value = QString(mimeData->data(subsurface_mimedata)); + model()->setData(curr, value); + } else { + QString value_old = QString(mimeData->data(subsurface_mimedata)); + QString value_new = curr.data().toString(); + ColumnNameResult *m = qobject_cast<ColumnNameResult*>(model()); + m->swapValues(value_old, value_new); + } + } } @@ -145,6 +153,14 @@ ColumnNameResult::ColumnNameResult(QObject *parent) : QAbstractTableModel(parent } +void ColumnNameResult::swapValues(const QString &one, const QString &other) { + int firstIndex = columnNames.indexOf(one); + int secondIndex = columnNames.indexOf(other); + columnNames[firstIndex] = other; + columnNames[secondIndex] = one; + dataChanged(index(0,0), index(0, columnCount()-1)); +} + bool ColumnNameResult::setData(const QModelIndex &index, const QVariant &value, int role) { if (!index.isValid() || index.row() != 0) @@ -228,7 +244,6 @@ void ColumnDropCSVView::mousePressEvent(QMouseEvent *press) drag->setPixmap(pix); drag->setMimeData(mimeData); if (drag->exec() != Qt::IgnoreAction){ - // Do stuff here. } } diff --git a/qt-ui/divelogimportdialog.h b/qt-ui/divelogimportdialog.h index 0043f3f..29ceedf 100644 --- a/qt-ui/divelogimportdialog.h +++ b/qt-ui/divelogimportdialog.h @@ -38,6 +38,7 @@ public: int columnCount(const QModelIndex &parent = QModelIndex()) const; void setColumnValues(QList<QStringList> columns); QStringList result() const; + void swapValues(const QString& one, const QString& other); private: QList<QStringList> columnValues; QStringList columnNames; -- 2.2.1
_______________________________________________ subsurface mailing list [email protected] http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface
