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

Reply via email to