| 
									
										
										
										
											2017-04-27 20:26:05 +02:00
										 |  |  | // SPDX-License-Identifier: GPL-2.0
 | 
					
						
							| 
									
										
										
										
											2016-04-04 22:02:03 -07:00
										 |  |  | #include "desktop-widgets/divepicturewidget.h"
 | 
					
						
							|  |  |  | #include "qt-models/divepicturemodel.h"
 | 
					
						
							|  |  |  | #include "core/metrics.h"
 | 
					
						
							|  |  |  | #include "core/dive.h"
 | 
					
						
							|  |  |  | #include "core/divelist.h"
 | 
					
						
							| 
									
										
										
										
											2015-03-02 16:18:16 +01:00
										 |  |  | #include <unistd.h>
 | 
					
						
							| 
									
										
										
										
											2014-06-26 14:01:31 -03:00
										 |  |  | #include <QtConcurrentMap>
 | 
					
						
							| 
									
										
										
										
											2015-02-26 14:39:42 +01:00
										 |  |  | #include <QtConcurrentRun>
 | 
					
						
							| 
									
										
										
										
											2015-03-10 10:22:34 -07:00
										 |  |  | #include <QFuture>
 | 
					
						
							| 
									
										
										
										
											2014-06-26 14:01:31 -03:00
										 |  |  | #include <QDir>
 | 
					
						
							| 
									
										
										
										
											2015-02-26 14:39:42 +01:00
										 |  |  | #include <QCryptographicHash>
 | 
					
						
							| 
									
										
										
										
											2015-03-02 16:18:16 +01:00
										 |  |  | #include <QNetworkAccessManager>
 | 
					
						
							|  |  |  | #include <QNetworkReply>
 | 
					
						
							| 
									
										
										
										
											2016-04-04 22:02:03 -07:00
										 |  |  | #include "desktop-widgets/mainwindow.h"
 | 
					
						
							|  |  |  | #include "core/qthelper.h"
 | 
					
						
							| 
									
										
										
										
											2015-03-02 16:18:16 +01:00
										 |  |  | #include <QStandardPaths>
 | 
					
						
							| 
									
										
										
										
											2015-11-03 21:17:50 +01:00
										 |  |  | #include <QtWidgets>
 | 
					
						
							| 
									
										
										
										
											2015-03-02 16:18:16 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-03 16:48:59 -07:00
										 |  |  | DivePictureWidget::DivePictureWidget(QWidget *parent) : QListView(parent) | 
					
						
							| 
									
										
										
										
											2014-05-30 14:38:27 -03:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2014-06-27 16:16:55 +04:00
										 |  |  | 	connect(this, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(doubleClicked(const QModelIndex &))); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void DivePictureWidget::doubleClicked(const QModelIndex &index) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	QString filePath = model()->data(index, Qt::DisplayPropertyRole).toString(); | 
					
						
							| 
									
										
										
										
											2015-02-26 14:39:42 +01:00
										 |  |  | 	emit photoDoubleClicked(localFilePath(filePath)); | 
					
						
							| 
									
										
										
										
											2014-05-30 14:38:27 -03:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2015-11-03 21:17:50 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void DivePictureWidget::mousePressEvent(QMouseEvent *event) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2017-05-06 11:11:30 -07:00
										 |  |  | 	int doubleClickInterval = qApp->styleHints()->mouseDoubleClickInterval(); | 
					
						
							| 
									
										
										
										
											2016-12-13 09:30:52 +01:00
										 |  |  | 	static qint64 lasttime = 0L; | 
					
						
							|  |  |  | 	qint64 timestamp = QDateTime::currentDateTime().toMSecsSinceEpoch(); | 
					
						
							| 
									
										
										
										
											2015-11-03 21:17:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-13 09:30:52 +01:00
										 |  |  | 	if (timestamp - lasttime <= doubleClickInterval) { | 
					
						
							| 
									
										
										
										
											2015-11-29 16:13:57 +01:00
										 |  |  | 		doubleClicked(indexAt(event->pos())); | 
					
						
							|  |  |  | 	} else { | 
					
						
							| 
									
										
										
										
											2016-12-13 09:30:52 +01:00
										 |  |  | 		lasttime = timestamp; | 
					
						
							| 
									
										
										
										
											2015-11-29 16:13:57 +01:00
										 |  |  | 		QPixmap pixmap = model()->data(indexAt(event->pos()), Qt::DecorationRole).value<QPixmap>(); | 
					
						
							| 
									
										
										
										
											2015-11-03 21:17:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-29 16:13:57 +01:00
										 |  |  | 		QString filename = model()->data(indexAt(event->pos()), Qt::DisplayPropertyRole).toString(); | 
					
						
							| 
									
										
										
										
											2015-11-03 21:17:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-29 16:13:57 +01:00
										 |  |  | 		QByteArray itemData; | 
					
						
							|  |  |  | 		QDataStream dataStream(&itemData, QIODevice::WriteOnly); | 
					
						
							|  |  |  | 		dataStream << filename << event->pos(); | 
					
						
							| 
									
										
										
										
											2015-11-03 21:17:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-29 16:13:57 +01:00
										 |  |  | 		QMimeData *mimeData = new QMimeData; | 
					
						
							|  |  |  | 		mimeData->setData("application/x-subsurfaceimagedrop", itemData); | 
					
						
							| 
									
										
										
										
											2015-11-03 21:17:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-29 16:13:57 +01:00
										 |  |  | 		QDrag *drag = new QDrag(this); | 
					
						
							|  |  |  | 		drag->setMimeData(mimeData); | 
					
						
							|  |  |  | 		drag->setPixmap(pixmap); | 
					
						
							|  |  |  | 		drag->setHotSpot(event->pos() - rectForIndex(indexAt(event->pos())).topLeft()); | 
					
						
							| 
									
										
										
										
											2015-11-03 21:17:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-29 16:13:57 +01:00
										 |  |  | 		drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-11-03 21:17:50 +01:00
										 |  |  | } |