mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			99 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // SPDX-License-Identifier: GPL-2.0
 | |
| #include "TabDivePhotos.h"
 | |
| #include "ui_TabDivePhotos.h"
 | |
| 
 | |
| #include <qt-models/divepicturemodel.h>
 | |
| 
 | |
| #include <QDesktopServices>
 | |
| #include <QContextMenuEvent>
 | |
| #include <QMenu>
 | |
| #include <QUrl>
 | |
| #include <QMessageBox>
 | |
| 
 | |
| //TODO: Remove those in the future.
 | |
| #include "../mainwindow.h"
 | |
| #include "../divelistview.h"
 | |
| 
 | |
| TabDivePhotos::TabDivePhotos(QWidget *parent)
 | |
| 	: TabBase(parent),
 | |
| 	ui(new Ui::TabDivePhotos()),
 | |
| 	divePictureModel(DivePictureModel::instance())
 | |
| {
 | |
| 	ui->setupUi(this);
 | |
| 	ui->photosView->setModel(divePictureModel);
 | |
| 	ui->photosView->setSelectionMode(QAbstractItemView::MultiSelection);
 | |
| 
 | |
| 	connect(ui->photosView, &DivePictureWidget::photoDoubleClicked,
 | |
| 		[](const QString& path) {
 | |
| 			QDesktopServices::openUrl(QUrl::fromLocalFile(path));
 | |
| 		}
 | |
| 	);
 | |
| }
 | |
| 
 | |
| TabDivePhotos::~TabDivePhotos()
 | |
| {
 | |
| 	delete ui;
 | |
| }
 | |
| 
 | |
| void TabDivePhotos::clear()
 | |
| {
 | |
| 	updateData();
 | |
| }
 | |
| 
 | |
| void TabDivePhotos::contextMenuEvent(QContextMenuEvent *event)
 | |
| {
 | |
| 	QMenu popup(this);
 | |
| 	popup.addAction(tr("Load image(s) from file(s)"), this, SLOT(addPhotosFromFile));
 | |
| 	popup.addAction(tr("Load image(s) from web"), this, SLOT(addPhotosFromURL));
 | |
| 	popup.addSeparator();
 | |
| 	popup.addAction(tr("Delete selected images"), this, SLOT(removeSelectedPhotos));
 | |
| 	popup.addAction(tr("Delete all images"), this, SLOT(removeAllPhotos));
 | |
| 	popup.exec(event->globalPos());
 | |
| 	event->accept();
 | |
| }
 | |
| 
 | |
| void TabDivePhotos::removeSelectedPhotos()
 | |
| {
 | |
| 	bool last = false;
 | |
| 	if (!ui->photosView->selectionModel()->hasSelection())
 | |
| 		return;
 | |
| 	QModelIndexList indexes =  ui->photosView->selectionModel()->selectedRows();
 | |
| 	if (indexes.count() == 0)
 | |
| 		indexes = ui->photosView->selectionModel()->selectedIndexes();
 | |
| 	QModelIndex photo = indexes.first();
 | |
| 	do {
 | |
| 		photo = indexes.first();
 | |
| 		last = indexes.count() == 1;
 | |
| 		if (photo.isValid()) {
 | |
| 			QString fileUrl = photo.data(Qt::DisplayPropertyRole).toString();
 | |
| 			if (fileUrl.length() > 0)
 | |
| 				DivePictureModel::instance()->removePicture(fileUrl, last);
 | |
| 		}
 | |
| 		indexes.removeFirst();
 | |
| 	} while(!indexes.isEmpty());
 | |
| }
 | |
| 
 | |
| //TODO: This looks overly wrong. We shouldn't call MainWindow to retrieve the DiveList to add Images.
 | |
| void TabDivePhotos::addPhotosFromFile()
 | |
| {
 | |
| 	MainWindow::instance()->dive_list()->loadImages();
 | |
| }
 | |
| 
 | |
| void TabDivePhotos::addPhotosFromURL()
 | |
| {
 | |
| 	MainWindow::instance()->dive_list()->loadWebImages();
 | |
| }
 | |
| 
 | |
| void TabDivePhotos::removeAllPhotos()
 | |
| {
 | |
| 	if (QMessageBox::warning(this, tr("Deleting Images"), tr("Are you sure you want to delete all images?"), QMessageBox::Cancel | QMessageBox::Ok, QMessageBox::Cancel) != QMessageBox::Cancel ) {
 | |
| 		ui->photosView->selectAll();
 | |
| 		removeSelectedPhotos();
 | |
| 	}
 | |
| }
 | |
| 
 | |
| void TabDivePhotos::updateData()
 | |
| {
 | |
| 	divePictureModel->updateDivePictures();
 | |
| }
 | |
| 
 |